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 4307087b1..2555135b2 100644 Binary files a/radio/src/tests/model_25_tx16s.otx and b/radio/src/tests/model_25_tx16s.otx differ