diff --git a/radio/src/io/frsky_pxx2.h b/radio/src/io/frsky_pxx2.h index 4168678f0..4b614edb3 100644 --- a/radio/src/io/frsky_pxx2.h +++ b/radio/src/io/frsky_pxx2.h @@ -28,7 +28,7 @@ class ModuleFifo : public Fifo { public: bool getFrame(uint8_t * frame) { - while (1) { + while (true) { if (isEmpty()) { return false; } diff --git a/radio/src/telemetry/frsky_pxx2.cpp b/radio/src/telemetry/frsky_pxx2.cpp index f4541ac20..53766774f 100644 --- a/radio/src/telemetry/frsky_pxx2.cpp +++ b/radio/src/telemetry/frsky_pxx2.cpp @@ -20,31 +20,7 @@ #include "opentx.h" -class Pxx2Telemetry -{ - protected: - static void processGetHardwareInfoFrame(uint8_t module, uint8_t *frame); - - static void processReceiverSettingsFrame(uint8_t module, uint8_t *frame); - - static void processRegisterFrame(uint8_t module, uint8_t * frame); - - static void processBindFrame(uint8_t module, uint8_t * frame); - - static void processTelemetryFrame(uint8_t module, uint8_t * frame); - - static void processSpectrumFrame(uint8_t module, uint8_t * frame); - - static void processRadioFrame(uint8_t module, uint8_t * frame); - - static void processPowerMeterFrame(uint8_t module, uint8_t * frame); - - static void processAuthenticationFrame(uint8_t module, uint8_t * frame); - - public: -}; - -void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame) +void processGetHardwareInfoFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_GET_HARDWARE_INFO) { return; @@ -68,7 +44,7 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame) } } -void processModuleSettingsFrame(uint8_t module, uint8_t * frame) +void processModuleSettingsFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_MODULE_SETTINGS) { return; @@ -88,7 +64,7 @@ void processModuleSettingsFrame(uint8_t module, uint8_t * frame) moduleState[module].mode = MODULE_MODE_NORMAL; } -void processReceiverSettingsFrame(uint8_t module, uint8_t * frame) +void processReceiverSettingsFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_RECEIVER_SETTINGS) { return; @@ -116,7 +92,7 @@ void processReceiverSettingsFrame(uint8_t module, uint8_t * frame) moduleState[module].mode = MODULE_MODE_NORMAL; } -void processRegisterFrame(uint8_t module, uint8_t * frame) +void processRegisterFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_REGISTER) { return; @@ -149,7 +125,7 @@ void processRegisterFrame(uint8_t module, uint8_t * frame) } } -void processBindFrame(uint8_t module, uint8_t * frame) +void processBindFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_BIND) { return; @@ -200,7 +176,7 @@ void processBindFrame(uint8_t module, uint8_t * frame) } } -void processResetFrame(uint8_t module, uint8_t * frame) +void processResetFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_RESET) { return; @@ -213,7 +189,7 @@ void processResetFrame(uint8_t module, uint8_t * frame) moduleState[module].mode = MODULE_MODE_NORMAL; } -void processTelemetryFrame(uint8_t module, uint8_t * frame) +void processTelemetryFrame(uint8_t module, const uint8_t * frame) { uint8_t origin = (module << 2) + (frame[3] & 0x03); if (origin != TELEMETRY_ENDPOINT_SPORT) { @@ -221,8 +197,8 @@ void processTelemetryFrame(uint8_t module, uint8_t * frame) } } -#if defined(ACCESS_LIB) -void processAuthenticationFrame(uint8_t module, uint8_t * frame) +#if defined(ACCESS_LIB) && !defined(SIMU) +void processAuthenticationFrame(uint8_t module, const uint8_t * frame) { uint8_t cryptoType = frame[3]; uint8_t messageDigest[16] = {0}; @@ -257,7 +233,7 @@ void processAuthenticationFrame(uint8_t module, uint8_t * frame) #define processAuthenticationFrame(module, frame) #endif -void processSpectrumAnalyserFrame(uint8_t module, uint8_t * frame) +void processSpectrumAnalyserFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_SPECTRUM_ANALYSER) { return; @@ -284,7 +260,7 @@ void processSpectrumAnalyserFrame(uint8_t module, uint8_t * frame) } } -void processPowerMeterFrame(uint8_t module, uint8_t * frame) +void processPowerMeterFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_POWER_METER) { return; @@ -296,7 +272,7 @@ void processPowerMeterFrame(uint8_t module, uint8_t * frame) } } -void processOtaUpdateFrame(uint8_t module, uint8_t * frame) +void processOtaUpdateFrame(uint8_t module, const uint8_t * frame) { if (moduleState[module].mode != MODULE_MODE_OTA_UPDATE) { return; @@ -322,7 +298,7 @@ void processOtaUpdateFrame(uint8_t module, uint8_t * frame) } } -void processModuleFrame(uint8_t module, uint8_t *frame) +void processModuleFrame(uint8_t module, const uint8_t *frame) { switch (frame[2]) { case PXX2_TYPE_ID_HW_INFO: @@ -359,7 +335,7 @@ void processModuleFrame(uint8_t module, uint8_t *frame) } } -void processToolsFrame(uint8_t module, uint8_t * frame) +void processToolsFrame(uint8_t module, const uint8_t * frame) { switch (frame[2]) { case PXX2_TYPE_ID_POWER_METER: @@ -372,8 +348,13 @@ void processToolsFrame(uint8_t module, uint8_t * frame) } } -void processPXX2Frame(uint8_t module, uint8_t *frame) +void processPXX2Frame(uint8_t module, const uint8_t * frame) { + LOG_TELEMETRY_WRITE_START(); + for (uint8_t i = 0; i < 1 + frame[0]; i++) { + LOG_TELEMETRY_WRITE_BYTE(frame[i]); + } + switch (frame[1]) { case PXX2_TYPE_C_MODULE: processModuleFrame(module, frame); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 57db917c9..51581ac79 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -79,6 +79,7 @@ inline bool isBadAntennaDetected() void telemetryWakeup() { uint8_t requiredTelemetryProtocol = modelTelemetryProtocol(); + uint8_t data; #if defined(REVX) uint8_t requiredSerialInversion = g_model.moduleData[EXTERNAL_MODULE].invertedSerial; @@ -100,6 +101,7 @@ void telemetryWakeup() processPXX2Frame(INTERNAL_MODULE, frame); } #endif + #if defined(EXTMODULE_USART) while (extmoduleFifo.getFrame(frame)) { processPXX2Frame(EXTERNAL_MODULE, frame); @@ -108,15 +110,16 @@ void telemetryWakeup() #endif #if defined(INTERNAL_MODULE_MULTI) - while(!intmoduleFifo.isEmpty()) { - uint8_t b=0; - intmoduleFifo.pop(b); - processMultiTelemetryData(b, INTERNAL_MODULE); + if (intmoduleFifo.pop(data)) { + LOG_TELEMETRY_WRITE_START(); + do { + processMultiTelemetryData(data, INTERNAL_MODULE); + LOG_TELEMETRY_WRITE_BYTE(data); + } while (intmoduleFifo.pop(data)); } #endif #if defined(STM32) - uint8_t data; if (telemetryGetByte(&data)) { LOG_TELEMETRY_WRITE_START(); do { diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 6041e5660..8b5aadc67 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -250,6 +250,6 @@ extern OutputTelemetryBuffer outputTelemetryBuffer __DMA; extern Fifo * luaInputTelemetryFifo; #endif -void processPXX2Frame(uint8_t module, uint8_t *frame); +void processPXX2Frame(uint8_t module, const uint8_t *frame); #endif // _TELEMETRY_H_ diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index a7de822a7..adb982dea 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -644,7 +644,7 @@ #define TR_MODULE_NO_TELEMETRY TR3("No telemetry", "No MULTI_TELEMETRY", "No MULTI_TELEMETRY detected") #define TR_MODULE_WAITFORBIND "Bind to load protocol" #define TR_MODULE_BINDING TR("Bind...","Binding") -#define TR_MODULE_UPGRADE TR("Upg. needed", "Module upgrade required") +#define TR_MODULE_UPGRADE TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required") #define TR_REBIND "Rebinding required" #define TR_REG_OK "Registration ok" #define TR_BIND_OK "Bind successful"