chores(flysky): Separate AFHDS2A and AFHDS3 into 2 different module type (#3783)
* chores(flysky): separate AFHDS2A and AFHDS3 into 2 different module type This should allow to remove some of the hacks added earlier. * chore: Add some EL18 CI bits * fix(afhds): cmake defs * fix(ci): add el18 to commit-tests.sh * chore(cpn): separate AFHDS2A and AFHDS3 * chore(cpn): remove binary import of afhds and legacy fxFreq field for afhds3 * fix(cpn): limit available internal afhds protocols to those supported by hardware * chore(cpn): update Flysky int module test * fix(cpn): compile error * fix(cpn): afhds2a max channels * fix: TR_MODULE_PROTOCOLS * enh(cpn): more support for afhds2a and 3 * fix(cpn): rebase compile error * fix(cpn): bit indexes * fix(cpn): emi toString * fix(cpn): limit available internal afhds protocols to those supported by hardware * enh(cpn): add support for Flysky EL18 * fix(cpn): available protocols * fix(cpn): rebase moduledata * chore(cpn): add module fields to model print * Separate AFHDS2A and AFHDS3 UI settings. * Fix AFHDS3 conversion from old subtype value. Fix 'Channel Range' layout on portrait LCD. * Fix name. --------- Co-authored-by: Peter Feerick <peter.feerick@gmail.com> Co-authored-by: elecpower <neilh713@tpg.com.au> Co-authored-by: Phil Mitchell <phil.a.mitchell@gmail.com>
This commit is contained in:
co-authored by
Peter Feerick
elecpower
Phil Mitchell
parent
9515d29c9d
commit
c4f1e7127d
@@ -21,11 +21,11 @@
|
||||
#include "moduledata.h"
|
||||
#include "eeprominterface.h"
|
||||
#include "multiprotocols.h"
|
||||
#include "afhds3.h"
|
||||
#include "radiodataconversionstate.h"
|
||||
#include "compounditemmodels.h"
|
||||
#include "generalsettings.h"
|
||||
#include "appdata.h"
|
||||
#include "helpers.h"
|
||||
|
||||
#include <QPair>
|
||||
#include <QVector>
|
||||
@@ -90,8 +90,10 @@ bool ModuleData::isAvailable(PulsesProtocol proto, int port)
|
||||
return fw->getCapability(HasIntModuleMulti);
|
||||
case PULSES_CROSSFIRE:
|
||||
return fw->getCapability(HasIntModuleCRSF) || fw->getCapability(HasIntModuleELRS);
|
||||
case PULSES_AFHDS3:
|
||||
return fw->getCapability(HasIntModuleFlySky);
|
||||
case PULSES_FLYSKY_AFHDS2A:
|
||||
return IS_FLYSKY_NV14(board);
|
||||
case PULSES_FLYSKY_AFHDS3:
|
||||
return IS_FLYSKY_EL18(board);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@@ -112,7 +114,8 @@ bool ModuleData::isAvailable(PulsesProtocol proto, int port)
|
||||
case PULSES_SBUS:
|
||||
case PULSES_MULTIMODULE:
|
||||
case PULSES_CROSSFIRE:
|
||||
case PULSES_AFHDS3:
|
||||
case PULSES_FLYSKY_AFHDS2A:
|
||||
case PULSES_FLYSKY_AFHDS3:
|
||||
case PULSES_GHOST:
|
||||
return true;
|
||||
case PULSES_ACCESS_R9M:
|
||||
@@ -263,8 +266,6 @@ QString ModuleData::subTypeToString(int type) const
|
||||
return CHECK_IN_ARRAY(ppmSubTypeStrings, type);
|
||||
case PULSES_PXX_R9M:
|
||||
return CHECK_IN_ARRAY(strings, type);
|
||||
case PULSES_AFHDS3:
|
||||
return Afhds3Data::protocolToString(type);
|
||||
default:
|
||||
return CPN_STR_UNKNOWN_ITEM;
|
||||
}
|
||||
@@ -273,7 +274,7 @@ QString ModuleData::subTypeToString(int type) const
|
||||
QString ModuleData::powerValueToString(Firmware * fw) const
|
||||
{
|
||||
const QStringList & strRef = powerValueStrings((enum PulsesProtocol)protocol, subType, fw);
|
||||
return strRef.value(protocol == PULSES_AFHDS3 ? afhds3.rfPower : pxx.power, CPN_STR_UNKNOWN_ITEM);
|
||||
return strRef.value(protocol == PULSES_FLYSKY_AFHDS3 ? afhds3.rfPower : pxx.power, CPN_STR_UNKNOWN_ITEM);
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -313,7 +314,7 @@ QString ModuleData::protocolToString(unsigned int protocol)
|
||||
tr("FrSky ACCESS R9M Lite"),
|
||||
tr("FrSky ACCESS R9M Lite Pro"),
|
||||
tr("FrSky XJT lite (D16)"), tr("FrSky XJT lite (D8)"), tr("FrSky XJT lite (LR12)"),
|
||||
tr("AFHDS3"),
|
||||
tr("Flysky AFHDS2A"), tr("Flysky AFHDS3"),
|
||||
tr("Ghost"),
|
||||
tr("Lemon-Rx DSMP"),
|
||||
};
|
||||
@@ -335,7 +336,7 @@ QStringList ModuleData::powerValueStrings(enum PulsesProtocol protocol, int subT
|
||||
};
|
||||
|
||||
switch(protocol) {
|
||||
case PULSES_AFHDS3:
|
||||
case PULSES_FLYSKY_AFHDS3:
|
||||
return afhds3Strings;
|
||||
default:
|
||||
int strIdx = 0;
|
||||
@@ -359,7 +360,8 @@ bool ModuleData::hasFailsafes(Firmware * fw) const
|
||||
protocol == PULSES_ACCESS_R9M_LITE_PRO ||
|
||||
protocol == PULSES_XJT_LITE_X16 ||
|
||||
protocol == PULSES_MULTIMODULE ||
|
||||
protocol == PULSES_AFHDS3
|
||||
protocol == PULSES_FLYSKY_AFHDS2A ||
|
||||
protocol == PULSES_FLYSKY_AFHDS3
|
||||
);
|
||||
}
|
||||
|
||||
@@ -397,7 +399,9 @@ int ModuleData::getMaxChannelCount()
|
||||
else
|
||||
return 16;
|
||||
break;
|
||||
case PULSES_AFHDS3:
|
||||
case PULSES_FLYSKY_AFHDS2A:
|
||||
return 14;
|
||||
case PULSES_FLYSKY_AFHDS3:
|
||||
return 18;
|
||||
case PULSES_LEMON_DSMP:
|
||||
return 12;
|
||||
@@ -450,7 +454,8 @@ 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_FLYSKY_AFHDS2A, MODULE_TYPE_FLYSKY_AFHDS2A },
|
||||
{ PULSES_FLYSKY_AFHDS3, MODULE_TYPE_FLYSKY_AFHDS3 },
|
||||
|
||||
{ PULSES_LEMON_DSMP, MODULE_TYPE_LEMON_DSMP },
|
||||
};
|
||||
@@ -495,7 +500,8 @@ QString ModuleData::typeToString(int type)
|
||||
"R9MLP ACCESS",
|
||||
"SBUS",
|
||||
"XJT Lite",
|
||||
"FLYSKY",
|
||||
"Flysky AFHDS2A",
|
||||
"Flysky AFHDS3",
|
||||
"Lemon-Rx DSMP",
|
||||
};
|
||||
|
||||
@@ -548,7 +554,8 @@ bool ModuleData::isProtocolAvailable(int moduleidx, unsigned int protocol, Gener
|
||||
case MODULE_TYPE_CROSSFIRE:
|
||||
case MODULE_TYPE_MULTIMODULE:
|
||||
case MODULE_TYPE_GHOST:
|
||||
case MODULE_TYPE_FLYSKY:
|
||||
case MODULE_TYPE_FLYSKY_AFHDS2A:
|
||||
case MODULE_TYPE_FLYSKY_AFHDS3:
|
||||
case MODULE_TYPE_LEMON_DSMP:
|
||||
case MODULE_TYPE_R9M_LITE_PXX1:
|
||||
case MODULE_TYPE_R9M_LITE_PXX2:
|
||||
@@ -570,7 +577,8 @@ bool ModuleData::isProtocolAvailable(int moduleidx, unsigned int protocol, Gener
|
||||
case MODULE_TYPE_CROSSFIRE:
|
||||
case MODULE_TYPE_MULTIMODULE:
|
||||
case MODULE_TYPE_GHOST:
|
||||
case MODULE_TYPE_FLYSKY:
|
||||
case MODULE_TYPE_FLYSKY_AFHDS2A:
|
||||
case MODULE_TYPE_FLYSKY_AFHDS3:
|
||||
case MODULE_TYPE_LEMON_DSMP:
|
||||
return true;
|
||||
default:
|
||||
@@ -683,3 +691,75 @@ AbstractStaticItemModel * ModuleData::telemetryBaudrateItemModel(unsigned int p
|
||||
mdl->loadItemList();
|
||||
return mdl;
|
||||
}
|
||||
|
||||
QString ModuleData::afhds2aMode1ToString() const
|
||||
{
|
||||
return afhds2aMode1List.at(Helpers::getBitmappedValue(flysky.mode, 0));
|
||||
}
|
||||
|
||||
QString ModuleData::afhds2aMode2ToString() const
|
||||
{
|
||||
return afhds2aMode2List.at(Helpers::getBitmappedValue(flysky.mode, 1));
|
||||
}
|
||||
|
||||
QString ModuleData::afhds3PhyModeToString() const
|
||||
{
|
||||
return afhds3PhyModeList.at(afhds3.phyMode);
|
||||
}
|
||||
|
||||
QString ModuleData::afhds3EmiToString() const
|
||||
{
|
||||
return afhds3EmiList.at(afhds3.emi - 1);
|
||||
}
|
||||
|
||||
AbstractStaticItemModel * ModuleData::afhds2aMode1ItemModel()
|
||||
{
|
||||
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
|
||||
mdl->setName("moduledata.afhds2aMode1");
|
||||
|
||||
for (int i = 0; i < afhds2aMode1List.size(); i++) {
|
||||
mdl->appendToItemList(afhds2aMode1List.at(i), i);
|
||||
}
|
||||
|
||||
mdl->loadItemList();
|
||||
return mdl;
|
||||
}
|
||||
|
||||
AbstractStaticItemModel * ModuleData::afhds2aMode2ItemModel()
|
||||
{
|
||||
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
|
||||
mdl->setName("moduledata.afhds2aMode2");
|
||||
|
||||
for (int i = 0; i < afhds2aMode2List.size(); i++) {
|
||||
mdl->appendToItemList(afhds2aMode2List.at(i), i);
|
||||
}
|
||||
|
||||
mdl->loadItemList();
|
||||
return mdl;
|
||||
}
|
||||
|
||||
AbstractStaticItemModel * ModuleData::afhds3PhyModeItemModel()
|
||||
{
|
||||
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
|
||||
mdl->setName("moduledata.afhds3PhyMode");
|
||||
|
||||
for (int i = 0; i < afhds3PhyModeList.size(); i++) {
|
||||
mdl->appendToItemList(afhds3PhyModeList.at(i), i);
|
||||
}
|
||||
|
||||
mdl->loadItemList();
|
||||
return mdl;
|
||||
}
|
||||
|
||||
AbstractStaticItemModel * ModuleData::afhds3EmiItemModel()
|
||||
{
|
||||
AbstractStaticItemModel * mdl = new AbstractStaticItemModel();
|
||||
mdl->setName("moduledata.afhds3Emi");
|
||||
|
||||
for (int i = 0; i < afhds3EmiList.size(); i++) {
|
||||
mdl->appendToItemList(afhds3EmiList.at(i), i + 1); // Note: 1 based
|
||||
}
|
||||
|
||||
mdl->loadItemList();
|
||||
return mdl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user