diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 459c944a5..f82b5aad9 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -46,6 +46,7 @@ enum MenuRadioHardwareItems { ITEM_RADIO_HARDWARE_SF, ITEM_RADIO_HARDWARE_SG, ITEM_RADIO_HARDWARE_SH, + CASE_PCBX10(ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_NAME, #if defined(SERIAL2) && defined(DEBUG) @@ -68,7 +69,7 @@ enum MenuRadioHardwareItems { bool menuRadioHardware(event_t event) { - MENU(STR_HARDWARE, RADIO_ICONS, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { 0, LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, BLUETOOTH_ROWS, 0, 0, 0 }); + MENU(STR_HARDWARE, RADIO_ICONS, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { 0, LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, CASE_PCBX10(0) BLUETOOTH_ROWS, 0, 0, 0 }); uint8_t sub = menuVerticalPosition; @@ -168,6 +169,26 @@ bool menuRadioHardware(event_t event) break; } +#if defined (PCBX10) + case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE: + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_MAXBAUDRATE); + lcdDrawNumber(HW_SETTINGS_COLUMN+50, y, CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate], attr|LEFT); + if (attr) { + g_eeGeneral.telemetryBaudrate = DIM(CROSSFIRE_BAUDRATES) - 1 - checkIncDecModel(event, DIM(CROSSFIRE_BAUDRATES) - 1 - g_eeGeneral.telemetryBaudrate, 0, DIM(CROSSFIRE_BAUDRATES) - 1); + if (checkIncDec_Ret) { + pauseMixerCalculations(); + pausePulses(); + EXTERNAL_MODULE_OFF(); + CoTickDelay(10); // 20ms so that the pulses interrupt will reinit the frame rate + telemetryProtocol = 255; // force telemetry port + module reinitialization + EXTERNAL_MODULE_ON(); + resumePulses(); + resumeMixerCalculations(); + } + } + break; + +#endif case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BLUETOOTH); g_eeGeneral.bluetoothMode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_BLUETOOTH_MODES, g_eeGeneral.bluetoothMode, BLUETOOTH_OFF, BLUETOOTH_TRAINER, attr, event); diff --git a/radio/src/opentx.h b/radio/src/opentx.h index d18fc9975..fed847c8c 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -200,6 +200,12 @@ #define CASE_PCBX9E(x) #endif +#if defined(PCBX10) + #define CASE_PCBX10(x) x, +#else + #define CASE_PCBX10(x) +#endif + #if defined(BLUETOOTH) && !(defined(PCBX9E) && !defined(USEHORUSBT)) #define CASE_BLUETOOTH(x) x, #else diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index be414e421..84f496ed1 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -41,7 +41,7 @@ void processCrossfireTelemetryData(uint8_t data); void crossfireSetDefault(int index, uint8_t id, uint8_t subId); bool isCrossfireOutputBufferAvailable(); -#if defined(PCBX7) +#if defined(PCBX7) || defined(PCBX10) const uint32_t CROSSFIRE_BAUDRATES[] = { 400000, 115200,