diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 8fc47dc6e..73fbd9d8b 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -211,6 +211,8 @@ enum SerialPort { }; #define MAX_AUX_SERIAL (SP_AUX2 + 1) +#define STORAGE_SERIAL_PORTS 4 + #define TRAINER_MODE_MIN() TRAINER_MODE_MASTER_TRAINER_JACK @@ -228,8 +230,6 @@ enum SerialPort { #define TRAINER_MODE_MAX() TRAINER_MODE_SLAVE_BLUETOOTH #elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBNV14) #define TRAINER_MODE_MAX() TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE -#elif defined(PCBTARANIS) - #define TRAINER_MODE_MAX() (IS_TRAINER_AUX_SERIAL() ? TRAINER_MODE_MASTER_BATTERY_COMPARTMENT : TRAINER_MODE_MASTER_CPPM_EXTERNAL_MODULE) #else #define TRAINER_MODE_MAX() TRAINER_MODE_MASTER_BATTERY_COMPARTMENT #endif diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index a8c667558..0b9226a24 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -116,29 +116,29 @@ static inline void check_struct() CHKSIZE(TrainerData, 16); #if defined(PCBXLITES) - CHKSIZE(RadioData, 857); + CHKSIZE(RadioData, 859); CHKSIZE(ModelData, 6161); #elif defined(PCBXLITE) - CHKSIZE(RadioData, 855); + CHKSIZE(RadioData, 857); CHKSIZE(ModelData, 6161); #elif defined(RADIO_TPRO) - CHKSIZE(RadioData, 838); + CHKSIZE(RadioData, 840); CHKSIZE(ModelData, 6186); #elif defined(PCBX7) - CHKSIZE(RadioData, 861); + CHKSIZE(RadioData, 863); CHKSIZE(ModelData, 6161); #elif defined(PCBX9E) - CHKSIZE(RadioData, 951); + CHKSIZE(RadioData, 953); CHKSIZE(ModelData, 6613); #elif defined(PCBX9D) || defined(PCBX9DP) - CHKSIZE(RadioData, 893); + CHKSIZE(RadioData, 895); CHKSIZE(ModelData, 6605); #elif defined(PCBHORUS) #if defined(PCBX10) - CHKSIZE(RadioData, 918); + CHKSIZE(RadioData, 919); CHKSIZE(ModelData, 11025); #else - CHKSIZE(RadioData, 900); + CHKSIZE(RadioData, 901); CHKSIZE(ModelData, 11023); #endif #endif diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index 587bbc78f..f22325d87 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -787,10 +787,8 @@ PACK(struct TrainerData { #define GYRO_FIELDS #endif -#if defined(PCBHORUS) || defined(PCBNV14) +#if defined(COLORLCD) #define EXTRA_GENERAL_FIELDS \ - NOBACKUP(uint8_t auxSerialMode:4 ENUM(UartModes)); \ - NOBACKUP(uint8_t aux2SerialMode:4 ENUM(UartModes)); \ CUST_ARRAY(sticksConfig, struct_sticksConfig, stick_name_valid); \ swconfig_t switchConfig ARRAY(2,struct_switchConfig,nullptr); \ uint16_t potsConfig ARRAY(2,struct_potConfig,nullptr); /* two bits per pot */ \ @@ -801,17 +799,17 @@ PACK(struct TrainerData { NOBACKUP(uint8_t spare5:1 SKIP); \ NOBACKUP(uint8_t blOffBright:7); \ NOBACKUP(char bluetoothName[LEN_BLUETOOTH_NAME]); -#elif defined(PCBTARANIS) +#else #if defined(STORAGE_BLUETOOTH) #define BLUETOOTH_FIELDS \ - uint8_t spare5 SKIP; \ + uint8_t spare6 SKIP; \ char bluetoothName[LEN_BLUETOOTH_NAME]; #else #define BLUETOOTH_FIELDS #endif #define EXTRA_GENERAL_FIELDS \ - uint8_t auxSerialMode:4 ENUM(UartModes); \ uint8_t slidersConfig:4 ARRAY(1,struct_sliderConfig,nullptr); \ + uint8_t spare5:4 SKIP; \ uint8_t potsConfig ARRAY(2,struct_potConfig,nullptr); /* two bits per pot */\ uint8_t backlightColor; \ CUST_ARRAY(sticksConfig, struct_sticksConfig, stick_name_valid); \ @@ -819,8 +817,6 @@ PACK(struct TrainerData { char switchNames[STORAGE_NUM_SWITCHES - NUM_FUNCTIONS_SWITCHES][LEN_SWITCH_NAME] SKIP; \ char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME] SKIP; \ BLUETOOTH_FIELDS -#else - #define EXTRA_GENERAL_FIELDS #endif #if defined(COLORLCD) && !defined(BACKUP) @@ -912,6 +908,7 @@ PACK(struct RadioData { NOBACKUP(int8_t varioRepeat); CustomFunctionData customFn[MAX_SPECIAL_FUNCTIONS] FUNC(cfn_is_active); + NOBACKUP(uint16_t serialPort ARRAY(STORAGE_SERIAL_PORTS,struct_serialConfig,nullptr)); EXTRA_GENERAL_FIELDS THEME_DATA diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 1584f817c..9b9226a2d 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -373,38 +373,32 @@ void RadioHardwarePage::build(FormWindow * window) } #endif -#if defined(AUX_SERIAL) - new StaticText(window, grid.getLabelSlot(), STR_AUX_SERIAL_MODE, 0, COLOR_THEME_PRIMARY1); - auto aux = - new Choice(window, grid.getFieldSlot(1, 0), STR_AUX_SERIAL_MODES, 0, - UART_MODE_MAX, GET_DEFAULT(g_eeGeneral.auxSerialMode), - [](int value) { - g_eeGeneral.auxSerialMode = value; - serialInit(SP_AUX1, value); - SET_DIRTY(); - }); - aux->setAvailableHandler(isAuxModeAvailable); - grid.nextLine(); -#endif + bool display_ttl_warning = false; + for (uint8_t port_nr = 0; port_nr < MAX_SERIAL_PORTS; port_nr++) { + auto port = serialGetPort(port_nr); + if (!port) continue; -#if defined(AUX2_SERIAL) - new StaticText(window, grid.getLabelSlot(), STR_AUX2_SERIAL_MODE, 0, COLOR_THEME_PRIMARY1); - auto aux2 = - new Choice(window, grid.getFieldSlot(1, 0), STR_AUX_SERIAL_MODES, 0, - UART_MODE_MAX, GET_DEFAULT(g_eeGeneral.aux2SerialMode), - [](int value) { - g_eeGeneral.aux2SerialMode = value; - serialInit(SP_AUX2, value); - SET_DIRTY(); - }); - aux2->setAvailableHandler(isAux2ModeAvailable); - grid.nextLine(); -#endif + display_ttl_warning = true; + new StaticText(window, grid.getLabelSlot(), STR_AUX_SERIAL_MODE, 0, + COLOR_THEME_PRIMARY1); + auto aux = new Choice( + window, grid.getFieldSlot(1, 0), STR_AUX_SERIAL_MODES, 0, UART_MODE_MAX, + [=]() { return serialGetMode(port_nr); }, + [=](int value) { + serialSetMode(port_nr, value); + serialInit(port_nr, value); + SET_DIRTY(); + }); + aux->setAvailableHandler( + [=](int value) { return isAuxModeAvailable(port_nr, value); }); + grid.nextLine(); + } -#if defined(AUX_SERIAL) || defined(AUX2_SERIAL) - new StaticText(window, grid.getFieldSlot(1,0), STR_TTL_WARNING, 0, COLOR_THEME_WARNING); - grid.nextLine(); -#endif + if (display_ttl_warning) { + new StaticText(window, grid.getFieldSlot(1, 0), STR_TTL_WARNING, 0, + COLOR_THEME_WARNING); + grid.nextLine(); + } // ADC filter new StaticText(window, grid.getLabelSlot(), STR_JITTER_FILTER, 0, COLOR_THEME_PRIMARY1); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index aa311214a..d9f63db3f 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -367,29 +367,18 @@ bool isSwitchAvailable(int swtch, SwitchContext context) return true; } -bool isAuxModeAvailable(int mode) +int hasSerialMode(int mode) { -#if defined(AUX2_SERIAL) - if (mode == UART_MODE_SBUS_TRAINER) - return g_eeGeneral.aux2SerialMode != UART_MODE_SBUS_TRAINER; -#if defined(RADIO_TX16S) - else - return (g_model.trainerData.mode != TRAINER_MODE_MASTER_BATTERY_COMPARTMENT || g_eeGeneral.aux2SerialMode == UART_MODE_SBUS_TRAINER); -#endif -#endif - return true; + for (int p = 0; p < MAX_SERIAL_PORTS; p++) { + if (serialGetMode(p) == mode) return p; + } + return -1; } -bool isAux2ModeAvailable(int mode) +bool isAuxModeAvailable(uint8_t port_nr, int mode) { -#if defined(AUX_SERIAL) - if (mode == UART_MODE_SBUS_TRAINER) - return g_eeGeneral.auxSerialMode != UART_MODE_SBUS_TRAINER; -#if defined(RADIO_TX16S) - else - return (g_model.trainerData.mode != TRAINER_MODE_MASTER_BATTERY_COMPARTMENT || g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER); -#endif -#endif + auto p = hasSerialMode(mode); + if (p >= 0 && p != port_nr) return false; return true; } @@ -755,7 +744,8 @@ bool isRfProtocolAvailable(int protocol) bool isTelemetryProtocolAvailable(int protocol) { #if defined(PCBTARANIS) - if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY && g_eeGeneral.auxSerialMode != UART_MODE_TELEMETRY) { + if (protocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY && + hasSerialMode(UART_MODE_TELEMETRY) < 0) { return false; } #endif @@ -803,16 +793,13 @@ bool isTrainerModeAvailable(int mode) } #endif -#if defined(RADIO_TX16S) && defined(TRAINER_BATTERY_COMPARTMENT) - if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT) - return (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER || g_eeGeneral.aux2SerialMode == UART_MODE_SBUS_TRAINER); -#elif defined(PCBTARANIS) && !defined(TRAINER_BATTERY_COMPARTMENT) - if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT) + if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT) { +#if defined(TRAINER_BATTERY_COMPARTMENT) + return hasSerialMode(UART_MODE_SBUS_TRAINER) >= 0; +#else return false; -#elif defined(PCBTARANIS) - if (mode == TRAINER_MODE_MASTER_BATTERY_COMPARTMENT) - return g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER; #endif + } #if defined(BLUETOOTH) && !defined(PCBX9E) if (g_eeGeneral.bluetoothMode != BLUETOOTH_TRAINER && (mode == TRAINER_MODE_MASTER_BLUETOOTH || mode == TRAINER_MODE_SLAVE_BLUETOOTH)) diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index e8128d576..470a9cda2 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -86,8 +86,8 @@ bool isSourceAvailableInCustomSwitches(int source); bool isSourceAvailableInResetSpecialFunction(int index); bool isSourceAvailableInGlobalResetSpecialFunction(int index); bool isSwitchAvailable(int swtch, SwitchContext context); -bool isAuxModeAvailable(int mode); -bool isAux2ModeAvailable(int mode); +bool isAuxModeAvailable(uint8_t port_nr, int mode); +int hasSerialMode(int mode); bool isSwitchAvailableInLogicalSwitches(int swtch); bool isSwitchAvailableInCustomFunctions(int swtch); bool isSwitchAvailableInMixes(int swtch); diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 6e89bbd1b..f693d5dad 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -44,8 +44,6 @@ #define IS_TRAINER_EXTERNAL_MODULE() false #endif -#define IS_TRAINER_AUX_SERIAL() (g_eeGeneral.auxSerialMode == UART_MODE_SBUS_TRAINER) - #define IS_PLAY_FUNC(func) ((func) >= FUNC_PLAY_SOUND && func <= FUNC_PLAY_VALUE) #if defined(GVARS) diff --git a/radio/src/serial.cpp b/radio/src/serial.cpp index 666259a16..26e7a8ff7 100644 --- a/radio/src/serial.cpp +++ b/radio/src/serial.cpp @@ -84,19 +84,14 @@ extern "C" void dbgSerialCrlf() dbgSerialPutc('\n'); } -static int getSerialPortMode(uint8_t port_nr) +int8_t getSerialPortMode(uint8_t port_nr) { #if !defined(BOOT) - if (port_nr == 0) { - return g_eeGeneral.auxSerialMode; + if (port_nr < MAX_SERIAL_PORTS) { + auto cfg = g_eeGeneral.serialPort; + cfg >>= port_nr * 4; // 4 bits per port + return cfg & 0xF; } - -// TODO: change in datastruct_private.h -#if defined(PCBHORUS) || defined(PCBNV14) - if (port_nr == 1) { - return g_eeGeneral.aux2SerialMode; - } -#endif #endif return UART_MODE_NONE; @@ -111,7 +106,7 @@ struct SerialPortState static SerialPortState serialPortStates[MAX_SERIAL_PORTS]; -static SerialPortState* getSerialPortState(int port_nr) +static SerialPortState* getSerialPortState(uint8_t port_nr) { if (port_nr >= MAX_SERIAL_PORTS) return nullptr; return &serialPortStates[port_nr]; @@ -239,11 +234,8 @@ static void serialSetupPort(int mode, etx_serial_init& params, bool& power_requi } } -void serialInit(int port_nr, int mode) +const etx_serial_port_t* serialGetPort(uint8_t port_nr) { - auto state = getSerialPortState(port_nr); - if (!state) return; - const etx_serial_port_t* port = nullptr; if (port_nr != SP_VCP) { port = auxSerialGetPort(port_nr); @@ -253,11 +245,21 @@ void serialInit(int port_nr, int mode) port = &UsbSerialPort; } #endif + return port; +} + + +void serialInit(uint8_t port_nr, int mode) +{ + auto state = getSerialPortState(port_nr); + if (!state) return; + + const etx_serial_port_t* port = serialGetPort(port_nr); if (!port) return; if (state->port) { auto drv = state->port->uart; - if (drv->deinit) { + if (drv && drv->deinit) { drv->deinit(state->usart_ctx); } if (state->mode != 0) { @@ -283,11 +285,15 @@ void serialInit(int port_nr, int mode) if (params.baudrate != 0) { state->mode = mode; state->port = port; - state->usart_ctx = port->uart->init(¶ms); - // Set power on/off - if (port->set_pwr) { - port->set_pwr(power_required); + if (port) { + if (port->uart && port->uart->init) + state->usart_ctx = port->uart->init(¶ms); + + // Set power on/off + if (port->set_pwr) { + port->set_pwr(power_required); + } } // Update callbacks once the port is setup @@ -299,29 +305,35 @@ void initSerialPorts() { memset(serialPortStates, 0, sizeof(serialPortStates)); - for (int port_nr = 0; port_nr < MAX_AUX_SERIAL; port_nr++) { + for (uint8_t port_nr = 0; port_nr < MAX_AUX_SERIAL; port_nr++) { auto mode = getSerialPortMode(port_nr); serialInit(port_nr, mode); } } -uint8_t serialGetMode(int port_nr) +int serialGetMode(uint8_t port_nr) { - auto state = getSerialPortState(port_nr); - if (!state) return UART_MODE_NONE; - return state->mode; + return getSerialPortMode(port_nr); } -uint8_t serialTracesEnabled(int port_nr) +void serialSetMode(uint8_t port_nr, int mode) { -#if defined(DEBUG) - return serialGetMode(port_nr) == UART_MODE_DEBUG; -#else - return false; -#endif + if (port_nr >= MAX_SERIAL_PORTS) return; + uint16_t m = mode & 0xF; + g_eeGeneral.serialPort = + (g_eeGeneral.serialPort & ~(0xF << port_nr * 4)) | (m << port_nr * 4); } -void serialStop(int port_nr) +// uint8_t serialTracesEnabled(int port_nr) +// { +// #if defined(DEBUG) +// return serialGetMode(port_nr) == UART_MODE_DEBUG; +// #else +// return false; +// #endif +// } + +void serialStop(uint8_t port_nr) { auto state = getSerialPortState(port_nr); if (!state) return; @@ -332,24 +344,14 @@ void serialStop(int port_nr) if (drv && drv->deinit) { drv->deinit(state->usart_ctx); } - if (state->mode != 0) { - // Clear callbacks - serialSetCallBacks(state->mode, nullptr, nullptr); - } if (port->set_pwr) { // Power OFF port->set_pwr(0); } - memset(state, 0, sizeof(SerialPortState)); + if (state->mode != 0) { + // Clear callbacks + serialSetCallBacks(state->mode, nullptr, nullptr); + } } -} - -void serialPutc(int port_nr, uint8_t c) -{ - auto state = getSerialPortState(port_nr); - if (!state) return; - - if (state->port) { - state->port->uart->sendByte(state->usart_ctx, c); - } + memset(state, 0, sizeof(SerialPortState)); } diff --git a/radio/src/serial.h b/radio/src/serial.h index 15ca63e82..5e2bfc0f0 100644 --- a/radio/src/serial.h +++ b/radio/src/serial.h @@ -23,13 +23,15 @@ #define _SERIAL_H_ #include +#include "hal/serial_port.h" -void initSerialPorts(); -uint8_t serialGetMode(int port_nr); -uint8_t serialTracesEnabled(int port_nr); -void serialInit(int port_nr, int mode); -void serialStop(int port_nr); -void serialPutc(int port_nr, uint8_t c); +const etx_serial_port_t* serialGetPort(uint8_t port_nr); +int serialGetMode(uint8_t port_nr); +void serialSetMode(uint8_t port_nr, int mode); + +void initSerialPorts(); +void serialInit(uint8_t port_nr, int mode); +void serialStop(uint8_t port_nr); // // Functions used by debug.h diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index a65a1a52b..81a56b868 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -1733,3 +1733,46 @@ static void r_jitterFilter(void* user, uint8_t* data, uint32_t bitoffs, uint32_t i = yaml_str2uint(val, val_len); yaml_put_bits(data, i, bitoffs, 1); } + +//struct_serialConfig +static const struct YamlIdStr enum_SerialPort[] = { + { SP_AUX1, "AUX1" }, + { SP_AUX2, "AUX2" }, + { SP_VCP, "VCP" }, + { 0, NULL } +}; + +static const struct YamlIdStr enum_UartModes[] = { + { UART_MODE_NONE, "NONE" }, + { UART_MODE_TELEMETRY_MIRROR, "TELEMETRY_MIRROR" }, + { UART_MODE_TELEMETRY, "TELEMETRY_IN" }, + { UART_MODE_SBUS_TRAINER, "SBUS_TRAINER" }, + { UART_MODE_LUA, "LUA" }, + { UART_MODE_CLI, "CLI" }, + { 0, NULL } +}; + +static uint32_t port_read(void* user, const char* val, uint8_t val_len) +{ + (void)user; + uint32_t port = yaml_parse_enum(enum_SerialPort, val, val_len); + if (port < MAX_SERIAL_PORTS) return port; + + return -1; +} + +bool port_write(void* user, yaml_writer_func wf, void* opaque) +{ + auto tw = reinterpret_cast(user); + uint16_t idx = tw->getElmts(); + + const char* str = yaml_output_enum(idx, enum_SerialPort); + return str ? wf(opaque, str, strlen(str)) : true; +} + +static const struct YamlNode struct_serialConfig[] = { + YAML_IDX_CUST( "port", sw_read, sw_write), + YAML_ENUM( "mode", 4, enum_UartModes), + YAML_END +}; + diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 60e463020..e0db3a0c8 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -85,14 +85,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_DISABLE_TOUCH, "DISABLE_TOUCH" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_ZoneOptionValueEnum[] = { { ZOV_Unsigned, "Unsigned" }, { ZOV_Signed, "Signed" }, @@ -427,8 +419,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), - YAML_ENUM("aux2SerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr), YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr), diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index 5dc03c25f..5a77d643b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index 11cdef60b..f63907997 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index 11cdef60b..f63907997 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp index 323581225..94cea2246 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -406,8 +398,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 71cfa04d5..fb67d2133 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 244a023b7..47aa9c3c9 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -85,14 +85,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_DISABLE_TOUCH, "DISABLE_TOUCH" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_ZoneOptionValueEnum[] = { { ZOV_Unsigned, "Unsigned" }, { ZOV_Signed, "Signed" }, @@ -448,8 +440,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), - YAML_ENUM("aux2SerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr), YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr), diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 4dccba04d..4d30e2c03 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -85,14 +85,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_DISABLE_TOUCH, "DISABLE_TOUCH" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_ZoneOptionValueEnum[] = { { ZOV_Unsigned, "Unsigned" }, { ZOV_Signed, "Signed" }, @@ -446,8 +438,7 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 72, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), - YAML_ENUM("aux2SerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), YAML_ARRAY("switchConfig", 2, 16, struct_switchConfig, nullptr), YAML_ARRAY("potsConfig", 2, 8, struct_potConfig, nullptr), diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index 11cdef60b..f63907997 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index c246bb654..cec42b5ba 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -405,8 +397,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index 0f0a8d5a1..af673fd7b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -444,8 +436,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 8388fc4da..6dd81c482 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -385,8 +377,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 5525f76e2..c6f94733c 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -393,8 +385,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index 43a739635..e7f1a7f5f 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -390,8 +382,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 83806d6be..6503932f3 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -392,8 +384,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp index 22bf075d3..03dc00a9a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -84,14 +84,6 @@ const struct YamlIdStr enum_Functions[] = { { FUNC_RACING_MODE, "RACING_MODE" }, { 0, NULL } }; -const struct YamlIdStr enum_UartModes[] = { - { UART_MODE_NONE, "MODE_NONE" }, - { UART_MODE_TELEMETRY_MIRROR, "MODE_TELEMETRY_MIRROR" }, - { UART_MODE_TELEMETRY, "MODE_TELEMETRY" }, - { UART_MODE_SBUS_TRAINER, "MODE_SBUS_TRAINER" }, - { UART_MODE_LUA, "MODE_LUA" }, - { 0, NULL } -}; const struct YamlIdStr enum_TimerModes[] = { { TMRMODE_OFF, "OFF" }, { TMRMODE_ON, "ON" }, @@ -398,8 +390,9 @@ static const struct YamlNode struct_RadioData[] = { YAML_SIGNED_CUST( "varioRange", 8, r_vPitch, w_vPitch ), YAML_SIGNED( "varioRepeat", 8 ), YAML_ARRAY("customFn", 88, 64, struct_CustomFunctionData, cfn_is_active), - YAML_ENUM("auxSerialMode", 4, enum_UartModes), + YAML_ARRAY("serialPort", 4, 4, struct_serialConfig, nullptr), YAML_ARRAY("slidersConfig", 1, 4, struct_sliderConfig, nullptr), + YAML_PADDING( 4 ), YAML_ARRAY("potsConfig", 2, 4, struct_potConfig, nullptr), YAML_UNSIGNED( "backlightColor", 8 ), YAML_ARRAY("sticksConfig", 0, 4, struct_sticksConfig, stick_name_valid), diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 5a8fb7713..c9f55da4e 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -753,7 +753,30 @@ const etx_serial_port_t UsbSerialPort = { }; #endif -const etx_serial_port_t* auxSerialGetPort(int port_nr) { return nullptr; } +#if defined(AUX_SERIAL) +const etx_serial_port_t auxSerialPort = { nullptr, nullptr }; +#define AUX_SERIAL_PORT &auxSerialPort +#else +#define AUX_SERIAL_PORT nullptr +#endif + +#if defined(AUX2_SERIAL) +const etx_serial_port_t aux2SerialPort = { nullptr, nullptr }; +#define AUX2_SERIAL_PORT &aux2SerialPort +#else +#define AUX2_SERIAL_PORT nullptr +#endif // AUX2_SERIAL + +static const etx_serial_port_t* serialPorts[MAX_AUX_SERIAL] = { + AUX_SERIAL_PORT, + AUX2_SERIAL_PORT, +}; + +const etx_serial_port_t* auxSerialGetPort(int port_nr) +{ + if (port_nr >= MAX_AUX_SERIAL) return nullptr; + return serialPorts[port_nr]; +} #if defined(HARDWARE_TOUCH) struct TouchState simTouchState = {};