diff --git a/radio/src/datastructs_private.h b/radio/src/datastructs_private.h index 7470aecd1..34ce21de7 100644 --- a/radio/src/datastructs_private.h +++ b/radio/src/datastructs_private.h @@ -446,12 +446,13 @@ PACK(struct TrainerModuleData { PACK(struct ModuleData { uint8_t type:4 ENUM(ModuleType); // TODO some refactoring is needed, rfProtocol is only used by DSM2 and MULTI, it could be merged with subType - int8_t rfProtocol:4; + int8_t rfProtocol:4 SKIP; + CUST_ATTR(subType,r_modSubtype,w_modSubtype); uint8_t channelsStart; - int8_t channelsCount; // 0=8 channels - uint8_t failsafeMode:4; // only 3 bits used - uint8_t subType:3; - uint8_t invertedSerial:1; // telemetry serial inverted from standard + int8_t channelsCount CUST(r_channelsCount,w_channelsCount); // 0=8 channels + uint8_t failsafeMode:4 ENUM(FailsafeModes); // only 3 bits used + uint8_t subType:3 SKIP; + uint8_t invertedSerial:1 SKIP; // telemetry serial inverted from standard union { uint8_t raw[PXX2_MAX_RECEIVERS_PER_MODULE * PXX2_LEN_RX_NAME + 1]; @@ -462,10 +463,10 @@ PACK(struct ModuleData { int8_t frameLength; } ppm); NOBACKUP(struct { - uint8_t rfProtocolExtra:3; + uint8_t rfProtocolExtra:3 SKIP; uint8_t disableTelemetry:1; uint8_t disableMapping:1; - uint8_t customProto:1; + uint8_t customProto:1 SKIP; uint8_t autoBindMode:1; uint8_t lowPowerMode:1; int8_t optionValue; diff --git a/radio/src/pulses/modules_constants.h b/radio/src/pulses/modules_constants.h index 2c03ca855..45c5ac1f2 100644 --- a/radio/src/pulses/modules_constants.h +++ b/radio/src/pulses/modules_constants.h @@ -234,7 +234,7 @@ enum FailsafeModes { FAILSAFE_CUSTOM, FAILSAFE_NOPULSES, FAILSAFE_RECEIVER, - FAILSAFE_LAST = FAILSAFE_RECEIVER + FAILSAFE_LAST SKIP = FAILSAFE_RECEIVER }; enum AntennaModes { diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index c34a104c9..438308ec8 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -193,14 +193,20 @@ inline bool isModuleXJTD16(uint8_t idx) return isModuleXJT(idx) && g_model.moduleData[idx].subType == MODULE_SUBTYPE_PXX1_ACCST_D16; } +inline bool isModuleTypeISRM(uint8_t type) +{ + return type == MODULE_TYPE_ISRM_PXX2; +} + inline bool isModuleISRM(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_ISRM_PXX2; + return isModuleTypeISRM(g_model.moduleData[idx].type); } inline bool isModuleISRMD16(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_ISRM_PXX2 && g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16; + return isModuleISRM(idx) && + g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16; } inline bool isModuleD16(uint8_t idx) @@ -210,7 +216,8 @@ inline bool isModuleD16(uint8_t idx) inline bool isModuleISRMAccess(uint8_t idx) { - return g_model.moduleData[idx].type == MODULE_TYPE_ISRM_PXX2 && g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS; + return isModuleISRM(idx) && + g_model.moduleData[idx].subType == MODULE_SUBTYPE_ISRM_PXX2_ACCESS; } #if defined(CROSSFIRE) diff --git a/radio/src/storage/conversions/yaml/dataconstants_220.h b/radio/src/storage/conversions/yaml/dataconstants_220.h index 1d9945bb6..26008d4c7 100644 --- a/radio/src/storage/conversions/yaml/dataconstants_220.h +++ b/radio/src/storage/conversions/yaml/dataconstants_220.h @@ -1009,6 +1009,44 @@ enum ModuleType { MODULE_TYPE_MAX = MODULE_TYPE_COUNT - 1 }; +enum ModuleSubtypePXX1 { + MODULE_SUBTYPE_PXX1_OFF = -1, + MODULE_SUBTYPE_PXX1_ACCST_D16, + MODULE_SUBTYPE_PXX1_ACCST_D8, + MODULE_SUBTYPE_PXX1_ACCST_LR12, + MODULE_SUBTYPE_PXX1_LAST = MODULE_SUBTYPE_PXX1_ACCST_LR12 +}; + +enum ModuleSubtypeISRM_PXX2 { + MODULE_SUBTYPE_ISRM_PXX2_ACCESS, + MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, + MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12, + MODULE_SUBTYPE_ISRM_PXX2_ACCST_D8, + MODULE_SUBTYPE_ISRM_PXX2_LAST = MODULE_SUBTYPE_ISRM_PXX2_ACCST_D8 +}; + +enum ModuleSubtypeR9M { + MODULE_SUBTYPE_R9M_FCC, + MODULE_SUBTYPE_R9M_EU, + MODULE_SUBTYPE_R9M_EUPLUS, + MODULE_SUBTYPE_R9M_AUPLUS, + MODULE_SUBTYPE_R9M_LAST=MODULE_SUBTYPE_R9M_AUPLUS +}; + +enum ModuleSubtypeFlysky { + FLYSKY_SUBTYPE_AFHDS3=0, + FLYSKY_SUBTYPE_AFHDS2A +}; + +enum FailsafeModes { + FAILSAFE_NOT_SET, + FAILSAFE_HOLD, + FAILSAFE_CUSTOM, + FAILSAFE_NOPULSES, + FAILSAFE_RECEIVER, + FAILSAFE_LAST SKIP = FAILSAFE_RECEIVER +}; + enum AntennaModes { ANTENNA_MODE_INTERNAL = -2, ANTENNA_MODE_ASK = -1, @@ -1019,11 +1057,6 @@ enum AntennaModes { }; // from opentx_constants.h -enum ModuleSubtypeFlysky { - FLYSKY_SUBTYPE_AFHDS3=0, - FLYSKY_SUBTYPE_AFHDS2A -}; - enum SwitchConfig { SWITCH_NONE, SWITCH_TOGGLE, diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs.cpp index ba1c834fe..37ef012ae 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs.cpp @@ -31,6 +31,7 @@ #include "../../../strhelpers.h" #include "../../../switches.h" #include "../../../timers.h" +#include "../../../pulses/multi.h" namespace yaml_conv_220 { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp index 823901ecb..2b50b719a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp @@ -920,3 +920,103 @@ bool w_thrSrc(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opa auto src = throttleSource2Source(val); return w_mixSrcRaw(nullptr, src, wf, opaque); } + +// Force external linkage +extern const struct YamlIdStr enum_XJT_Subtypes[]; +extern const struct YamlIdStr enum_ISRM_Subtypes[]; +extern const struct YamlIdStr enum_R9M_Subtypes[]; +extern const struct YamlIdStr enum_FLYSKY_Subtypes[]; +extern const struct YamlIdStr enum_DSM2_Subtypes[]; + +const struct YamlIdStr enum_XJT_Subtypes[] = { + { MODULE_SUBTYPE_PXX1_ACCST_D16, "D16" }, + { MODULE_SUBTYPE_PXX1_ACCST_D8, "D8" }, + { MODULE_SUBTYPE_PXX1_ACCST_LR12, "LR12" }, + { 0, NULL } +}; + +const struct YamlIdStr enum_ISRM_Subtypes[] = { + { MODULE_SUBTYPE_ISRM_PXX2_ACCESS, "ACCESS" }, + { MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, "D16" }, + // unused !!! + // { MODULE_SUBTYPE_ISRM_PXX2_ACCST_LR12, "LR12" }, + // { MODULE_SUBTYPE_ISRM_PXX2_ACCST_D8, "D8" }, + { 0, NULL } +}; + +const struct YamlIdStr enum_R9M_Subtypes[] = { + { MODULE_SUBTYPE_R9M_FCC, "FCC" }, + { MODULE_SUBTYPE_R9M_EU, "EU" }, + { MODULE_SUBTYPE_R9M_EUPLUS, "EUPLUS" }, + { MODULE_SUBTYPE_R9M_AUPLUS, "AUPLUS" }, + { 0, NULL } +}; + +const struct YamlIdStr enum_FLYSKY_Subtypes[] = { + { FLYSKY_SUBTYPE_AFHDS3, "AFHDS3" }, + { FLYSKY_SUBTYPE_AFHDS2A, "AFHDS2A" }, + { 0, NULL } +}; + +const struct YamlIdStr enum_DSM2_Subtypes[] = { + { 0, "LP45" }, + { 1, "DSM2" }, + { 3, "DSMX" }, + { 0, NULL } +}; + +#define r_modSubtype nullptr + +bool w_modSubtype(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque) +{ + // rfProtocol + subType, depending on the module + data += bitoffs >> 3UL; + data -= offsetof(ModuleData, channelsStart); + + const char* str = nullptr; + auto md = reinterpret_cast(data); + int32_t val = md->subType; + if (md->type == MODULE_TYPE_XJT_PXX1 || md->type == MODULE_TYPE_XJT_LITE_PXX2) { + str = yaml_output_enum(val, enum_XJT_Subtypes); + } else if (md->type == MODULE_TYPE_ISRM_PXX2) { + str = yaml_output_enum(val, enum_ISRM_Subtypes); + } else if (md->type == MODULE_TYPE_R9M_PXX1 || md->type == MODULE_TYPE_R9M_LITE_PXX1) { + str = yaml_output_enum(val, enum_R9M_Subtypes); + } else if (md->type == MODULE_TYPE_FLYSKY) { + str = yaml_output_enum(val, enum_FLYSKY_Subtypes); + } else if (md->type == MODULE_TYPE_MULTIMODULE) { + // Use type/subType by the book (see MPM documentation) + // TODO: remove that crappy translation and use the MPM + // data as-is (no FrSky special casing) + int type = md->getMultiProtocol() + 1; + int subtype = val; + convertOtxProtocolToMulti(&type, &subtype); + + // output "[type],[subtype]" + str = yaml_unsigned2str(type); + if (!wf(opaque, str, strlen(str))) return false; + if (!wf(opaque, ",", 1)) return false; + str = yaml_unsigned2str(subtype); + + } else if (md->type == MODULE_TYPE_DSM2) { + str = yaml_output_enum(md->rfProtocol, enum_DSM2_Subtypes); + } else { + str = yaml_unsigned2str(val); + } + + if (str && !wf(opaque, str, strlen(str))) + return false; + + return true; +} + +#define r_channelsCount nullptr + +bool w_channelsCount(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opaque) +{ + // offset 8 + int32_t sval = yaml_to_signed(val, node->size) + 8; + const char* str = yaml_signed2str(sval); + return wf(opaque,str,strlen(str)); +} diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp index 1a29bffd9..940b5a3da 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp @@ -255,6 +255,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -607,10 +615,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -679,12 +687,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp index 4ba734556..8603219d8 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp index 0645456fa..f7d199a5c 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp @@ -276,6 +276,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -624,10 +632,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -696,12 +704,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp index 95321db53..82c6bad7d 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp @@ -276,6 +276,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -624,10 +632,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -696,12 +704,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp index 345a01600..e5a64dadb 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp @@ -252,6 +252,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -580,10 +588,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -652,12 +660,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp index b1b82a9f4..23fdb4339 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp @@ -291,6 +291,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -619,10 +627,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -691,12 +699,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp index 2c71c10ea..bb18434b3 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp @@ -232,6 +232,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -557,10 +565,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -629,12 +637,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp index 818015977..56641780a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp @@ -240,6 +240,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -567,10 +575,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -639,12 +647,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp index a770fcda7..ba53ebcc7 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp @@ -237,6 +237,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -564,10 +572,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -636,12 +644,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp index ee6855638..491f7e014 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp @@ -239,6 +239,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -568,10 +576,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -640,12 +648,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 8661ddb38..8ae0fd207 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -23,6 +23,8 @@ #include "yaml_bits.h" #include "yaml_tree_walker.h" +#include "pulses/multi.h" + // Use definitions from v220 conversions as long as nothing changes namespace yaml_conv_220 { @@ -79,6 +81,19 @@ namespace yaml_conv_220 { bool w_thrSrc(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opaque); + + extern const struct YamlIdStr enum_XJT_Subtypes[]; + extern const struct YamlIdStr enum_ISRM_Subtypes[]; + extern const struct YamlIdStr enum_R9M_Subtypes[]; + extern const struct YamlIdStr enum_FLYSKY_Subtypes[]; + extern const struct YamlIdStr enum_DSM2_Subtypes[]; + + bool w_modSubtype(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque); + + bool w_channelsCount(const YamlNode* node, uint32_t val, yaml_writer_func wf, + void* opaque); + }; // @@ -1199,3 +1214,61 @@ static bool w_thrSrc(const YamlNode* node, uint32_t val, yaml_writer_func wf, { return yaml_conv_220::w_thrSrc(node, val, wf, opaque); } + +static void r_modSubtype(void* user, uint8_t* data, uint32_t bitoffs, + const char* val, uint8_t val_len) +{ + data += bitoffs >> 3UL; + data -= offsetof(ModuleData, channelsStart); + + auto md = reinterpret_cast(data); + if (isModuleTypeXJT(md->type)) { + md->subType = yaml_parse_enum(yaml_conv_220::enum_XJT_Subtypes, val, val_len); + } else if (isModuleTypeISRM(md->type)) { + md->subType = yaml_parse_enum(yaml_conv_220::enum_ISRM_Subtypes, val, val_len); + } else if (isModuleTypeR9MNonAccess(md->type)) { + md->subType = yaml_parse_enum(yaml_conv_220::enum_R9M_Subtypes, val, val_len); + } else if (md->type == MODULE_TYPE_FLYSKY) { + md->subType = yaml_parse_enum(yaml_conv_220::enum_FLYSKY_Subtypes, val, val_len); + } else if (md->type == MODULE_TYPE_MULTIMODULE) { + // Read type/subType by the book (see MPM documentation) + // TODO: remove that crappy translation and use the MPM + // data as-is (no FrSky special casing) + + // read "[type],[subtype]" + const char* sep = (const char *)memchr(val, ',', val_len); + uint8_t l_sep = sep ? sep - val : val_len; + + int type = yaml_str2uint(val, l_sep); + val += l_sep; val_len -= l_sep; + if (!val_len || val[0] != '.') return; + val++; val_len--; + int subtype = yaml_str2uint(val, val_len); + + // convert to OTX format and write to vars + convertMultiProtocolToOtx(&type, &subtype); + md->setMultiProtocol(type); + md->subType = subtype; + + } else if (md->type == MODULE_TYPE_DSM2) { + md->rfProtocol = yaml_parse_enum(yaml_conv_220::enum_DSM2_Subtypes, val, val_len); + } else { + md->subType = yaml_str2uint(val, val_len); + } +} + +static bool w_modSubtype(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque) +{ + return yaml_conv_220::w_modSubtype(user, data, bitoffs, wf, opaque); +} + +static uint32_t r_channelsCount(const YamlNode* node, const char* val, uint8_t val_len) +{ + return yaml_str2int(val,val_len) - 8; +} + +bool w_channelsCount(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opaque) +{ + return yaml_conv_220::w_channelsCount(node, val, wf, opaque); +} diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 1a29bffd9..940b5a3da 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -255,6 +255,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -607,10 +615,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -679,12 +687,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 4ba734556..8603219d8 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index edfb07dc6..44fa71a05 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -278,6 +278,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -626,10 +634,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -698,12 +706,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 95321db53..82c6bad7d 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -276,6 +276,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -624,10 +632,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -696,12 +704,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index fb4c187ed..aa600ddd4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -245,6 +245,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -572,10 +580,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -644,12 +652,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index 345a01600..e5a64dadb 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -252,6 +252,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -580,10 +588,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -652,12 +660,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index b1b82a9f4..23fdb4339 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -291,6 +291,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -619,10 +627,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -691,12 +699,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 2c71c10ea..bb18434b3 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -232,6 +232,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -557,10 +565,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -629,12 +637,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 818015977..56641780a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -240,6 +240,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -567,10 +575,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -639,12 +647,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index a770fcda7..ba53ebcc7 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -237,6 +237,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -564,10 +572,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -636,12 +644,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END }; diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index ee6855638..491f7e014 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -239,6 +239,14 @@ const struct YamlIdStr enum_ModuleType[] = { { MODULE_TYPE_MAX, "TYPE_MAX" }, { 0, NULL } }; +const struct YamlIdStr enum_FailsafeModes[] = { + { FAILSAFE_NOT_SET, "NOT_SET" }, + { FAILSAFE_HOLD, "HOLD" }, + { FAILSAFE_CUSTOM, "CUSTOM" }, + { FAILSAFE_NOPULSES, "NOPULSES" }, + { FAILSAFE_RECEIVER, "RECEIVER" }, + { 0, NULL } +}; const struct YamlIdStr enum_TelemetrySensorFormula[] = { { TELEM_FORMULA_ADD, "FORMULA_ADD" }, { TELEM_FORMULA_AVERAGE, "FORMULA_AVERAGE" }, @@ -568,10 +576,10 @@ static const struct YamlNode struct_anonymous_5[] = { YAML_END }; static const struct YamlNode struct_anonymous_6[] = { - YAML_UNSIGNED( "rfProtocolExtra", 3 ), + YAML_PADDING( 3 ), YAML_UNSIGNED( "disableTelemetry", 1 ), YAML_UNSIGNED( "disableMapping", 1 ), - YAML_UNSIGNED( "customProto", 1 ), + YAML_PADDING( 1 ), YAML_UNSIGNED( "autoBindMode", 1 ), YAML_UNSIGNED( "lowPowerMode", 1 ), YAML_SIGNED( "optionValue", 8 ), @@ -640,12 +648,13 @@ static const struct YamlNode union_anonymous_4_elmts[] = { static const struct YamlNode struct_ModuleData[] = { YAML_IDX, YAML_ENUM("type", 4, enum_ModuleType), - YAML_SIGNED( "rfProtocol", 4 ), + YAML_PADDING( 4 ), + YAML_CUSTOM("subType",r_modSubtype,w_modSubtype), YAML_UNSIGNED( "channelsStart", 8 ), - YAML_SIGNED( "channelsCount", 8 ), - YAML_UNSIGNED( "failsafeMode", 4 ), - YAML_UNSIGNED( "subType", 3 ), - YAML_UNSIGNED( "invertedSerial", 1 ), + YAML_SIGNED_CUST( "channelsCount", 8, r_channelsCount, w_channelsCount ), + YAML_ENUM("failsafeMode", 4, enum_FailsafeModes), + YAML_PADDING( 3 ), + YAML_PADDING( 1 ), YAML_UNION("mod", 200, union_anonymous_4_elmts, select_mod_type), YAML_END };