diff options
-rw-r--r-- | dab752.py | 66 |
1 files changed, 44 insertions, 22 deletions
@@ -48,11 +48,9 @@ def check_crc(data): class LLCP: def __init__(self, port): self.packet_id = 0 - self.serial = serial.Serial(port, 19200, timeout=0.5) + self.serial = serial.Serial(port, 19200, timeout=0.2) def _tx_data(self, data): - print("TX %r" % data) - self.serial.write(data) self.receive_packet() @@ -62,7 +60,6 @@ class LLCP: header = self.serial.read() if not header: - print("RX timeout") return [] header = ord(header) packet.append(header) @@ -106,22 +103,17 @@ class LLCP: if header == SOH_header: print("SOH") - if header == STX_header: - print("STX") + if packet[3] == 0: + print("Warning: is a syntax error!") if header == ETB_header: print("ETB") if header == ETX_header: print("ETX") - if header == ACK_header: - print("ACK") if header == NAK_header: print("NAK") if check_crc(packet): - print("RX CRC Valid") - if header != ACK_header and header != NAK_header: - print("Send ACK") ack_data = [ACK_header, packet_id] ack_data.extend(get_crc(ack_data)) self._tx_data(ack_data) @@ -134,7 +126,8 @@ class LLCP: ack_data.extend(get_crc(ack_data)) self._tx_data(ack_data) - print("RX %r" % packet) + + return packet @@ -173,6 +166,11 @@ llcp = LLCP("/dev/ttyUSB0") LnkRegister = 129 GetComponentList = 39 GetCurrentFrequency = 41 +GetNrOfTII = 50 +GetTII = 61 +SetSubscription = 148 +TIIListChanged = 204 +TIIVectorsChanged = 205 # Send a Link Register On message print("Send a LnkRegister") @@ -183,22 +181,46 @@ for i in range(4): if rx: break -print("Send invalid opcode") -llcp.transmit([78]) -llcp.receive_packet() +print("Send GetCurrentFrequency") +llcp.transmit([GetCurrentFrequency]) +packet = llcp.receive_packet() +print("Frequency %d kHz" % (packet[4] << 16 | packet[5] << 8 | packet[6])) print() -print("Send GetComponentList") -llcp.transmit([GetComponentList]) -llcp.receive_packet() +print("Send a GetNrOfTII") +llcp.transmit([GetNrOfTII]) +packet = llcp.receive_packet() +print("Nr of TII: %d" % packet[4]) print() -print("Send GetCurrentFrequency") -llcp.transmit([GetCurrentFrequency]) -llcp.receive_packet() +print("Subscribe to TII info") +llcp.transmit([SetSubscription, TIIListChanged, 1]) print() +while True: + try: + packet = llcp.receive_packet() + if packet: + if packet[3] == TIIListChanged: + if packet[4] == 3: + print("TII List: no valid data") + elif packet[4] == 0: + print("TII List:") + nroftii = packet[5] + ix = 6 + for i in range(nroftii): + print(" comb=%d, pattern=%d" % (packet[ix], packet[ix+1])) + ix += 2 + + else: + print("TII List: invalid packet") + else: + print("RX %r" % packet) + except KeyboardInterrupt: + break + print("Send a LnkRegister Off") llcp.transmit([LnkRegister, 0]) -llcp.receive_packet() +packet = llcp.receive_packet() +print("RX %r" % packet) print() |