diff --git a/radio/src/gui/128x64/menus.h b/radio/src/gui/128x64/menus.h index 09b3e0981..0e79d72a0 100644 --- a/radio/src/gui/128x64/menus.h +++ b/radio/src/gui/128x64/menus.h @@ -79,7 +79,9 @@ enum MenuRadioIndexes MENU_RADIO_SWITCHES_TEST, MENU_RADIO_ANALOGS_TEST, MENU_RADIO_HARDWARE, +#if defined(RADIO_SPECTRUM) MENU_RADIO_SPECTRUM, +#endif MENU_RADIO_CALIBRATION, MENU_RADIO_PAGES_COUNT }; @@ -104,7 +106,9 @@ static const MenuHandlerFunc menuTabGeneral[] = { menuRadioDiagKeys, menuRadioDiagAnalogs, menuRadioHardware, +#if defined(RADIO_SPECTRUM) menuRadioSpectrum, +#endif menuRadioCalibration }; diff --git a/radio/src/gui/128x64/radio_spectrum.cpp b/radio/src/gui/128x64/radio_spectrum.cpp index 04dd02ab1..91a65c1c3 100644 --- a/radio/src/gui/128x64/radio_spectrum.cpp +++ b/radio/src/gui/128x64/radio_spectrum.cpp @@ -22,7 +22,7 @@ void menuRadioSpectrum(event_t event) { - MENU("SPECTRUM ANALYSER", menuTabGeneral, MENU_RADIO_SPECTRUM, HEADER_LINE, { HEADER_LINE_COLUMNS }); + SIMPLE_MENU("SPECTRUM ANALYSER", menuTabGeneral, MENU_RADIO_SPECTRUM, 1); if (menuEvent) { moduleSettings[INTERNAL_MODULE].mode = MODULE_MODE_NORMAL; diff --git a/radio/src/pulses/crossfire.cpp b/radio/src/pulses/crossfire.cpp index 6f8876913..ba3781461 100644 --- a/radio/src/pulses/crossfire.cpp +++ b/radio/src/pulses/crossfire.cpp @@ -46,3 +46,24 @@ uint8_t createCrossfireChannelsFrame(uint8_t * frame, int16_t * pulses) *buf++ = crc8(crc_start, 23); return buf - frame; } + +void setupPulsesCrossfire(uint8_t module) +{ + if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) { + uint8_t * crossfire = modulePulsesData[module].crossfire.pulses; + uint8_t len; +#if defined(LUA) + if (outputTelemetryBufferTrigger != 0x00 && outputTelemetryBufferSize > 0) { + memcpy(crossfire, outputTelemetryBuffer, outputTelemetryBufferSize); + len = outputTelemetryBufferSize; + outputTelemetryBufferTrigger = 0x00; + outputTelemetryBufferSize = 0; + } + else +#endif + { + len = createCrossfireChannelsFrame(crossfire, &channelOutputs[g_model.moduleData[module].channelsStart]); + } + sportSendBuffer(crossfire, len); + } +} diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 61eb25e06..d08fdbeb0 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -140,7 +140,7 @@ void setupPulsesPXX2(uint8_t module) { if (module == INTERNAL_MODULE) { if (modulePulsesData[module].pxx2.setupFrame(module)) { - intmoduleSendNextFrame(); + intmoduleSendNextPXX2Frame(); } } @@ -246,7 +246,7 @@ void enablePulses(uint8_t port, uint8_t protocol) } } -void sendPulses(uint8_t port, uint8_t protocol) +void setupPulses(uint8_t port, uint8_t protocol) { switch (protocol) { case PROTOCOL_CHANNELS_PXX: @@ -270,23 +270,7 @@ void sendPulses(uint8_t port, uint8_t protocol) #if defined(CROSSFIRE) case PROTOCOL_CHANNELS_CROSSFIRE: - if (telemetryProtocol == PROTOCOL_TELEMETRY_CROSSFIRE) { - uint8_t * crossfire = modulePulsesData[port].crossfire.pulses; - uint8_t len; -#if defined(LUA) - if (outputTelemetryBufferTrigger != 0x00 && outputTelemetryBufferSize > 0) { - memcpy(crossfire, outputTelemetryBuffer, outputTelemetryBufferSize); - len = outputTelemetryBufferSize; - outputTelemetryBufferTrigger = 0x00; - outputTelemetryBufferSize = 0; - } - else -#endif - { - len = createCrossfireChannelsFrame(crossfire, &channelOutputs[g_model.moduleData[port].channelsStart]); - } - sportSendBuffer(crossfire, len); - } + setupPulsesCrossfire(port); scheduleNextMixerCalculation(port, CROSSFIRE_PERIOD); break; #endif @@ -328,7 +312,7 @@ void setupPulses(uint8_t module) enablePulses(module, required_protocol); } else { - sendPulses(module, required_protocol); + setupPulses(module, required_protocol); } } diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index a1b47697c..10ab978b3 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -161,12 +161,13 @@ union TrainerPulsesData { extern TrainerPulsesData trainerPulsesData; -void setupPulses(uint8_t port); -void setupPulsesDSM2(uint8_t port); -void setupPulsesMultimodule(uint8_t port); -void setupPulsesSbus(uint8_t port); -void setupPulsesPXX(uint8_t port); -void setupPulsesPPMModule(uint8_t port); +void setupPulses(uint8_t module); +void setupPulsesDSM2(uint8_t module); +void setupPulsesCrossfire(uint8_t module); +void setupPulsesMultimodule(uint8_t module); +void setupPulsesSbus(uint8_t module); +void setupPulsesPXX(uint8_t module); +void setupPulsesPPMModule(uint8_t module); void setupPulsesPPMTrainer(); void sendByteDsm2(uint8_t b); void putDsm2Flush(); 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 a4b607191..9daf81f85 100755 --- a/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/intmodule_serial_driver.cpp @@ -94,7 +94,7 @@ extern "C" void INTMODULE_USART_IRQHandler(void) } } -void intmoduleSendNextFrame() +void intmoduleSendNextPXX2Frame() { if (moduleSettings[INTERNAL_MODULE].protocol == PROTOCOL_CHANNELS_PXX2) { DMA_InitTypeDef DMA_InitStructure; diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index cf19160f3..5a5f0ca88 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -116,6 +116,7 @@ elseif(PCB STREQUAL XLITES) set(FONTS_TARGET 9x_fonts_1bit) set(LCD_DRIVER lcd_driver_spi.cpp) set(GVAR_SCREEN model_gvars.cpp) + set(RADIO_SPECTRUM YES) endif() if(PCB STREQUAL XLITE OR PCB STREQUAL XLITES) @@ -168,14 +169,15 @@ endif() add_definitions(-DPCBTARANIS) add_definitions(-DAUDIO -DVOICE -DRTCLOCK) -set(GUI_SRC ${GUI_SRC} +set(GUI_SRC + ${GUI_SRC} model_input_edit.cpp model_mix_edit.cpp model_display.cpp radio_diagkeys.cpp radio_diaganas.cpp radio_hardware.cpp - radio_spectrum.cpp + view_channels.cpp view_telemetry.cpp view_about.cpp @@ -183,6 +185,14 @@ set(GUI_SRC ${GUI_SRC} ../screenshot.cpp ) +if(RADIO_SPECTRUM) + add_definitions(-DRADIO_SPECTRUM) + set(GUI_SRC + ${GUI_SRC} + radio_spectrum.cpp + ) +endif() + if(PCB STREQUAL X7 OR PCB STREQUAL XLITE OR PCB STREQUAL XLITES) set(LED_DRIVER led_driver.cpp) endif() diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 89905bd43..69dec7440 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -184,7 +184,7 @@ void init_no_pulses(uint8_t module); void disable_no_pulses(uint8_t module); void init_ppm(uint8_t module); void disable_ppm(uint8_t module); -void intmoduleSendNextFrame(); +void intmoduleSendNextPXX2Frame(); void init_pxx2(uint8_t module); void disable_pxx2(uint8_t module); void init_pxx(uint8_t module); diff --git a/radio/src/targets/taranis/intmodule_pulses_driver.cpp b/radio/src/targets/taranis/intmodule_pulses_driver.cpp index b2b7182dc..dbc267146 100644 --- a/radio/src/targets/taranis/intmodule_pulses_driver.cpp +++ b/radio/src/targets/taranis/intmodule_pulses_driver.cpp @@ -92,6 +92,16 @@ void intmoduleSendNextFrame() } } +void intmodulePxx2Start() +{ + // TODO +} + +void intmoduleSendNextPXX2Frame() +{ + // TODO +} + void intmodulePxxStart() { INTERNAL_MODULE_ON();