From 5c371bd39bb052121b6ef6c2345beab9788d07c0 Mon Sep 17 00:00:00 2001 From: eshifri <46511024+eshifri@users.noreply.github.com> Date: Fri, 7 Jan 2022 19:37:23 -0800 Subject: [PATCH] [nv14] Improve support for old NV14 Radio Module FW (#1329) * Improve support for old Radio Module FW * Change OLD RSSI scaling to 100 - 40 range * change boolean variable name --- radio/src/telemetry/flysky_nv14.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/radio/src/telemetry/flysky_nv14.cpp b/radio/src/telemetry/flysky_nv14.cpp index 046d9f2ff..a697c8187 100644 --- a/radio/src/telemetry/flysky_nv14.cpp +++ b/radio/src/telemetry/flysky_nv14.cpp @@ -125,6 +125,8 @@ int32_t GetSensorValueFlySkyNv14(const FlyskyNv14Sensor* sensor, int32_t value = 0; const nv14SensorData* sensorData = reinterpret_cast(data + sensor->offset); + static bool pre_10_0_14_RmFw = false; + if (sensor->bytes == 1) value = sensorData->UINT8; else if (sensor->bytes == 2) @@ -132,23 +134,32 @@ int32_t GetSensorValueFlySkyNv14(const FlyskyNv14Sensor* sensor, else if (sensor->bytes == 4) value = sensorData->UINT32; + if (NV14internalModuleFwVersion <= 0x1000E) { + if (sensor->id == FLYSKY_SENSOR_RX_SIGNAL) { + if (value <= 10) + pre_10_0_14_RmFw = true; + else + pre_10_0_14_RmFw = false; + } + } + // For older RF module FW Sgml is in [0, 10] range // and we need to use RSSI for alarm - if (NV14internalModuleFwVersion < 0x1000E) { + if (pre_10_0_14_RmFw) { if (sensor->id == FLYSKY_SENSOR_RX_RSSI) { if (value < -200) value = -200; // if g_model.rssiAlarms.flysky_telemetry == 1 // RSSI will be kept within native FlySky range [-90, -60] if (!g_model.rssiAlarms.flysky_telemetry) { - value += 200; - value /= 2; + value *= 2; + value += 220; } telemetryData.rssi.set(value); } } else if (sensor->id == FLYSKY_SENSOR_RX_SIGNAL) { - telemetryData.rssi.set(value); + telemetryData.rssi.set(value); } - + if (sensor->id == FLYSKY_SENSOR_PRESSURE) { switch(sensor->subId) {