From 12e96e451f107cec032caf3a2f960e834cd64574 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 22 Mar 2022 12:07:03 +0100 Subject: [PATCH] Added Companion support --- companion/src/firmwares/edgetx/yaml_moduledata.cpp | 9 +++++++++ companion/src/firmwares/moduledata.cpp | 13 ++++++++++--- companion/src/firmwares/moduledata.h | 6 ++++++ companion/src/modeledit/setup.cpp | 3 +++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/companion/src/firmwares/edgetx/yaml_moduledata.cpp b/companion/src/firmwares/edgetx/yaml_moduledata.cpp index 809aa433b..c57ca04f2 100644 --- a/companion/src/firmwares/edgetx/yaml_moduledata.cpp +++ b/companion/src/firmwares/edgetx/yaml_moduledata.cpp @@ -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::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::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"]) { diff --git a/companion/src/firmwares/moduledata.cpp b/companion/src/firmwares/moduledata.cpp index 7a474cbbf..09cf7b604 100644 --- a/companion/src/firmwares/moduledata.cpp +++ b/companion/src/firmwares/moduledata.cpp @@ -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 }, }; QPairelmt; @@ -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")); diff --git a/companion/src/firmwares/moduledata.h b/companion/src/firmwares/moduledata.h index 10f83a807..70dd0c743 100644 --- a/companion/src/firmwares/moduledata.h +++ b/companion/src/firmwares/moduledata.h @@ -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; diff --git a/companion/src/modeledit/setup.cpp b/companion/src/modeledit/setup.cpp index e6a66798a..65989baed 100644 --- a/companion/src/modeledit/setup.cpp +++ b/companion/src/modeledit/setup.cpp @@ -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; }