From 88a9b1c6d91d75e0eb7d76e994549ac4ee66f2b0 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 30 Oct 2021 14:41:08 +0200 Subject: [PATCH] Fixed multi sub proto parsing --- .../storage/yaml/yaml_datastructs_funcs.cpp | 9 +++++---- radio/src/tests/conversions.cpp | 14 +++++++++++--- radio/src/tests/model_25_tx16s.otx | Bin 1649 -> 1444 bytes 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 8ae0fd207..940bd2cae 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -1241,15 +1241,16 @@ static void r_modSubtype(void* user, uint8_t* data, uint32_t bitoffs, int type = yaml_str2uint(val, l_sep); val += l_sep; val_len -= l_sep; - if (!val_len || val[0] != '.') return; + 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; - + if (type > 0) { + md->setMultiProtocol(type - 1); + 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 { diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index 831859572..530ae81b8 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -434,6 +434,14 @@ TEST(Conversions, ConversionTX16SFrom25) EXPECT_STRNEQ("Model", g_model.header.name); + EXPECT_EQ(MODULE_SUBTYPE_MULTI_FRSKY, g_model.moduleData[0].getMultiProtocol()); + EXPECT_EQ(MM_RF_FRSKY_SUBTYPE_D8_CLONED, g_model.moduleData[0].subType); + EXPECT_EQ(-12, g_model.moduleData[0].multi.optionValue); + + EXPECT_EQ(MODULE_TYPE_XJT_PXX1, g_model.moduleData[1].type); + EXPECT_EQ(MODULE_SUBTYPE_PXX1_ACCST_LR12, g_model.moduleData[1].subType); + EXPECT_EQ(4, g_model.moduleData[1].channelsCount); // 4 + 8 = 12 + const auto& top_widget = g_model.topbarData.zones[3]; EXPECT_STRNEQ("Value", top_widget.widgetName); @@ -445,9 +453,9 @@ TEST(Conversions, ConversionTX16SFrom25) EXPECT_EQ(ZOV_Color, color_option.type); EXPECT_EQ(0xFFFF, color_option.value.unsignedValue); - char modelname3[] = "model3.bin"; - convertBinModelData(modelname3, 220); - loadModel(modelname3); + char modelname2[] = "model2.bin"; + convertBinModelData(modelname2, 220); + loadModel(modelname2); EXPECT_EQ(LS_FUNC_EDGE, g_model.logicalSw[0].func); EXPECT_EQ(SWSRC_SF2, g_model.logicalSw[0].v1); diff --git a/radio/src/tests/model_25_tx16s.otx b/radio/src/tests/model_25_tx16s.otx index 4307087b125e22c626fe97b6f6a65e6996cb8a5c..2555135b279fff61ba1ba0affe95234ebfde1046 100644 GIT binary patch literal 1444 zcmWIWW@Zs#U|`^2cvKh{>}Bqtkp<-SF*7jm1L+_~7f*lvqQsQUe7&U1ytkLMxf&cK zSROdeKAE&Z(zofXjzlio=0DvWc3qAeelYMqGyTFe&*><8b;H$d@lt88LP{U6eYj-Z zkE#4$dzHVM1h}VPVK}g!6QgaN!4!dcaeaJ!P_{aDp7H(Ou<$bbV z)BQ?c-EwMoTDsI@{x%0DQ6<6I&EImr?7b5Hc(%aZt1lj8mVCJ4_@~Zk$N#_Y5^Z;Q zZ=OFp@9mFO)7%Od&D>-rc2YY{bpMRGQ@Uqav!|gE1I7?U2M|P*y*uLdpm8K_#JxK`Ry8?tL08h? z^OEMJtj1-&KWk6CJNMn%zRtS+=3M*NY-hiGKXml=>CQd=uS5k_1k8<3KPLPBD%;ih zQ>U?QSo?JDEjQByLEX2vdf&D@WjoS%@WuiUtq1egdC5JD(^0D2!}%@M_fyR~)q9?C z$JQIapQc{PdVN{__V+s{P3PUdO>5uWI^Oz?$;?d(CkhMYCS3MnIrV1Jq#p5{6O($M zm#ExHUvtUXNPuOgPu;U!!54%V-(^c_+9_~<=juK088UL_ew`@x#eK_%8FE(EM_&lm zJNav$`RR3hEt9s0tEkaKpV+AN=gpg@%gz;DweJ4RG}cYe${8Hn9$c@xY3Jk~wB?`t zF*!L)gZEC|`<@vu{kEOmK<5(Q+`590FB?t;20q|P4y`?LMW*6K$N>)jBK{&Vh0Gah zPm*FZH6vFZ3r-h)$1Q4jX3@pfmyKMxkJu!MEppp8;q}Vmu*|CstP7XvST4^yX}Nsu z-Z@*Y>rVA)@ON72y)6CkRLONpr_JuR=^fp9$%yZ+-#$&H#cG^VkKS$ZmpYrnaEmAW zRMLyz3%Hl+3H3WfxwvgonIW9J(`zz&cIbvjF`8|!Eo_%gI~gtT%F1Eh*~R-F$Z!d+ znc!>A6SOqtJ9o?EwbcenVQb?)CYJ1~T=G`yIrIKa;%m4#KIKnQo_3tEe$k|}Dp$Im zoL#s2+ufDQXZ7nJEMj%!OL^a^CH$zB^^qxqqW}vKS!UZP`$bILqNF>&EZqO^>Q(y=cLbbmYR?|D|U@98Pl zi)~e&Gb;s_3C`dI8o~%l)<6x|izT205W8Z&o&t3Kk&z38be2)i5vs07-a6HUIzs literal 1649 zcmWIWW@Zs#U|`^2@U@5w-WJSSZhlH?PO)A|MM-D~Cj;}t zi#3Ulfw;7Sn}Lz#DlwI9^XDz)85$j;D5b3Tbjgj z%cX`(HJ2)~o_La!kRZg$y>HLi0uH6Qvz9A3cyI4%n#lMs+}OZFDM;2;!Q5We^mu^2 zrZK=ag35JA$A>558 zPSzymoWgM9+nfH`hYTc+e^md+$jZNIvi^bD>b8}kHymeZI4`@s_Ck}>(nmr!?zO#l zjqlA*dc#_Bt@4CeYa}<{&pNM@ljS{UMJslGiLSoA-sIOr`IbqV@l$3`Ey@c!yE}62 zgtuu73>GI&dtchZ7rT{P?WF!`zIm$OjV0d40bR<#FriKBPo2cK7Pu zKegjYF^N63_~ZJ$vJB#tAMPnHjy}BX&HBJypN}rp?o0cekoom)^yK}L5_=7PmBygwbO4?aaXZO93Ls{k;q4{yK0Xsm7q|n5tTu))Dp^X`Y)U%?YjIK;8pHX|$8n zom>7A+uU^|dO0U8*mEE_^`LU2csEB}KvQL?ppE$lq4%u%kIiP39~a!ylzZvjGv??I zoBrL4J8F74|DWE63o^l$O$sNz#PIB9NYN40*zD|O5VuLu+a&J7#DW7i7R^pj;3%@Q zJn?nef`u1fwp5m?=1rSI%6UrL#|!8SXl2{vvO(<^2~sLKAwG z>|5s)KU??4WZLX|tJj^9GQIuw+-A0$WxErnx6Sdb<2`jwGf%}+@?YYcCnqLWhTr;P zI$yJNpZ%;Wg-VCStx9V`N-mwuoao1Axm&_i+^CdWE?V@$AA|jldQ2*&vF$NB0YP3N zo4%d7)!H88YO;65*Ylb)7cthzZR7~ljX&}AD(m7cOAm5|7q`s_Ha#-u^RYs|s_Sc~ zmNcA?IhnmH`Owx@2iI$7wH!3%G*pu-8MarZgs8_&j-PvPa+LP##!UhmnODnW19nad z?{ro;tE?RPNcUsZy30@QmGSmeEKoVSZOy((r=Q3clnN`He-;>D$k$q6c5>a@>Xkv8 zzVo+C&9zYfKC>q6LW?W^U1SkhE0LwUrC5<2!W{JoODG|}qHL|Ig1s}vz zkaFt9L00^P&J3i2=jFI{C@