5 Inspired by code written by Amit Synderman and Marco Sangalli 8 This module provides an XBee (IEEE 802.15.4) API library. 15 Provides an implementation of the XBee API for IEEE 802.15.4 modules 18 Commands may be sent to a device by instansiating this class with 19 a serial port object (see PySerial) and then calling the send 20 method with the proper information specified by the API. Data may 21 be read from a device syncronously by calling wait_read_frame. For 22 asynchronous reads, see the definition of XBeeBase. 34 [{
'name':
'id',
'len':1,
'default':
'\x08'},
35 {
'name':
'frame_id',
'len':1,
'default':
'\x00'},
36 {
'name':
'command',
'len':2,
'default':
None},
37 {
'name':
'parameter',
'len':
None,
'default':
None}],
39 [{
'name':
'id',
'len':1,
'default':
'\x09'},
40 {
'name':
'frame_id',
'len':1,
'default':
'\x00'},
41 {
'name':
'command',
'len':2,
'default':
None},
42 {
'name':
'parameter',
'len':
None,
'default':
None}],
44 [{
'name':
'id',
'len':1,
'default':
'\x17'},
45 {
'name':
'frame_id',
'len':1,
'default':
'\x00'},
47 {
'name':
'dest_addr_long',
'len':8,
'default':struct.pack(
'>Q', 0)},
48 {
'name':
'dest_addr',
'len':2,
'default':
'\xFF\xFE'},
49 {
'name':
'options',
'len':1,
'default':
'\x02'},
50 {
'name':
'command',
'len':2,
'default':
None},
51 {
'name':
'parameter',
'len':
None,
'default':
None}],
53 [{
'name':
'id',
'len':1,
'default':
'\x00'},
54 {
'name':
'frame_id',
'len':1,
'default':
'\x00'},
55 {
'name':
'dest_addr',
'len':8,
'default':
None},
56 {
'name':
'options',
'len':1,
'default':
'\x00'},
57 {
'name':
'data',
'len':
None,
'default':
None}],
59 [{
'name':
'id',
'len':1,
'default':
'\x01'},
60 {
'name':
'frame_id',
'len':1,
'default':
'\x00'},
61 {
'name':
'dest_addr',
'len':2,
'default':
None},
62 {
'name':
'options',
'len':1,
'default':
'\x00'},
63 {
'name':
'data',
'len':
None,
'default':
None}]
80 api_responses = {
"\x80":
81 {
'name':
'rx_long_addr',
83 [{
'name':
'source_addr',
'len':8},
84 {
'name':
'rssi',
'len':1},
85 {
'name':
'options',
'len':1},
86 {
'name':
'rf_data',
'len':
None}]},
90 [{
'name':
'source_addr',
'len':2},
91 {
'name':
'rssi',
'len':1},
92 {
'name':
'options',
'len':1},
93 {
'name':
'rf_data',
'len':
None}]},
95 {
'name':
'rx_io_data_long_addr',
97 [{
'name':
'source_addr_long',
'len':8},
98 {
'name':
'rssi',
'len':1},
99 {
'name':
'options',
'len':1},
100 {
'name':
'samples',
'len':
None}],
101 'parse_as_io_samples':
'samples'},
103 {
'name':
'rx_io_data',
105 [{
'name':
'source_addr',
'len':2},
106 {
'name':
'rssi',
'len':1},
107 {
'name':
'options',
'len':1},
108 {
'name':
'samples',
'len':
None}],
109 'parse_as_io_samples':
'samples'},
113 [{
'name':
'frame_id',
'len':1},
114 {
'name':
'status',
'len':1}]},
118 [{
'name':
'status',
'len':1}]},
120 {
'name':
'at_response',
122 [{
'name':
'frame_id',
'len':1},
123 {
'name':
'command',
'len':2},
124 {
'name':
'status',
'len':1},
125 {
'name':
'parameter',
'len':
None}]},
127 {
'name':
'remote_at_response',
129 [{
'name':
'frame_id',
'len':1},
130 {
'name':
'source_addr_long',
'len':8},
131 {
'name':
'source_addr',
'len':2},
132 {
'name':
'command',
'len':2},
133 {
'name':
'status',
'len':1},
134 {
'name':
'parameter',
'len':
None}]},
139 super(XBee, self).
__init__(*args, **kwargs)
def __init__(self, args, kwargs)