From 6277717c16b3535b0da93f59ebedf1e147ddd236 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Wed, 20 Mar 2019 09:53:14 +0100 Subject: [PATCH] Powermeter fixes --- radio/src/gui/common/stdlcd/radio_power_meter.cpp | 12 ++++++++---- radio/src/opentx.h | 4 ++-- radio/src/pulses/pulses.cpp | 2 +- radio/src/telemetry/frsky_pxx2.cpp | 4 ++-- radio/src/telemetry/telemetry.cpp | 4 ++-- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/radio/src/gui/common/stdlcd/radio_power_meter.cpp b/radio/src/gui/common/stdlcd/radio_power_meter.cpp index ca641874f..fbe5f96ab 100644 --- a/radio/src/gui/common/stdlcd/radio_power_meter.cpp +++ b/radio/src/gui/common/stdlcd/radio_power_meter.cpp @@ -54,11 +54,15 @@ void menuRadioPowerMeter(event_t event) y += FH + 1; lcdDrawText(0, y, "Power"); - lcdDrawNumber(8*FW, y, reusableBuffer.powerMeter.power, LEFT); - lcdDrawText(lcdNextPos, y, "dBm"); + if (reusableBuffer.powerMeter.power) { + lcdDrawNumber(8 * FW, y, reusableBuffer.powerMeter.power, LEFT | PREC2); + lcdDrawText(lcdNextPos, y, "dBm"); + } y += FH + 1; lcdDrawText(0, y, "Peak"); - lcdDrawNumber(8*FW, y, reusableBuffer.powerMeter.peak, LEFT); - lcdDrawText(lcdNextPos, y, "dBm"); + if (reusableBuffer.powerMeter.peak) { + lcdDrawNumber(8 * FW, y, reusableBuffer.powerMeter.peak, LEFT | PREC2); + lcdDrawText(lcdNextPos, y, "dBm"); + } } diff --git a/radio/src/opentx.h b/radio/src/opentx.h index c3c82927e..27fcec425 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1209,8 +1209,8 @@ union ReusableBuffer struct { uint32_t freq; - uint32_t power; - uint32_t peak; + int16_t power; + int16_t peak; } powerMeter; struct diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index f5f1f50c6..511b1710a 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -251,7 +251,7 @@ void setupPulsesInternalModule(uint8_t protocol) #if defined(PXX2) case PROTOCOL_CHANNELS_PXX2: intmodulePulsesData.pxx2.setupFrame(INTERNAL_MODULE); - scheduleNextMixerCalculation(INTERNAL_MODULE, moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_SPECTRUM_ANALYSER ? 1 : PXX2_PERIOD); + scheduleNextMixerCalculation(INTERNAL_MODULE, moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_SPECTRUM_ANALYSER || moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_POWER_METER ? 1 : PXX2_PERIOD); break; #endif diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index e16652ee5..c65fa9fad 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -179,8 +179,8 @@ void processPowerMeterFrame(uint8_t module, uint8_t * frame) return; } - reusableBuffer.powerMeter.power = *((uint16_t *)&frame[8]); - if (reusableBuffer.powerMeter.power > reusableBuffer.powerMeter.peak) { + reusableBuffer.powerMeter.power = *((int16_t *)&frame[8]); + if (!reusableBuffer.powerMeter.peak || reusableBuffer.powerMeter.power > reusableBuffer.powerMeter.peak) { reusableBuffer.powerMeter.peak = reusableBuffer.powerMeter.power; } } diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 6d4f97eb8..a1bd14305 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -91,13 +91,13 @@ void telemetryWakeup() uint8_t frame[PXX2_FRAME_MAXLENGTH]; #if defined(INTMODULE_USART) - if (intmoduleFifo.getFrame(frame)) { + while (intmoduleFifo.getFrame(frame)) { processPXX2TelemetryFrame(INTERNAL_MODULE, frame); } #endif #if defined(EXTMODULE_USART) - if (extmoduleFifo.getFrame(frame)) { + while (extmoduleFifo.getFrame(frame)) { processPXX2TelemetryFrame(EXTERNAL_MODULE, frame); } #endif