From db3547d45c72aaab687d322384ebe95010c16ff1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 9 Feb 2022 16:11:18 +0100 Subject: [PATCH 01/23] POC --- radio/src/datastructs_private.h | 5 +- radio/src/gui/128x64/model_setup.cpp | 25 ++ radio/src/gui/212x64/model_setup.cpp | 25 ++ radio/src/gui/colorlcd/model_setup.cpp | 16 ++ radio/src/gui/colorlcd/radio_hardware.cpp | 220 ++++++++++++------ .../src/gui/common/stdlcd/radio_hardware.cpp | 51 ++-- radio/src/pulses/crossfire.cpp | 2 +- radio/src/pulses/modules_helpers.h | 5 + radio/src/pulses/pulses.h | 1 + .../storage/yaml/yaml_datastructs_nv14.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_t12.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_t8.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_tlite.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_tpro.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_tx12.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_x10.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_x12s.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_x7.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_x9d.cpp | 43 ++-- .../src/storage/yaml/yaml_datastructs_x9e.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_x9lite.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_x9lites.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_xlite.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_xlites.cpp | 43 ++-- .../storage/yaml/yaml_datastructs_zorro.cpp | 43 ++-- radio/src/telemetry/crossfire.h | 10 +- radio/src/telemetry/telemetry.cpp | 2 +- radio/src/translations.cpp | 3 +- radio/src/translations.h | 3 +- radio/src/translations/cn.h.txt | 3 +- radio/src/translations/cz.h.txt | 3 +- radio/src/translations/de.h.txt | 3 +- radio/src/translations/en.h.txt | 3 +- radio/src/translations/es.h.txt | 4 +- radio/src/translations/fi.h.txt | 3 +- radio/src/translations/fr.h.txt | 3 +- radio/src/translations/it.h.txt | 3 +- radio/src/translations/nl.h.txt | 3 +- radio/src/translations/pl.h.txt | 3 +- radio/src/translations/pt.h.txt | 3 +- radio/src/translations/se.h.txt | 3 +- radio/src/translations/tw.h.txt | 3 +- 42 files changed, 661 insertions(+), 435 deletions(-) diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index f9ccc6f17..187f37b8f 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -532,6 +532,9 @@ PACK(struct ModuleData { uint8_t raw12bits:1; uint8_t spare1:7 SKIP; } ghost); + NOBACKUP(struct { + uint8_t telemetryBaudrate:3; + } crsf); } NAME(mod) FUNC(select_mod_type); // Helper functions to set both of the rfProto protocol at the same time @@ -864,7 +867,7 @@ PACK(struct RadioData { int8_t timezone:5; uint8_t adjustRTC:1; NOBACKUP(uint8_t inactivityTimer); - uint8_t telemetryBaudrate:3; + uint8_t InternalModuleBaudrate:3; SPLASH_MODE; /* 3bits */ int8_t hapticMode:2 CUST(r_beeperMode,w_beeperMode); int8_t switchesDelay; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index a3df237b8..6342f5ff7 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -136,6 +136,9 @@ enum MenuModelSetupItems { #if defined(HARDWARE_EXTERNAL_MODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, +#if defined(CROSSFIRE) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, +#endif #if defined(MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_SUBTYPE, @@ -191,6 +194,7 @@ enum MenuModelSetupItems { #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#define IF_CRSF_MODULE(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -370,6 +374,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define EXTERNAL_MODULE_ROWS \ LABEL(ExternalModule), \ MODULE_TYPE_ROWS(EXTERNAL_MODULE), \ + IF_CRSF_MODULE(EXTERNAL_MODULE, 0), /* Baudrate */ \ MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \ @@ -1051,6 +1056,26 @@ void menuModelSetup(event_t event) } break; +#if defined(CROSSFIRE) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { + ModuleData & moduleData = g_model.moduleData[moduleIdx]; + lcdDrawText( INDENT_WIDTH, y, STR_BAUDRATE); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE, + attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate = + CROSSFIRE_INDEX_TO_STORE(checkIncDecModel( + event, + CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0, + DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + break; + } +#endif + #if defined(MULTIMODULE) #if defined(HARDWARE_INTERNAL_MODULE) case ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL: diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 2a71c6824..fd495a56d 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -106,6 +106,9 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, +#if defined(CROSSFIRE) + ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, +#endif #if defined (MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS, @@ -313,6 +316,7 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#define IF_CRSF_MODULE(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -407,6 +411,7 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), EXTERNAL_MODULE_TYPE_ROW(), + IF_CRSF_MODULE(EXTERNAL_MODULE, 0), // Baudrate MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) AFHDS3_MODE_ROWS(EXTERNAL_MODULE) @@ -1016,6 +1021,26 @@ void menuModelSetup(event_t event) } break; +#if defined(CROSSFIRE) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { + ModuleData & moduleData = g_model.moduleData[EXTERNAL_MODULE]; + lcdDrawText( INDENT_WIDTH, y, STR_BAUDRATE); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE, + attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate = + CROSSFIRE_INDEX_TO_STORE(checkIncDecModel( + event, + CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0, + DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + break; + } +#endif + #if defined(MULTIMODULE) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL: { diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index f21e291ea..29e8611e7 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -608,6 +608,22 @@ class ModuleWindow : public FormGroup { }); // Module parameters + if (moduleIdx== EXTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0, + COLOR_THEME_PRIMARY1); + new Choice( + this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, + CROSSFIRE_MAX_INTERNAL_BAUDRATE, + [=]() -> int { + return CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[moduleIdx].crsf.telemetryBaudrate); + }, + [=](int newValue) { + g_model.moduleData[moduleIdx].crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + SET_DIRTY(); + restartExternalModule(); + }); + } if (isModuleXJT(moduleIdx)) { rfChoice = new Choice( this, grid.getFieldSlot(2, 1), STR_XJT_ACCST_RF_PROTOCOLS, diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 32b8aa01a..3eeb7ad0a 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -262,6 +262,80 @@ void restartExternalModule() resumeMixerCalculations(); } +class InternalModuleWindow : public FormGroup { + public: + InternalModuleWindow(FormWindow *parent, const rect_t &rect) : + FormGroup(parent, rect, FORWARD_SCROLL | FORM_FORWARD_FOCUS) + { + update(); + } + + void update() + { + FormGridLayout grid; +#if LCD_W > LCD_H + grid.setLabelWidth(180); +#else + grid.setLabelWidth(130); +#endif + clear(); + + new StaticText(this, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, + COLOR_THEME_PRIMARY1); + auto internalModule = new Choice(this, grid.getFieldSlot(1, 0), + STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, + GET_DEFAULT(g_eeGeneral.internalModule), + [=](int moduleType) { + if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { + memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); + storageDirty(EE_MODEL); + } + g_eeGeneral.internalModule = moduleType; + SET_DIRTY(); + }); + + internalModule->setAvailableHandler([](int module){ + return isInternalModuleSupported(module); + }); + +#if defined(CROSSFIRE) + if (isInternalModuleCrossfire()) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(), STR_BAUDRATE, 0, + COLOR_THEME_PRIMARY1); + new Choice( + this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, + CROSSFIRE_MAX_INTERNAL_BAUDRATE, + [=]() -> int { + return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate); + }, + [=](int newValue) { + g_eeGeneral.InternalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + SET_DIRTY(); + restartExternalModule(); + }); + grid.nextLine(); + } + auto par = getParent(); + par->moveWindowsTop(top() + 1, adjustHeight()); + par->adjustInnerHeight(); +#endif + } + + void checkEvents() override + { + if (g_eeGeneral.internalModule != lastModule) { + lastModule = g_eeGeneral.internalModule; + update(); + } + + FormGroup::checkEvents(); + } + + protected: + uint8_t lastModule = 0; +}; + void RadioHardwarePage::build(FormWindow * window) { FormGridLayout grid; @@ -273,14 +347,14 @@ void RadioHardwarePage::build(FormWindow * window) grid.spacer(PAGE_PADDING); // Calibration - new StaticText(window, grid.getLabelSlot(), STR_INPUTS, 0, COLOR_THEME_PRIMARY1 | FONT(BOLD)); + new StaticText(window, grid.getLabelSlot(), STR_INPUTS, 0, + COLOR_THEME_PRIMARY1 | FONT(BOLD)); auto calib = new TextButton(window, grid.getFieldSlot(), STR_CALIBRATION); calib->setPressHandler([=]() -> uint8_t { - auto calibrationPage = new RadioCalibrationPage(); - calibrationPage->setCloseHandler([=]() { - calib->setFocus(SET_FOCUS_DEFAULT); - }); - return 0; + auto calibrationPage = new RadioCalibrationPage(); + calibrationPage->setCloseHandler( + [=]() { calib->setFocus(SET_FOCUS_DEFAULT); }); + return 0; }); grid.nextLine(); @@ -288,8 +362,11 @@ void RadioHardwarePage::build(FormWindow * window) new Subtitle(window, grid.getLineSlot(), STR_STICKS, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_STICKS; i++) { - new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, (i + 1)), 0, COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2,0), g_eeGeneral.anaNames[i], LEN_ANA_NAME); + new StaticText(window, grid.getLabelSlot(true), + TEXT_AT_INDEX(STR_VSRCRAW, (i + 1)), 0, + COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.anaNames[i], + LEN_ANA_NAME); grid.nextLine(); } @@ -299,30 +376,39 @@ void RadioHardwarePage::build(FormWindow * window) for (int i = 0; i < NUM_POTS; i++) { // Display EX3 & EX4 (= last two pots) only when FlySky gimbals are present #if !defined(SIMU) && defined(RADIO_FAMILY_T16) - if (!globalData.flyskygimbals && (i >= (NUM_POTS - 2))) - continue; + if (!globalData.flyskygimbals && (i >= (NUM_POTS - 2))) continue; #endif - new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, (i + NUM_STICKS + 1)), 0, COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2,0), g_eeGeneral.anaNames[i + NUM_STICKS], LEN_ANA_NAME); - new Choice(window, grid.getFieldSlot(2,1), STR_POTTYPES, POT_NONE, POT_WITHOUT_DETENT, - [=]() -> int { - return bfGet(g_eeGeneral.potsConfig, 2*i, 2); - }, - [=](int newValue) { - g_eeGeneral.potsConfig = bfSet(g_eeGeneral.potsConfig, newValue, 2*i, 2); - SET_DIRTY(); - }); + new StaticText(window, grid.getLabelSlot(true), + TEXT_AT_INDEX(STR_VSRCRAW, (i + NUM_STICKS + 1)), 0, + COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), + g_eeGeneral.anaNames[i + NUM_STICKS], LEN_ANA_NAME); + new Choice( + window, grid.getFieldSlot(2, 1), STR_POTTYPES, POT_NONE, + POT_WITHOUT_DETENT, + [=]() -> int { + return bfGet(g_eeGeneral.potsConfig, 2 * i, 2); + }, + [=](int newValue) { + g_eeGeneral.potsConfig = + bfSet(g_eeGeneral.potsConfig, newValue, 2 * i, 2); + SET_DIRTY(); + }); grid.nextLine(); } // Sliders - new Subtitle(window, grid.getLineSlot(), STR_SLIDERS, 0, COLOR_THEME_PRIMARY1); + new Subtitle(window, grid.getLineSlot(), STR_SLIDERS, 0, + COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_SLIDERS; i++) { const int idx = i + NUM_STICKS + NUM_POTS; - new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, idx + 1), 0, COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.anaNames[idx], LEN_ANA_NAME); + new StaticText(window, grid.getLabelSlot(true), + TEXT_AT_INDEX(STR_VSRCRAW, idx + 1), 0, + COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), + g_eeGeneral.anaNames[idx], LEN_ANA_NAME); new Choice( window, grid.getFieldSlot(2, 1), STR_SLIDERTYPES, SLIDER_NONE, SLIDER_WITH_DETENT, @@ -340,78 +426,58 @@ void RadioHardwarePage::build(FormWindow * window) } // Switches - new Subtitle(window, grid.getLineSlot(), STR_SWITCHES, 0, COLOR_THEME_PRIMARY1); + new Subtitle(window, grid.getLineSlot(), STR_SWITCHES, 0, + COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_SWITCHES; i++) { new SwitchDynamicLabel(window, grid.getLabelSlot(true), i); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.switchNames[i], LEN_SWITCH_NAME); - new Choice(window, grid.getFieldSlot(2, 1), STR_SWTYPES, SWITCH_NONE, SWITCH_TYPE_MAX(i), - [=]() -> int { - return SWITCH_CONFIG(i); - }, - [=](int newValue) { - swconfig_t mask = (swconfig_t) 0x03 << (2 * i); - g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | ((swconfig_t(newValue) & 0x03) << (2 * i)); - SET_DIRTY(); - }); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), + g_eeGeneral.switchNames[i], LEN_SWITCH_NAME); + new Choice( + window, grid.getFieldSlot(2, 1), STR_SWTYPES, SWITCH_NONE, + SWITCH_TYPE_MAX(i), [=]() -> int { return SWITCH_CONFIG(i); }, + [=](int newValue) { + swconfig_t mask = (swconfig_t)0x03 << (2 * i); + g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | + ((swconfig_t(newValue) & 0x03) << (2 * i)); + SET_DIRTY(); + }); grid.nextLine(); } // Bat calibration - new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB, 0, COLOR_THEME_PRIMARY1); - auto batCal = new NumberEdit(window, grid.getFieldSlot(1,0), -127, 127, GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration)); - batCal->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) { - dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V"); - }); + new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB, 0, + COLOR_THEME_PRIMARY1); + auto batCal = + new NumberEdit(window, grid.getFieldSlot(1, 0), -127, 127, + GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration)); + batCal->setDisplayHandler( + [](BitmapBuffer *dc, LcdFlags flags, int32_t value) { + dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, + getBatteryVoltage(), flags | PREC2, 0, nullptr, "V"); + }); batCal->setWindowFlags(REFRESH_ALWAYS); grid.nextLine(); // RTC Batt display - new StaticText(window, grid.getLabelSlot(), STR_RTC_BATT, 0, COLOR_THEME_PRIMARY1); - new DynamicNumber(window, grid.getFieldSlot(1,0), [] { - return getRTCBatteryVoltage(); - }, COLOR_THEME_PRIMARY1 | PREC2, nullptr, "V"); + new StaticText(window, grid.getLabelSlot(), STR_RTC_BATT, 0, + COLOR_THEME_PRIMARY1); + new DynamicNumber( + window, grid.getFieldSlot(1, 0), [] { return getRTCBatteryVoltage(); }, + COLOR_THEME_PRIMARY1 | PREC2, nullptr, "V"); grid.nextLine(); // RTC Batt check enable - new StaticText(window, grid.getLabelSlot(), STR_RTC_CHECK, 0, COLOR_THEME_PRIMARY1); - new CheckBox(window, grid.getFieldSlot(1,0), GET_SET_INVERTED(g_eeGeneral.disableRtcWarning )); + new StaticText(window, grid.getLabelSlot(), STR_RTC_CHECK, 0, + COLOR_THEME_PRIMARY1); + new CheckBox(window, grid.getFieldSlot(1, 0), + GET_SET_INVERTED(g_eeGeneral.disableRtcWarning)); grid.nextLine(); #if defined(HARDWARE_INTERNAL_MODULE) - new StaticText(window, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, - COLOR_THEME_PRIMARY1); - auto internalModule = new Choice(window, grid.getFieldSlot(1, 0), - STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, - GET_DEFAULT(g_eeGeneral.internalModule), - [=](int moduleType) { - if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { - memclear(&g_model.moduleData[INTERNAL_MODULE], sizeof(ModuleData)); - storageDirty(EE_MODEL); - } - g_eeGeneral.internalModule = moduleType; - SET_DIRTY(); - }); - - internalModule->setAvailableHandler([](int module){ - return isInternalModuleSupported(module); - }); - grid.nextLine(); -#endif - -#if defined(CROSSFIRE) - // Max baud for external modules - new StaticText(window, grid.getLabelSlot(), STR_MAXBAUDRATE, 0, COLOR_THEME_PRIMARY1); - new Choice(window, grid.getFieldSlot(1,0), STR_CRSF_BAUDRATE, 0, DIM(CROSSFIRE_BAUDRATES) - 1, - [=]() -> int { - return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate); - }, - [=](int newValue) { - g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); - SET_DIRTY(); - restartExternalModule(); - }); + new Subtitle(window, grid.getLineSlot(), TR_INTERNALRF, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); + grid.addWindow(new InternalModuleWindow(window, {0, grid.getWindowHeight(), LCD_W, 0})); #endif #if defined(BLUETOOTH) diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 8bff1a02d..aad619f2b 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -97,11 +97,9 @@ enum { #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - ITEM_RADIO_HARDWARE_INTERNAL_MODULE, -#endif - -#if (defined(CROSSFIRE) || defined(GHOST)) - ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, + ITEM_RADIO_HARDWARE_LABEL_INTERNAL_MODULE, + ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE, + ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE, #endif ITEM_RADIO_HARDWARE_SERIAL_SAMPLE_MODE, @@ -231,17 +229,11 @@ enum { #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - #define INTERNAL_MODULE_ROWS 0, + #define INTERNAL_MODULE_ROWS 0, (isInternalModuleCrossfire() ? (uint8_t ) 0 : HIDDEN_ROW), #else #define INTERNAL_MODULE_ROWS #endif -#if (defined(CROSSFIRE) || defined(GHOST)) - #define MAX_BAUD_ROWS 0, -#else - #define MAX_BAUD_ROWS -#endif - #define SERIAL_SAMPLE_MODE_ROWS 0, #if defined(AUX_SERIAL) || defined(USB_SERIAL) @@ -282,21 +274,6 @@ void onFactoryResetConfirm(const char * result) } #endif -void restartExternalModule() -{ - if (!IS_EXTERNAL_MODULE_ON()) { - return; - } - pauseMixerCalculations(); - pausePulses(); - EXTERNAL_MODULE_OFF(); - RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate - telemetryProtocol = 255; // force telemetry port + module reinitialization - EXTERNAL_MODULE_ON(); - resumePulses(); - resumeMixerCalculations(); -} - static bool _isAux1ModeAvailable(int m) { return isSerialModeAvailable(SP_AUX1, m); } static bool _isAux2ModeAvailable(int m) { return isSerialModeAvailable(SP_AUX2, m); } static bool _isVCPModeAvailable(int m) { return isSerialModeAvailable(SP_VCP, m); } @@ -322,8 +299,8 @@ void menuRadioHardware(event_t event) 0 /* battery calib */, RTC_ROW TX_CAPACITY_MEASUREMENT_ROWS + LABEL(InternalModule), INTERNAL_MODULE_ROWS - MAX_BAUD_ROWS SERIAL_SAMPLE_MODE_ROWS BLUETOOTH_ROWS EXTERNAL_ANTENNA_ROW @@ -533,9 +510,13 @@ void menuRadioHardware(event_t event) #endif #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) - case ITEM_RADIO_HARDWARE_INTERNAL_MODULE: { + case ITEM_RADIO_HARDWARE_LABEL_INTERNAL_MODULE: + lcdDrawTextAlignedLeft(y, STR_INTERNALRF); + break; + + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE: { g_eeGeneral.internalModule = - editChoice(HW_SETTINGS_COLUMN2, y, STR_INTERNAL_MODULE, + editChoice(HW_SETTINGS_COLUMN2, y, STR_TYPE, STR_INTERNAL_MODULE_PROTOCOLS, g_eeGeneral.internalModule, MODULE_TYPE_NONE, MODULE_TYPE_MAX, attr, event, isInternalModuleSupported); @@ -548,12 +529,12 @@ void menuRadioHardware(event_t event) } break; #endif -#if (defined(CROSSFIRE) || defined(GHOST)) - case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE: - lcdDrawTextAlignedLeft(y, STR_MAXBAUDRATE); - lcdDrawNumber(HW_SETTINGS_COLUMN2, y, CROSSFIRE_BAUDRATE, attr|LEFT); +#if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE: + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + lcdDrawNumber(HW_SETTINGS_COLUMN2, y, INT_CROSSFIRE_BAUDRATE, attr|LEFT); if (attr) { - g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate), 0, DIM(CROSSFIRE_BAUDRATES) - 1)); + g_eeGeneral.InternalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { restartExternalModule(); } diff --git a/radio/src/pulses/crossfire.cpp b/radio/src/pulses/crossfire.cpp index 5d1e9df4d..ff5dbda2e 100644 --- a/radio/src/pulses/crossfire.cpp +++ b/radio/src/pulses/crossfire.cpp @@ -144,7 +144,7 @@ static void* crossfireInitInternal(uint8_t module) // serial port setup etx_serial_init params(intmoduleCrossfireInitParams); - params.baudrate = CROSSFIRE_BAUDRATE; + params.baudrate = INT_CROSSFIRE_BAUDRATE; // wakeup mixer when rx buffer is quarter full (16 bytes) params.on_receive = intmoduleCRSF_rx; diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index a5be66bbc..4ed1e40d7 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -225,6 +225,11 @@ inline bool isModuleCrossfire(uint8_t idx) { return g_model.moduleData[idx].type == MODULE_TYPE_CROSSFIRE; } + +inline bool isInternalModuleCrossfire() +{ + return g_eeGeneral.internalModule == MODULE_TYPE_CROSSFIRE; +} #else inline bool isModuleCrossfire(uint8_t idx) { diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index 0b3542934..a8664d3b0 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -254,6 +254,7 @@ void extmodulePxx1SerialStart(); void extmodulePpmStart(); void intmoduleStop(); void extmoduleStop(); +void restartExternalModule(); void getModuleStatusString(uint8_t moduleIdx, char * statusText); void getModuleSyncStatusString(uint8_t moduleIdx, char * statusText); #if defined(AFHDS3) diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 2356ff78e..5953cfada 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -380,7 +380,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -668,6 +668,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -678,6 +682,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -725,61 +730,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -792,7 +797,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index a2622b157..a767faa05 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 88ea0ea88..21be1d344 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 88ea0ea88..21be1d344 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index dbeb31752..e91769173 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -359,7 +359,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -642,6 +642,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -652,6 +656,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -694,61 +699,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -761,7 +766,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 635d89788..9f5644035 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 2055309f4..3e17f4884 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -401,7 +401,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -689,6 +689,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -699,6 +703,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -746,61 +751,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -813,7 +818,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 943268070..7ec5d2240 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -399,7 +399,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -687,6 +687,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -697,6 +701,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -744,61 +749,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -811,7 +816,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_WidgetPersistentData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 88ea0ea88..21be1d344 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index d381ab956..f6a9d30cd 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -358,7 +358,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -644,6 +644,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -654,6 +658,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -701,61 +706,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -768,7 +773,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index aadf0929f..75eedb0e6 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -397,7 +397,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -683,6 +683,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -693,6 +697,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -740,61 +745,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -807,7 +812,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 6353788e5..fabe9b008 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -338,7 +338,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -621,6 +621,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -631,6 +635,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -673,61 +678,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -740,7 +745,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 33067c2de..048d0758e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -346,7 +346,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -631,6 +631,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -641,6 +645,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -683,61 +688,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -750,7 +755,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index c85241074..f994d8e4d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -343,7 +343,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -628,6 +628,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -638,6 +642,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -680,61 +685,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -747,7 +752,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 1edcbe5a4..19f139cc2 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -345,7 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -632,6 +632,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -642,6 +646,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -684,61 +689,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -751,7 +756,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index 944938207..9a0674c7a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), @@ -636,6 +636,10 @@ static const struct YamlNode struct_anonymous_12[] = { YAML_PADDING( 7 ), YAML_END }; +static const struct YamlNode struct_anonymous_13[] = { + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_END +}; static const struct YamlNode union_anonymous_4_elmts[] = { YAML_ARRAY("raw", 8, 25, struct_unsigned_8, NULL), YAML_STRUCT("ppm", 16, struct_anonymous_5, NULL), @@ -646,6 +650,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { YAML_STRUCT("flysky", 56, struct_anonymous_10, NULL), YAML_STRUCT("afhds3", 64, struct_anonymous_11, NULL), YAML_STRUCT("ghost", 8, struct_anonymous_12, NULL), + YAML_STRUCT("crsf", 8, struct_anonymous_13, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +693,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_13_elmts[] = { +static const struct YamlNode union_anonymous_14_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_15[] = { +static const struct YamlNode struct_anonymous_16[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_15, NULL), +static const struct YamlNode union_anonymous_15_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_17[] = { +static const struct YamlNode struct_anonymous_18[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode union_anonymous_16_elmts[] = { - YAML_STRUCT("custom", 32, struct_anonymous_17, NULL), - YAML_STRUCT("cell", 32, struct_anonymous_18, NULL), - YAML_STRUCT("calc", 32, struct_anonymous_19, NULL), - YAML_STRUCT("consumption", 32, struct_anonymous_20, NULL), - YAML_STRUCT("dist", 32, struct_anonymous_21, NULL), +static const struct YamlNode union_anonymous_17_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_18, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_19, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_20, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_21, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_22, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_13_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_14_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +760,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_16_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index 044cd3415..d7034bcd3 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -110,6 +110,13 @@ const uint32_t CROSSFIRE_BAUDRATES[] = { 3750000, 5250000, }; + +#if defined(RADIO_TPRO) +#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 3 +#else +#define CROSSFIRE_MAX_INTERNAL_BAUDRATE DIM(CROSSFIRE_BAUDRATES) - 1 +#endif + const uint8_t CROSSFIRE_FRAME_PERIODS[] = { 16, 4, @@ -132,7 +139,8 @@ const uint8_t CROSSFIRE_FRAME_PERIODS[] = { % DIM(CROSSFIRE_BAUDRATES) #endif -#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] +#define INT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate)] +#define EXT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] #define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] * 1000) #define CROSSFIRE_TELEM_MIRROR_BAUDRATE 115200 diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index c2d577359..b9c3ebaba 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -450,7 +450,7 @@ void telemetryInit(uint8_t protocol) #if defined(CROSSFIRE) else if (protocol == PROTOCOL_TELEMETRY_CROSSFIRE) { - telemetryPortInit(CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT); + telemetryPortInit(EXT_CROSSFIRE_BAUDRATE, TELEMETRY_SERIAL_DEFAULT); #if defined(LUA) outputTelemetryBuffer.reset(); #endif diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index e987dc4b8..09065c0f0 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -457,8 +457,9 @@ const char STR_FORMATTING[] = TR_FORMATTING; const char STR_TEMP_CALIB[] = TR_TEMP_CALIB; const char STR_TIME[] = TR_TIME; const char STR_MAXBAUDRATE[] = TR_MAXBAUDRATE; +const char STR_BAUDRATE[] = TR_BAUDRATE; const char STR_SAMPLE_MODE[] = TR_SAMPLE_MODE; -const char STR_BAUDRATE[] = TR_BAUDRATE; +const char STR_BLUETOOTH_BAUDRATE[] = TR_BLUETOOTH_BAUDRATE; const char STR_SD_INFO_TITLE[] = TR_SD_INFO_TITLE; const char STR_SD_TYPE[] = TR_SD_TYPE; const char STR_SD_SPEED[] = TR_SD_SPEED; diff --git a/radio/src/translations.h b/radio/src/translations.h index 275983329..a5f546584 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -704,9 +704,10 @@ extern const char STR_FORMATTING[]; extern const char STR_TEMP_CALIB[]; extern const char STR_TIME[]; extern const char STR_MAXBAUDRATE[]; +extern const char STR_BAUDRATE[]; extern const char STR_SAMPLE_MODE[]; extern const char STR_SAMPLE_MODES[]; -extern const char STR_BAUDRATE[]; +extern const char STR_BLUETOOTH_BAUDRATE[]; extern const char STR_SD_INFO_TITLE[]; extern const char STR_SD_TYPE[]; extern const char STR_SD_SPEED[]; diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt index f5ba7beae..d097bb0be 100644 --- a/radio/src/translations/cn.h.txt +++ b/radio/src/translations/cn.h.txt @@ -768,6 +768,7 @@ #define TR_TEMP_CALIB "温度校准" #define TR_TIME "时间" #define TR_MAXBAUDRATE "最大带宽" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -777,7 +778,7 @@ #define TR_BLUETOOTH_DIST_ADDR "目标地址" #define TR_BLUETOOTH_LOCAL_ADDR "本机地址" #define TR_BLUETOOTH_PIN_CODE "PIN码" -#define TR_BAUDRATE "蓝牙带宽" +#define TR_BLUETOOTH_BAUDRATE "蓝牙带宽" #define LEN_BLUETOOTH_MODES "\004" #define TR_BLUETOOTH_MODES "---\0" "回传" "教练" #define TR_SELECT_TEMPLATE_FOLDER "SELECT A TEMPLATE FOLDER:" diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index d0e513eea..651037320 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -807,6 +807,7 @@ #define TR_TEMP_CALIB " +=\006Teplota" #define TR_TIME "Čas" #define TR_MAXBAUDRATE "Max baudů" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -825,7 +826,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Vzdál. addr" #define TR_BLUETOOTH_LOCAL_ADDR "Lokál. addr" #define TR_BLUETOOTH_PIN_CODE TR("PIN kód", "PIN kód") -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Povoleno\0 " diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 50e70359c..106f39d85 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -809,6 +809,7 @@ #define TR_TEMP_CALIB "Temp. abgl." #define TR_TIME "Uhrzeit:" #define TR_MAXBAUDRATE "Max Baud" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -827,7 +828,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 7740e909a..d3c7d0e45 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -813,6 +813,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -831,7 +832,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 3c9a1b618..f1f4806c1 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -811,6 +811,8 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Hora" #define TR_MAXBAUDRATE "Máx bauds" +#define TR_BAUDRATE "Baudrate" + #define TR_SAMPLE_MODE "Modo de muestra" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -829,7 +831,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dir. remota" #define TR_BLUETOOTH_LOCAL_ADDR "Dir. local" #define TR_BLUETOOTH_PIN_CODE "Código PIN" -#define TR_BAUDRATE "Velocidad BT" +#define TR_BLUETOOTH_BAUDRATE "Velocidad BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Activo\0 " diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index ad455602d..9c090389a 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -825,6 +825,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -843,7 +844,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 9b3ce7b35..dd599c5f1 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -830,6 +830,7 @@ #define TR_TEMP_CALIB "Calib. temp" #define TR_TIME "Heure" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -848,7 +849,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Addr dist." #define TR_BLUETOOTH_LOCAL_ADDR "Addr locale" #define TR_BLUETOOTH_PIN_CODE "Code PIN" -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Activé\0 " diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 133407bbd..1ff8c60c4 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -831,6 +831,7 @@ #define TR_TEMP_CALIB "Temp. Calib." #define TR_TIME "Ora" #define TR_MAXBAUDRATE "Max Bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -849,7 +850,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Ind. Dist." #define TR_BLUETOOTH_LOCAL_ADDR "Ind. Loc." #define TR_BLUETOOTH_PIN_CODE "Codice PIN" -#define TR_BAUDRATE "Baudrate BT" +#define TR_BLUETOOTH_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Attivo\0 " diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 0050bc2ef..252424e94 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -817,6 +817,7 @@ #define TR_TEMP_CALIB "Temp. Calib." #define TR_TIME "Tijd:" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -835,7 +836,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 0b2f51411..a75386597 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -828,6 +828,7 @@ #define TR_TEMP_CALIB "Temp. kalibracji" #define TR_TIME "Czas" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -846,7 +847,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "Prędkość BT" +#define TR_BLUETOOTH_BAUDRATE "Prędkość BT" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 8030aa56b..fe79214b2 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -836,6 +836,7 @@ #define TR_TEMP_CALIB "Temp. Calib" #define TR_TIME "Time" #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -854,7 +855,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 75128366e..862dcccc0 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -836,6 +836,7 @@ #define TR_TEMP_CALIB "Temp. kalib." #define TR_TIME "Tid " #define TR_MAXBAUDRATE "Max bauds" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -854,7 +855,7 @@ #define TR_BLUETOOTH_DIST_ADDR "Dist addr" #define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" -#define TR_BAUDRATE "BT Baudrate" +#define TR_BLUETOOTH_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) #define TR_BLUETOOTH_MODES "---\0 ""Enabled\0 " diff --git a/radio/src/translations/tw.h.txt b/radio/src/translations/tw.h.txt index ae79c6734..d38c652a8 100644 --- a/radio/src/translations/tw.h.txt +++ b/radio/src/translations/tw.h.txt @@ -768,6 +768,7 @@ #define TR_TEMP_CALIB "溫度校準" #define TR_TIME "時間" #define TR_MAXBAUDRATE "最大帶寬" +#define TR_BAUDRATE "Baudrate" #define TR_SAMPLE_MODE "Sample Mode" #define LEN_SAMPLE_MODES "\006" #define TR_SAMPLE_MODES "Normal""OneBit" @@ -786,7 +787,7 @@ #define TR_BLUETOOTH_DIST_ADDR "目標地址" #define TR_BLUETOOTH_LOCAL_ADDR "本機地址" #define TR_BLUETOOTH_PIN_CODE "PIN碼" -#define TR_BAUDRATE "藍牙帶寬" +#define TR_BLUETOOTH_BAUDRATE "藍牙帶寬" #define LEN_BLUETOOTH_MODES "\004" #define TR_BLUETOOTH_MODES "---\0" "回傳" "教練" From 97d3c68efc68ec934c6412e6095de898e2fb0b66 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 10 Feb 2022 08:15:52 +0100 Subject: [PATCH 02/23] Cosmetics --- radio/src/gui/128x64/model_setup.cpp | 9 +- radio/src/gui/212x64/model_setup.cpp | 13 +-- radio/src/gui/colorlcd/model_setup.cpp | 7 +- radio/src/gui/colorlcd/radio_hardware.cpp | 122 +++++++++------------- 4 files changed, 56 insertions(+), 95 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 6342f5ff7..f0ee5d29c 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1060,14 +1060,9 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { ModuleData & moduleData = g_model.moduleData[moduleIdx]; lcdDrawText( INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE, - attr | LEFT); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); if (attr) { - moduleData.crsf.telemetryBaudrate = - CROSSFIRE_INDEX_TO_STORE(checkIncDecModel( - event, - CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0, - DIM(CROSSFIRE_BAUDRATES) - 1)); + moduleData.crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0,DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { restartExternalModule(); } diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index fd495a56d..fd3232a56 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1023,16 +1023,11 @@ void menuModelSetup(event_t event) #if defined(CROSSFIRE) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { - ModuleData & moduleData = g_model.moduleData[EXTERNAL_MODULE]; - lcdDrawText( INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE, - attr | LEFT); + ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); if (attr) { - moduleData.crsf.telemetryBaudrate = - CROSSFIRE_INDEX_TO_STORE(checkIncDecModel( - event, - CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0, - DIM(CROSSFIRE_BAUDRATES) - 1)); + moduleData.crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { restartExternalModule(); } diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 29e8611e7..add6ed664 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -610,11 +610,8 @@ class ModuleWindow : public FormGroup { // Module parameters if (moduleIdx== EXTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { grid.nextLine(); - new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0, - COLOR_THEME_PRIMARY1); - new Choice( - this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, - CROSSFIRE_MAX_INTERNAL_BAUDRATE, + new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0,COLOR_THEME_PRIMARY1); + new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0,CROSSFIRE_MAX_INTERNAL_BAUDRATE, [=]() -> int { return CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[moduleIdx].crsf.telemetryBaudrate); }, diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 3eeb7ad0a..939e21459 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -282,8 +282,7 @@ class InternalModuleWindow : public FormGroup { new StaticText(this, grid.getLabelSlot(), TR_INTERNAL_MODULE, 0, COLOR_THEME_PRIMARY1); - auto internalModule = new Choice(this, grid.getFieldSlot(1, 0), - STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, + auto internalModule = new Choice(this, grid.getFieldSlot(1, 0),STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, GET_DEFAULT(g_eeGeneral.internalModule), [=](int moduleType) { if (g_model.moduleData[INTERNAL_MODULE].type != moduleType) { @@ -301,11 +300,8 @@ class InternalModuleWindow : public FormGroup { #if defined(CROSSFIRE) if (isInternalModuleCrossfire()) { grid.nextLine(); - new StaticText(this, grid.getLabelSlot(), STR_BAUDRATE, 0, - COLOR_THEME_PRIMARY1); - new Choice( - this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, - CROSSFIRE_MAX_INTERNAL_BAUDRATE, + new StaticText(this, grid.getLabelSlot(), STR_BAUDRATE, 0,COLOR_THEME_PRIMARY1); + new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0,CROSSFIRE_MAX_INTERNAL_BAUDRATE, [=]() -> int { return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate); }, @@ -347,14 +343,14 @@ void RadioHardwarePage::build(FormWindow * window) grid.spacer(PAGE_PADDING); // Calibration - new StaticText(window, grid.getLabelSlot(), STR_INPUTS, 0, - COLOR_THEME_PRIMARY1 | FONT(BOLD)); + new StaticText(window, grid.getLabelSlot(), STR_INPUTS, 0, COLOR_THEME_PRIMARY1 | FONT(BOLD)); auto calib = new TextButton(window, grid.getFieldSlot(), STR_CALIBRATION); calib->setPressHandler([=]() -> uint8_t { - auto calibrationPage = new RadioCalibrationPage(); - calibrationPage->setCloseHandler( - [=]() { calib->setFocus(SET_FOCUS_DEFAULT); }); - return 0; + auto calibrationPage = new RadioCalibrationPage(); + calibrationPage->setCloseHandler([=]() { + calib->setFocus(SET_FOCUS_DEFAULT); + }); + return 0; }); grid.nextLine(); @@ -362,11 +358,8 @@ void RadioHardwarePage::build(FormWindow * window) new Subtitle(window, grid.getLineSlot(), STR_STICKS, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_STICKS; i++) { - new StaticText(window, grid.getLabelSlot(true), - TEXT_AT_INDEX(STR_VSRCRAW, (i + 1)), 0, - COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.anaNames[i], - LEN_ANA_NAME); + new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, (i + 1)), 0, COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2,0), g_eeGeneral.anaNames[i], LEN_ANA_NAME); grid.nextLine(); } @@ -376,39 +369,30 @@ void RadioHardwarePage::build(FormWindow * window) for (int i = 0; i < NUM_POTS; i++) { // Display EX3 & EX4 (= last two pots) only when FlySky gimbals are present #if !defined(SIMU) && defined(RADIO_FAMILY_T16) - if (!globalData.flyskygimbals && (i >= (NUM_POTS - 2))) continue; + if (!globalData.flyskygimbals && (i >= (NUM_POTS - 2))) + continue; #endif - new StaticText(window, grid.getLabelSlot(true), - TEXT_AT_INDEX(STR_VSRCRAW, (i + NUM_STICKS + 1)), 0, - COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), - g_eeGeneral.anaNames[i + NUM_STICKS], LEN_ANA_NAME); - new Choice( - window, grid.getFieldSlot(2, 1), STR_POTTYPES, POT_NONE, - POT_WITHOUT_DETENT, - [=]() -> int { - return bfGet(g_eeGeneral.potsConfig, 2 * i, 2); - }, - [=](int newValue) { - g_eeGeneral.potsConfig = - bfSet(g_eeGeneral.potsConfig, newValue, 2 * i, 2); - SET_DIRTY(); - }); + new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, (i + NUM_STICKS + 1)), 0, COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2,0), g_eeGeneral.anaNames[i + NUM_STICKS], LEN_ANA_NAME); + new Choice(window, grid.getFieldSlot(2,1), STR_POTTYPES, POT_NONE, POT_WITHOUT_DETENT, + [=]() -> int { + return bfGet(g_eeGeneral.potsConfig, 2*i, 2); + }, + [=](int newValue) { + g_eeGeneral.potsConfig = bfSet(g_eeGeneral.potsConfig, newValue, 2*i, 2); + SET_DIRTY(); + }); grid.nextLine(); } // Sliders - new Subtitle(window, grid.getLineSlot(), STR_SLIDERS, 0, - COLOR_THEME_PRIMARY1); + new Subtitle(window, grid.getLineSlot(), STR_SLIDERS, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_SLIDERS; i++) { const int idx = i + NUM_STICKS + NUM_POTS; - new StaticText(window, grid.getLabelSlot(true), - TEXT_AT_INDEX(STR_VSRCRAW, idx + 1), 0, - COLOR_THEME_PRIMARY1); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), - g_eeGeneral.anaNames[idx], LEN_ANA_NAME); + new StaticText(window, grid.getLabelSlot(true), TEXT_AT_INDEX(STR_VSRCRAW, idx + 1), 0, COLOR_THEME_PRIMARY1); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.anaNames[idx], LEN_ANA_NAME); new Choice( window, grid.getFieldSlot(2, 1), STR_SLIDERTYPES, SLIDER_NONE, SLIDER_WITH_DETENT, @@ -426,52 +410,42 @@ void RadioHardwarePage::build(FormWindow * window) } // Switches - new Subtitle(window, grid.getLineSlot(), STR_SWITCHES, 0, - COLOR_THEME_PRIMARY1); + new Subtitle(window, grid.getLineSlot(), STR_SWITCHES, 0, COLOR_THEME_PRIMARY1); grid.nextLine(); for (int i = 0; i < NUM_SWITCHES; i++) { new SwitchDynamicLabel(window, grid.getLabelSlot(true), i); - new RadioTextEdit(window, grid.getFieldSlot(2, 0), - g_eeGeneral.switchNames[i], LEN_SWITCH_NAME); - new Choice( - window, grid.getFieldSlot(2, 1), STR_SWTYPES, SWITCH_NONE, - SWITCH_TYPE_MAX(i), [=]() -> int { return SWITCH_CONFIG(i); }, - [=](int newValue) { - swconfig_t mask = (swconfig_t)0x03 << (2 * i); - g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | - ((swconfig_t(newValue) & 0x03) << (2 * i)); - SET_DIRTY(); - }); + new RadioTextEdit(window, grid.getFieldSlot(2, 0), g_eeGeneral.switchNames[i], LEN_SWITCH_NAME); + new Choice(window, grid.getFieldSlot(2, 1), STR_SWTYPES, SWITCH_NONE, SWITCH_TYPE_MAX(i), + [=]() -> int { + return SWITCH_CONFIG(i); + }, + [=](int newValue) { + swconfig_t mask = (swconfig_t) 0x03 << (2 * i); + g_eeGeneral.switchConfig = (g_eeGeneral.switchConfig & ~mask) | ((swconfig_t(newValue) & 0x03) << (2 * i)); + SET_DIRTY(); + }); grid.nextLine(); } // Bat calibration - new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB, 0, - COLOR_THEME_PRIMARY1); - auto batCal = - new NumberEdit(window, grid.getFieldSlot(1, 0), -127, 127, - GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration)); - batCal->setDisplayHandler( - [](BitmapBuffer *dc, LcdFlags flags, int32_t value) { - dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, - getBatteryVoltage(), flags | PREC2, 0, nullptr, "V"); - }); + new StaticText(window, grid.getLabelSlot(), STR_BATT_CALIB, 0, COLOR_THEME_PRIMARY1); + auto batCal = new NumberEdit(window, grid.getFieldSlot(1,0), -127, 127, GET_SET_DEFAULT(g_eeGeneral.txVoltageCalibration)); + batCal->setDisplayHandler([](BitmapBuffer * dc, LcdFlags flags, int32_t value) { + dc->drawNumber(FIELD_PADDING_LEFT, FIELD_PADDING_TOP, getBatteryVoltage(), flags | PREC2, 0, nullptr, "V"); + }); batCal->setWindowFlags(REFRESH_ALWAYS); grid.nextLine(); // RTC Batt display - new StaticText(window, grid.getLabelSlot(), STR_RTC_BATT, 0, - COLOR_THEME_PRIMARY1); - new DynamicNumber( - window, grid.getFieldSlot(1, 0), [] { return getRTCBatteryVoltage(); }, - COLOR_THEME_PRIMARY1 | PREC2, nullptr, "V"); + new StaticText(window, grid.getLabelSlot(), STR_RTC_BATT, 0, COLOR_THEME_PRIMARY1); + new DynamicNumber(window, grid.getFieldSlot(1,0), [] { + return getRTCBatteryVoltage(); + }, COLOR_THEME_PRIMARY1 | PREC2, nullptr, "V"); grid.nextLine(); // RTC Batt check enable - new StaticText(window, grid.getLabelSlot(), STR_RTC_CHECK, 0, - COLOR_THEME_PRIMARY1); - new CheckBox(window, grid.getFieldSlot(1, 0), - GET_SET_INVERTED(g_eeGeneral.disableRtcWarning)); + new StaticText(window, grid.getLabelSlot(), STR_RTC_CHECK, 0, COLOR_THEME_PRIMARY1); + new CheckBox(window, grid.getFieldSlot(1,0), GET_SET_INVERTED(g_eeGeneral.disableRtcWarning )); grid.nextLine(); #if defined(HARDWARE_INTERNAL_MODULE) From 001144cd5c166c777e0f6529680973dfb29d92c0 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 10 Feb 2022 09:17:18 +0100 Subject: [PATCH 03/23] Ghost module handling --- radio/src/datastructs_private.h | 3 +- radio/src/gui/128x64/model_setup.cpp | 38 ++++++++++++++----- radio/src/gui/212x64/model_setup.cpp | 36 +++++++++++++----- radio/src/targets/horus/telemetry_driver.cpp | 2 +- .../src/targets/taranis/telemetry_driver.cpp | 2 +- radio/src/telemetry/crossfire.h | 2 +- radio/src/telemetry/ghost.cpp | 2 +- 7 files changed, 61 insertions(+), 24 deletions(-) diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index 187f37b8f..dd9e86a98 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -530,7 +530,8 @@ PACK(struct ModuleData { } afhds3)); NOBACKUP(struct { uint8_t raw12bits:1; - uint8_t spare1:7 SKIP; + uint8_t telemetryBaudrate:3; + uint8_t spare1:4 SKIP; } ghost); NOBACKUP(struct { uint8_t telemetryBaudrate:3; diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index f0ee5d29c..330092f98 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -136,7 +136,7 @@ enum MenuModelSetupItems { #if defined(HARDWARE_EXTERNAL_MODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, -#if defined(CROSSFIRE) +#if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, #endif #if defined(MULTIMODULE) @@ -194,7 +194,11 @@ enum MenuModelSetupItems { #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) -#define IF_CRSF_MODULE(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#if SPORT_MAX_BAUDRATE < 400000 +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#else +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#endif #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -374,7 +378,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define EXTERNAL_MODULE_ROWS \ LABEL(ExternalModule), \ MODULE_TYPE_ROWS(EXTERNAL_MODULE), \ - IF_CRSF_MODULE(EXTERNAL_MODULE, 0), /* Baudrate */ \ + IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), /* Baudrate */ \ MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \ @@ -1056,18 +1060,32 @@ void menuModelSetup(event_t event) } break; -#if defined(CROSSFIRE) +#if defined(CROSSFIRE) || defined(GHOST) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { ModuleData & moduleData = g_model.moduleData[moduleIdx]; - lcdDrawText( INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); - if (attr) { - moduleData.crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate), 0,DIM(CROSSFIRE_BAUDRATES) - 1)); - if (checkIncDec_Ret) { - restartExternalModule(); + lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); + if (isModuleCrossfire(EXTERNAL_MODULE)) { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } } } break; +#if SPORT_MAX_BAUDRATE < 400000 + else { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate)],attr | LEFT); + if (attr) { + moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } + break; +#endif } #endif diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index fd3232a56..434c97bc3 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -106,7 +106,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_LABEL, ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, -#if defined(CROSSFIRE) +#if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, #endif #if defined (MULTIMODULE) @@ -316,7 +316,11 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) -#define IF_CRSF_MODULE(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#if SPORT_MAX_BAUDRATE < 400000 +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) +#else +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) +#endif #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -411,7 +415,7 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), EXTERNAL_MODULE_TYPE_ROW(), - IF_CRSF_MODULE(EXTERNAL_MODULE, 0), // Baudrate + IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), // Baudrate MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) AFHDS3_MODE_ROWS(EXTERNAL_MODULE) @@ -1021,18 +1025,32 @@ void menuModelSetup(event_t event) } break; -#if defined(CROSSFIRE) +#if defined(CROSSFIRE) || defined(GHOST) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); - if (attr) { - moduleData.crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); - if (checkIncDec_Ret) { - restartExternalModule(); + if (isModuleCrossfire(EXTERNAL_MODULE)) { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); + if (attr) { + moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } } } break; +#if SPORT_MAX_BAUDRATE < 400000 + else { + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate)],attr | LEFT); + if (attr) { + moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); + if (checkIncDec_Ret) { + restartExternalModule(); + } + } + } + break; +#endif } #endif diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index 618b07873..2c7935d4f 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -267,7 +267,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index f634c5b21..ec33d6d4a 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -229,7 +229,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index d7034bcd3..94bc80955 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -141,7 +141,7 @@ const uint8_t CROSSFIRE_FRAME_PERIODS[] = { #define INT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate)] #define EXT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] -#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] * 1000) +#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] * 1000) #define CROSSFIRE_TELEM_MIRROR_BAUDRATE 115200 diff --git a/radio/src/telemetry/ghost.cpp b/radio/src/telemetry/ghost.cpp index 5fcf48353..df17905a5 100755 --- a/radio/src/telemetry/ghost.cpp +++ b/radio/src/telemetry/ghost.cpp @@ -91,7 +91,7 @@ const GhostSensor ghostSensors[] = { uint8_t getGhostModuleAddr() { #if SPORT_MAX_BAUDRATE < 400000 - return g_eeGeneral.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; + return g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; #else return GHST_ADDR_MODULE_SYM; #endif From 6f158663a931b477897f07d5b944ebdcb8cf31ff Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 10 Feb 2022 09:19:45 +0100 Subject: [PATCH 04/23] Fixes --- radio/src/gui/128x64/model_setup.cpp | 5 ++--- radio/src/targets/horus/telemetry_driver.cpp | 2 +- radio/src/targets/taranis/telemetry_driver.cpp | 2 +- radio/src/telemetry/ghost.cpp | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 330092f98..400d76659 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1060,7 +1060,7 @@ void menuModelSetup(event_t event) } break; -#if defined(CROSSFIRE) || defined(GHOST) +#if defined(HARDWARE_INTERNAL_MODULE) && (defined(CROSSFIRE) || defined(GHOST)) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { ModuleData & moduleData = g_model.moduleData[moduleIdx]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); @@ -1073,7 +1073,6 @@ void menuModelSetup(event_t event) } } } - break; #if SPORT_MAX_BAUDRATE < 400000 else { lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate)],attr | LEFT); @@ -1084,8 +1083,8 @@ void menuModelSetup(event_t event) } } } - break; #endif + break; } #endif diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index 2c7935d4f..c4bd8698c 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -267,7 +267,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/targets/taranis/telemetry_driver.cpp b/radio/src/targets/taranis/telemetry_driver.cpp index ec33d6d4a..887e81adf 100644 --- a/radio/src/targets/taranis/telemetry_driver.cpp +++ b/radio/src/targets/taranis/telemetry_driver.cpp @@ -229,7 +229,7 @@ void telemetryPortSetDirectionInput() { sportWaitTransmissionComplete(); #if defined(GHOST) && SPORT_MAX_BAUDRATE < 400000 - if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { + if (isModuleGhost(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_115K) { TELEMETRY_USART->BRR = BRR_115K; } #endif diff --git a/radio/src/telemetry/ghost.cpp b/radio/src/telemetry/ghost.cpp index df17905a5..2b12768c1 100755 --- a/radio/src/telemetry/ghost.cpp +++ b/radio/src/telemetry/ghost.cpp @@ -91,7 +91,7 @@ const GhostSensor ghostSensors[] = { uint8_t getGhostModuleAddr() { #if SPORT_MAX_BAUDRATE < 400000 - return g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; + return g_model.moduleData[EXTERNAL_MODULE].ghost.telemetryBaudrate == GHST_TELEMETRY_RATE_400K ? GHST_ADDR_MODULE_SYM : GHST_ADDR_MODULE_ASYM; #else return GHST_ADDR_MODULE_SYM; #endif From e63eeb0984fb7d66dd7fcbf90dc6c3334bf66c94 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 10 Feb 2022 09:32:07 +0100 Subject: [PATCH 05/23] Update yaml --- radio/src/storage/yaml/yaml_datastructs_nv14.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_t12.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_t8.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_tlite.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_tpro.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_tx12.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x10.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x12s.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x7.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x9d.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x9e.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x9lite.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_x9lites.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_xlite.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_xlites.cpp | 3 ++- radio/src/storage/yaml/yaml_datastructs_zorro.cpp | 3 ++- 16 files changed, 32 insertions(+), 16 deletions(-) diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 5953cfada..445e22427 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -665,7 +665,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index a767faa05..846d800e0 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 21be1d344..21716c298 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 21be1d344..21716c298 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index e91769173..f2aeaf927 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -639,7 +639,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 9f5644035..ca1a461ea 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 3e17f4884..560224a79 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -686,7 +686,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 7ec5d2240..d025e1e18 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -684,7 +684,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 21be1d344..21716c298 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index f6a9d30cd..460336285 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -641,7 +641,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index 75eedb0e6..e449197e3 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -680,7 +680,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index fabe9b008..d75a4d619 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -618,7 +618,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 048d0758e..aafb28ab7 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -628,7 +628,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index f994d8e4d..987c53edd 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -625,7 +625,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 19f139cc2..00e84b852 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -629,7 +629,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index 9a0674c7a..c907aaa38 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -633,7 +633,8 @@ static const struct YamlNode struct_anonymous_11[] = { }; static const struct YamlNode struct_anonymous_12[] = { YAML_UNSIGNED( "raw12bits", 1 ), - YAML_PADDING( 7 ), + YAML_UNSIGNED( "telemetryBaudrate", 3 ), + YAML_PADDING( 4 ), YAML_END }; static const struct YamlNode struct_anonymous_13[] = { From c0e6f2a7f9257cff740310eac7a2017acc7a7890 Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 10 Feb 2022 09:55:44 +0100 Subject: [PATCH 06/23] Compilation fixes --- radio/src/gui/128x64/model_setup.cpp | 2 +- radio/src/gui/colorlcd/radio_hardware.cpp | 15 --------- .../src/gui/common/stdlcd/radio_hardware.cpp | 15 +++++---- radio/src/pulses/pulses.cpp | 33 +++++++++++++++++++ radio/src/pulses/pulses.h | 1 + 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 400d76659..d014f4472 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1060,7 +1060,7 @@ void menuModelSetup(event_t event) } break; -#if defined(HARDWARE_INTERNAL_MODULE) && (defined(CROSSFIRE) || defined(GHOST)) +#if defined(HARDWARE_EXTERNAL_MODULE) && (defined(CROSSFIRE) || defined(GHOST)) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE: { ModuleData & moduleData = g_model.moduleData[moduleIdx]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 939e21459..d2802a072 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -247,21 +247,6 @@ class SerialConfigWindow : public FormGroup } }; -void restartExternalModule() -{ - if (!IS_EXTERNAL_MODULE_ON()) { - return; - } - pauseMixerCalculations(); - pausePulses(); - EXTERNAL_MODULE_OFF(); - RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate - telemetryProtocol = 255; // force telemetry port + module reinitialization - EXTERNAL_MODULE_ON(); - resumePulses(); - resumeMixerCalculations(); -} - class InternalModuleWindow : public FormGroup { public: InternalModuleWindow(FormWindow *parent, const rect_t &rect) : diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index aad619f2b..59bc3f6c7 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -101,9 +101,9 @@ enum { ITEM_RADIO_HARDWARE_INTERNAL_MODULE_TYPE, ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE, #endif - +#if defined(HARDWARE_EXTERNAL_MODULE) ITEM_RADIO_HARDWARE_SERIAL_SAMPLE_MODE, - +#endif #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE, @@ -233,8 +233,11 @@ enum { #else #define INTERNAL_MODULE_ROWS #endif - +#if defined(HARDWARE_EXTERNAL_MODULE) #define SERIAL_SAMPLE_MODE_ROWS 0, +#else +#define SERIAL_SAMPLE_MODE_ROWS +#endif #if defined(AUX_SERIAL) || defined(USB_SERIAL) static uint8_t _dispSerialPort(uint8_t port_nr) @@ -536,19 +539,19 @@ void menuRadioHardware(event_t event) if (attr) { g_eeGeneral.InternalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { - restartExternalModule(); + restartInternalModule(); } } break; #endif - +#if defined(HARDWARE_EXTERNAL_MODULE) case ITEM_RADIO_HARDWARE_SERIAL_SAMPLE_MODE: g_eeGeneral.uartSampleMode = editChoice(HW_SETTINGS_COLUMN2, y, STR_SAMPLE_MODE, STR_SAMPLE_MODES, g_eeGeneral.uartSampleMode, 0, UART_SAMPLE_MODE_MAX, attr, event); if (attr && checkIncDec_Ret) { restartExternalModule(); } break; - +#endif #if defined(BLUETOOTH) case ITEM_RADIO_HARDWARE_BLUETOOTH_MODE: lcdDrawTextAlignedLeft(y, STR_BLUETOOTH); diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index 6226fea3a..78f82c997 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -69,6 +69,39 @@ void ModuleState::startBind(BindInformation* destination, #endif } +#if defined(HARDWARE_INTERNAL_MODULE) +void restartInternalModule() +{ + if (!IS_INTERNAL_MODULE_ON()) { + return; + } + pauseMixerCalculations(); + pausePulses(); + INTERNAL_MODULE_OFF(); + RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate + telemetryProtocol = 255; // force telemetry port + module reinitialization + INTERNAL_MODULE_ON(); + resumePulses(); + resumeMixerCalculations(); +} +#endif +#if defined(HARDWARE_EXTERNAL_MODULE) +void restartExternalModule() +{ + if (!IS_EXTERNAL_MODULE_ON()) { + return; + } + pauseMixerCalculations(); + pausePulses(); + EXTERNAL_MODULE_OFF(); + RTOS_WAIT_MS(20); // 20ms so that the pulses interrupt will reinit the frame rate + telemetryProtocol = 255; // force telemetry port + module reinitialization + EXTERNAL_MODULE_ON(); + resumePulses(); + resumeMixerCalculations(); +} +#endif + void ModuleState::readModuleInformation(ModuleInformation* destination, int8_t first, int8_t last) { diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index a8664d3b0..b0ce33c6d 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -254,6 +254,7 @@ void extmodulePxx1SerialStart(); void extmodulePpmStart(); void intmoduleStop(); void extmoduleStop(); +void restartInternalModule(); void restartExternalModule(); void getModuleStatusString(uint8_t moduleIdx, char * statusText); void getModuleSyncStatusString(uint8_t moduleIdx, char * statusText); From 0cc2b95b092079122371da0144d10c2ab8066bc4 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 12 Feb 2022 09:53:36 +0100 Subject: [PATCH 07/23] Cosmetics --- radio/src/datastructs_private.h | 2 +- radio/src/gui/colorlcd/radio_hardware.cpp | 4 ++-- radio/src/gui/common/stdlcd/radio_hardware.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_nv14.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_t12.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_t8.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_tlite.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_tpro.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_tx12.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x10.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x12s.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x7.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x9d.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x9e.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x9lite.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_x9lites.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_xlite.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_xlites.cpp | 2 +- radio/src/storage/yaml/yaml_datastructs_zorro.cpp | 2 +- radio/src/telemetry/crossfire.h | 2 +- 20 files changed, 21 insertions(+), 21 deletions(-) diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index dd9e86a98..8de9ce7c4 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -868,7 +868,7 @@ PACK(struct RadioData { int8_t timezone:5; uint8_t adjustRTC:1; NOBACKUP(uint8_t inactivityTimer); - uint8_t InternalModuleBaudrate:3; + uint8_t internalModuleBaudrate:3; SPLASH_MODE; /* 3bits */ int8_t hapticMode:2 CUST(r_beeperMode,w_beeperMode); int8_t switchesDelay; diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index d2802a072..578521c47 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -288,10 +288,10 @@ class InternalModuleWindow : public FormGroup { new StaticText(this, grid.getLabelSlot(), STR_BAUDRATE, 0,COLOR_THEME_PRIMARY1); new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0,CROSSFIRE_MAX_INTERNAL_BAUDRATE, [=]() -> int { - return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate); + return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate); }, [=](int newValue) { - g_eeGeneral.InternalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); SET_DIRTY(); restartExternalModule(); }); diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 59bc3f6c7..2811225cd 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -537,7 +537,7 @@ void menuRadioHardware(event_t event) lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); lcdDrawNumber(HW_SETTINGS_COLUMN2, y, INT_CROSSFIRE_BAUDRATE, attr|LEFT); if (attr) { - g_eeGeneral.InternalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); + g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { restartInternalModule(); } diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 445e22427..516990fff 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -380,7 +380,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index 846d800e0..4fb0cbea3 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 21716c298..06aa7216b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 21716c298..06aa7216b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index f2aeaf927..7320d16ef 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -359,7 +359,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index ca1a461ea..76e8b5938 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 560224a79..9e1fe4c5a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -401,7 +401,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index d025e1e18..51386b36b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -399,7 +399,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 21716c298..06aa7216b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index 460336285..34f155a39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -358,7 +358,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index e449197e3..591c9d580 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -397,7 +397,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index d75a4d619..a5610638d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -338,7 +338,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index aafb28ab7..05c722f69 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -346,7 +346,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index 987c53edd..032495379 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -343,7 +343,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 00e84b852..c17aa4bfb 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -345,7 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index c907aaa38..ff89e2e63 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -351,7 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), - YAML_UNSIGNED( "InternalModuleBaudrate", 3 ), + YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), YAML_SIGNED( "switchesDelay", 8 ), diff --git a/radio/src/telemetry/crossfire.h b/radio/src/telemetry/crossfire.h index 94bc80955..b3dce3dfd 100644 --- a/radio/src/telemetry/crossfire.h +++ b/radio/src/telemetry/crossfire.h @@ -139,7 +139,7 @@ const uint8_t CROSSFIRE_FRAME_PERIODS[] = { % DIM(CROSSFIRE_BAUDRATES) #endif -#define INT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.InternalModuleBaudrate)] +#define INT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)] #define EXT_CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] #define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[EXTERNAL_MODULE].crsf.telemetryBaudrate)] * 1000) From 4039069bb724315ad551983e3dee880dc7d5259e Mon Sep 17 00:00:00 2001 From: 3djc Date: Sat, 12 Feb 2022 12:37:07 +0100 Subject: [PATCH 08/23] YAML fixes --- radio/src/storage/yaml/yaml_datastructs_funcs.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 87483b853..73409e9d2 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -444,7 +444,6 @@ static uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) case MODULE_TYPE_NONE: case MODULE_TYPE_PPM: case MODULE_TYPE_DSM2: - case MODULE_TYPE_CROSSFIRE: return 1; case MODULE_TYPE_MULTIMODULE: return 2; @@ -466,6 +465,8 @@ static uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) break; case MODULE_TYPE_GHOST: return 8; + case MODULE_TYPE_CROSSFIRE: + return 9; } return 0; } From ab09d0a25fca6abc3dab5a3c40b73ed9285b6283 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 13 Feb 2022 11:00:30 +0100 Subject: [PATCH 09/23] Introduce serial status --- radio/src/gui/128x64/model_setup.cpp | 39 ++++++++++++++++++- radio/src/gui/212x64/model_setup.cpp | 30 +++++++++++++- radio/src/gui/colorlcd/model_setup.cpp | 30 +++++++++----- .../src/gui/common/stdlcd/radio_hardware.cpp | 2 +- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cn.h.txt | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 1 + radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 1 + radio/src/translations/nl.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + radio/src/translations/tw.h.txt | 1 + 19 files changed, 102 insertions(+), 14 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index d014f4472..7c60bf821 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -20,6 +20,7 @@ */ #include "opentx.h" +#include "mixer_scheduler.h" #if !defined(EEPROM) #include "storage/sdcard_common.h" @@ -105,7 +106,10 @@ enum MenuModelSetupItems { #if defined(HARDWARE_INTERNAL_MODULE) ITEM_MODEL_SETUP_INTERNAL_MODULE_LABEL, +#if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE, + ITEM_MODEL_SETUP_INTERNAL_MODULE_SERIALSTATUS, +#endif #if defined(MULTIMODULE) ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL, ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE, @@ -138,6 +142,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, #if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, #endif #if defined(MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, @@ -194,11 +199,18 @@ enum MenuModelSetupItems { #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#if defined(CROSSFIRE) || defined(GHOST) +#define IF_MODULE_SYNCED(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) #if SPORT_MAX_BAUDRATE < 400000 #define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) #else #define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #endif +#else +#define IF_MODULE_SYNCED(module, xxx) +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) +#endif + #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -353,6 +365,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) #define INTERNAL_MODULE_ROWS \ LABEL(InternalModule), \ MODULE_TYPE_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE */ \ + IF_MODULE_SYNCED(INTERNAL_MODULE, 0), /* Sync rate + errors */ \ MULTIMODULE_TYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS */ \ @@ -379,6 +392,7 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) LABEL(ExternalModule), \ MODULE_TYPE_ROWS(EXTERNAL_MODULE), \ IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), /* Baudrate */ \ + IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), /* Sync rate + errors */ \ MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \ MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \ MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \ @@ -1065,7 +1079,7 @@ void menuModelSetup(event_t event) ModuleData & moduleData = g_model.moduleData[moduleIdx]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); if (isModuleCrossfire(EXTERNAL_MODULE)) { - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, moduleData.crsf.telemetryBaudrate,attr | LEFT); if (attr) { moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { @@ -1087,6 +1101,29 @@ void menuModelSetup(event_t event) break; } #endif +#if (defined(CROSSFIRE) || defined(GHOST)) +#if defined(HARDWARE_INTERNAL_MODULE) + case ITEM_MODEL_SETUP_INTERNAL_MODULE_SERIALSTATUS: +#endif +#if defined(HARDWARE_EXTERNAL_MODULE) + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS: +#endif + lcdDrawText(INDENT_WIDTH, y, STR_STATUS); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 1000000 / getMixerSchedulerPeriod(), LEFT | attr); + lcdDrawText(lcdNextPos, y, "Hz ", attr); + lcdDrawNumber(lcdNextPos, y, telemetryErrors, attr); + lcdDrawText(lcdNextPos + 1, y, "Err", attr); + if (attr) { + s_editMode = 0; + if (event == EVT_KEY_LONG(KEY_ENTER)) { + START_NO_HIGHLIGHT(); + telemetryErrors = 0; + AUDIO_WARNING1(); + killEvents(event); + } + } + break; +#endif #if defined(MULTIMODULE) #if defined(HARDWARE_INTERNAL_MODULE) diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 434c97bc3..661d426f1 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -20,6 +20,7 @@ */ #include "opentx.h" +#include "mixer_scheduler.h" uint8_t g_moduleIdx; @@ -108,6 +109,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, #if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, #endif #if defined (MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, @@ -316,11 +318,17 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW() #define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx)) #define IF_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #define IF_NOT_ACCESS_MODULE_RF(module, xxx) (isModuleRFAccess(module) ? HIDDEN_ROW : (uint8_t)(xxx)) +#if defined(CROSSFIRE) || defined(GHOST) +#define IF_MODULE_SYNCED(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) #if SPORT_MAX_BAUDRATE < 400000 #define IF_MODULE_BAUDRATE_ADJUST(module, xxx) ((isModuleCrossfire(module) || isModuleGhost(module)) ? (uint8_t)(xxx) : HIDDEN_ROW) #else #define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW) #endif +#else +#define IF_MODULE_SYNCED(module, xxx) +#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) +#endif #if defined(PXX2) #define REGISTRATION_ID_ROWS uint8_t((isDefaultModelRegistrationID() || (warningText && popupFunc == runPopupRegister)) ? HIDDEN_ROW : READONLY_ROW), @@ -415,7 +423,8 @@ void menuModelSetup(event_t event) LABEL(ExternalModule), EXTERNAL_MODULE_TYPE_ROW(), - IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), // Baudrate + IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), // Baudrate + IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), // Sync rate + errors MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) AFHDS3_MODE_ROWS(EXTERNAL_MODULE) @@ -1030,7 +1039,7 @@ void menuModelSetup(event_t event) ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); if (isModuleCrossfire(EXTERNAL_MODULE)) { - lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, EXT_CROSSFIRE_BAUDRATE,attr | LEFT); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, moduleData.crsf.telemetryBaudrate,attr | LEFT); if (attr) { moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { @@ -1052,6 +1061,23 @@ void menuModelSetup(event_t event) break; #endif } + + case ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS: + lcdDrawText(INDENT_WIDTH, y, STR_STATUS); + lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 1000000 / getMixerSchedulerPeriod(), LEFT | attr); + lcdDrawText(lcdNextPos, y, "Hz ", attr); + lcdDrawNumber(lcdNextPos, y, telemetryErrors, attr); + lcdDrawText(lcdNextPos + 1, y, "Err", attr); + if (attr) { + s_editMode = 0; + if (event == EVT_KEY_LONG(KEY_ENTER)) { + START_NO_HIGHLIGHT(); + telemetryErrors = 0; + AUDIO_WARNING1(); + killEvents(event); + } + } + break; #endif #if defined(MULTIMODULE) diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index add6ed664..ac367b4d0 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -23,6 +23,7 @@ #include "multi_rfprotos.h" #include "io/multi_protolist.h" #include "pulses/flysky.h" +#include "mixer_scheduler.h" #include "opentx.h" #include "libopenui.h" @@ -610,16 +611,25 @@ class ModuleWindow : public FormGroup { // Module parameters if (moduleIdx== EXTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { grid.nextLine(); - new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0,COLOR_THEME_PRIMARY1); - new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0,CROSSFIRE_MAX_INTERNAL_BAUDRATE, - [=]() -> int { - return CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[moduleIdx].crsf.telemetryBaudrate); - }, - [=](int newValue) { - g_model.moduleData[moduleIdx].crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); - SET_DIRTY(); - restartExternalModule(); - }); + new StaticText(this, grid.getLabelSlot(true), STR_BAUDRATE, 0, COLOR_THEME_PRIMARY1); + new Choice(this, grid.getFieldSlot(1, 0), STR_CRSF_BAUDRATE, 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE, + [=]() -> int { + return CROSSFIRE_STORE_TO_INDEX(g_model.moduleData[moduleIdx].crsf.telemetryBaudrate); + }, + [=](int newValue) { + g_model.moduleData[moduleIdx].crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); + SET_DIRTY(); + restartExternalModule(); + }); + } + if (isModuleCrossfire(moduleIdx)) { + grid.nextLine(); + new StaticText(this, grid.getLabelSlot(true), STR_STATUS, 0,COLOR_THEME_PRIMARY1); + new DynamicText(this, grid.getFieldSlot(), [=] { + char msg[64] = ""; + sprintf(msg,"%d Hz %d Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + return std::string(msg); + }); } if (isModuleXJT(moduleIdx)) { rfChoice = new Choice( diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 2811225cd..6e3ddcf6e 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -535,7 +535,7 @@ void menuRadioHardware(event_t event) #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE: lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawNumber(HW_SETTINGS_COLUMN2, y, INT_CROSSFIRE_BAUDRATE, attr|LEFT); + lcdDrawTextAtIndex(HW_SETTINGS_COLUMN2, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,attr | LEFT); if (attr) { g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 09065c0f0..b65850e5d 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -201,6 +201,7 @@ const char STR_BEEPCOUNTDOWN[] = TR_BEEPCOUNTDOWN; const char STR_PERSISTENT[] = TR_PERSISTENT; const char STR_BACKLIGHT_LABEL[] = TR_BACKLIGHT_LABEL; const char STR_GHOST_MENU_LABEL[] = TR_GHOST_MENU_LABEL; +const char STR_STATUS[] = TR_STATUS; const char STR_BLDELAY[] = TR_BLDELAY; const char STR_RXCHANNELORD[] = TR_RXCHANNELORD; const char STR_STICKS[] = TR_STICKS; diff --git a/radio/src/translations.h b/radio/src/translations.h index a5f546584..505c22bcc 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -323,6 +323,7 @@ extern const char STR_BEEPCOUNTDOWN[]; extern const char STR_PERSISTENT[]; extern const char STR_BACKLIGHT_LABEL[]; extern const char STR_GHOST_MENU_LABEL[]; +extern const char STR_STATUS[]; extern const char STR_BLDELAY[]; #if defined(PWM_BACKLIGHT) || defined(COLORLCD) diff --git a/radio/src/translations/cn.h.txt b/radio/src/translations/cn.h.txt index d097bb0be..3139efe10 100644 --- a/radio/src/translations/cn.h.txt +++ b/radio/src/translations/cn.h.txt @@ -474,6 +474,7 @@ #define TR_BACKLIGHT_LABEL "背光" #define TR_BLDELAY INDENT "Duration" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLONBRIGHTNESS "背光开" #define TR_BLOFFBRIGHTNESS "背光关" #define TR_KEYS_BACKLIGHT "按键背光" diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 651037320..0a26d8498 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -510,6 +510,7 @@ #define TR_PERSISTENT INDENT"Trvalé" #define TR_BACKLIGHT_LABEL "Podsvětlení" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Zhasnout po" #define TR_BLONBRIGHTNESS TR3(INDENT"Jas Zap.", INDENT"Jas Zap.", INDENT"Jas zapnutého LCD") #define TR_BLOFFBRIGHTNESS TR3(INDENT"Jas Vyp.", INDENT"Jas Vyp.", INDENT"Jas vypnutého LCD") diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 106f39d85..0d47943b1 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -513,6 +513,7 @@ #define TR_PERSISTENT TR(INDENT "Permanent", INDENT "Permanent") #define TR_BACKLIGHT_LABEL "LCD-Beleuchtung" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Dauer" #define TR_BLONBRIGHTNESS INDENT "An-Helligkeit" #define TR_BLOFFBRIGHTNESS INDENT "Aus-Helligkeit" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index d3c7d0e45..b34eae0a3 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -511,6 +511,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistent") #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duration" #define TR_BLONBRIGHTNESS INDENT "ON brightness" #define TR_BLOFFBRIGHTNESS INDENT "OFF brightness" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f1f4806c1..75e33003b 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -510,6 +510,7 @@ #define TR_PERSISTENT TR(INDENT"Persisten.", INDENT"Persistente") #define TR_BACKLIGHT_LABEL "Luz fondo" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Duración" #define TR_BLONBRIGHTNESS INDENT"MAS brillo" #define TR_BLOFFBRIGHTNESS INDENT"MENOS brillo" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 9c090389a..a1cb940c9 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -524,6 +524,7 @@ #define TR_PERSISTENT TR(INDENT"Persist.", INDENT"Persistent") #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Duration" #define TR_BLONBRIGHTNESS INDENT"ON Brightness" #define TR_BLOFFBRIGHTNESS INDENT"OFF Brightness" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index dd599c5f1..2bdf2a225 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -531,6 +531,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistant") #define TR_BACKLIGHT_LABEL "Rétroéclairage" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Durée" #define TR_BLONBRIGHTNESS INDENT "Luminosité ON" #define TR_BLOFFBRIGHTNESS INDENT "Luminosité OFF" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 1ff8c60c4..327badac2 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -535,6 +535,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "Persistente") #define TR_BACKLIGHT_LABEL TR("Retroillu.", "Retroilluminazione") #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Durata" #define TR_BLONBRIGHTNESS TR(INDENT "Lumin. ON", INDENT "Luminosità ON") #define TR_BLOFFBRIGHTNESS TR(INDENT "Lumin. OFF", INDENT "Luminosità OFF") diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 252424e94..efeb64b0c 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -515,6 +515,7 @@ #define TR_PERSISTENT TR(INDENT "Vasth.", INDENT "Vasthouden") #define TR_BACKLIGHT_LABEL "LCD-Verlichting" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duur" #define TR_BLONBRIGHTNESS INDENT "Aan-Helderheid" #define TR_BLOFFBRIGHTNESS INDENT "Uit-Helderheid" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index a75386597..a722029b8 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -531,6 +531,7 @@ #define TR_PERSISTENT TR(INDENT "Dokł.", INDENT "Dokładny") #define TR_BACKLIGHT_LABEL "Podświetl" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT"Czas trwania" #define TR_BLONBRIGHTNESS INDENT"Jasnośc wł." #define TR_BLOFFBRIGHTNESS INDENT"Jasność wył." diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index fe79214b2..37fcb8484 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -535,6 +535,7 @@ #define TR_PERSISTENT INDENT "Persist." #define TR_BACKLIGHT_LABEL "Backlight" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Tempo Backlight" #define TR_BLONBRIGHTNESS INDENT "ON Brightness" #define TR_BLOFFBRIGHTNESS INDENT "OFF Brightness" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 862dcccc0..21f339c8f 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -538,6 +538,7 @@ #define TR_PERSISTENT TR("Jämt på ", INDENT"Alltid På") #define TR_BACKLIGHT_LABEL "Belysning" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Av efter" #define TR_BLONBRIGHTNESS INDENT "På Ljusstyrka" #define TR_BLOFFBRIGHTNESS INDENT "Av Ljusstyrka" diff --git a/radio/src/translations/tw.h.txt b/radio/src/translations/tw.h.txt index d38c652a8..a4328692f 100644 --- a/radio/src/translations/tw.h.txt +++ b/radio/src/translations/tw.h.txt @@ -473,6 +473,7 @@ #define TR_PERSISTENT TR(INDENT "Persist.", INDENT "關機保持") #define TR_BACKLIGHT_LABEL "背光" #define TR_GHOST_MENU_LABEL "GHOST MENU" +#define TR_STATUS "Status" #define TR_BLDELAY INDENT "Duration" #define TR_BLONBRIGHTNESS "背光開" #define TR_BLOFFBRIGHTNESS "背光關" From 7ec58d06d61aa044aeb3d9c2cb0650db8c625586 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 13 Feb 2022 06:30:24 -0800 Subject: [PATCH 10/23] remove warning --- radio/src/gui/colorlcd/model_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index ac367b4d0..6e9de6aa7 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -627,7 +627,7 @@ class ModuleWindow : public FormGroup { new StaticText(this, grid.getLabelSlot(true), STR_STATUS, 0,COLOR_THEME_PRIMARY1); new DynamicText(this, grid.getFieldSlot(), [=] { char msg[64] = ""; - sprintf(msg,"%d Hz %d Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + sprintf(msg,"%d Hz %lu Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); return std::string(msg); }); } From f090c599dfce1c59b5844889de1f4d82d8709fc1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 15 Feb 2022 00:30:53 -0800 Subject: [PATCH 11/23] Add a reminder of internal CRSF speed in model setup --- radio/src/gui/128x64/model_setup.cpp | 11 +++-------- radio/src/gui/212x64/model_setup.cpp | 4 +++- radio/src/gui/colorlcd/model_setup.cpp | 12 +++++++----- radio/src/strhelpers.cpp | 7 +++++++ radio/src/strhelpers.h | 1 + 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 7c60bf821..f1890a350 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -966,14 +966,7 @@ void menuModelSetup(event_t event) case ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE: #endif lcdDrawTextAlignedLeft(y, INDENT TR_MODE); - lcdDrawTextAtIndex( - MODEL_SETUP_2ND_COLUMN, y, - moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS - : STR_INTERNAL_MODULE_PROTOCOLS, - moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType - : g_model.moduleData[moduleIdx].type, - menuHorizontalPosition == 0 ? attr : 0); - + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y,moduleIdx == EXTERNAL_MODULE ? STR_EXTERNAL_MODULE_PROTOCOLS : STR_INTERNAL_MODULE_PROTOCOLS,moduleIdx == EXTERNAL_MODULE ? reusableBuffer.moduleSetup.newType: g_model.moduleData[moduleIdx].type,menuHorizontalPosition == 0 ? attr : 0); if (isModuleXJT(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1+g_model.moduleData[moduleIdx].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleISRM(moduleIdx)) @@ -982,6 +975,8 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_DSM_PROTOCOLS, g_model.moduleData[moduleIdx].rfProtocol, menuHorizontalPosition==1 ? attr : 0); else if (isModuleR9MNonAccess(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[moduleIdx].subType, (menuHorizontalPosition==1 ? attr : 0)); + else if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(INTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,0); if (attr && menuHorizontalPosition == 0 && moduleIdx == EXTERNAL_MODULE) { if (s_editMode > 0) { diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 661d426f1..348e83814 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -109,7 +109,7 @@ enum MenuModelSetupItems { ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE, #if defined(CROSSFIRE) || defined(GHOST) ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE, - ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS, #endif #if defined (MULTIMODULE) ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL, @@ -888,6 +888,8 @@ void menuModelSetup(event_t event) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_XJT_ACCST_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleISRM(INTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); + else if (isModuleCrossfire(INTERNAL_MODULE)) + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, c,0); if (attr) { if (menuHorizontalPosition == 0) { uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 6e9de6aa7..d38762be8 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -305,8 +305,7 @@ class TrainerModuleWindow : public FormGroup FormGridLayout grid; clear(); - new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0, - COLOR_THEME_PRIMARY1); + new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0,COLOR_THEME_PRIMARY1); trainerChoice = new TrChoice( this, grid.getFieldSlot(), STR_VTRAINERMODES, 0, TRAINER_MODE_MAX(), GET_DEFAULT(g_model.trainerData.mode), @@ -590,8 +589,7 @@ class ModuleWindow : public FormGroup { clear(); // Module Type - new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0, - COLOR_THEME_PRIMARY1); + new StaticText(this, grid.getLabelSlot(true), STR_MODE, 0,COLOR_THEME_PRIMARY1); moduleChoice = new Choice( this, grid.getFieldSlot(2, 0), STR_INTERNAL_MODULE_PROTOCOLS, MODULE_TYPE_NONE, MODULE_TYPE_COUNT - 1, @@ -608,6 +606,10 @@ class ModuleWindow : public FormGroup { : isExternalModuleAvailable(moduleType); }); + if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { + new StaticText(this, grid.getFieldSlot(2, 1), getStringAtIndex(STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)), 0,COLOR_THEME_PRIMARY1); + } + // Module parameters if (moduleIdx== EXTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { grid.nextLine(); @@ -627,7 +629,7 @@ class ModuleWindow : public FormGroup { new StaticText(this, grid.getLabelSlot(true), STR_STATUS, 0,COLOR_THEME_PRIMARY1); new DynamicText(this, grid.getFieldSlot(), [=] { char msg[64] = ""; - sprintf(msg,"%d Hz %lu Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + sprintf(msg,"%d Hz %u Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); return std::string(msg); }); } diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 6f4858618..4b9ea94e7 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -158,6 +158,13 @@ char *getStringAtIndex(char *dest, const char *s, int idx) return dest; } +const char *getStringAtIndex(const char *s, int idx) +{ + uint8_t len = s[0]; + return s + 1 + len * idx; +} + + char *strAppendStringWithIndex(char *dest, const char *s, int idx) { return strAppendUnsigned(strAppend(dest, s), abs(idx)); diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index 5ed7d8807..94cd87760 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -66,6 +66,7 @@ char *strAppendFilename(char *dest, const char *filename, const int size); #if !defined(BOOT) char *getStringAtIndex(char *dest, const char *s, int idx); +const char *getStringAtIndex(const char *s, int idx); char *strAppendStringWithIndex(char *dest, const char *s, int idx); #define LEN_TIMER_STRING 10 // "-00:00:00" char *getTimerString(char *dest, int32_t tme, TimerOptions timerOptions = {.options = 0}); From 77b00cd230722f1d68f379009ccae5856e4971eb Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 15 Feb 2022 00:36:22 -0800 Subject: [PATCH 12/23] typo... --- radio/src/gui/212x64/model_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 348e83814..468462672 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -889,7 +889,7 @@ void menuModelSetup(event_t event) else if (isModuleISRM(INTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleCrossfire(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, c,0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,0); if (attr) { if (menuHorizontalPosition == 0) { uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); From f426dd1254fc8e883a382c3fac13d89410c00590 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 15 Feb 2022 02:13:54 -0800 Subject: [PATCH 13/23] Fixes --- radio/src/gui/128x64/model_setup.cpp | 4 ++-- radio/src/gui/212x64/model_setup.cpp | 4 ++-- radio/src/gui/common/stdlcd/radio_hardware.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index f1890a350..947173537 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -976,7 +976,7 @@ void menuModelSetup(event_t event) else if (isModuleR9MNonAccess(moduleIdx)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_R9M_REGION, g_model.moduleData[moduleIdx].subType, (menuHorizontalPosition==1 ? attr : 0)); else if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); if (attr && menuHorizontalPosition == 0 && moduleIdx == EXTERNAL_MODULE) { if (s_editMode > 0) { @@ -1074,7 +1074,7 @@ void menuModelSetup(event_t event) ModuleData & moduleData = g_model.moduleData[moduleIdx]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); if (isModuleCrossfire(EXTERNAL_MODULE)) { - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, moduleData.crsf.telemetryBaudrate,attr | LEFT); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),attr | LEFT); if (attr) { moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 468462672..178cc679b 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -889,7 +889,7 @@ void menuModelSetup(event_t event) else if (isModuleISRM(INTERNAL_MODULE)) lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_ISRM_RF_PROTOCOLS, 1 + g_model.moduleData[INTERNAL_MODULE].subType, menuHorizontalPosition==1 ? attr : 0); else if (isModuleCrossfire(INTERNAL_MODULE)) - lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,0); + lcdDrawTextAtIndex(lcdNextPos + 3, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),0); if (attr) { if (menuHorizontalPosition == 0) { uint8_t moduleType = checkIncDec(event, g_model.moduleData[INTERNAL_MODULE].type, MODULE_TYPE_NONE, MODULE_TYPE_MAX, EE_MODEL, isInternalModuleAvailable); @@ -1041,7 +1041,7 @@ void menuModelSetup(event_t event) ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); if (isModuleCrossfire(EXTERNAL_MODULE)) { - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, moduleData.crsf.telemetryBaudrate,attr | LEFT); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEXmoduleData.crsf.telemetryBaudrate),attr | LEFT); if (attr) { moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 6e3ddcf6e..c2ee4514c 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -535,7 +535,7 @@ void menuRadioHardware(event_t event) #if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) case ITEM_RADIO_HARDWARE_INTERNAL_MODULE_BAUDRATE: lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN2, y, STR_CRSF_BAUDRATE, g_eeGeneral.internalModuleBaudrate,attr | LEFT); + lcdDrawTextAtIndex(HW_SETTINGS_COLUMN2, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate),attr | LEFT); if (attr) { g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate), 0, CROSSFIRE_MAX_INTERNAL_BAUDRATE)); if (checkIncDec_Ret) { From 21f776d40c43c89736ab2fa00c76ecf97e824a21 Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 15 Feb 2022 02:17:46 -0800 Subject: [PATCH 14/23] Fixes --- radio/src/gui/212x64/model_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 178cc679b..b703f6d99 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1041,7 +1041,7 @@ void menuModelSetup(event_t event) ModuleData &moduleData = g_model.moduleData[EXTERNAL_MODULE]; lcdDrawText(INDENT_WIDTH, y, STR_BAUDRATE); if (isModuleCrossfire(EXTERNAL_MODULE)) { - lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEXmoduleData.crsf.telemetryBaudrate),attr | LEFT); + lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),attr | LEFT); if (attr) { moduleData.crsf.telemetryBaudrate =CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.crsf.telemetryBaudrate),0, DIM(CROSSFIRE_BAUDRATES) - 1)); if (checkIncDec_Ret) { From 19b1db7275315fea75fc4f9112fdc26cb7c88507 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Mon, 14 Mar 2022 21:06:39 +1000 Subject: [PATCH 15/23] Use existing getStringAtIndex as considers length --- radio/src/gui/colorlcd/model_setup.cpp | 3 ++- radio/src/strhelpers.cpp | 7 ------- radio/src/strhelpers.h | 1 - 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index d38762be8..8d510d8d9 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -607,7 +607,8 @@ class ModuleWindow : public FormGroup { }); if (moduleIdx == INTERNAL_MODULE && isModuleCrossfire(moduleIdx)) { - new StaticText(this, grid.getFieldSlot(2, 1), getStringAtIndex(STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)), 0,COLOR_THEME_PRIMARY1); + char buf[6]; + new StaticText(this, grid.getFieldSlot(2, 1), getStringAtIndex(buf, STR_CRSF_BAUDRATE, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.internalModuleBaudrate)), 0,COLOR_THEME_PRIMARY1); } // Module parameters diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index 4b9ea94e7..6f4858618 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -158,13 +158,6 @@ char *getStringAtIndex(char *dest, const char *s, int idx) return dest; } -const char *getStringAtIndex(const char *s, int idx) -{ - uint8_t len = s[0]; - return s + 1 + len * idx; -} - - char *strAppendStringWithIndex(char *dest, const char *s, int idx) { return strAppendUnsigned(strAppend(dest, s), abs(idx)); diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index 94cd87760..5ed7d8807 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -66,7 +66,6 @@ char *strAppendFilename(char *dest, const char *filename, const int size); #if !defined(BOOT) char *getStringAtIndex(char *dest, const char *s, int idx); -const char *getStringAtIndex(const char *s, int idx); char *strAppendStringWithIndex(char *dest, const char *s, int idx); #define LEN_TIMER_STRING 10 // "-00:00:00" char *getTimerString(char *dest, int32_t tme, TimerOptions timerOptions = {.options = 0}); From 70f71c8ec8cb7cc805a88433cfeded1b1ca3f6c5 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Mon, 14 Mar 2022 21:15:39 +1000 Subject: [PATCH 16/23] Remove compiler warning --- radio/src/gui/colorlcd/model_setup.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 8d510d8d9..82e9a9c91 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -630,7 +630,7 @@ class ModuleWindow : public FormGroup { new StaticText(this, grid.getLabelSlot(true), STR_STATUS, 0,COLOR_THEME_PRIMARY1); new DynamicText(this, grid.getFieldSlot(), [=] { char msg[64] = ""; - sprintf(msg,"%d Hz %u Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); + sprintf(msg,"%d Hz %lu Err", 1000000 / getMixerSchedulerPeriod(), telemetryErrors); return std::string(msg); }); } From ebfb0b61f018955162cb112bebeee04d8acb1c2e Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 17 Mar 2022 10:00:04 +0100 Subject: [PATCH 17/23] Companion: YAML and hardware panel --- .../firmwares/edgetx/yaml_generalsettings.cpp | 55 ++++++++++--------- .../firmwares/edgetx/yaml_generalsettings.h | 10 +++- .../src/firmwares/edgetx/yaml_moduledata.cpp | 9 +++ companion/src/firmwares/generalsettings.cpp | 16 +++--- companion/src/firmwares/generalsettings.h | 13 +++-- companion/src/firmwares/moduledata.h | 5 ++ .../src/firmwares/opentx/opentxeeprom.cpp | 16 ++++-- companion/src/generaledit/hardware.cpp | 32 +++++++---- companion/src/generaledit/hardware.h | 1 + 9 files changed, 98 insertions(+), 59 deletions(-) diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index e63478760..b02ba90bb 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -111,31 +111,28 @@ const YamlLookupTable internalModuleLut = { { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, }; -struct YamlTelemetryBaudrate { - unsigned int value; - - YamlTelemetryBaudrate() = default; - - YamlTelemetryBaudrate(const unsigned int * telemetryBaudrate) - { - if (Boards::getCapability(getCurrentFirmware()->getBoard(), Board::SportMaxBaudRate) < 400000) { - value = *telemetryBaudrate; - } - else { - value = (*telemetryBaudrate + telemetryBaudratesList.size() - 1) % telemetryBaudratesList.size(); - } +YamlTelemetryBaudrate::YamlTelemetryBaudrate( + const unsigned int* moduleBaudrate) +{ + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + value = *moduleBaudrate; + } else { + value = (*moduleBaudrate + moduleBaudratesList.size() - 1) % + moduleBaudratesList.size(); } +} - void toCpn(unsigned int * telemetryBaudrate, unsigned int variant) - { - if (Boards::getCapability((Board::Type)variant, Board::SportMaxBaudRate) < 400000) { - *telemetryBaudrate = value; - } - else { - *telemetryBaudrate = (value + 1) % telemetryBaudratesList.size(); - } +void YamlTelemetryBaudrate::toCpn(unsigned int* moduleBaudrate, + unsigned int variant) +{ + if (Boards::getCapability((Board::Type)variant, Board::SportMaxBaudRate) < + 400000) { + *moduleBaudrate = value; + } else { + *moduleBaudrate = (value + 1) % moduleBaudratesList.size(); } -}; +} namespace YAML { @@ -179,8 +176,8 @@ Node convert::encode(const GeneralSettings& rhs) node["adjustRTC"] = (int)rhs.adjustRTC; node["inactivityTimer"] = rhs.inactivityTimer; - YamlTelemetryBaudrate telemetryBaudrate(&rhs.telemetryBaudrate); - node["telemetryBaudrate"] = telemetryBaudrate.value; + YamlTelemetryBaudrate internalModuleBaudrate(&rhs.internalModuleBaudrate); + node["internalModuleBaudrate"] = internalModuleBaudrate.value; node["internalModule"] = LookupValue(internalModuleLut, rhs.internalModule); node["splashMode"] = rhs.splashMode; // TODO: B&W only @@ -358,9 +355,13 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) node["adjustRTC"] >> rhs.adjustRTC; node["inactivityTimer"] >> rhs.inactivityTimer; - YamlTelemetryBaudrate telemetryBaudrate; - node["telemetryBaudrate"] >> telemetryBaudrate.value; - telemetryBaudrate.toCpn(&rhs.telemetryBaudrate, rhs.variant); + YamlTelemetryBaudrate internalModuleBaudrate; + if (node["telemetryBaudrate"]) { + node["telemetryBaudrate"] >> internalModuleBaudrate.value; + } else { + node["internalModuleBaudrate"] >> internalModuleBaudrate.value; + } + internalModuleBaudrate.toCpn(&rhs.internalModuleBaudrate, rhs.variant); if (node["internalModule"]) { node["internalModule"] >> internalModuleLut >> rhs.internalModule; diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.h b/companion/src/firmwares/edgetx/yaml_generalsettings.h index 401f6e4a1..fb204e6e3 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.h +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.h @@ -21,6 +21,14 @@ #include "yaml_ops.h" #include "generalsettings.h" +struct YamlTelemetryBaudrate { + unsigned int value; + + YamlTelemetryBaudrate() = default; + YamlTelemetryBaudrate(const unsigned int* moduleBaudrate); + void toCpn(unsigned int* moduleBaudrate, unsigned int variant); +}; + namespace YAML { template<> @@ -30,5 +38,3 @@ namespace YAML { static bool decode(const Node& node, GeneralSettings& rhs); }; } - - diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 11d263265..8491ce125 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -19,6 +19,7 @@ */ #include "yaml_moduledata.h" +#include "yaml_generalsettings.h" #include "moduledata.h" #include "rawsource.h" @@ -296,8 +297,16 @@ Node convert::encode(const ModuleData& rhs) case PULSES_GHOST: { Node ghost; ghost["raw12bits"] = (int)rhs.ghost.raw12bits; + YamlTelemetryBaudrate br(&rhs.ghost.telemetryBaudrate); + ghost["telemetryBaudrate"] = br.value; mod["ghost"] = ghost; } break; + case PULSES_CROSSFIRE: { + Node crsf; + YamlTelemetryBaudrate br(&rhs.crsf.telemetryBaudrate); + crsf["telemetryBaudrate"] = br.value; + mod["crsf"] = crsf; + } break; // TODO: afhds3, flysky default: { Node ppm; diff --git a/companion/src/firmwares/generalsettings.cpp b/companion/src/firmwares/generalsettings.cpp index af0fd86e9..1e68b2b37 100644 --- a/companion/src/firmwares/generalsettings.cpp +++ b/companion/src/firmwares/generalsettings.cpp @@ -426,9 +426,9 @@ QString GeneralSettings::serialPortModeToString(int port_nr) const return serialModeToString(serialPort[port_nr]); } -QString GeneralSettings::telemetryBaudrateToString() const +QString GeneralSettings::internalModuleBaudrateToString() const { - return telemetryBaudrateToString(telemetryBaudrate); + return moduleBaudrateToString(internalModuleBaudrate); } // static @@ -495,9 +495,9 @@ QString GeneralSettings::serialModeToString(int value) } // static -QString GeneralSettings::telemetryBaudrateToString(int value) +QString GeneralSettings::moduleBaudrateToString(int value) { - return telemetryBaudratesList.value(value, CPN_STR_UNKNOWN_ITEM); + return moduleBaudratesList.value(value, CPN_STR_UNKNOWN_ITEM); } // static @@ -576,13 +576,13 @@ AbstractStaticItemModel * GeneralSettings::serialModeItemModel(int port_nr) } // static -AbstractStaticItemModel * GeneralSettings::telemetryBaudrateItemModel() +AbstractStaticItemModel * GeneralSettings::internalModuleBaudrateItemModel() { AbstractStaticItemModel * mdl = new AbstractStaticItemModel(); - mdl->setName(AIM_GS_TELEMETRYBAUDRATE); + mdl->setName(AIM_GS_INTMODULEBAUDRATE); - for (int i = 0; i < telemetryBaudratesList.size(); i++) { - mdl->appendToItemList(telemetryBaudrateToString(i), i); + for (int i = 0; i < moduleBaudratesList.size(); i++) { + mdl->appendToItemList(moduleBaudrateToString(i), i); } mdl->loadItemList(); diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index 6df039207..4d98286d5 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -39,11 +39,12 @@ class AbstractStaticItemModel; constexpr char AIM_GS_ANTENNAMODE[] {"gs.antennamode"}; constexpr char AIM_GS_BLUETOOTHMODE[] {"gs.bluetoothmode"}; constexpr char AIM_GS_SERIALMODE[] {"gs.serialmode%1"}; -constexpr char AIM_GS_TELEMETRYBAUDRATE[] {"gs.telemetrybaudrate"}; +constexpr char AIM_GS_INTMODULEBAUDRATE[] {"gs.intmodulebaudrate"}; constexpr char AIM_TRAINERMIX_MODE[] {"trainermix.mode"}; constexpr char AIM_TRAINERMIX_SRC[] {"trainermix.src"}; -static const QStringList telemetryBaudratesList({ "115K", "400K", "921K", "1.87M", "3.75M", "5.25M" }); +static const QStringList moduleBaudratesList({"115K", "400K", "921K", "1.87M", + "3.75M", "5.25M"}); enum UartModes { UART_MODE_NONE, @@ -193,7 +194,7 @@ class GeneralSettings { bool adjustRTC; bool optrexDisplay; unsigned int inactivityTimer; - unsigned int telemetryBaudrate; + unsigned int internalModuleBaudrate; bool minuteBeep; bool preBeep; bool flashBeep; @@ -267,16 +268,16 @@ class GeneralSettings { QString antennaModeToString() const; QString bluetoothModeToString() const; QString serialPortModeToString(int port_nr) const; - QString telemetryBaudrateToString() const; + QString internalModuleBaudrateToString() const; static QString antennaModeToString(int value); static QString bluetoothModeToString(int value); static QString serialModeToString(int value); - static QString telemetryBaudrateToString(int value); + static QString moduleBaudrateToString(int value); static FieldRange getPPM_MultiplierRange(); static FieldRange getTxCurrentCalibration(); static AbstractStaticItemModel * antennaModeItemModel(); static AbstractStaticItemModel * bluetoothModeItemModel(); static AbstractStaticItemModel * serialModeItemModel(int port_nr); - static AbstractStaticItemModel * telemetryBaudrateItemModel(); + static AbstractStaticItemModel * internalModuleBaudrateItemModel(); }; diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index dbf9111b6..93c5584b3 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -229,8 +229,13 @@ class ModuleData { struct GHOST { bool raw12bits; + unsigned int telemetryBaudrate; } ghost; + struct CRSF { + unsigned int telemetryBaudrate; + } crsf; + struct Access { unsigned int receivers; char receiverName[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME+1]; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b9114cb31..4b10c0dfa 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -3070,7 +3070,7 @@ OpenTxGeneralData::OpenTxGeneralData(GeneralSettings & generalData, Board::Type } internalField.Append(new UnsignedField<8>(this, generalData.inactivityTimer)); - internalField.Append(new UnsignedField<3>(this, generalData.telemetryBaudrate)); + internalField.Append(new UnsignedField<3>(this, generalData.internalModuleBaudrate)); if (IS_FAMILY_HORUS_OR_T16(board)) internalField.Append(new SpareBitsField<3>(this)); else if (IS_TARANIS(board)) @@ -3369,8 +3369,11 @@ void OpenTxGeneralData::beforeExport() chkSum = sum; - if (Boards::getCapability((Board::Type)generalData.variant, Board::SportMaxBaudRate) >= 400000) - generalData.telemetryBaudrate = (generalData.telemetryBaudrate + telemetryBaudratesList.size() - 1) % telemetryBaudratesList.size(); + if (Boards::getCapability((Board::Type)generalData.variant, + Board::SportMaxBaudRate) >= 400000) + generalData.internalModuleBaudrate = + (generalData.internalModuleBaudrate + moduleBaudratesList.size() - 1) % + moduleBaudratesList.size(); } void OpenTxGeneralData::afterImport() @@ -3382,7 +3385,8 @@ void OpenTxGeneralData::afterImport() } } - if (Boards::getCapability((Board::Type)generalData.variant, Board::SportMaxBaudRate) >= 400000) - generalData.telemetryBaudrate = (generalData.telemetryBaudrate + 1) % telemetryBaudratesList.size(); + if (Boards::getCapability((Board::Type)generalData.variant, + Board::SportMaxBaudRate) >= 400000) + generalData.internalModuleBaudrate = + (generalData.internalModuleBaudrate + 1) % moduleBaudratesList.size(); } - diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index abd7d4a1d..0f64ff369 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -96,7 +96,7 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings int btmodelid = editorItemModels->registerItemModel(GeneralSettings::bluetoothModeItemModel()); int auxmodelid = editorItemModels->registerItemModel(GeneralSettings::serialModeItemModel(GeneralSettings::SP_AUX1)); int vcpmodelid = editorItemModels->registerItemModel(GeneralSettings::serialModeItemModel(GeneralSettings::SP_VCP)); - int baudmodelid = editorItemModels->registerItemModel(GeneralSettings::telemetryBaudrateItemModel()); + int baudmodelid = editorItemModels->registerItemModel(GeneralSettings::internalModuleBaudrateItemModel()); id = editorItemModels->registerItemModel(ModuleData::internalModuleItemModel()); tabFilteredModels->registerItemModel(new FilteredItemModel(editorItemModels->getItemModel(id)), FIM_INTERNALMODULES); @@ -182,16 +182,21 @@ HardwarePanel::HardwarePanel(QWidget * parent, GeneralSettings & generalSettings internalModule = new AutoComboBox(this); internalModule->setModel(tabFilteredModels->getItemModel(FIM_INTERNALMODULES)); internalModule->setField(generalSettings.internalModule, this); - addParams(row, internalModule); - connect(internalModule, &AutoComboBox::currentDataChanged, this, &HardwarePanel::on_internalModuleChanged); - } - if (firmware->getCapability(HasTelemetryBaudrate)) { - addLabel(tr("Maximum Baud"), row, 0); - AutoComboBox *maxBaudRate = new AutoComboBox(this); - maxBaudRate->setModel(editorItemModels->getItemModel(baudmodelid)); - maxBaudRate->setField(generalSettings.telemetryBaudrate, this); - addParams(row, maxBaudRate); + connect(internalModule, &AutoComboBox::currentDataChanged, this, + &HardwarePanel::on_internalModuleChanged); + + internalModuleBaudRate = new AutoComboBox(this); + internalModuleBaudRate->setModel(editorItemModels->getItemModel(baudmodelid)); + internalModuleBaudRate->setField(generalSettings.internalModuleBaudrate, this); + + if (m_internalModule != MODULE_TYPE_GHOST && m_internalModule != MODULE_TYPE_CROSSFIRE) { + generalSettings.internalModuleBaudrate = 0; + internalModuleBaudRate->setVisible(false); + } + + addParams(row, internalModule, internalModuleBaudRate); + row++; } // All values except 0 are mutually exclusive @@ -275,6 +280,13 @@ void HardwarePanel::on_internalModuleChanged() } else { m_internalModule = generalSettings.internalModule; + if (m_internalModule == MODULE_TYPE_GHOST || m_internalModule == MODULE_TYPE_CROSSFIRE) { + // TODO: set proper default baudrate + internalModuleBaudRate->setVisible(true); + } else { + generalSettings.internalModuleBaudrate = 0; + internalModuleBaudRate->setVisible(false); + } emit internalModuleChanged(); } } diff --git a/companion/src/generaledit/hardware.h b/companion/src/generaledit/hardware.h index 423d9bc86..c23a663a4 100644 --- a/companion/src/generaledit/hardware.h +++ b/companion/src/generaledit/hardware.h @@ -48,6 +48,7 @@ class HardwarePanel : public GeneralPanel QGridLayout *grid; AutoComboBox *internalModule; unsigned int m_internalModule = 0; + AutoComboBox *internalModuleBaudRate; void addStick(int index, int & row); void addPot(int index, int & row); From 17986843e31b5cad2d37138947d481fc36135860 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 17 Mar 2022 11:01:47 +0100 Subject: [PATCH 18/23] Add Baudrate to Module Setup --- companion/src/modeledit/setup.cpp | 17 +- companion/src/modeledit/setup_module.ui | 641 ++++++++++++------------ 2 files changed, 339 insertions(+), 319 deletions(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 869fe7b24..79a3695e5 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -203,6 +203,7 @@ void TimerPanel::onModeChanged(int index) #define MASK_RF_POWER (1<<15) #define MASK_RF_RACING_MODE (1<<16) #define MASK_GHOST (1<<17) +#define MASK_BAUDRATE (1<<18) quint8 ModulePanel::failsafesValueDisplayType = ModulePanel::FAILSAFE_DISPLAY_PERCENT; @@ -444,12 +445,14 @@ void ModulePanel::update() max_rx_num = 20; break; case PULSES_CROSSFIRE: - mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER; + mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setField(module.crsf.telemetryBaudrate); break; case PULSES_GHOST: - mask |= MASK_CHANNELS_RANGE | MASK_GHOST; + mask |= MASK_CHANNELS_RANGE | MASK_GHOST | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setField(module.ghost.telemetryBaudrate); break; case PULSES_PPM: mask |= MASK_PPM_FIELDS | MASK_SBUSPPM_FIELDS| MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT; @@ -497,6 +500,16 @@ void ModulePanel::update() ui->label_protocol->setVisible(mask & MASK_PROTOCOL); ui->protocol->setVisible(mask & MASK_PROTOCOL); + + ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); + ui->telemetryBaudrate->clear(); + if (mask & MASK_BAUDRATE) { + // TODO: limit the number of items based on proto (CRSF/GHOST) + for (int i = 0; itelemetryBaudrate->addItem(moduleBaudratesList.at(i), i); + } + } + ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setMaximum(max_rx_num); diff --git a/companion/src/modeledit/setup_module.ui b/companion/src/modeledit/setup_module.ui index 0c95b81da..5a7b35fea 100644 --- a/companion/src/modeledit/setup_module.ui +++ b/companion/src/modeledit/setup_module.ui @@ -7,7 +7,7 @@ 0 0 1075 - 438 + 527 @@ -91,6 +91,329 @@ 6 + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 6 + + + 4 + + + + + + 16777215 + 16777215 + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 180 + 0 + + + + QComboBox::AdjustToContents + + + + + + + QComboBox::AdjustToContents + + + + + + + Registration ID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + + + + + Multi Radio Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + Sub Type + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 198 + 17 + 36 + + + + + + + + + 106 + 104 + 100 + + + + + + + + WARNING: Requires non-certified firmware! + + + + + + + + 16777215 + 16777215 + + + + Failsafe Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + Not set + + + + + Hold + + + + + Custom + + + + + No Pulses + + + + + Receiver + + + + + + + + + 16777215 + 16777215 + + + + Trainer Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + QComboBox::AdjustToContents + + + + + + + Disable Telemetry + + + + + + + Disable Ch. Map + + + + + + + Racing Mode + + + + + + + Raw 12 bits + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -777,322 +1100,6 @@ - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 6 - - - 4 - - - - - - 16777215 - 16777215 - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 180 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Registration ID - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - true - - - - - - - Multi Radio Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Sub Type - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 198 - 17 - 36 - - - - - - - - - 106 - 104 - 100 - - - - - - - - WARNING: Requires non-certified firmware! - - - - - - - - 16777215 - 16777215 - - - - Failsafe Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - Not set - - - - - Hold - - - - - Custom - - - - - No Pulses - - - - - Receiver - - - - - - - - - 16777215 - 16777215 - - - - Trainer Mode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - QComboBox::AdjustToContents - - - - - - - Disable Telemetry - - - - - - - Racing Mode - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Disable Ch. Map - - - - - - - Raw 12 bits - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - From cb739fc11ebf490c15cebb8871dadc773111e16f Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Fri, 18 Mar 2022 11:09:45 +0100 Subject: [PATCH 19/23] Some fixes and proper defaults --- companion/src/firmwares/moduledata.cpp | 14 ++++++++++++++ companion/src/firmwares/moduledata.h | 1 + companion/src/generaledit/hardware.cpp | 11 ++++++++++- companion/src/modeledit/setup.cpp | 22 +++++++++++++--------- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index 7556c719b..7a474cbbf 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -496,3 +496,17 @@ AbstractStaticItemModel * ModuleData::protocolItemModel(GeneralSettings & settin mdl->loadItemList(); return mdl; } + +AbstractStaticItemModel * ModuleData::telemetryBaudrateItemModel(unsigned int protocol) +{ + AbstractStaticItemModel * mdl = new AbstractStaticItemModel(); + mdl->setName("moduledata.baudrate"); + + for (int i = 0; i < moduleBaudratesList.size(); i++) { + if (protocol == PULSES_GHOST && i >= 2) break; + mdl->appendToItemList(moduleBaudratesList.at(i), i); + } + + mdl->loadItemList(); + return mdl; +} diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 93c5584b3..dba164ce1 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -261,4 +261,5 @@ class ModuleData { static AbstractStaticItemModel * internalModuleItemModel(int board = -1); static bool isProtocolAvailable(int moduleidx, unsigned int protocol, GeneralSettings & settings); static AbstractStaticItemModel * protocolItemModel(GeneralSettings & settings); + static AbstractStaticItemModel * telemetryBaudrateItemModel(unsigned int protocol); }; diff --git a/companion/src/generaledit/hardware.cpp b/companion/src/generaledit/hardware.cpp index 0f64ff369..54728c30f 100644 --- a/companion/src/generaledit/hardware.cpp +++ b/companion/src/generaledit/hardware.cpp @@ -281,7 +281,16 @@ void HardwarePanel::on_internalModuleChanged() else { m_internalModule = generalSettings.internalModule; if (m_internalModule == MODULE_TYPE_GHOST || m_internalModule == MODULE_TYPE_CROSSFIRE) { - // TODO: set proper default baudrate + + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + internalModuleBaudRate->setCurrentIndex(0); + } else { + // default to 400k + internalModuleBaudRate->setCurrentIndex(1); + } + internalModuleBaudRate->setVisible(true); } else { generalSettings.internalModuleBaudrate = 0; diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 79a3695e5..624a0fb8c 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -447,11 +447,13 @@ void ModulePanel::update() case PULSES_CROSSFIRE: mask |= MASK_CHANNELS_RANGE | MASK_RX_NUMBER | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); ui->telemetryBaudrate->setField(module.crsf.telemetryBaudrate); break; case PULSES_GHOST: mask |= MASK_CHANNELS_RANGE | MASK_GHOST | MASK_BAUDRATE; module.channelsCount = 16; + ui->telemetryBaudrate->setModel(ModuleData::telemetryBaudrateItemModel(protocol)); ui->telemetryBaudrate->setField(module.ghost.telemetryBaudrate); break; case PULSES_PPM: @@ -500,16 +502,7 @@ void ModulePanel::update() ui->label_protocol->setVisible(mask & MASK_PROTOCOL); ui->protocol->setVisible(mask & MASK_PROTOCOL); - ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); - ui->telemetryBaudrate->clear(); - if (mask & MASK_BAUDRATE) { - // TODO: limit the number of items based on proto (CRSF/GHOST) - for (int i = 0; itelemetryBaudrate->addItem(moduleBaudratesList.at(i), i); - } - } - ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setMaximum(max_rx_num); @@ -703,6 +696,17 @@ void ModulePanel::onProtocolChanged(int index) if (!lock) { module.channelsCount = module.getMaxChannelCount(); update(); + if (module.protocol == PULSES_GHOST || + module.protocol == PULSES_CROSSFIRE) { + if (Boards::getCapability(getCurrentFirmware()->getBoard(), + Board::SportMaxBaudRate) < 400000) { + // default to 115k + ui->telemetryBaudrate->setCurrentIndex(0); + } else { + // default to 400k + ui->telemetryBaudrate->setCurrentIndex(1); + } + } emit updateItemModels(); emit modified(); } From 5e457172a23aae9e0a75b3843f7dd2fcf1150329 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Sat, 19 Mar 2022 13:18:06 +1000 Subject: [PATCH 20/23] Add companion decoding of crsf mod option --- companion/src/firmwares/edgetx/yaml_moduledata.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 8491ce125..313c42555 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -20,6 +20,7 @@ #include "yaml_moduledata.h" #include "yaml_generalsettings.h" +#include "eeprominterface.h" #include "moduledata.h" #include "rawsource.h" @@ -410,6 +411,11 @@ bool convert::decode(const Node& node, ModuleData& rhs) } else if (mod["ghost"]) { Node ghost = mod["ghost"]; ghost["raw12bits"] >> rhs.ghost.raw12bits; + } else if (mod["crsf"]) { + Node crsf = mod["crsf"]; + YamlTelemetryBaudrate telemetryBaudrate; + crsf["telemetryBaudrate"] >> telemetryBaudrate.value; + telemetryBaudrate.toCpn(&rhs.crsf.telemetryBaudrate, getCurrentFirmware()->getBoard()); } else if (mod["flysky"]) { //TODO } else if (mod["afhds3"]) { From b0910ebec5cab62d019cefd00034d7fdb2386d91 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Sun, 20 Mar 2022 15:08:48 +1000 Subject: [PATCH 21/23] cpn: Ghost read telemetryBaudrate also --- companion/src/firmwares/edgetx/yaml_moduledata.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 313c42555..809aa433b 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -410,6 +410,9 @@ bool convert::decode(const Node& node, ModuleData& rhs) } } else if (mod["ghost"]) { Node ghost = mod["ghost"]; + YamlTelemetryBaudrate telemetryBaudrate; + ghost["telemetryBaudrate"] >> telemetryBaudrate.value; + telemetryBaudrate.toCpn(&rhs.ghost.telemetryBaudrate, getCurrentFirmware()->getBoard()); ghost["raw12bits"] >> rhs.ghost.raw12bits; } else if (mod["crsf"]) { Node crsf = mod["crsf"]; From 3502f74830ddd11a95df43c63d8a701056f9cce9 Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Sun, 20 Mar 2022 15:22:59 +1000 Subject: [PATCH 22/23] cpn: Hide model telemetryBaudrate combo if int RF --- companion/src/modeledit/setup.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index 624a0fb8c..e6a66798a 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -500,9 +500,13 @@ void ModulePanel::update() mask |= MASK_FAILSAFES; } + if (moduleIdx > 0) + ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); + else + ui->telemetryBaudrate->setVisible(false); + ui->label_protocol->setVisible(mask & MASK_PROTOCOL); ui->protocol->setVisible(mask & MASK_PROTOCOL); - ui->telemetryBaudrate->setVisible(mask & MASK_BAUDRATE); ui->label_rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setVisible(mask & MASK_RX_NUMBER); ui->rxNumber->setMaximum(max_rx_num); From e0a1dca5cc1169f829ced1e41a3f4778441087ce Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Tue, 22 Mar 2022 15:48:59 +1000 Subject: [PATCH 23/23] Read telemetryBaudrate into internalModuleBaudrate --- radio/src/datastructs_private.h | 1 + radio/src/storage/yaml/yaml_datastructs_funcs.cpp | 7 +++++++ radio/src/storage/yaml/yaml_datastructs_nv14.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_t12.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_t8.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_tlite.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_tpro.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_tx12.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x10.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x12s.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x7.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x9d.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x9e.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x9lite.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_x9lites.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_xlite.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_xlites.cpp | 1 + radio/src/storage/yaml/yaml_datastructs_zorro.cpp | 1 + 18 files changed, 24 insertions(+) diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index 8de9ce7c4..8e17b4c4f 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -868,6 +868,7 @@ PACK(struct RadioData { int8_t timezone:5; uint8_t adjustRTC:1; NOBACKUP(uint8_t inactivityTimer); + CUST_ATTR(telemetryBaudrate, r_telemetryBaudrate, nullptr); uint8_t internalModuleBaudrate:3; SPLASH_MODE; /* 3bits */ int8_t hapticMode:2 CUST(r_beeperMode,w_beeperMode); diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 73409e9d2..dba07917f 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -1753,6 +1753,13 @@ static void r_jitterFilter(void* user, uint8_t* data, uint32_t bitoffs, yaml_put_bits(data, i, bitoffs, 1); } +static void r_telemetryBaudrate(void* user, uint8_t* data, uint32_t bitoffs, + const char* val, uint8_t val_len) +{ + uint32_t i = yaml_str2uint(val, val_len); + yaml_put_bits(data, i, bitoffs, 3); +} + //struct_serialConfig static const struct YamlIdStr enum_SerialPort[] = { { SP_AUX1, "AUX1" }, diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 516990fff..2d645ee3b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -380,6 +380,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index 4fb0cbea3..a5b79fa88 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 06aa7216b..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 06aa7216b..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index 7320d16ef..4525810be 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -359,6 +359,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 76e8b5938..e5eae7c00 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 9e1fe4c5a..aa3d02998 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -401,6 +401,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 51386b36b..5e2fad015 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -399,6 +399,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_PADDING( 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 06aa7216b..fdb323b39 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index 34f155a39..fd45bdb41 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -358,6 +358,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index 591c9d580..787052d09 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -397,6 +397,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index a5610638d..cd51911b5 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -338,6 +338,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 05c722f69..c971edba1 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -346,6 +346,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index 032495379..abc707a28 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -343,6 +343,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index c17aa4bfb..b56c93f11 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -345,6 +345,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ), diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index ff89e2e63..c1c0ae7df 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -351,6 +351,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED( "timezone", 5 ), YAML_UNSIGNED( "adjustRTC", 1 ), YAML_UNSIGNED( "inactivityTimer", 8 ), + YAML_CUSTOM("telemetryBaudrate",r_telemetryBaudrate,nullptr), YAML_UNSIGNED( "internalModuleBaudrate", 3 ), YAML_SIGNED( "splashMode", 3 ), YAML_SIGNED_CUST( "hapticMode", 2, r_beeperMode, w_beeperMode ),