diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index c47870c9f..362da452b 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -88,9 +88,12 @@ class ModuleFifo : public Fifo { ridx = nextIndex(next); return true; } + + uint32_t errors; }; extern ModuleFifo intmoduleFifo; +extern ModuleFifo extmoduleFifo; class Pxx2CrcMixin { protected: diff --git a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp index b0526e308..36c6a2f45 100755 --- a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp @@ -21,7 +21,6 @@ #include "opentx.h" ModuleFifo intmoduleFifo; -uint8_t intmoduleErrors; void intmoduleStop() { @@ -80,7 +79,7 @@ extern "C" void INTMODULE_USART_IRQHandler(void) while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { uint8_t data = INTMODULE_USART->DR; if (status & USART_FLAG_ERRORS) { - intmoduleErrors++; + intmoduleFifo.errors++; } else { intmoduleFifo.push(data); diff --git a/radio/src/targets/taranis/extmodule_driver.cpp b/radio/src/targets/taranis/extmodule_driver.cpp index 4be33ab1a..26a9554b9 100644 --- a/radio/src/targets/taranis/extmodule_driver.cpp +++ b/radio/src/targets/taranis/extmodule_driver.cpp @@ -110,6 +110,8 @@ void extmoduleSerialStart(uint32_t /*baudrate*/, uint32_t period_half_us) } #if defined(EXTMODULE_USART) +ModuleFifo extmoduleFifo; + void extmoduleInvertedSerialStart(uint32_t baudrate) { EXTERNAL_MODULE_ON(); @@ -182,10 +184,10 @@ extern "C" void EXTMODULE_USART_IRQHandler(void) while (status & (USART_FLAG_RXNE | USART_FLAG_ERRORS)) { uint8_t data = EXTMODULE_USART->DR; if (status & USART_FLAG_ERRORS) { - // TODO later extmoduleErrors++; + extmoduleFifo.errors++; } else { - // TODO later extmoduleFifo.push(data); + extmoduleFifo.push(data); } status = EXTMODULE_USART->SR; } diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 6ef2d3dcd..9880279f8 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -211,11 +211,20 @@ void telemetryWakeup() } #endif -#if defined(INTMODULE_USART) +#if defined(INTMODULE_USART) || defined(EXTMODULE_USART) uint8_t frame[32]; - if (intmoduleFifo.getFrame(frame)) { - processModuleFrame(INTERNAL_MODULE, frame); - } + + #if defined(INTMODULE_USART) + if (intmoduleFifo.getFrame(frame)) { + processModuleFrame(INTERNAL_MODULE, frame); + } + #endif + + #if defined(EXTMODULE_USART) + if (extmoduleFifo.getFrame(frame)) { + processModuleFrame(EXTERNAL_MODULE, frame); + } + #endif #endif #if defined(STM32)