Exemplo n.º 1
0
class PingPongManager:
    def __init__(self, xbee: XBee):
        self._xbee = xbee
        self._protocol = Protocol(xbee)
        self._protocol.on_packet(PingPongPacket, self.on_message_received)
        self._time = time.time()

    async def init(self):
        logging.info('init')
        address = await self._xbee.discover_first_remote_device()
        logging.info('address\t')

        self._protocol.send_packet(
            address, PingPongPacket(index=0, payload=generate_payload(0)))

    def on_message_received(self, remote_address: bytearray,
                            ping_pong: PingPongPacket):
        t = time.time()
        delta = t - self._time
        self._time = t

        logging.info("Received (%s) \t%s\t%d", delta, remote_address,
                     ping_pong.index)
        ping_pong.index += 1
        ping_pong.payload = generate_payload(ping_pong.index)
        try:
            self._protocol.send_packet(remote_address, ping_pong)
            logging.info("Send\t%s\t%d", remote_address, ping_pong.index)
        except Exception as e:
            logging.error("Send error\t%s\t%s", remote_address, e)
Exemplo n.º 2
0
async def main():
    parser = ArgumentParser()
    parser.add_argument('--device', required=True)
    parser.add_argument('--db-uri', required=False)
    parser.add_argument('--timeout', type=float, default=30)

    use_stubs = bool(os.environ.get('USE_STUBS', False))

    args = parser.parse_args()

    if not use_stubs:
        xbee = XBee(args.device)
        xbee.open()

        protocol = Protocol(xbee, args.timeout)
        protocol.on_packet(CurrentLocationPacket, gps_data_received)
        protocol.on_request(SignDataRequest, sign_data_handler)

        if args.db_uri:
            database = Database(args.db_uri)

            set_interval(sign_data_task, 1, protocol, database)
            set_interval(send_gps_task, 1, protocol, database)
    else:
        if args.db_uri:
            database = Database(args.db_uri)
            set_interval(sign_data_task, 1, None, database)