def debug_query(atcom, dest):
    command_dict = {'PL': b'QP', 'CH': b'QC', 'A': b'QA', 'T': b'QT'}
    data = command_dict[atcom]
    print('data: {}({})'.format(data, type(data)))
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
Exemple #2
0
def decodelog_rxpacket(fp, payload):
    src = hexstr(payload[1:9])
    res = hexstr(payload[9:11])
    rxopt = payload[11]
    data = hexstr(payload[12:])

    # Format (hex): 90, src, res, rxopt, data
    fp.write('---- 90, {}, {}, {}, {}\n'.format(src, res, rxopt, data))
Exemple #3
0
def cmdtest_local_atquery(ser,at):
  from packet_encode import atcom_query
  from packet_decode import rxpacket
  tx_packet = atcom_query(at) 
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  status, payload = rxpacket(ser) 
  print('Payload: {}'.format(mf.hexstr(payload))) 
  pd.decode_payload(payload)
  print('-----')
Exemple #4
0
def cmdtest_remote_unicast2(ser,n,dest):
  from packet_encode import debug_unicast2
  from packet_decode import rxpacket
  tx_packet = debug_unicast2(n,dest)
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  for i in range(n+1):
    status, payload = rxpacket(ser)
    print('Payload: {}'.format(mf.hexstr(payload)))
    pd.decode_payload(payload)
    print('-----')
def debug_unicast2(n, dest):

    if n > 255:
        print('Error: number of transmissions exceeds limit')
        return b''

    data = b'DU' + (n).to_bytes(1, 'big')
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))

    bytestr = gen_headtail(payload)

    return bytestr
Exemple #6
0
def cmdtest_remote_unicast(ser,n,dest):
  from packet_encode import debug_unicast
  from packet_decode import rxpacket
  tx_packet = debug_unicast(n,dest)
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  for i in range(n+1):
    status, payload = rxpacket(ser)
    print('Payload: {}'.format(mf.hexstr(payload)))
    status = pd.decode_payload(payload)
    if status != 0:
      print('Aborting listen')
      return 1
    print('-----')
Exemple #7
0
def decode_txstat(payload):

    fid = payload[1]
    dest16 = hexstr(payload[2:4])
    txretry = payload[4]
    delivery = payload[5]
    delivery_dict = {
        0x00: 'Success',
        0x01: 'MAC ACK failure',
        0x02: 'Collision avoidance failure',
        0x21: 'Network ACK failure',
        0x25: 'Route not found',
        0x31: 'Internal resource error',
        0x32: 'Internal error'
    }
    discovery = payload[6]
    discovery_dict = {0x00: 'No discovery overhead', 0x02: 'Route discovery'}

    print('Transmit Status frame (0x8b)')
    print('  Frame ID: {}'.format(hex(fid)))
    print('  16-bit dest addr: {}'.format(dest16))
    print('  Tx retry count: {}'.format(txretry))
    print('  Delivery status: {} ({})'.format(delivery,
                                              delivery_dict[delivery]))
    print('  Discovery status: {} ({})'.format(discovery,
                                               discovery_dict[discovery]))

    if delivery == 0:
        return 0
    else:
        return 1
Exemple #8
0
def decode_atcomres(payload):

    fid = payload[1]
    athi = (payload[2]).to_bytes(1, 'big')
    atlo = (payload[3]).to_bytes(1, 'big')
    status = payload[4]
    status_dict = {
        0: 'OK',
        1: 'ERROR',
        2: 'Invalid command',
        3: 'Invalid parameter'
    }

    print('AT Command Response frame (0x88)')
    print('  Frame ID: {}'.format(hex(fid)))
    print('  AT command: {}{}'.format(athi.decode(), atlo.decode()))
    print('  Command status: {} ({})'.format(status, status_dict[status]))

    # Presence of Command Data
    if len(payload) > 5:
        print('  Command data: 0x{}'.format(hexstr(payload[5:])))

    if status == 0:
        return 0
    else:
        return 1
def remote_nodeloc(ser, remote, loc):
    success = 0
    maxlen = 20

    length = len(loc)
    if length > maxlen:
        print('Exceeded maximum node loc length')
        return 0
    length_b = (length).to_bytes(1, 'big')

    data = b'DL' + length_b + bytes(loc, 'ascii')
    payload = pe.gen_txreq('01', remote, '00', '00', mf.hexstr(data))
    bytestr = pe.gen_headtail(payload)
    ser.write(bytestr)

    while success == 0:
        success, payload = pd.rxpacket_buffered(ser)
        if payload == b'':
            print('Serial timeout')
            return 0
        else:
            if success == 1:
                if payload[0] == 0x8b:
                    error = pd.decode_txstat(payload)
                    if error == 0:
                        print('Remote node {} node loc set'.format(remote))
                        return 1

            success = 0
Exemple #10
0
def cmdtest_remote_setchannel(ser,ch,dest):
  tx_packet = pe.debug_channel(ch,dest)
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  status, payload = pd.rxpacket(ser)
  pd.decode_payload(payload)
  print('-----')
Exemple #11
0
def cmdtest_listen(ser):
  print('Listening to transmissions')
  print('-----')
  while 1:
    status, payload = pd.rxpacket(ser)
    print('Payload: {}'.format(mf.hexstr(payload)))
    status = pd.decode_payload(payload)
    print('-----')
Exemple #12
0
def cmdtest_remote_setaddr(ser,newaddr,dest):
  tx_packet = pe.debug_setaddr(newaddr,dest)
  print('Sending Change aggregator address')
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  status, payload = pd.rxpacket(ser)
  pd.decode_payload(payload)
  print('-----')
Exemple #13
0
def cmdtest_remote_stop(ser,dest):
  tx_packet = pe.stop_sensing(dest)
  print('Sending stop signal')
  print('Tx Packet: {}'.format(mf.hexstr(tx_packet)))
  print('-----')
  ser.write(tx_packet)
  status, payload = pd.rxpacket(ser)
  pd.decode_payload(payload)
  print('-----')
def remote_query(ser, remote, param):
    success = 0

    command_dict = {
        'PL': b'QP',
        'CH': b'QC',
        'A': b'QA',
        'T': b'QT',
        'WR': b'DW',
        'S': b'QS'
    }

    data = command_dict[param]
    payload = pe.gen_txreq('01', remote, '00', '00', mf.hexstr(data))
    bytestr = pe.gen_headtail(payload)
    ser.write(bytestr)

    while success == 0:

        success, payload = pd.rxpacket_buffered(ser)
        if payload == b'':
            print('Serial timeout')
            return 0
        if success == 0:
            print('Error receiving response from Transmit request')
            return success
        if payload[0] == 0x8b:
            error = pd.decode_txstat(payload)
            if error == 1:
                print('Error reported by transmit status')
                return 0
            else:
                success = 1
        else:
            success = 0

    # Read Transmitted values
    success = 0

    print('Remote node response:')

    while success == 0:

        success, payload = pd.rxpacket_buffered(ser)
        #print('payload: {}'.format(payload))

        if payload == b'':
            print('Serial timeout')
            return 0

        if payload[0] == 0x90:
            #print('-- received packet')
            pd.decode_rxpacket(payload)
            success = 1
        else:
            success = 0
Exemple #15
0
def decode_rxpacket(payload):

    src = hexstr(payload[1:9])
    res = hexstr(payload[9:11])
    rxopt = payload[11]
    rxopt_dict = {
        0x01: 'Packet acknowledged',
        0x02: 'Packet was a broadcast packet'
    }
    data = hexstr(payload[12:])

    print('Receive Packet frame (0x90)')
    print('  64-bit source addr: {}'.format(src))
    print('  Reserved: {}'.format(res))
    if rxopt in rxopt_dict:
        print('  Rx options: {} ({})'.format(rxopt, rxopt_dict[rxopt]))
    else:
        print('  Rx options: ({})'.format(hex(rxopt)))
    print('  Rx data: 0x{} ({})'.format(data, payload[12:]))
Exemple #16
0
def cmdtest_remote_query(ser,atcom,dest):
  tx_packet = pe.debug_query(atcom,dest)
  print('Sending remote query parameter')
  print('Tx Packet : {}'.format(mf.hexstr(tx_packet)))
  print('----')
  ser.write(tx_packet)
  status, payload = pd.rxpacket(ser)
  status = pd.decode_payload(payload)
  print('----')
  if status != 0:
    print('Aborting listen')
    return 1
  print('-> Response')
  status, payload = pd.rxpacket(ser)
  pd.decode_payload(payload)
  print('----')
def start_sensing(period, dest):
    data = b'S' + (period).to_bytes(1, 'big')
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
def stop_sensing(dest):
    data = b'X'
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
else:
  ch = b'\x19'

if args.numtx:
   numtx = int(args.numtx)
else:
   numtx = 1

## Configure UART
print('** Step 1. Configuring local UART **')
dev = 0
ser = c.cmdtest_uartsetup(dev)
remote = c.cmdtest_addrconv(args.nodeaddr)

## Set channel
print('** Step 2. Setting local channel to 0x{} **'.format(mf.hexstr(ch)))
tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
if status != 1:
  print('-- Error receiving internal packet (atcom_query)')
  quit()
status = pd.decode_payload(payload)
if status != 0:
  print('-- Error decoding internal packet (atcom_query)')
  quit()

tx_packet = pe.atcom_set('CH',ch)
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
status = pd.decode_payload(payload)
def debug_setaddr(newaddr, dest):
    data = b'DA' + newaddr
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
def msgformer(msg, dest):
    payload = gen_txreq('01', hexstr(dest), '00', '00', msg)
    bytestr = gen_headtail(payload)
    return bytestr
    dev = 0

if args.timeout:
    timeout_max = int(args.timeout)
else:
    timeout_max = 5

## Configure UART
print('** Step 1. Configuring local UART **')
#ser = c.cmdtest_uartsetup(port=dev,timeout=5)
device = '/dev/ttyUSB' + str(dev)
ser = serial.Serial(port=device, timeout=5)
remote = c.cmdtest_addrconv(args.nodeaddr)

## Set channel
print('** Step 2. Setting local channel to 0x{} **'.format(mf.hexstr(ch)))
tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket_buffered(ser)
if status != 1:
    print('-- Error receiving internal packet (atcom_query)')
    quit()
status = pd.decode_payload(payload)
if status != 0:
    print('-- Error decoding internal packet (atcom_query)')
    quit()

tx_packet = pe.atcom_set('CH', ch)
ser.write(tx_packet)
status, payload = pd.rxpacket_buffered(ser)
status = pd.decode_payload(payload)
def debug_channel(ch, dest):
    data = b'DC' + ch
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
  aggre_addr = args.aggre
else:
  aggre_addr = '0013a200409a0a81'

if args.portusb:
  dev = int(args.portusb)
else:
  dev = 0

## Configure UART
print('** Step 1. Configuring local UART **')
ser = c.cmdtest_uartsetup(dev)
remote = c.cmdtest_addrconv(args.nodeaddr)

## Set channel
print('** Step 2. Setting local channel to 0x{} **'.format(mf.hexstr(ch)))
tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
if status != 1:
  print('-- Error receiving internal packet (atcom_query)')
  quit()
status = pd.decode_payload(payload)
if status != 0:
  print('-- Error decoding internal packet (atcom_query)')
  quit()

tx_packet = pe.atcom_set('CH',ch)
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
status = pd.decode_payload(payload)
def debug_power(pow, dest):
    data = b'DP' + pow
    payload = gen_txreq('01', hexstr(dest), '00', '00', hexstr(data))
    bytestr = gen_headtail(payload)
    return bytestr
Exemple #26
0
    quit()

tx_packet = pe.atcom_set('CH', ch)
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
status = pd.decode_payload(payload)
if status != 0:
    print('-- Error setting AT parameter CH')
    quit()

tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
if status != 1:
    print('-- Error receiving internal packet (atcom_query)')
    quit()
status = pd.decode_payload(payload)
if status != 0:
    print('-- Error decoding internal packet (atcom_query)')
    quit()
print(' ')

## Listen
#c.cmdtest_listen(ser)
while 1:
    status, payload = pd.rxpacket(ser)
    print(datetime.now())
    print('Payload: {}'.format(mf.hexstr(payload)))
    status = pd.decode_payload(payload)
    print('-----')
    dev = int(args.portusb)
else:
    dev = 0

if args.parameter:
    param = args.parameter
else:
    param = 'PL'

## Configure UART
print('** Step 1. Configuring local UART **')
ser = c.cmdtest_uartsetup(dev)
remote = c.cmdtest_addrconv(args.nodeaddr)

## Set channel
print('** Step 2. Setting local channel to 0x{} **'.format(mf.hexstr(ch)))
tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
if status != 1:
    print('-- Error receiving internal packet (atcom_query)')
    quit()
status = pd.decode_payload(payload)
if status != 0:
    print('-- Error decoding internal packet (atcom_query)')
    quit()

tx_packet = pe.atcom_set('CH', ch)
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
status = pd.decode_payload(payload)
Exemple #28
0
if args.oldchannel:
  ch_old = mf.hexstr2byte(args.oldchannel)
else:
  ch_old = b'\x0c'

if args.newchannel:
  ch_new = mf.hexstr2byte(args.newchannel)
else:
  ch_new = b'\x1a'

if args.portusb:
  dev = int(args.portusb)
else:
  dev = 0

print('-- Switching channel from 0x{} to 0x{}'.format(mf.hexstr(ch_old),mf.hexstr(ch_new))) 
print(' ')

## Configure UART
print('** Step 1. Configuring local UART **')
ser = c.cmdtest_uartsetup(0)
remote = c.cmdtest_addrconv(args.nodeaddr)
print(' ')

## Set local channel to old channel
print('** Step 2. Setting local channel to 0x{} **'.format(mf.hexstr(ch_old)))
tx_packet = pe.atcom_query('CH')
ser.write(tx_packet)
status, payload = pd.rxpacket(ser)
if status != 1:
  print('-- Error receiving internal packet (atcom_query)')