ieee.py
Go to the documentation of this file.
1 """
2 ieee.py
3 
4 By Paul Malmsten, 2010
5 Inspired by code written by Amit Synderman and Marco Sangalli
6 pmalmsten@gmail.com
7 
8 This module provides an XBee (IEEE 802.15.4) API library.
9 """
10 import struct
11 from xbee.base import XBeeBase
12 
13 class XBee(XBeeBase):
14  """
15  Provides an implementation of the XBee API for IEEE 802.15.4 modules
16  with recent firmware.
17 
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.
23  """
24  # Packets which can be sent to an XBee
25 
26  # Format:
27  # {name of command:
28  # [{name:field name, len:field length, default: default value sent}
29  # ...
30  # ]
31  # ...
32  # }
33  api_commands = {"at":
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}],
38  "queued_at":
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}],
43  "remote_at":
44  [{'name':'id', 'len':1, 'default':'\x17'},
45  {'name':'frame_id', 'len':1, 'default':'\x00'},
46  # dest_addr_long is 8 bytes (64 bits), so use an unsigned long long
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}],
52  "tx_long_addr":
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}],
58  "tx":
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}]
64  }
65 
66  # Packets which can be received from an XBee
67 
68  # Format:
69  # {id byte received from XBee:
70  # {name: name of response
71  # structure:
72  # [ {'name': name of field, 'len':length of field}
73  # ...
74  # ]
75  # parse_as_io_samples:name of field to parse as io
76  # }
77  # ...
78  # }
79  #
80  api_responses = {"\x80":
81  {'name':'rx_long_addr',
82  'structure':
83  [{'name':'source_addr', 'len':8},
84  {'name':'rssi', 'len':1},
85  {'name':'options', 'len':1},
86  {'name':'rf_data', 'len':None}]},
87  "\x81":
88  {'name':'rx',
89  'structure':
90  [{'name':'source_addr', 'len':2},
91  {'name':'rssi', 'len':1},
92  {'name':'options', 'len':1},
93  {'name':'rf_data', 'len':None}]},
94  "\x82":
95  {'name':'rx_io_data_long_addr',
96  'structure':
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'},
102  "\x83":
103  {'name':'rx_io_data',
104  'structure':
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'},
110  "\x89":
111  {'name':'tx_status',
112  'structure':
113  [{'name':'frame_id', 'len':1},
114  {'name':'status', 'len':1}]},
115  "\x8a":
116  {'name':'status',
117  'structure':
118  [{'name':'status', 'len':1}]},
119  "\x88":
120  {'name':'at_response',
121  'structure':
122  [{'name':'frame_id', 'len':1},
123  {'name':'command', 'len':2},
124  {'name':'status', 'len':1},
125  {'name':'parameter', 'len':None}]},
126  "\x97":
127  {'name':'remote_at_response',
128  'structure':
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}]},
135  }
136 
137  def __init__(self, *args, **kwargs):
138  # Call the super class constructor to save the serial port
139  super(XBee, self).__init__(*args, **kwargs)
Definition: base.py:1
def __init__(self, args, kwargs)
Definition: ieee.py:137


rosserial_xbee
Author(s): Adam Stambler
autogenerated on Mon Jun 10 2019 14:53:52