Added Companion support

This commit is contained in:
Raphael Coeffic
2022-03-24 10:40:17 +01:00
committed by Raphael Coeffic
parent 7922afd9ca
commit 12e96e451f
4 changed files with 28 additions and 3 deletions
@@ -65,6 +65,7 @@ static const YamlLookupTable protocolLut = {
{ PULSES_SBUS, "TYPE_SBUS" },
{ PULSES_XJT_LITE_X16, "TYPE_XJT_LITE_PXX2" },
{ PULSES_AFHDS3, "TYPE_FLYSKY" },
{ PULSES_LEMON_DSMP, "LEMON_DSMP" },
};
static const YamlLookupTable xjtLut = {
@@ -308,6 +309,11 @@ Node convert<ModuleData>::encode(const ModuleData& rhs)
crsf["telemetryBaudrate"] = br.value;
mod["crsf"] = crsf;
} break;
case PULSES_LEMON_DSMP: {
Node dsmp;
dsmp["flags"] = rhs.dsmp.flags;
mod["dsmp"] = dsmp;
} break;
// TODO: afhds3, flysky
default: {
Node ppm;
@@ -419,6 +425,9 @@ bool convert<ModuleData>::decode(const Node& node, ModuleData& rhs)
YamlTelemetryBaudrate telemetryBaudrate;
crsf["telemetryBaudrate"] >> telemetryBaudrate.value;
telemetryBaudrate.toCpn(&rhs.crsf.telemetryBaudrate, getCurrentFirmware()->getBoard());
} else if (mod["dsmp"]) {
Node dsmp = mod["dsmp"];
dsmp["flags"] >> rhs.dsmp.flags;
} else if (mod["flysky"]) {
//TODO
} else if (mod["afhds3"]) {
+10 -3
View File
@@ -176,7 +176,8 @@ QString ModuleData::protocolToString(unsigned int protocol)
"FrSky ACCESS R9M Lite Pro",
"FrSky XJT lite (D16)", "FrSky XJT lite (D8)", "FrSky XJT lite (LR12)",
"AFHDS3",
"Ghost"
"Ghost",
"Lemon-Rx DSMP",
};
return CHECK_IN_ARRAY(strings, protocol);
@@ -260,6 +261,8 @@ int ModuleData::getMaxChannelCount()
break;
case PULSES_AFHDS3:
return 18;
case PULSES_LEMON_DSMP:
return 12;
case PULSES_OFF:
break;
default:
@@ -309,7 +312,9 @@ int ModuleData::getTypeFromProtocol(unsigned int protocol)
{ PULSES_XJT_LITE_D8, MODULE_TYPE_XJT_LITE_PXX2 },
{ PULSES_XJT_LITE_LR12, MODULE_TYPE_XJT_LITE_PXX2 },
{ PULSES_AFHDS3, MODULE_TYPE_FLYSKY }
{ PULSES_AFHDS3, MODULE_TYPE_FLYSKY },
{ PULSES_LEMON_DSMP, MODULE_TYPE_LEMON_DSMP },
};
QPair<int, int>elmt;
@@ -352,7 +357,8 @@ QString ModuleData::typeToString(int type)
"R9MLP ACCESS",
"SBUS",
"XJT Lite",
"FLYSKY"
"FLYSKY",
"Lemon-Rx DSMP",
};
return CHECK_IN_ARRAY(strings, type);
@@ -406,6 +412,7 @@ bool ModuleData::isProtocolAvailable(int moduleidx, unsigned int protocol, Gener
case PULSES_CROSSFIRE:
case PULSES_AFHDS3:
case PULSES_GHOST:
case PULSES_LEMON_DSMP:
return true;
case PULSES_ACCESS_R9M:
return IS_ACCESS_RADIO(board, id) || (IS_FAMILY_HORUS_OR_T16(board) && id.contains("externalaccessmod"));
+6
View File
@@ -47,6 +47,7 @@ enum ModuleType {
MODULE_TYPE_SBUS,
MODULE_TYPE_XJT_LITE_PXX2,
MODULE_TYPE_FLYSKY, //no more protocols possible because of 4 bits value
MODULE_TYPE_LEMON_DSMP,
MODULE_TYPE_COUNT,
MODULE_TYPE_MAX = MODULE_TYPE_COUNT - 1
};
@@ -83,6 +84,7 @@ enum PulsesProtocol {
PULSES_XJT_LITE_LR12,
PULSES_AFHDS3,
PULSES_GHOST,
PULSES_LEMON_DSMP,
PULSES_PROTOCOL_LAST
};
@@ -254,6 +256,10 @@ class ModuleData {
unsigned int racingMode;
} access;
struct DSMP {
unsigned int flags;
} dsmp;
void clear() { memset(this, 0, sizeof(ModuleData)); }
void convert(RadioDataConversionState & cstate);
bool isPxx2Module() const;
+3
View File
@@ -483,6 +483,9 @@ void ModulePanel::update()
mask |= MASK_CHANNELS_RANGE| MASK_CHANNELS_COUNT | MASK_FAILSAFES;
mask |= MASK_SUBTYPES | MASK_RX_FREQ | MASK_RF_POWER;
break;
case PULSES_LEMON_DSMP:
mask |= MASK_CHANNELS_RANGE;
break;
default:
break;
}