示例#1
0
def dispatch_init(ser):
    """
    Initialize a dispatcher and register rx_data_handler.
    
    Args:
        ser(serial.Serial): a serial interface object.
        
    Returns:
        xbee.helpers.dispatch.Dispatch: an XBee dispatcher object.
    """
    # --------------------------------------------------------------------
    # When a Dispatch is created with a serial port, it will automatically
    # create an XBee object on your behalf for accessing the device.
    # If you wish, you may explicitly provide your own XBee:
    #
    #  xbee = XBee(ser)
    #  dispatch = Dispatch(xbee=xbee)
    #
    # Functionally, these are the same.   --Paul Malmsten
    # --------------------------------------------------------------------
    # Register the packet handlers with the dispatch:
    # The string name allows one to distinguish between mutiple registrations
    # for a single callback function.
    # The second argument is the callback function name.
    # The third argument is a function which determines whether to call its
    # associated callback when a packet arrives. It should return a boolean.
    # --------------------------------------------------------------------
    # Spawn a dispatch instance and associate it with packet id 'rx'
    dispatcher = Dispatch(ser)
    dispatcher.register("rx_data", rx_data_handler,
                        lambda packet: packet['id'] == 'rx')
    return dispatcher
示例#2
0
 def __init__(self, serial_port, baud_rate, dispatcher, serializer):
     self.ser = serial.Serial(serial_port, baud_rate)
     self.zb = xbee.ZigBee(self.ser, escaped=True)
     self.dispatch = Dispatch(xbee=self.zb)
     self.dispatch.register('rx', self.rx_handler,
                            lambda p: p['id'] == 'rx')
     self.dispatch.register('rx_explicit', self.default_handler,
                            lambda p: p['id'] == 'rx_explicit')
     self.dispatch.register('rx_io_data_long_addr', self.default_handler,
                            lambda p: p['id'] == 'rx_io_data_long_addr')
     self.dispatch.register('tx_status', self.default_handler,
                            lambda p: p['id'] == 'tx_status')
     self.dispatch.register('status', self.default_handler,
                            lambda p: p['id'] == 'status')
     self.dispatch.register('at_response', self.at_response_handler,
                            lambda p: p['id'] == 'at_response')
     self.dispatch.register('remote_at_response', self.default_handler,
                            lambda p: p['id'] == 'remote_at_response')
     self.dispatch.register('node_id_indicator', self.default_handler,
                            lambda p: p['id'] == 'node_id_indicator')
     self.dispatcher = dispatcher
     self.serializer = serializer
示例#3
0
def at_response_handler(name, packet):
    print(packet)


def rx_handler(name, packet):
    print("RX - %s" % packet)
    time.sleep(1)
    data = "PONG" if IS_HUB else "PING"
    xbee.tx(dest_addr_long=packet['source_addr_long'],
            dest_addr=packet['source_addr'],
            data=data)


ser = serial.Serial('/dev/ttyS0', 9600)
dispatch = Dispatch()
dispatch.register('rx', rx_handler, lambda p: p['id'] == 'rx')
dispatch.register('rx_explicit', default_handler,
                  lambda p: p['id'] == 'rx_explicit')
dispatch.register('rx_io_data_long_addr', default_handler,
                  lambda p: p['id'] == 'rx_io_data_long_addr')
dispatch.register('rx_io_data', default_handler,
                  lambda p: p['id'] == 'rx_io_data')
dispatch.register('tx_status', default_handler,
                  lambda p: p['id'] == 'tx_status')
dispatch.register('status', default_handler, lambda p: p['id'] == 'status')
dispatch.register('at_response', at_response_handler,
                  lambda p: p['id'] == 'at_response')
dispatch.register('remote_at_response', default_handler,
                  lambda p: p['id'] == 'remote_at_response')
dispatch.register('node_id_indicator', default_handler,
示例#4
0
 def setUp(self):
     self.headless = Dispatch()
示例#5
0
 def setUp(self):
     self.xbee = FakeXBee(None)
     self.dispatch = Dispatch(xbee=self.xbee)
     self.callback_check = CallbackCheck()
示例#6
0
    print "Status Update - Status is now: ", packet['status']


def io_sample_handler(name, packet):
    print "Samples Received: ", packet['samples']


# When a Dispatch is created with a serial port, it will automatically
# create an XBee object on your behalf for accessing the device.
# If you wish, you may explicitly provide your own XBee:
#
#  xbee = XBee(ser)
#  dispatch = Dispatch(xbee=xbee)
#
# Functionally, these are the same.
dispatch = Dispatch(ser)

# Register the packet handlers with the dispatch:
#  The string name allows one to distinguish between mutiple registrations
#   for a single callback function
#  The second argument is the function to call
#  The third argument is a function which determines whether to call its
#   associated callback when a packet arrives. It should return a boolean.
dispatch.register("status", status_handler,
                  lambda packet: packet['id'] == 'status')

dispatch.register("io_data", io_sample_handler,
                  lambda packet: packet['id'] == 'rx_io_data')

# Create API object, which spawns a new thread
# Point the asyncronous callback at Dispatch.dispatch()
示例#7
0
        addr1.extend(packet['parameter'][2:10])
        global addrAll
        addrAll += [addr1]

    def remote_at_response_handler(name, packet):
        print packet

    def node_id_indicator_handler(name, packet):
        print packet

    # When a Dispatch is created with a serial port, it will automatically
    # create an XBee object on your behalf for accessing the device.
    # If you wish, you may explicitly provide your own XBee:
    #
    xbee = ZigBee(ser)
    dispatch = Dispatch(
        xbee=xbee)  #We need a Zigbee object, so only this works

    #
    # Functionally, these are the same.
    #dispatch = Dispatch(ser) #Will not work for senior project.


    def tx_packet(source, data, packet=0, status=False):
        #Get the address of our sender
        send_addr_long = source['source_addr_long']
        send_addr = source['source_addr']

        xbee.tx(
            dest_addr=send_addr,  #reply to sender
            dest_addr_long=send_addr_long,
            data=data,
示例#8
0
    p = ''.join('%02x' % ord(x) for x in packet['parameter'])
    print "AT - %s = %s" % (packet['command'], p)


def rx_handler(name, packet):
    print "RX - %s" % packet
    time.sleep(1)
    data = "PONG" if IS_HUB else "PING"
    zb.tx(dest_addr_long=packet['source_addr_long'],
          dest_addr=packet['source_addr'],
          data=data)


ser = serial.Serial(PORT, BAUD_RATE)
zigbee = ZigBee(ser)
dispatch = Dispatch(xbee=zigbee)
dispatch.register('rx', rx_handler, lambda p: p['id'] == 'rx')
dispatch.register('rx_explicit', default_handler,
                  lambda p: p['id'] == 'rx_explicit')
dispatch.register('rx_io_data_long_addr', default_handler,
                  lambda p: p['id'] == 'rx_io_data_long_addr')
dispatch.register('tx_status', default_handler,
                  lambda p: p['id'] == 'tx_status')
dispatch.register('status', default_handler, lambda p: p['id'] == 'status')
dispatch.register('at_response', at_response_handler,
                  lambda p: p['id'] == 'at_response')
dispatch.register('remote_at_response', default_handler,
                  lambda p: p['id'] == 'remote_at_response')
dispatch.register('node_id_indicator', default_handler,
                  lambda p: p['id'] == 'node_id_indicator')