diff --git a/radio/src/pulses/pxx2.cpp b/radio/src/pulses/pxx2.cpp index 28e65947b..ad4e2cde5 100644 --- a/radio/src/pulses/pxx2.cpp +++ b/radio/src/pulses/pxx2.cpp @@ -104,7 +104,7 @@ void Pxx2Pulses::setupChannelsFrame(uint8_t module) } } -bool Pxx2Pulses::setupRegisterFrame(uint8_t module) +void Pxx2Pulses::setupRegisterFrame(uint8_t module) { addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_REGISTER); @@ -120,23 +120,22 @@ bool Pxx2Pulses::setupRegisterFrame(uint8_t module) else { Pxx2Transport::addByte(0); } - - return true; // TODO not always } -bool Pxx2Pulses::setupBindFrame(uint8_t module) +void Pxx2Pulses::setupBindFrame(uint8_t module) { - addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND); - if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_WAIT) { if (get_tmr10ms() > reusableBuffer.moduleSetup.pxx2.bindWaitTimeout) { moduleSettings[module].mode = MODULE_MODE_NORMAL; reusableBuffer.moduleSetup.pxx2.bindStep = BIND_OK; POPUP_INFORMATION(STR_BIND_OK); } - return false; + return; } - else if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) { + + addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_BIND); + + if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) { Pxx2Transport::addByte(0x01); for (uint8_t i=0; i 1000) { moduleSettings[module].counter = 1002; - return false; + return; } moduleSettings[module].counter = 1002; @@ -174,11 +171,9 @@ bool Pxx2Pulses::setupSpectrumAnalyser(uint8_t module) reusableBuffer.spectrum.step = 100000; // 100KHz Pxx2Transport::addWord(reusableBuffer.spectrum.step); - - return true; } -bool Pxx2Pulses::setupShareMode(uint8_t module) +void Pxx2Pulses::setupShareMode(uint8_t module) { addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETUP); @@ -191,24 +186,22 @@ bool Pxx2Pulses::setupShareMode(uint8_t module) } moduleSettings[module].mode = MODULE_MODE_NORMAL; - return true; } -bool Pxx2Pulses::setupFrame(uint8_t module) +void Pxx2Pulses::setupFrame(uint8_t module) { initFrame(); - bool result = true; uint8_t mode = moduleSettings[module].mode; if (mode == MODULE_MODE_REGISTER) - result = setupRegisterFrame(module); + setupRegisterFrame(module); else if (mode == MODULE_MODE_BIND) - result = setupBindFrame(module); + setupBindFrame(module); else if (mode == MODULE_MODE_SPECTRUM_ANALYSER) - result = setupSpectrumAnalyser(module); + setupSpectrumAnalyser(module); else if (mode == MODULE_MODE_SHARE) - result = setupShareMode(module); + setupShareMode(module); else setupChannelsFrame(module); @@ -217,8 +210,6 @@ bool Pxx2Pulses::setupFrame(uint8_t module) } endFrame(); - - return result; } template class PxxPulses; diff --git a/radio/src/pulses/pxx2.h b/radio/src/pulses/pxx2.h index 94d2ed885..117dddbfe 100644 --- a/radio/src/pulses/pxx2.h +++ b/radio/src/pulses/pxx2.h @@ -100,18 +100,18 @@ class Pxx2Transport: public DataBuffer, public Pxx2CrcMixin { class Pxx2Pulses: public PxxPulses { public: - bool setupFrame(uint8_t module); + void setupFrame(uint8_t module); protected: - bool setupRegisterFrame(uint8_t module); + void setupRegisterFrame(uint8_t module); - bool setupBindFrame(uint8_t module); + void setupBindFrame(uint8_t module); - bool setupShareMode(uint8_t module); + void setupShareMode(uint8_t module); void setupChannelsFrame(uint8_t module); - bool setupSpectrumAnalyser(uint8_t module); + void setupSpectrumAnalyser(uint8_t module); void addHead() { @@ -157,11 +157,18 @@ class Pxx2Pulses: public PxxPulses { void endFrame() { - // update the frame LEN = frame length minus the 2 first bytes - data[1] = getSize() - 2; + uint8_t size = getSize() - 2; - // now add the CRC - addCrc(); + if (size > 0) { + // update the frame LEN = frame length minus the 2 first bytes + data[1] = getSize() - 2; + + // now add the CRC + addCrc(); + } + else { + Pxx2Transport::initBuffer(); + } } }; 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 30fcfda33..3cfdb2377 100755 --- a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp @@ -92,6 +92,9 @@ extern "C" void INTMODULE_USART_IRQHandler(void) void intmoduleSendBuffer(const uint8_t * data, uint8_t size) { + if (size == 0) + return; + DMA_InitTypeDef DMA_InitStructure; DMA_DeInit(INTMODULE_DMA_STREAM); DMA_InitStructure.DMA_Channel = INTMODULE_DMA_CHANNEL; diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 2051be581..459a582b4 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -123,7 +123,7 @@ void processBindFrame(uint8_t module, uint8_t * frame) void processTelemetryFrame(uint8_t module, uint8_t * frame) { - sportProcessTelemetryPacketWithoutCrc(&frame[3]); + sportProcessTelemetryPacketWithoutCrc(&frame[2]); } void processSpectrumFrame(uint8_t module, uint8_t * frame)