Fixed multi sub proto parsing

This commit is contained in:
Raphael Coeffic
2021-11-10 11:07:03 +01:00
parent b72428bdba
commit 88a9b1c6d9
3 changed files with 16 additions and 7 deletions
@@ -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 {
+11 -3
View File
@@ -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);
Binary file not shown.