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)