From 0fe85834ab2ed2fda69a164f4bd516a6535222e1 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 2 Nov 2016 12:50:09 +0100 Subject: [PATCH] [XFire] Crossfire parameters chunks support added --- radio/src/telemetry/telemetry.h | 2 +- radio/util/crossfire-parse.py | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 16b1945b6..f7c6dec26 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -70,7 +70,7 @@ enum TelemetrySerialMode { }; #if defined(CROSSFIRE) -#define TELEMETRY_RX_PACKET_SIZE 64 +#define TELEMETRY_RX_PACKET_SIZE 128 #else #define TELEMETRY_RX_PACKET_SIZE 19 // 9 bytes (full packet), worst case 18 bytes with byte-stuffing (+1), multimodule Spektrum telemetry is 18 bytes #endif diff --git a/radio/util/crossfire-parse.py b/radio/util/crossfire-parse.py index 7d44965ad..6031e75de 100644 --- a/radio/util/crossfire-parse.py +++ b/radio/util/crossfire-parse.py @@ -72,11 +72,14 @@ def ParseFieldRequest(payload): def ParseField(payload): name = "" i = 6 - while payload[i] != 0: - name += chr(payload[i]) + try: + while payload[i] != 0: + name += chr(payload[i]) + i += 1 i += 1 - i += 1 - return '[Field] %s device=0x%02x field=%d parent=%d type=%s' % (name, payload[1], payload[2], payload[4], crossfire_types[payload[5] & 0x7f]) + return '[Field] %s device=0x%02x field=%d parent=%d type=%s' % (name, payload[1], payload[2], payload[4], crossfire_types[payload[5] & 0x7f]) + except: + return '[Exception]' parsers = ( (0x02, ParseGPS),