Move analogInputNamesLookupTable to Firmware

This commit is contained in:
elecpower
2021-12-31 10:53:09 +01:00
committed by Raphael Coeffic
parent d636487663
commit df4a4a6960
5 changed files with 86 additions and 70 deletions
+55 -55
View File
@@ -510,73 +510,73 @@ QString Boards::getAxisName(int index)
return CPN_STR_UNKNOWN_ITEM;
}
#define ANALOGINDEXNAMEENTRY(name) tbl.push_back( { cnt++, name } );
#define ADDINDEXNAMEPAIR(name) tbl.push_back( { cnt++, name } );
AnalogIndexNamesLookupTable Boards::getAnalogNamesLookupTable(Board::Type board)
Int2StringMappingTable Boards::getAnalogNamesLookupTable(Board::Type board)
{
AnalogIndexNamesLookupTable tbl;
Int2StringMappingTable tbl;
int cnt = 0;
if (getBoardCapability(board, Board::Sticks)) {
ANALOGINDEXNAMEENTRY("Rud")
ANALOGINDEXNAMEENTRY("Ele")
ANALOGINDEXNAMEENTRY("Thr")
ANALOGINDEXNAMEENTRY("Ail")
ADDINDEXNAMEPAIR("Rud")
ADDINDEXNAMEPAIR("Ele")
ADDINDEXNAMEPAIR("Thr")
ADDINDEXNAMEPAIR("Ail")
}
if (IS_SKY9X(board)) {
ANALOGINDEXNAMEENTRY("P1")
ANALOGINDEXNAMEENTRY("P2")
ANALOGINDEXNAMEENTRY("P3")
ADDINDEXNAMEPAIR("P1")
ADDINDEXNAMEPAIR("P2")
ADDINDEXNAMEPAIR("P3")
}
else if (IS_TARANIS_X9E(board)) {
ANALOGINDEXNAMEENTRY("F1")
ANALOGINDEXNAMEENTRY("F2")
ANALOGINDEXNAMEENTRY("F3")
ANALOGINDEXNAMEENTRY("F4")
ANALOGINDEXNAMEENTRY("S1")
ANALOGINDEXNAMEENTRY("S2")
ANALOGINDEXNAMEENTRY("LS")
ANALOGINDEXNAMEENTRY("RS")
ADDINDEXNAMEPAIR("F1")
ADDINDEXNAMEPAIR("F2")
ADDINDEXNAMEPAIR("F3")
ADDINDEXNAMEPAIR("F4")
ADDINDEXNAMEPAIR("S1")
ADDINDEXNAMEPAIR("S2")
ADDINDEXNAMEPAIR("LS")
ADDINDEXNAMEPAIR("RS")
}
else if (IS_TARANIS_XLITE(board)) {
ANALOGINDEXNAMEENTRY("S1")
ANALOGINDEXNAMEENTRY("S2")
ANALOGINDEXNAMEENTRY("GyrX")
ANALOGINDEXNAMEENTRY("GyrY")
ADDINDEXNAMEPAIR("S1")
ADDINDEXNAMEPAIR("S2")
ADDINDEXNAMEPAIR("GyrX")
ADDINDEXNAMEPAIR("GyrY")
}
else if (IS_TARANIS(board)) {
ANALOGINDEXNAMEENTRY("S1")
ANALOGINDEXNAMEENTRY("S2")
ANALOGINDEXNAMEENTRY("S3")
ANALOGINDEXNAMEENTRY("LS")
ANALOGINDEXNAMEENTRY("RS")
ADDINDEXNAMEPAIR("S1")
ADDINDEXNAMEPAIR("S2")
ADDINDEXNAMEPAIR("S3")
ADDINDEXNAMEPAIR("LS")
ADDINDEXNAMEPAIR("RS")
}
else if (IS_HORUS_X12S(board)) {
ANALOGINDEXNAMEENTRY("S1")
ANALOGINDEXNAMEENTRY("6P")
ANALOGINDEXNAMEENTRY("S2")
ANALOGINDEXNAMEENTRY("L1")
ANALOGINDEXNAMEENTRY("L2")
ANALOGINDEXNAMEENTRY("LS")
ANALOGINDEXNAMEENTRY("RS")
ANALOGINDEXNAMEENTRY("JSx")
ANALOGINDEXNAMEENTRY("JSy")
ADDINDEXNAMEPAIR("S1")
ADDINDEXNAMEPAIR("6P")
ADDINDEXNAMEPAIR("S2")
ADDINDEXNAMEPAIR("L1")
ADDINDEXNAMEPAIR("L2")
ADDINDEXNAMEPAIR("LS")
ADDINDEXNAMEPAIR("RS")
ADDINDEXNAMEPAIR("JSx")
ADDINDEXNAMEPAIR("JSy")
}
else if (IS_FLYSKY_NV14(board)) {
ANALOGINDEXNAMEENTRY("VRA")
ANALOGINDEXNAMEENTRY("VRB")
ADDINDEXNAMEPAIR("VRA")
ADDINDEXNAMEPAIR("VRB")
}
else if (IS_HORUS_X10(board) || IS_FAMILY_T16(board)) {
ANALOGINDEXNAMEENTRY("S1")
ANALOGINDEXNAMEENTRY("6P")
ANALOGINDEXNAMEENTRY("S2")
ANALOGINDEXNAMEENTRY("EX1")
ANALOGINDEXNAMEENTRY("EX2" )
//ANALOGINDEXNAMEENTRY("EX3") // not yet implemented
//ANALOGINDEXNAMEENTRY("EX4") // not yet implemented
ANALOGINDEXNAMEENTRY("LS")
ANALOGINDEXNAMEENTRY("RS")
ADDINDEXNAMEPAIR("S1")
ADDINDEXNAMEPAIR("6P")
ADDINDEXNAMEPAIR("S2")
ADDINDEXNAMEPAIR("EX1")
ADDINDEXNAMEPAIR("EX2" )
//ADDINDEXNAMEPAIR("EX3") // not yet implemented
//ADDINDEXNAMEPAIR("EX4") // not yet implemented
ADDINDEXNAMEPAIR("LS")
ADDINDEXNAMEPAIR("RS")
}
return tbl;
@@ -584,15 +584,15 @@ AnalogIndexNamesLookupTable Boards::getAnalogNamesLookupTable(Board::Type board)
int Boards::getAnalogInputIndex(Board::Type board, char * name)
{
AnalogIndexNamesLookupTable lut = getAnalogNamesLookupTable(board);
Int2StringMappingTable tbl = getAnalogNamesLookupTable(board);
const auto& it =
find_if(lut.begin(), lut.end(), [=](const AnalogIndexNamesLookupElmt& elmt) {
if (elmt.second == name) return true;
find_if(tbl.begin(), tbl.end(), [=](const Int2StringMapping& row) {
if (row.second == name) return true;
return false;
});
if (it != lut.end()) {
if (it != tbl.end()) {
return it->first;
}
@@ -601,15 +601,15 @@ int Boards::getAnalogInputIndex(Board::Type board, char * name)
QString Boards::getAnalogInputName(Board::Type board, int index)
{
AnalogIndexNamesLookupTable lut = getAnalogNamesLookupTable(board);
Int2StringMappingTable tbl = getAnalogNamesLookupTable(board);
const auto& it =
find_if(lut.begin(), lut.end(), [=](const AnalogIndexNamesLookupElmt& elmt) {
if (elmt.first == index) return true;
find_if(tbl.begin(), tbl.end(), [=](const Int2StringMapping& row) {
if (row.first == index) return true;
return false;
});
if (it != lut.end()) {
if (it != tbl.end()) {
return QString::fromUtf8(it->second.data(), it->second.size());
}
+2 -7
View File
@@ -19,14 +19,12 @@
*/
#pragma once
#include "datahelpers.h"
#include <QtCore>
#include <QObject>
#include <QString>
#include <string>
#include <vector>
class AbstractStaticItemModel;
// identiying names of static abstract item models
@@ -177,9 +175,6 @@ namespace Board {
}
typedef std::pair<int, std::string> AnalogIndexNamesLookupElmt;
typedef std::vector<AnalogIndexNamesLookupElmt> AnalogIndexNamesLookupTable;
class Boards
{
Q_DECLARE_TR_FUNCTIONS(Boards)
@@ -208,7 +203,7 @@ class Boards
static Board::SwitchInfo getSwitchInfo(Board::Type board, int index);
static int getCapability(Board::Type board, Board::Capability capability);
static QString getAxisName(int index);
static AnalogIndexNamesLookupTable getAnalogNamesLookupTable(Board::Type board);
static Int2StringMappingTable getAnalogNamesLookupTable(Board::Type board);
static int getAnalogInputIndex(Board::Type board, char * name);
static QString getAnalogInputName(Board::Type board, int index);
static bool isBoardCompatible(Board::Type board1, Board::Type board2);
+5
View File
@@ -21,6 +21,11 @@
#pragma once
#include <QtCore>
#include <string>
#include <vector>
typedef std::pair<int, std::string> Int2StringMapping;
typedef std::vector<Int2StringMapping> Int2StringMappingTable;
class FieldRange
{
@@ -66,10 +66,9 @@ bool convert<CalibData>::decode(const Node& node, CalibData& rhs)
Node convert<YamlCalibData>::encode(const YamlCalibData& rhs)
{
Node node;
// TODO: for efficiency construct once at an outer level possibly add to Firmware?
const YamlLookupTable calibIdxLut = Boards::getAnalogNamesLookupTable(getCurrentBoard());
const YamlLookupTable* calibIdxLut = getCurrentFirmware()->getAnalogIndexNamesLookupTable();
// TODO: we need something better here!
for (const auto& kv : calibIdxLut) {
for (const auto& kv : *calibIdxLut) {
node[kv.second] = rhs.calib[kv.first];
}
return node;
@@ -78,11 +77,13 @@ Node convert<YamlCalibData>::encode(const YamlCalibData& rhs)
bool convert<YamlCalibData>::decode(const Node& node, YamlCalibData& rhs)
{
if (!node.IsMap()) return false;
// TODO: for efficiency construct once at an outer level possibly add to Firmware?
const YamlLookupTable calibIdxLut = Boards::getAnalogNamesLookupTable(getCurrentBoard());
const YamlLookupTable* calibIdxLut = getCurrentFirmware()->getAnalogIndexNamesLookupTable();
//for_each(calibIdxLut->begin(), calibIdxLut->end(), [=](const Int2StringMapping& row) {
// qDebug() << "index:" << row.first << "value:" << row.second.c_str();
// });
int idx = 0;
for (const auto& kv : node) {
kv.first >> calibIdxLut >> idx;
kv.first >> *calibIdxLut >> idx;
kv.second >> rhs.calib[idx];
}
return true;
+17 -2
View File
@@ -26,6 +26,7 @@
#include "radiodata.h"
#include "../../radio/src/definitions.h"
#include "simulatorinterface.h"
#include "datahelpers.h"
#include <QtCore>
#include <QStringList>
@@ -287,8 +288,15 @@ class Firmware
board(board),
variantBase(0),
base(base),
eepromInterface(nullptr)
{ }
eepromInterface(nullptr),
analogInputNamesLookupTable(Boards::getAnalogNamesLookupTable(board))
{
/* qDebug() << "board:" << Boards::getBoardName(board);
* for_each(analogInputNamesLookupTable.begin(), analogInputNamesLookupTable.end(), [=](const Int2StringMapping& row) {
* qDebug() << "index:" << row.first << "value:" << row.second.c_str();
* });
*/
}
virtual ~Firmware() { }
@@ -395,6 +403,11 @@ class Firmware
currentVariant = value;
}
const Int2StringMappingTable * getAnalogIndexNamesLookupTable()
{
return &analogInputNamesLookupTable;
}
protected:
QString id;
QString name;
@@ -402,6 +415,7 @@ class Firmware
unsigned int variantBase;
Firmware * base;
EEPROMInterface * eepromInterface;
const Int2StringMappingTable analogInputNamesLookupTable;
QList<const char *> languages;
//QList<const char *> ttslanguages;
OptionsList opts;
@@ -409,6 +423,7 @@ class Firmware
static QVector<Firmware *> registeredFirmwares;
static Firmware * defaultVariant;
static Firmware * currentVariant;
};
inline Firmware * getCurrentFirmware()