From b5e9c68056fdb365ea2bcb7ad319b2137e949dcd Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 25 Oct 2021 12:20:09 +0200 Subject: [PATCH] Improve custom functions --- radio/src/datastructs.h | 9 +- .../yaml/yaml_datastructs_funcs.cpp | 157 ++++++++++++-- .../yaml/yaml_datastructs_nv14.cpp | 9 +- .../conversions/yaml/yaml_datastructs_t12.cpp | 9 +- .../conversions/yaml/yaml_datastructs_t8.cpp | 9 +- .../yaml/yaml_datastructs_tlite.cpp | 9 +- .../yaml/yaml_datastructs_tx12.cpp | 9 +- .../conversions/yaml/yaml_datastructs_x10.cpp | 9 +- .../yaml/yaml_datastructs_x12s.cpp | 9 +- .../conversions/yaml/yaml_datastructs_x7.cpp | 9 +- .../conversions/yaml/yaml_datastructs_x9d.cpp | 9 +- .../conversions/yaml/yaml_datastructs_x9e.cpp | 9 +- .../yaml/yaml_datastructs_x9lite.cpp | 9 +- .../yaml/yaml_datastructs_x9lites.cpp | 9 +- .../yaml/yaml_datastructs_xlite.cpp | 9 +- .../yaml/yaml_datastructs_xlites.cpp | 9 +- .../storage/yaml/yaml_datastructs_funcs.cpp | 195 ++++++++++++++++++ .../storage/yaml/yaml_datastructs_nv14.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_t12.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_t8.cpp | 9 +- .../storage/yaml/yaml_datastructs_tlite.cpp | 9 +- .../storage/yaml/yaml_datastructs_tx12.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_x10.cpp | 9 +- .../storage/yaml/yaml_datastructs_x12s.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_x7.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_x9d.cpp | 9 +- .../src/storage/yaml/yaml_datastructs_x9e.cpp | 9 +- .../storage/yaml/yaml_datastructs_x9lite.cpp | 9 +- .../storage/yaml/yaml_datastructs_x9lites.cpp | 9 +- .../storage/yaml/yaml_datastructs_xlite.cpp | 9 +- .../storage/yaml/yaml_datastructs_xlites.cpp | 9 +- 31 files changed, 481 insertions(+), 132 deletions(-) diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 3e1f8c182..25df0cc93 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -154,6 +154,7 @@ PACK(struct LogicalSwitchData { PACK(struct CustomFunctionData { int16_t swtch:9 CUST(r_swtchSrc,w_swtchSrc); uint16_t func:7 ENUM(Functions); + CUST_ATTR(def,r_customFn,w_customFn); PACK(union { NOBACKUP(PACK(struct { char name[LEN_FUNCTION_NAME]; @@ -163,15 +164,15 @@ PACK(struct CustomFunctionData { int16_t val; uint8_t mode; uint8_t param; - NOBACKUP(CFN_SPARE_TYPE spare SKIP); + NOBACKUP(CFN_SPARE_TYPE spare); }) all; NOBACKUP(PACK(struct { int32_t val1; - NOBACKUP(CFN_SPARE_TYPE val2 SKIP); + NOBACKUP(CFN_SPARE_TYPE val2); }) clear); - }) NAME(fp) FUNC(select_custom_fn); - uint8_t active; + }) SKIP; + uint8_t active SKIP; bool isEmpty() const { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp index 02cba49b6..b5e2f4511 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp @@ -210,23 +210,7 @@ uint8_t select_mod_type(void* user, uint8_t* data, uint32_t bitoffs) return 0; } -uint8_t select_custom_fn(void* user, uint8_t* data, uint32_t bitoffs) -{ - data += bitoffs >> 3UL; - data -= offsetof(CustomFunctionData, all); - - auto cf = reinterpret_cast(data); - switch(cf->func) { - case FUNC_PLAY_TRACK: - case FUNC_BACKGND_MUSIC: - case FUNC_PLAY_SCRIPT: - // play: 0 - return 0; - } - // all: 1 - return 1; -} uint8_t select_script_input(void* user, uint8_t* data, uint32_t bitoffs) { @@ -698,3 +682,144 @@ bool w_flightModes(const YamlNode* node, uint32_t val, } return true; } + +#define r_customFn nullptr + +static const char* _func_reset_param_lookup[] = { + "Tmr1","Tmr2","Tmr3","All","Tele" +}; + +static const char* _func_failsafe_lookup[] = { + "Int","Ext" +}; + +// used in read routine as well +const char* _func_sound_lookup[] = { + "Bp1","Bp2","Bp3","Wrn1","Wrn2", + "Chee","Rata","Tick","Sirn","Ring", + "SciF","Robt","Chrp","Tada","Crck","Alrm" +}; + +// force external linkage +extern const uint8_t _func_sound_lookup_size = sizeof(_func_sound_lookup); + +bool w_customFn(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque) +{ + data += bitoffs >> 3UL; + data -= offsetof(CustomFunctionData, all); + + auto cfn = reinterpret_cast(data); + uint8_t func = CFN_FUNC(cfn); + + const char* str = nullptr; + switch (func) { + case FUNC_OVERRIDE_CHANNEL: + str = yaml_unsigned2str(CFN_CH_INDEX(cfn)); // CH index + if (!wf(opaque, str, strlen(str))) return false; + if (!wf(opaque, ",", 1)) return false; + str = yaml_unsigned2str(CFN_PARAM(cfn)); // value + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_TRAINER: { + int16_t value = CFN_CH_INDEX(cfn); + switch(value) { + case 0: + if (!wf(opaque, "sticks", 6)) return false; + break; + case NUM_STICKS + 1: + if (!wf(opaque, "chans", 5)) return false; + break; + default: + if (value > 0 && value < NUM_STICKS + 1) { + str = yaml_output_enum(value - 1 + MIXSRC_FIRST_STICK, enum_MixSources); + if (str && !wf(opaque, str, strlen(str))) return false; + } + } + } break; + + case FUNC_RESET: + if (CFN_PARAM(cfn) < FUNC_RESET_PARAM_FIRST_TELEM) { + // Tmr1,Tmr2,Tmr3,All + str = _func_reset_param_lookup[CFN_PARAM(cfn)]; + } else { + // sensor index + str = yaml_unsigned2str(CFN_PARAM(cfn) - FUNC_RESET_PARAM_FIRST_TELEM); + } + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_VOLUME: + case FUNC_BACKLIGHT: + case FUNC_PLAY_VALUE: + if (!w_mixSrcRaw(nullptr, CFN_PARAM(cfn), wf, opaque)) return false; + break; + + case FUNC_PLAY_SOUND: + // Bp1,Bp2,Bp3,Wrn1,Wrn2,Chee,Rata,Tick,Sirn,Ring,SciF,Robt,Chrp,Tada,Crck,Alrm + str = _func_sound_lookup[CFN_PARAM(cfn)]; + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_PLAY_TRACK: + case FUNC_BACKGND_MUSIC: + case FUNC_PLAY_SCRIPT: + if (!wf(opaque, cfn->play.name, strnlen(cfn->play.name, LEN_FUNCTION_NAME))) + return false; + break; + + case FUNC_SET_TIMER: + // Tmr1,Tmr2,Tmr3 + str = _func_reset_param_lookup[CFN_TIMER_INDEX(cfn)]; + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_SET_FAILSAFE: + // Int,Ext + str = _func_failsafe_lookup[CFN_PARAM(cfn)]; + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_HAPTIC: + case FUNC_LOGS: // 10th of seconds + str = yaml_unsigned2str(CFN_PARAM(cfn)); + if (!wf(opaque, str, strlen(str))) return false; + break; + + case FUNC_ADJUST_GVAR: + switch(CFN_GVAR_MODE(cfn)) { + case FUNC_ADJUST_GVAR_CONSTANT: + case FUNC_ADJUST_GVAR_INCDEC: + str = yaml_signed2str(CFN_PARAM(cfn)); + if (!wf(opaque, str, strlen(str))) return false; + break; + case FUNC_ADJUST_GVAR_SOURCE: + if (!w_mixSrcRaw(nullptr, CFN_PARAM(cfn), wf, opaque)) return false; + break; + case FUNC_ADJUST_GVAR_GVAR: + if (!w_mixSrcRaw(nullptr, CFN_PARAM(cfn) + MIXSRC_FIRST_GVAR, wf, opaque)) return false; + break; + } + } + + if (HAS_ENABLE_PARAM(func)) { + // ",0/1" + if (!wf(opaque,CFN_ACTIVE(cfn) ? ",1":",0",2)) return false; + } else if (HAS_REPEAT_PARAM(func)) { + // "," + if (!wf(opaque,",",1)) return false; + if (CFN_PLAY_REPEAT(cfn) == 0) { + // "1x" + if (!wf(opaque,"1x",2)) return false; + } else if (CFN_PLAY_REPEAT(cfn) == CFN_PLAY_REPEAT_NOSTART) { + // "!1x" + if (!wf(opaque,"!1x",3)) return false; + } else { + // repeat time in seconds + str = yaml_unsigned2str(CFN_PLAY_REPEAT(cfn) * CFN_PLAY_REPEAT_MUL); + if (!wf(opaque, str, strlen(str))) return false; + } + } + return true; +} diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp index 71701b2e9..3e74004aa 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_nv14.cpp @@ -300,12 +300,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -318,8 +318,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_t12.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_t8.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_tlite.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp index 0eeb776c8..d0ac1fea4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_tx12.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp index 257354dad..9b75f76bc 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x10.cpp @@ -321,12 +321,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -339,8 +339,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp index 137208462..799be0adb 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x12s.cpp @@ -321,12 +321,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -339,8 +339,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x7.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp index 0b9970996..07ee3dfab 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9d.cpp @@ -300,12 +300,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -318,8 +318,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp index 8bc031c56..bad636fc7 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9e.cpp @@ -339,12 +339,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -357,8 +357,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp index 90f31bfee..4a1e45244 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lite.cpp @@ -280,12 +280,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -298,8 +298,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp index 132ce7937..4c1cbd3e4 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_x9lites.cpp @@ -288,12 +288,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -306,8 +306,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp index 866ede311..7f3878770 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_xlite.cpp @@ -285,12 +285,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -303,8 +303,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp index 58628036f..b9fe7315e 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_xlites.cpp @@ -287,12 +287,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -305,8 +305,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 63b0eb160..c56aa6af1 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -62,6 +62,12 @@ namespace yaml_conv_220 { bool w_flightModes(const YamlNode* node, uint32_t val, yaml_writer_func wf, void* opaque); + + extern const char* _func_sound_lookup[]; + extern const uint8_t _func_sound_lookup_size; + + bool w_customFn(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque); }; // @@ -855,3 +861,192 @@ static bool w_flightModes(const YamlNode* node, uint32_t val, { return yaml_conv_220::w_flightModes(node, val, wf, opaque); } + +static void r_customFn(void* user, uint8_t* data, uint32_t bitoffs, + const char* val, uint8_t val_len) +{ + data += bitoffs >> 3UL; + data -= offsetof(CustomFunctionData, all); + + auto cfn = reinterpret_cast(data); + uint8_t func = CFN_FUNC(cfn); + + if (func == FUNC_OVERRIDE_CHANNEL) { + // CH index + CFN_CH_INDEX(cfn) = yaml_str2uint_ref(val, val_len); + // "," + if (!val_len || val[0] != ',') return; + // value + CFN_PARAM(cfn) = yaml_str2int_ref(val, val_len); + } + + // find "," and cut val_len + const char* sep = (const char *)memchr(val, ',', val_len); + uint8_t l_sep = sep ? sep - val : val_len; + + // read values... + switch (func) { + + case FUNC_OVERRIDE_CHANNEL: + break; + + case FUNC_TRAINER: + if (l_sep == 6 + && val[0] == 's' + && val[1] == 't' + && val[2] == 'i' + && val[3] == 'c' + && val[4] == 'k' + && val[5] == 's') { + CFN_CH_INDEX(cfn) = 0; + } else if (l_sep == 5 + && val[0] == 'c' + && val[1] == 'h' + && val[2] == 'a' + && val[3] == 'n' + && val[4] == 's') { + CFN_CH_INDEX(cfn) = NUM_STICKS + 1; + } else { + uint32_t stick = yaml_parse_enum(enum_MixSources, val, l_sep); + if (stick >= MIXSRC_FIRST_STICK && stick <= MIXSRC_LAST_STICK) { + CFN_CH_INDEX(cfn) = stick - MIXSRC_FIRST_STICK + 1; + } + } + break; + + case FUNC_RESET: + if (l_sep == 4 + && val[0] == 'T' + && val[1] == 'm' + && val[2] == 'r' + && val[3] >= '1' + && val[3] <= '3') { + CFN_PARAM(cfn) = val[3] - '1'; + } else if (l_sep == 3 + && val[0] == 'A' + && val[1] == 'l' + && val[2] == 'l') { + CFN_PARAM(cfn) = FUNC_RESET_FLIGHT; + } else if (l_sep == 4 + && val[0] == 'T' + && val[1] == 'e' + && val[2] == 'l' + && val[3] == 'e') { + CFN_PARAM(cfn) = FUNC_RESET_TELEMETRY; + } else { + uint32_t sensor = yaml_str2uint(val, l_sep); + CFN_PARAM(cfn) = sensor + FUNC_RESET_PARAM_FIRST_TELEM; + } + break; + + case FUNC_VOLUME: + case FUNC_BACKLIGHT: + case FUNC_PLAY_VALUE: + // find "," and cut val_len + CFN_PARAM(cfn) = r_mixSrcRaw(nullptr, val, l_sep); + break; + + case FUNC_PLAY_SOUND: + // find "," and cut val_len + for (int i=0; i < yaml_conv_220::_func_sound_lookup_size; i++) { + if (!strncmp(yaml_conv_220::_func_sound_lookup[i],val,l_sep)) { + CFN_PARAM(cfn) = i; + break; + } + } + break; + + case FUNC_PLAY_TRACK: + case FUNC_BACKGND_MUSIC: + case FUNC_PLAY_SCRIPT: + strncpy(cfn->play.name, val, std::min(l_sep, LEN_FUNCTION_NAME)); + break; + + case FUNC_SET_TIMER: + // Tmr1,Tmr2,Tmr3 + if (l_sep >= 4 + && val[0] == 'T' + && val[1] == 'm' + && val[2] == 'r' + && val[3] >= '1' + && val[3] <= '3') { + CFN_TIMER_INDEX(cfn) = val[3] - '1'; + } + break; + + case FUNC_SET_FAILSAFE: + // Int,Ext + if (l_sep == 3) { + if (val[0] == 'I' + && val[1] == 'n' + && val[2] == 't') { + CFN_PARAM(cfn) = 0; + } else if (val[0] == 'E' + && val[1] == 'x' + && val[2] == 't') { + CFN_PARAM(cfn) = 1; + } + } + break; + + case FUNC_HAPTIC: + case FUNC_LOGS: // 10th of seconds + CFN_PARAM(cfn) = yaml_str2uint(val, l_sep); + break; + + case FUNC_ADJUST_GVAR: + switch(CFN_GVAR_MODE(cfn)) { + case FUNC_ADJUST_GVAR_CONSTANT: + case FUNC_ADJUST_GVAR_INCDEC: + CFN_PARAM(cfn) = yaml_str2int(val, l_sep); + break; + case FUNC_ADJUST_GVAR_SOURCE: + CFN_PARAM(cfn) = r_mixSrcRaw(nullptr, val, l_sep); + break; + case FUNC_ADJUST_GVAR_GVAR: { + uint32_t gvar = r_mixSrcRaw(nullptr, val, l_sep); + if (gvar >= MIXSRC_FIRST_GVAR) { + CFN_PARAM(cfn) = gvar - MIXSRC_FIRST_GVAR; + } + } break; + } break; + } + + val += l_sep; + val_len -= l_sep; + + if (val_len == 0 || val[0] != ',') + return; + + val++; val_len--; + if (HAS_ENABLE_PARAM(func)) { + // "0/1" + if (val_len > 0) { + if (val[0] == '0') { + CFN_ACTIVE(cfn) = 0; + } else if (val[0] == '1') { + CFN_ACTIVE(cfn) = 1; + } + } + } else if (HAS_REPEAT_PARAM(func)) { + if (val_len == 2 + && val[0] == '1' + && val[1] == 'x') { + CFN_PLAY_REPEAT(cfn) = 0; + } else if (val_len == 3 + && val[0] == '!' + && val[1] == '1' + && val[2] == 'x') { + CFN_PLAY_REPEAT(cfn) = CFN_PLAY_REPEAT_NOSTART; + } else { + // repeat time in seconds + CFN_PLAY_REPEAT(cfn) = yaml_str2uint(val,val_len) / CFN_PLAY_REPEAT_MUL; + } + } +} + +static bool w_customFn(void* user, uint8_t* data, uint32_t bitoffs, + yaml_writer_func wf, void* opaque) +{ + return yaml_conv_220::w_customFn(user, data, bitoffs, wf, opaque); +} diff --git a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp index 71701b2e9..3e74004aa 100644 --- a/radio/src/storage/yaml/yaml_datastructs_nv14.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_nv14.cpp @@ -300,12 +300,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -318,8 +318,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t12.cpp b/radio/src/storage/yaml/yaml_datastructs_t12.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t12.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_t8.cpp b/radio/src/storage/yaml/yaml_datastructs_t8.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_t8.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_t8.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tlite.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp index 0eeb776c8..d0ac1fea4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_tx12.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_tx12.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x10.cpp b/radio/src/storage/yaml/yaml_datastructs_x10.cpp index 257354dad..9b75f76bc 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x10.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x10.cpp @@ -321,12 +321,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -339,8 +339,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp index 137208462..799be0adb 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x12s.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x12s.cpp @@ -321,12 +321,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "spare", 16 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 16 ), + YAML_SIGNED( "val2", 16 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -339,8 +339,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 48, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 48 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x7.cpp b/radio/src/storage/yaml/yaml_datastructs_x7.cpp index c2574a294..9d499655a 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x7.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x7.cpp @@ -293,12 +293,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -311,8 +311,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp index 0b9970996..07ee3dfab 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9d.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9d.cpp @@ -300,12 +300,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -318,8 +318,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp index 8bc031c56..bad636fc7 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9e.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9e.cpp @@ -339,12 +339,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -357,8 +357,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp index 90f31bfee..4a1e45244 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lite.cpp @@ -280,12 +280,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -298,8 +298,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp index 132ce7937..4c1cbd3e4 100644 --- a/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_x9lites.cpp @@ -288,12 +288,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -306,8 +306,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp index 866ede311..7f3878770 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlite.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlite.cpp @@ -285,12 +285,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -303,8 +303,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = { diff --git a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp index 58628036f..b9fe7315e 100644 --- a/radio/src/storage/yaml/yaml_datastructs_xlites.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_xlites.cpp @@ -287,12 +287,12 @@ static const struct YamlNode struct_anonymous_2[] = { YAML_SIGNED( "val", 16 ), YAML_UNSIGNED( "mode", 8 ), YAML_UNSIGNED( "param", 8 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "spare", 32 ), YAML_END }; static const struct YamlNode struct_anonymous_3[] = { YAML_SIGNED( "val1", 32 ), - YAML_PADDING( 32 ), + YAML_SIGNED( "val2", 32 ), YAML_END }; static const struct YamlNode union_anonymous_0_elmts[] = { @@ -305,8 +305,9 @@ static const struct YamlNode struct_CustomFunctionData[] = { YAML_IDX, YAML_SIGNED_CUST( "swtch", 9, r_swtchSrc, w_swtchSrc ), YAML_ENUM("func", 7, enum_Functions), - YAML_UNION("fp", 64, union_anonymous_0_elmts, select_custom_fn), - YAML_UNSIGNED( "active", 8 ), + YAML_CUSTOM("def",r_customFn,w_customFn), + YAML_PADDING( 64 ), + YAML_PADDING( 8 ), YAML_END }; static const struct YamlNode struct_string_24[] = {