From e50d10bfe62e561abf3bbf5e65eec0b198149c53 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 4 Jan 2018 14:24:00 +0100 Subject: [PATCH] Review crossfire python parser (reverted from commit 18a97585116f5791f988a947ae1c756cd7e1ebe4) --- radio/util/crossfire-parse.py | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/radio/util/crossfire-parse.py b/radio/util/crossfire-parse.py index 2e050e493..680fb5d40 100755 --- a/radio/util/crossfire-parse.py +++ b/radio/util/crossfire-parse.py @@ -70,17 +70,6 @@ crc8tab = [ 0xAD, 0x78, 0xD2, 0x07, 0x53, 0x86, 0x2C, 0xF9 ] -def getCrossfireValue(data=[], *args): - sign = data[-1] - if (sign & 0x80) == 0: - value = -1 - else: - value = -0 - for n in data: - value = value << 8 - value = value + n - return value - def crc8(buffer): crc = 0 for c in buffer: @@ -88,27 +77,21 @@ def crc8(buffer): return crc def ParseGPS(payload): - lat = getCrossfireValue(payload[0:4]) / 1e7 - long = getCrossfireValue(payload[4:8])/ 1e7 - speed = getCrossfireValue(payload[8:10]) - head = getCrossfireValue(payload[10:12]) - alt = getCrossfireValue(payload[12:14]) - 1000 - numsat = payload[14] - return "[GPS] lat:%f long:%f speed:%d heading:%d alt:%d numsat:%d" % (lat, long, speed, head, alt, numsat) + pass def ParseBattery(payload): - voltage = getCrossfireValue(payload[0:2]) / 10 - current = getCrossfireValue(payload[2:4]) / 10 - consumption = getCrossfireValue(payload[4:7]) + voltage = float((payload[0] << 8) + payload[1]) / 10 + current = float((payload[2] << 8) + payload[3]) / 10 + consumption = (payload[4] << 16) + (payload[5] << 8) + payload[6] return "[Battery] %.1fV %.1fA %dmAh" % (voltage, current, consumption) def ParseLinkStatistics(payload): return "[Link Statistics] " def ParseAttitude(payload): - pitch = getCrossfireValue(payload[0:2])/ 1000 - roll = getCrossfireValue(payload[2:4]) / 1000 - yaw = getCrossfireValue(payload[4:6]) / 1000 + pitch = float((payload[0] << 8) + payload[1]) / 1000 + roll = float((payload[2] << 8) + payload[3]) / 1000 + yaw = float((payload[4] << 8) + payload[5]) / 1000 return "[Attitude] pitch=%.3f roll=%.3f yaw=%.3f" % (pitch, roll, yaw) def ParseFlightMode(payload):