diff --git a/radio/src/gui/gui_common_arm.cpp b/radio/src/gui/gui_common_arm.cpp index 8c38b03f2..0355166d0 100644 --- a/radio/src/gui/gui_common_arm.cpp +++ b/radio/src/gui/gui_common_arm.cpp @@ -544,7 +544,7 @@ bool isExternalModuleAvailable(int module) } #endif #if !defined(PXX2) - if (module == MODULE_TYPE_XJT2) { + if (module == MODULE_TYPE_XJT2 || module == MODULE_TYPE_R9M2) { return false; } #endif diff --git a/radio/src/io/frsky_pxx2.h b/radio/src/io/frsky_pxx2.h index b879ebec6..560ae2b9b 100644 --- a/radio/src/io/frsky_pxx2.h +++ b/radio/src/io/frsky_pxx2.h @@ -25,8 +25,9 @@ #define PXX2_BAUDRATE 230400 #define PXX2_PERIOD 4 // 4ms +#define PXX2_FRAME_MAXLENGTH 32 -class ModuleFifo : public Fifo { +class ModuleFifo : public Fifo { public: bool getFrame(uint8_t * frame) { @@ -45,6 +46,7 @@ class ModuleFifo : public Fifo { uint32_t next = nextIndex(ridx); uint8_t len = fifo[next]; if (unsigned(len + 4 /* 2 bytes header + 2 bytes CRC */) > size()) { + // frame not fully received return false; } diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index b1de783c9..737e22a80 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -211,7 +211,7 @@ void telemetryWakeup() #endif #if defined(INTMODULE_USART) || defined(EXTMODULE_USART) - uint8_t frame[32]; + uint8_t frame[PXX2_FRAME_MAXLENGTH]; #if defined(INTMODULE_USART) if (intmoduleFifo.getFrame(frame)) {