Esempio n. 1
0
    def __expl_to_no_expl(self, xbee_packet):
        """
        Creates a non-explicit data packet from the given explicit packet depending on
        this listener's XBee device protocol.

        Returns:
            :class:`.XBeeAPIPacket`: the proper receive packet depending on the current protocol and the
                available information (inside the packet).
        """
        x64addr = xbee_packet.x64bit_source_addr
        x16addr = xbee_packet.x16bit_source_addr
        if self.__xbee_device.get_protocol() == XBeeProtocol.RAW_802_15_4:
            if x64addr != XBee64BitAddress.UNKNOWN_ADDRESS:
                new_packet = RX64Packet(x64addr, 0,
                                        xbee_packet.receive_options,
                                        xbee_packet.rf_data)
            elif x16addr != XBee16BitAddress.UNKNOWN_ADDRESS:
                new_packet = RX16Packet(x16addr, 0,
                                        xbee_packet.receive_options,
                                        xbee_packet.rf_data)
            else:  # both address UNKNOWN
                new_packet = RX64Packet(x64addr, 0,
                                        xbee_packet.receive_options,
                                        xbee_packet.rf_data)
        else:
            new_packet = ReceivePacket(xbee_packet.x64bit_source_addr,
                                       xbee_packet.x16bit_source_addr,
                                       xbee_packet.receive_options,
                                       xbee_packet.rf_data)
        return new_packet
Esempio n. 2
0
PAYLOAD = {'cmd': 0x1, 'value': ''}

if __name__ == '__main__':
    # dummy_xbee = DigiMeshDevice('/dev/ttyUSB0', 9600)
    addr = XBee64BitAddress(DUMMY_ADDR)
    # remote = RemoteDigiMeshDevice(dummy_xbee, addr, node_id="DUMMY")
    tx_options = TransmitOptions.NONE.value
    # packet = TransmitPacket(dummy_xbee._get_next_frame_id(),
    #                         addr,
    #                         XBee16BitAddress.UNKNOWN_ADDRESS,
    #                         0,
    #                         tx_options,
    #                         rf_data=b"HELLO, WORLD")

    data = json.dumps(PAYLOAD).encode('utf-8')
    packet = ReceivePacket(addr,
                           XBee16BitAddress.UNKNOWN_ADDRESS,
                           ReceiveOptions.NONE.value,
                           rf_data=data)

    with serial.Serial('/dev/ttyUSB0', 9600) as ser:
        data = packet.output()
        hex = data.hex()
        size = len(data) / 8
        print(data)
        print(f'writing: {hex}, size: {size} bytes')
        print(f"payload: {packet._ReceivePacket__rf_data.hex()}")

        ser.write(data)
        print("done")