def ack (self): null = bytearray([0x00]) pkt = Packet.fromCommand(self.command, payload=null, serial=self.command.serial) pkt = pkt._replace(payload=null, op=0x06) buf = pkt.assemble( ) print "ACK tx", str(buf).encode('hex') encoded = FourBySix.encode(buf) self.link.write(encoded) self.link.triggerTX( )
def prelude (self, command): link = self.link self.expected = command.bytesPerRecord * command.maxRecords self.command = command # payload = bytearray([len(command.params)]) + bytearray(command.params) payload = bytearray([0]) self.pkt = Packet.fromCommand(command, payload=payload, serial=command.serial) self.pkt = self.pkt.update(payload) buf = self.pkt.assemble( ) print "sending", str(buf).encode('hex') encoded = FourBySix.encode(buf) self.send(encoded) print "searching response for ", command, 'done? ', self.done( )
def send_params (self): command = self.command params = self.command.params payload = bytearray([len(params)]) + bytearray(params) missing = [ ] missing = bytearray([0x00]) * (64 - len(params)) payload = payload + missing pkt = Packet.fromCommand(command, payload=payload, serial=command.serial) pkt = pkt.update(payload) buf = pkt.assemble( ) print "sending PARAMS", str(buf).encode('hex') encoded = FourBySix.encode(buf) self.link.write(encoded) self.link.triggerTX( ) # self.link.write(encoded) # self.link.triggerTX( ) self.sent_params = True
def respond (self, link): print "RESPONDING ", self.queue while self.queue: func, packet, resp = self.queue.pop( ) payload = func(packet) buf = resp.respond(payload) print "SENDING", str(buf).encode('hex') print lib.hexdump(buf) encoded = FourBySix.encode(buf) print "SENDING ENCODED", str(encoded).encode('hex') print lib.hexdump(encoded) # link.write(buf) link.write(encoded) link.triggerTX( ) link.triggerTX( ) link.triggerTX( )
parser.add_argument('--model', '-M', default='mmblelink', help="Name to send") parser.add_argument('mac', help='MAC address of rileylink') parser.add_argument('serial', help='Serial of fake pump to emulate.') parser.add_argument('--timezone', '-Z', type=gettz, default=gettz( )) parser.add_argument('--out', '-o', type=argparse.FileType('w'), default='-') argcomplete.autocomplete(parser) return parser if __name__ == '__main__': from mmblelink.monitor import Monitor, choose_rx_channel as choose_channel from mmblelink.link import Link parser = setup_argparser( ) args = parser.parse_args( ) print "radio" print lib.hexdump(FourBySix.encode(bytearray(str('a79090908d090336363680').decode('hex')))) if args.verbosity > 0: print args if args.mac and args.serial: mac = args.mac link = Link(mac, sleep_interval=args.sleep_interval) link.open( ) monitor = Monitor(link, RX=choose_channel(args.rx), sleep_interval=args.sleep_interval, timeout=args.timeout, verbosity=args.verbosity) state = States(args.serial, args.model) emulate = PumpEmulate(monitor, args.serial, args.model) try: emulate.listen(state, strict=args.strict) except (KeyboardInterrupt), e: if args.verbosity > 0: print "Quitting"