1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//! # Rusty Z-Wave
//!
//! The `rzw` crate provides a native functionality to control a Z-Wave network over a USB Z-Wave dongle. It's completely written in Rust to ensure safety and performance.
//!
//! ---
//! ## Compatibility
//! The `rzw` crate depends on the serial create, which is compatible with Windows and any Unix operating system that implements the termios API. The following platforms are confirmed to be compatible:
//!
//! * Linux (x86_64, armv6l)
//! * OS X (x86_64)
//! * FreeBSD (amd64)
//! * OpenBSD (amd64)
//! * Windows (x86_64)
//! Compiling the `rzw` crate requires Rust 1.9 or later.
//!
//! ---
//!
//! ## Usage
//! Add `rzw` as a dependency in `Cargo.toml`:
//!
//! ```toml
//! [dependencies]
//! rzw = { git = "https://github.com/Roba1993/rzw" }
//! ```
//!
//! Use the `rzw::Controller` as starting point to communicate, which communicates with the Z-Wave network.
//!
//! ```rust,ignore
//! extern crate rzw;
//!
//! fn main() {
//! // Access the zwave network
//! let mut zwave = rzw::open("/dev/tty.usbmodem1411").unwrap();
//!
//! // get all node ids
//! let nodes = zwave.nodes();
//!
//! // loop over the nodes
//! for node in nodes {
//! // print the available command classes for each node
//! println!("{:?}", zwave.node(node).map(|n| n.get_commands()));
//!
//! // set the basic value on all nodes
//! // for binary switch this means, turn them on
//! zwave.node(node).map(|n| n.basic_set(0xFF)).unwrap().unwrap();
//! }
//! }
//! ```
// We create code lib code
// load all external dependencies, which are used
extern crate enum_primitive;
extern crate num;
extern crate serial;
// load all internal dependencies, which are used
// lead mods which are used
use SerialDriver;
use Controller;
use Error;
/// Function to start a Z-Wave Controller