aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2015-05-29 11:46:17 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2015-05-29 11:46:17 +0200
commit5e480f068217e7987838db10c7a9f86893c7d8ee (patch)
tree75895238892f7580d43190fd344e9fc79694dcd0
parent0fcec415af15e7550f54fa0b4b8c9b5a5afdb1e0 (diff)
downloaddab752-remote-5e480f068217e7987838db10c7a9f86893c7d8ee.tar.gz
dab752-remote-5e480f068217e7987838db10c7a9f86893c7d8ee.tar.bz2
dab752-remote-5e480f068217e7987838db10c7a9f86893c7d8ee.zip
Show TII information
-rw-r--r--dab752.py66
1 files changed, 44 insertions, 22 deletions
diff --git a/dab752.py b/dab752.py
index c7bbb1b..09a91a9 100644
--- a/dab752.py
+++ b/dab752.py
@@ -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()