Exemple #1
0
 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( )
Exemple #2
0
 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( )
Exemple #3
0
 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
Exemple #4
0
  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( )
Exemple #5
0
  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"