}
VDM_ACK = ["REQ", "ACK", "NAK", "BSY"]
}
VDM_ACK = ["REQ", "ACK", "NAK", "BSY"]
def get_vdm(self, idx, data):
if idx == 0: # VDM header
def get_vdm(self, idx, data):
if idx == 0: # VDM header
- vid = data >> 16
- struct = data & (1 << 15)
- txt = "VDM"
- if struct: # Structured VDM
- cmd = data & 0x1f
- src = data & (1 << 5)
- ack = (data >> 6) & 3
- pos = (data >> 8) & 7
- ver = (data >> 13) & 3
- txt = VDM_ACK[ack] + " "
- txt += VDM_CMDS[cmd] if cmd in VDM_CMDS else "cmd?"
- txt += " pos %d" % (pos) if pos else " "
- else: # Unstructured VDM
- txt = "unstruct [%04x]" % (data & 0x7fff)
- txt += " SVID:%04x" % (vid)
+ vid = data >> 16
+ struct = data & (1 << 15)
+ txt = "VDM"
+ if struct: # Structured VDM
+ cmd = data & 0x1f
+ src = data & (1 << 5)
+ ack = (data >> 6) & 3
+ pos = (data >> 8) & 7
+ ver = (data >> 13) & 3
+ txt = VDM_ACK[ack] + " "
+ txt += VDM_CMDS[cmd] if cmd in VDM_CMDS else "cmd?"
+ txt += " pos %d" % (pos) if pos else " "
+ else: # Unstructured VDM
+ txt = "unstruct [%04x]" % (data & 0x7fff)
+ txt += " SVID:%04x" % (vid)
# TODO check all 0 bits are 0 / emit warnings
return "mode %s" % (mode_name) if idx == 0 else "invalid BRO"
# TODO check all 0 bits are 0 / emit warnings
return "mode %s" % (mode_name) if idx == 0 else "invalid BRO"