From 789a0ee5481ea284cda10388a9ba8ebeb0a8a1f2 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Wed, 3 Aug 2016 05:11:43 +0200 Subject: [PATCH] Report unknown Spectrum sensors as raw sensors (#3679) --- radio/src/telemetry/spektrum.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/radio/src/telemetry/spektrum.cpp b/radio/src/telemetry/spektrum.cpp index f9413a14b..5a86724d8 100644 --- a/radio/src/telemetry/spektrum.cpp +++ b/radio/src/telemetry/spektrum.cpp @@ -262,8 +262,10 @@ void processSpektrumPacket(uint8_t *packet) { uint8_t i2cAddress = (packet[2] & 0x7f); uint8_t instance = packet[3]; + bool handled = false; for (const SpektrumSensor *sensor = spektrumSensors; sensor->i2caddress; sensor++) { if (i2cAddress == sensor->i2caddress) { + handled = true; // Extract value, skip header int32_t value = spektrumGetValue(packet + 4, sensor->startByte, sensor->dataType); @@ -308,6 +310,16 @@ void processSpektrumPacket(uint8_t *packet) { setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, value, sensor->unit, sensor->precision); } } + if (!handled) { + // If we see a sensor that is not handled at all, add the raw values of this sensor to show its existance to + // the user and help debugging/implementing these sensors + + for (int startByte=0;startByte <14; startByte+=2) { + int32_t value = spektrumGetValue(packet + 4, startByte, uint16); + uint16_t pseudoId = i2cAddress << 8 | startByte; + setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, value, UNIT_RAW, 0); + } + } } void processSpektrumTelemetryData(uint8_t data) {