diff --git a/radio/src/dataconstants.h b/radio/src/dataconstants.h index 8b4a9cbc9..2b33855b9 100644 --- a/radio/src/dataconstants.h +++ b/radio/src/dataconstants.h @@ -259,7 +259,8 @@ enum TelemetryProtocol PROTOCOL_TELEMETRY_AFHDS3, PROTOCOL_TELEMETRY_GHOST, PROTOCOL_TELEMETRY_FLYSKY_NV14, - PROTOCOL_TELEMETRY_LAST=PROTOCOL_TELEMETRY_FLYSKY_NV14, + PROTOCOL_TELEMETRY_DSMP, + PROTOCOL_TELEMETRY_LAST=PROTOCOL_TELEMETRY_DSMP, PROTOCOL_TELEMETRY_LUA }; diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index c95a4c13b..4222bd14f 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -532,6 +532,9 @@ PACK(struct ModuleData { NOBACKUP(struct { uint8_t telemetryBaudrate:3; } crsf); + NOBACKUP(struct { + uint8_t flags; + } dsmp); } NAME(mod) FUNC(select_mod_type); NOBACKUP(inline uint8_t getChannelsCount() const diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 6e388e21c..56a652d49 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1078,7 +1078,7 @@ void menuModelSetup(event_t event) 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(); + restartModule(moduleIdx); } } } @@ -1088,7 +1088,7 @@ void menuModelSetup(event_t event) if (attr) { moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); if (checkIncDec_Ret) { - restartExternalModule(); + restartModule(moduleIdx); } } } diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 94825a043..62e276d41 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1045,7 +1045,7 @@ void menuModelSetup(event_t event) 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(); + restartModule(EXTERNAL_MODULE); } } } @@ -1056,7 +1056,7 @@ void menuModelSetup(event_t event) if (attr) { moduleData.ghost.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event,CROSSFIRE_STORE_TO_INDEX(moduleData.ghost.telemetryBaudrate),0, 1)); if (checkIncDec_Ret) { - restartExternalModule(); + restartModule(EXTERNAL_MODULE); } } } diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index fd6bc81e8..6169ee504 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -622,7 +622,7 @@ class ModuleWindow : public FormGroup { [=](int newValue) { g_model.moduleData[moduleIdx].crsf.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); SET_DIRTY(); - restartExternalModule(); + restartModule(moduleIdx); }); } if (isModuleCrossfire(moduleIdx)) { @@ -1089,6 +1089,7 @@ class ModuleWindow : public FormGroup { #if defined(AFHDS2) if (isModuleFlySky(moduleIdx)) resetPulsesAFHDS2(); #endif + if (isModuleDSMP(moduleIdx)) restartModule(moduleIdx); return 0; } else { if (isModuleR9MNonAccess(moduleIdx) || isModuleD16(moduleIdx) || diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 819304e8a..36412e4bd 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -293,7 +293,7 @@ class InternalModuleWindow : public FormGroup { [=](int newValue) { g_eeGeneral.internalModuleBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue); SET_DIRTY(); - restartInternalModule(); + restartModule(INTERNAL_MODULE); }); grid.nextLine(); } diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 30bded23b..90b40d911 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -543,7 +543,7 @@ 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) { - restartInternalModule(); + restartModule(INTERNAL_MODULE); } } break; @@ -552,7 +552,7 @@ void menuRadioHardware(event_t event) 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(); + restartModule(EXTERNAL_MODULE); } break; #endif diff --git a/radio/src/hal/module_driver.h b/radio/src/hal/module_driver.h index b9f846740..c4ab06535 100644 --- a/radio/src/hal/module_driver.h +++ b/radio/src/hal/module_driver.h @@ -39,7 +39,8 @@ enum ChannelsProtocols { PROTOCOL_CHANNELS_PXX2_HIGHSPEED, PROTOCOL_CHANNELS_AFHDS2A, PROTOCOL_CHANNELS_AFHDS3, - PROTOCOL_CHANNELS_GHOST + PROTOCOL_CHANNELS_GHOST, + PROTOCOL_CHANNELS_DSMP }; struct etx_module_driver_t { diff --git a/radio/src/pulses/dsm2.cpp b/radio/src/pulses/dsm2.cpp index 392f886be..3114258b8 100644 --- a/radio/src/pulses/dsm2.cpp +++ b/radio/src/pulses/dsm2.cpp @@ -33,29 +33,40 @@ #define BITLEN_DSM2 (8*2) //125000 Baud => 8uS per bit -void _send_1(uint8_t v) +static void reset_dsm2_buffer() +{ + extmodulePulsesData.dsm2.index = 0; + extmodulePulsesData.dsm2.ptr = extmodulePulsesData.dsm2.pulses; +} + +static void _send_1(uint8_t v) { *extmodulePulsesData.dsm2.ptr++ = v - 1; extmodulePulsesData.dsm2.index += 1; } -void sendByteDsm2(uint8_t b) // max 10 changes 0 10 10 10 10 1 +static void _sendByte(uint8_t b, uint8_t bit_len) // max 10 changes 0 10 10 10 10 1 { bool lev = 0; - uint8_t len = BITLEN_DSM2; // max val: 9*16 < 256 + uint8_t len = bit_len; // max val: 9*16 < 256 for (uint8_t i=0; i<=8; i++) { // 8Bits + Stop=1 bool nlev = b & 1; // lsb first if (lev == nlev) { - len += BITLEN_DSM2; + len += bit_len; } else { _send_1(len); - len = BITLEN_DSM2; + len = bit_len; lev = nlev; } b = (b>>1) | 0x80; // shift in stop bit } - _send_1(len); // stop bit (len is already BITLEN_DSM2) + _send_1(len); // stop bit (len is already bit_len) +} + +static void sendByteDsm2(uint8_t b) +{ + _sendByte(b, BITLEN_DSM2); } void putDsm2Flush() @@ -73,9 +84,7 @@ void setupPulsesDSM2() { uint8_t dsmDat[14]; - extmodulePulsesData.dsm2.index = 0; - - extmodulePulsesData.dsm2.ptr = extmodulePulsesData.dsm2.pulses; + reset_dsm2_buffer(); switch (moduleState[EXTERNAL_MODULE].protocol) { case PROTOCOL_CHANNELS_DSM2_LP45: @@ -112,3 +121,99 @@ void setupPulsesDSM2() putDsm2Flush(); } + +#define BITLEN_DSMP (17) + +static void sendByteDSMP(uint8_t b) +{ + _sendByte(b, BITLEN_DSMP); +} + +void setupPulsesLemonDSMP() +{ + static uint8_t pass = 0; + + reset_dsm2_buffer(); + + const auto& md = g_model.moduleData[EXTERNAL_MODULE]; + // TODO: sanetize 'channels' + auto channels = md.getChannelsCount(); + auto flags = md.dsmp.flags; + + // Force setup packet in Bind mode. + auto module_mode = getModuleMode(EXTERNAL_MODULE); + + sendByteDSMP( 0xAA ); + sendByteDSMP( pass ); + + // Setup packet + if (pass == 0) { + + if (module_mode == MODULE_MODE_BIND) { + flags = DSM2_SEND_BIND | (1 << 6 /* AUTO */); + channels = 12; + } + sendByteDSMP( flags ); + + uint8_t pwr = 7; + if (module_mode == MODULE_MODE_RANGECHECK) { + pwr = 4; + } + sendByteDSMP( pwr ); + sendByteDSMP( channels ); + + // Model number + sendByteDSMP( 1 ); + + // Send only 1 single Setup packet + pass = 1; + + } else { + + uint8_t start_channel = 0; + if (pass == 2) { + start_channel += 7; + } + + // Send channels + for (int i=0; i<7; i++) { + + uint8_t channel = start_channel + i; + if (channel < channels) { + + int value = channelOutputs[channel] + 2*PPM_CH_CENTER(channel) - 2*PPM_CENTER; + uint16_t pulse; + + // Use 11-bit ? + if (flags & (1 << 2)) { + pulse = limit(0, ((value*349)>>9)+1024, 2047) | (channel << 11); + } else { + pulse = limit(0, ((value*13)>>5)+512, 1023) | (channel << 10); + } + + sendByteDSMP( pulse >> 8 ); + sendByteDSMP( pulse & 0xFF ); + } else { + // Outside of announced number of channels: + // -> send invalid values + sendByteDSMP( 0xFF ); + sendByteDSMP( 0xFF ); + } + } + } + + putDsm2Flush(); + + if (++pass > 2) pass = 1; + if (channels < 8) pass = 1; + + if (module_mode == MODULE_MODE_BIND) { + // bind packet is setup + pass = 0; + } + else if (--moduleState[EXTERNAL_MODULE].counter == 0) { + // every 100th packet is setup + pass = 0; + moduleState[EXTERNAL_MODULE].counter = 100; + } +} diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index 774daaf55..a5dd23e01 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -36,11 +36,12 @@ enum ModuleType { MODULE_TYPE_R9M_PXX2, // R9M ACCESS MODULE_TYPE_R9M_LITE_PXX1, //R9MLite MODULE_TYPE_R9M_LITE_PXX2, //R9MLP - MODULE_TYPE_GHOST, // Replaces MODULE_TYPE_R9M_LITE_PRO_PXX1 which doesn't exist + MODULE_TYPE_GHOST, MODULE_TYPE_R9M_LITE_PRO_PXX2, MODULE_TYPE_SBUS, MODULE_TYPE_XJT_LITE_PXX2, - MODULE_TYPE_FLYSKY, //no more protocols possible because of 4 bits value + MODULE_TYPE_FLYSKY, + MODULE_TYPE_LEMON_DSMP, MODULE_TYPE_COUNT SKIP, MODULE_TYPE_MAX SKIP = MODULE_TYPE_COUNT - 1 }; diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index e04aa6b64..619783638 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -410,6 +410,11 @@ inline bool isModuleAFHDS3(uint8_t idx) && (g_model.moduleData[idx].subType == FLYSKY_SUBTYPE_AFHDS3); } +inline bool isModuleDSMP(uint8_t idx) +{ + return g_model.moduleData[idx].type == MODULE_TYPE_LEMON_DSMP; +} + // See enum ModuleType in modules_constant.h // relative to 8! static const int8_t maxChannelsModules_M8[] = { @@ -429,6 +434,7 @@ static const int8_t maxChannelsModules_M8[] = { 8, // MODULE_TYPE_SBUS 0, // MODULE_TYPE_XJT_LITE_PXX2: index NOT USED 6, // MODULE_TYPE_FLYSKY: 14 channels for AFHDS2A, AFHDS3 special cased + 4, // MODULE_TYPE_LEMON_DSMP: 12 channels for DSMX }; static_assert(MODULE_TYPE_COUNT == sizeof(maxChannelsModules_M8), @@ -616,7 +622,7 @@ inline bool isModuleBindRangeAvailable(uint8_t moduleIdx) { return isModulePXX2(moduleIdx) || isModulePXX1(moduleIdx) || isModuleDSM2(moduleIdx) || isModuleMultimodule(moduleIdx) || - isModuleFlySky(moduleIdx); + isModuleFlySky(moduleIdx) || isModuleDSMP(moduleIdx); } inline uint32_t getNV14RfFwVersion() diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index a825a1269..37a23b593 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -55,6 +55,32 @@ InternalModulePulsesData intmodulePulsesData __DMA; ExternalModulePulsesData extmodulePulsesData __DMA; TrainerPulsesData trainerPulsesData __DMA; +void restartModule(uint8_t idx) +{ + if (idx == INTERNAL_MODULE) { + if (!IS_INTERNAL_MODULE_ON()) return; + } else if (idx == EXTERNAL_MODULE){ + if (!IS_EXTERNAL_MODULE_ON()) return; + } else { + return; + } + + pauseMixerCalculations(); + pausePulses(); + + if (idx == INTERNAL_MODULE) INTERNAL_MODULE_OFF(); + else 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 + + if (idx == INTERNAL_MODULE) INTERNAL_MODULE_ON(); + else EXTERNAL_MODULE_ON(); + + resumePulses(); + resumeMixerCalculations(); +} + // use only for PXX void ModuleState::startBind(BindInformation* destination, ModuleCallback bindCallback) @@ -69,39 +95,6 @@ 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) { @@ -305,6 +298,10 @@ uint8_t getRequiredProtocol(uint8_t module) break; #endif + case MODULE_TYPE_LEMON_DSMP: + protocol = PROTOCOL_CHANNELS_DSMP; + break; + default: protocol = PROTOCOL_CHANNELS_NONE; break; @@ -589,6 +586,11 @@ void enablePulsesExternalModule(uint8_t protocol) break; #endif + case PROTOCOL_CHANNELS_DSMP: + extmoduleSerialStart(); + mixerSchedulerSetPeriod(EXTERNAL_MODULE, 11 * 1000 /* 11ms in us */); + break; + default: // external module stopped, use default mixer period mixerSchedulerSetPeriod(EXTERNAL_MODULE, 0); @@ -670,6 +672,10 @@ bool setupPulsesExternalModule(uint8_t protocol) return true; #endif + case PROTOCOL_CHANNELS_DSMP: + setupPulsesLemonDSMP(); + return true; + default: return false; } @@ -730,6 +736,12 @@ void extmoduleSendNextFrame() extmodulePulsesData.dsm2.ptr - extmodulePulsesData.dsm2.pulses); break; #endif + case PROTOCOL_CHANNELS_DSMP: + extmoduleSendNextFrameSoftSerial( + extmodulePulsesData.dsm2.pulses, + extmodulePulsesData.dsm2.ptr - extmodulePulsesData.dsm2.pulses, + true); + break; #if defined(GHOST) case PROTOCOL_CHANNELS_GHOST: diff --git a/radio/src/pulses/pulses.h b/radio/src/pulses/pulses.h index b0ce33c6d..4211f1aa4 100644 --- a/radio/src/pulses/pulses.h +++ b/radio/src/pulses/pulses.h @@ -67,10 +67,10 @@ extern uint8_t s_pulses_paused; typedef void (* ModuleCallback)(); PACK(struct ModuleState { - uint8_t protocol:4; + uint8_t protocol; uint8_t mode:4; uint8_t paused:1; - uint8_t spare:7; + uint8_t spare:3; uint16_t counter; // PXX specific items @@ -233,7 +233,9 @@ bool setupPulsesExternalModule(); void stopPulsesExternalModule(); void extmoduleSendNextFrame(); #endif +void restartModule(uint8_t idx); void setupPulsesDSM2(); +void setupPulsesLemonDSMP(); void setupPulsesCrossfire(uint8_t idx); void setupPulsesGhost(); void setupPulsesMultiExternalModule(); @@ -242,9 +244,7 @@ void setupPulsesSbus(); void setupPulsesPPMInternalModule(); void setupPulsesPPMExternalModule(); void setupPulsesPPMTrainer(); -void sendByteDsm2(uint8_t b); void putDsm2Flush(); -void putDsm2SerialBit(uint8_t bit); void sendByteSbus(uint8_t b); void intmodulePpmStart(); void intmodulePxx1PulsesStart(); @@ -254,8 +254,6 @@ 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); #if defined(AFHDS3) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index fedfcde27..e5ad7d295 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -467,6 +467,8 @@ static uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) return 8; case MODULE_TYPE_CROSSFIRE: return 9; + case MODULE_TYPE_LEMON_DSMP: + return 10; } return 0; } diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index eb7604663..8396a53c8 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -673,6 +674,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -684,6 +689,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -729,61 +735,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -796,7 +802,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 2331badf7..5726f045f 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 2de910275..3c73ce91d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 2de910275..3c73ce91d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 7b63a2470..c100ce619 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tpro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tpro.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -647,6 +648,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -658,6 +663,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -698,61 +704,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -765,7 +771,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 f34bfcc5d..cc0f3babb 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 78eca8bcd..17a6e8623 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -694,6 +695,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -705,6 +710,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -750,61 +756,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -817,7 +823,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 f63ef17dc..12f341b49 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -692,6 +693,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -703,6 +708,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -748,61 +754,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -815,7 +821,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 2de910275..3c73ce91d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 acbfbb2c7..abc9e6580 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -649,6 +650,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -660,6 +665,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -705,61 +711,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -772,7 +778,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 10000599d..38fc39633 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -688,6 +689,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +704,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -744,61 +750,61 @@ static const struct YamlNode struct_string_32[] = { YAML_STRING("val", 4), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -811,7 +817,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 5a003451c..c87263c2a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -626,6 +627,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -637,6 +642,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -677,61 +683,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -744,7 +750,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 16f71d317..675c2a95c 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -636,6 +637,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -647,6 +652,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -687,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_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -754,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_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 263711856..17cdb6b3b 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -633,6 +634,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -644,6 +649,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -684,61 +690,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -751,7 +757,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 c2659e062..aacd40d2e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -637,6 +638,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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), @@ -648,6 +653,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -688,61 +694,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -755,7 +761,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_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 034bdb15d..5f22428df 100644 --- a/radio/src/storage/yaml/yaml_datastructs_zorro.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_zorro.cpp @@ -36,6 +36,7 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_SBUS, "TYPE_SBUS" }, { MODULE_TYPE_XJT_LITE_PXX2, "TYPE_XJT_LITE_PXX2" }, { MODULE_TYPE_FLYSKY, "TYPE_FLYSKY" }, + { MODULE_TYPE_LEMON_DSMP, "TYPE_LEMON_DSMP" }, { 0, NULL } }; const struct YamlIdStr enum_TrainerMultiplex[] = { @@ -641,6 +642,10 @@ static const struct YamlNode struct_anonymous_13[] = { YAML_UNSIGNED( "telemetryBaudrate", 3 ), YAML_END }; +static const struct YamlNode struct_anonymous_14[] = { + YAML_UNSIGNED( "flags", 8 ), + 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 +657,7 @@ static const struct YamlNode union_anonymous_4_elmts[] = { 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_STRUCT("dsmp", 8, struct_anonymous_14, NULL), YAML_END }; static const struct YamlNode struct_ModuleData[] = { @@ -692,61 +698,61 @@ static const struct YamlNode struct_ScriptData[] = { YAML_ARRAY("inputs", 16, 6, union_ScriptDataInput, NULL), YAML_END }; -static const struct YamlNode union_anonymous_14_elmts[] = { +static const struct YamlNode union_anonymous_15_elmts[] = { YAML_UNSIGNED( "id", 16 ), YAML_UNSIGNED( "persistentValue", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_16[] = { +static const struct YamlNode struct_anonymous_17[] = { YAML_UNSIGNED( "physID", 5 ), YAML_UNSIGNED( "rxIndex", 3 ), YAML_END }; -static const struct YamlNode union_anonymous_15_elmts[] = { - YAML_STRUCT("frskyInstance", 8, struct_anonymous_16, NULL), +static const struct YamlNode union_anonymous_16_elmts[] = { + YAML_STRUCT("frskyInstance", 8, struct_anonymous_17, NULL), YAML_UNSIGNED( "instance", 8 ), YAML_ENUM("formula", 8, enum_TelemetrySensorFormula), YAML_END }; -static const struct YamlNode struct_anonymous_18[] = { +static const struct YamlNode struct_anonymous_19[] = { YAML_UNSIGNED( "ratio", 16 ), YAML_SIGNED( "offset", 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_19[] = { +static const struct YamlNode struct_anonymous_20[] = { YAML_UNSIGNED( "source", 8 ), YAML_UNSIGNED( "index", 8 ), YAML_PADDING( 16 ), YAML_END }; -static const struct YamlNode struct_anonymous_20[] = { +static const struct YamlNode struct_anonymous_21[] = { YAML_ARRAY("sources", 8, 4, struct_signed_8, NULL), YAML_END }; -static const struct YamlNode struct_anonymous_21[] = { +static const struct YamlNode struct_anonymous_22[] = { YAML_UNSIGNED( "source", 8 ), YAML_PADDING( 24 ), YAML_END }; -static const struct YamlNode struct_anonymous_22[] = { +static const struct YamlNode struct_anonymous_23[] = { YAML_UNSIGNED( "gps", 8 ), YAML_UNSIGNED( "alt", 8 ), YAML_PADDING( 16 ), YAML_END }; -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), +static const struct YamlNode union_anonymous_18_elmts[] = { + YAML_STRUCT("custom", 32, struct_anonymous_19, NULL), + YAML_STRUCT("cell", 32, struct_anonymous_20, NULL), + YAML_STRUCT("calc", 32, struct_anonymous_21, NULL), + YAML_STRUCT("consumption", 32, struct_anonymous_22, NULL), + YAML_STRUCT("dist", 32, struct_anonymous_23, NULL), YAML_UNSIGNED( "param", 32 ), YAML_END }; static const struct YamlNode struct_TelemetrySensor[] = { YAML_IDX, - YAML_UNION("id1", 16, union_anonymous_14_elmts, select_id1), - YAML_UNION("id2", 8, union_anonymous_15_elmts, select_id2), + YAML_UNION("id1", 16, union_anonymous_15_elmts, select_id1), + YAML_UNION("id2", 8, union_anonymous_16_elmts, select_id2), YAML_STRING("label", 4), YAML_UNSIGNED( "subId", 8 ), YAML_ENUM("type", 1, enum_TelemetrySensorType), @@ -759,7 +765,7 @@ static const struct YamlNode struct_TelemetrySensor[] = { YAML_UNSIGNED( "persistent", 1 ), YAML_UNSIGNED( "onlyPositive", 1 ), YAML_PADDING( 1 ), - YAML_UNION("cfg", 32, union_anonymous_17_elmts, select_sensor_cfg), + YAML_UNION("cfg", 32, union_anonymous_18_elmts, select_sensor_cfg), YAML_END }; static const struct YamlNode struct_FrSkyBarData[] = { diff --git a/radio/src/targets/horus/telemetry_driver.cpp b/radio/src/targets/horus/telemetry_driver.cpp index c4bd8698c..5475df6eb 100644 --- a/radio/src/targets/horus/telemetry_driver.cpp +++ b/radio/src/targets/horus/telemetry_driver.cpp @@ -182,6 +182,10 @@ void telemetryPortInvertedInit(uint32_t baudrate) probeTimeFromStartBit = 3000000/baudrate; } +#if defined(PCBX12S) + telemetryFifoMode = TELEMETRY_SERIAL_WITHOUT_DMA; +#endif + // configure bit sample timer TELEMETRY_TIMER->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 2000000 - 1; // 0.5uS TELEMETRY_TIMER->CCER = 0; diff --git a/radio/src/tasks.cpp b/radio/src/tasks.cpp index 95bb4ef69..5ec392519 100644 --- a/radio/src/tasks.cpp +++ b/radio/src/tasks.cpp @@ -66,48 +66,17 @@ bool isForcePowerOffRequested() return false; } -// TODO: remove this!!! -bool isModuleSynchronous(uint8_t moduleIdx) -{ - switch(moduleState[moduleIdx].protocol) { - case PROTOCOL_CHANNELS_PXX2_HIGHSPEED: - case PROTOCOL_CHANNELS_PXX2_LOWSPEED: - case PROTOCOL_CHANNELS_CROSSFIRE: - case PROTOCOL_CHANNELS_GHOST: - case PROTOCOL_CHANNELS_AFHDS3: - case PROTOCOL_CHANNELS_AFHDS2A: - case PROTOCOL_CHANNELS_NONE: - -#if defined(MULTIMODULE) - case PROTOCOL_CHANNELS_MULTIMODULE: -#endif -#if defined(INTMODULE_USART) || defined(EXTMODULE_USART) - case PROTOCOL_CHANNELS_PXX1_SERIAL: -#endif - case PROTOCOL_CHANNELS_PPM: - case PROTOCOL_CHANNELS_PXX1_PULSES: -#if defined(DSM2) - case PROTOCOL_CHANNELS_SBUS: - case PROTOCOL_CHANNELS_DSM2_LP45: - case PROTOCOL_CHANNELS_DSM2_DSM2: - case PROTOCOL_CHANNELS_DSM2_DSMX: -#endif - return true; - } - return false; -} - void sendSynchronousPulses(uint8_t runMask) { #if defined(HARDWARE_INTERNAL_MODULE) - if ((runMask & (1 << INTERNAL_MODULE)) && isModuleSynchronous(INTERNAL_MODULE)) { + if (runMask & (1 << INTERNAL_MODULE)) { if (setupPulsesInternalModule()) intmoduleSendNextFrame(); } #endif #if defined(HARDWARE_EXTERNAL_MODULE) - if ((runMask & (1 << EXTERNAL_MODULE)) && isModuleSynchronous(EXTERNAL_MODULE)) { + if (runMask & (1 << EXTERNAL_MODULE)) { if (setupPulsesExternalModule()) extmoduleSendNextFrame(); } diff --git a/radio/src/telemetry/spektrum.cpp b/radio/src/telemetry/spektrum.cpp index fb8dae030..8323c7716 100644 --- a/radio/src/telemetry/spektrum.cpp +++ b/radio/src/telemetry/spektrum.cpp @@ -504,7 +504,28 @@ void processSpektrumPacket(const uint8_t *packet) void processDSMBindPacket(uint8_t module, const uint8_t *packet) { uint32_t debugval; - if (g_model.moduleData[module].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_DSM2 && g_model.moduleData[module].subType == MM_RF_DSM2_SUBTYPE_AUTO) { + + if (g_model.moduleData[module].type == MODULE_TYPE_LEMON_DSMP) { + + // save flags + g_model.moduleData[module].dsmp.flags = packet[0] & 0x3F; + + // save number of channels + uint8_t channels = packet[2]; + if (channels > 12) { channels = 12; } + g_model.moduleData[module].channelsCount = channels - 8; + + TRACE("[SPK] DSMP bind packet: 0x%X / %i", + packet[0] & 0x3F, packet[2]); + + storageDirty(EE_MODEL); + restartModule(EXTERNAL_MODULE); + + } else if (g_model.moduleData[module].type == MODULE_TYPE_MULTIMODULE && + g_model.moduleData[module].multi.rfProtocol == + MODULE_SUBTYPE_MULTI_DSM2 && + g_model.moduleData[module].subType == MM_RF_DSM2_SUBTYPE_AUTO) { + // Only sets channel etc when in DSM/AUTO mode int channels = packet[5]; if (channels > 12) { @@ -548,12 +569,20 @@ void processDSMBindPacket(uint8_t module, const uint8_t *packet) setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 4, 0, 0, debugval, UNIT_RAW, 0); /* Finally stop binding as the rx just told us that it is bound */ - if (g_model.moduleData[module].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[module].multi.rfProtocol == MODULE_SUBTYPE_MULTI_DSM2 && moduleState[module].mode == MODULE_MODE_BIND) { - setMultiBindStatus(module, MULTI_BIND_FINISHED); + if (getModuleMode(module) == MODULE_MODE_BIND) { + auto module_type = g_model.moduleData[module].type; + if (module_type == MODULE_TYPE_MULTIMODULE && + g_model.moduleData[module].multi.rfProtocol == + MODULE_SUBTYPE_MULTI_DSM2) { + setMultiBindStatus(module, MULTI_BIND_FINISHED); + } else if (module_type == MODULE_TYPE_LEMON_DSMP) { + setModuleMode(module, MODULE_MODE_NORMAL); + } } } - -void processSpektrumTelemetryData(uint8_t module, uint8_t data, uint8_t* rxBuffer, uint8_t& rxBufferCount) + +void processSpektrumTelemetryData(uint8_t module, uint8_t data, + uint8_t *rxBuffer, uint8_t &rxBufferCount) { if (rxBufferCount == 0 && data != 0xAA) { TRACE("[SPK] invalid start byte 0x%02X", data); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index b9c3ebaba..0c48b8283 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -122,11 +122,14 @@ void processTelemetryData(uint8_t data) } #endif -#if defined(MULTIMODULE) - if (telemetryProtocol == PROTOCOL_TELEMETRY_SPEKTRUM) { - processSpektrumTelemetryData(EXTERNAL_MODULE, data, telemetryRxBuffer, telemetryRxBufferCount); + if (telemetryProtocol == PROTOCOL_TELEMETRY_SPEKTRUM || + telemetryProtocol == PROTOCOL_TELEMETRY_DSMP) { + processSpektrumTelemetryData(EXTERNAL_MODULE, data, telemetryRxBuffer, + telemetryRxBufferCount); return; } + +#if defined(MULTIMODULE) if (telemetryProtocol == PROTOCOL_TELEMETRY_FLYSKY_IBUS) { processFlySkyTelemetryData(data, telemetryRxBuffer, telemetryRxBufferCount); return; @@ -489,7 +492,10 @@ void telemetryInit(uint8_t protocol) telemetryPortSetDirectionInput(); } #endif - + else if (protocol == PROTOCOL_TELEMETRY_DSMP) { + // soft serial + telemetryPortInvertedInit(115200); + } else { telemetryPortInit(FRSKY_SPORT_BAUDRATE, TELEMETRY_SERIAL_WITHOUT_DMA); #if defined(LUA) diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index bbd028343..53d1522c9 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -198,6 +198,10 @@ inline uint8_t modelTelemetryProtocol() } #endif + if (isModuleDSMP(EXTERNAL_MODULE)) { + return PROTOCOL_TELEMETRY_DSMP; + } + // default choice return PROTOCOL_TELEMETRY_FRSKY_SPORT; } diff --git a/radio/src/translations/untranslated.h b/radio/src/translations/untranslated.h index 31fc1ace5..13534c9c6 100644 --- a/radio/src/translations/untranslated.h +++ b/radio/src/translations/untranslated.h @@ -131,7 +131,7 @@ #endif #define LEN_EXTERNAL_MODULE_PROTOCOLS "\014" -#define TR_EXTERNAL_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULTI\0 ""R9M\0 ""R9M ACCESS\0 " TR_MODULE_R9M_LITE "R9ML ACCESS\0""GHST\0 ""R9MLP ACCESS""SBUS\0 ""XJT Lite\0 ""FLYSKY\0 " +#define TR_EXTERNAL_MODULE_PROTOCOLS "OFF\0 ""PPM\0 ""XJT\0 ""ISRM\0 ""DSM2\0 ""CRSF\0 ""MULTI\0 ""R9M\0 ""R9M ACCESS\0 " TR_MODULE_R9M_LITE "R9ML ACCESS\0""GHST\0 ""R9MLP ACCESS""SBUS\0 ""XJT Lite\0 ""FLYSKY\0 ""LemonRx DSMP" #define LEN_FLYSKY_PROTOCOLS "\007" #define TR_FLYSKY_PROTOCOLS "AFHDS3\0""AFHDS2A"