[Companion] Change instance only for FrSky telemetry (#6671) (#6677)

* [Companion] Change instance only for FrSky telemetry (#6671)

* same for all PXX1 modules
This commit is contained in:
Raphael Coeffic
2019-08-28 11:38:44 +02:00
committed by Bertrand Songis
parent 2546967df8
commit 40fe6022b4
3 changed files with 23 additions and 3 deletions
+14
View File
@@ -44,6 +44,20 @@ bool ModuleData::isPxx2Module() const
}
}
bool ModuleData::isPxx1Module() const
{
switch(protocol){
case PULSES_PXX_XJT_X16:
case PULSES_PXX_R9M:
case PULSES_PXX_R9M_LITE:
case PULSES_PXX_R9M_LITE_PRO:
return true;
default:
return false;
}
}
QString ModuleData::rfProtocolToString() const
{
switch (protocol) {
+1
View File
@@ -183,6 +183,7 @@ class ModuleData {
void clear() { memset(this, 0, sizeof(ModuleData)); }
void convert(RadioDataConversionState & cstate);
bool isPxx2Module() const;
bool isPxx1Module() const;
QString polarityToString() const { return ppm.pulsePol ? tr("Positive") : tr("Negative"); }
QString rfProtocolToString() const;
QString subTypeToString(int type = -1) const;
@@ -1856,10 +1856,11 @@ class CustomScreenField: public StructField {
class SensorField: public TransformedField {
public:
SensorField(DataField * parent, SensorData & sensor, Board::Type board, unsigned int version):
SensorField(DataField * parent, const ModelData& model, SensorData & sensor, Board::Type board, unsigned int version):
TransformedField(parent, internalField),
internalField(this, "Sensor"),
sensor(sensor),
model(model),
version(version),
_param(0)
{
@@ -1921,7 +1922,10 @@ class SensorField: public TransformedField {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) {
sensor.id = _id;
sensor.subid = _subid;
sensor.instance = (_instance & 0x1F) + (version <= 218 ? -1 : 0); // 5 bits instance
if (model.moduleData[0].isPxx1Module() || model.moduleData[1].isPxx1Module())
sensor.instance = (_instance & 0x1F) + (version <= 218 ? -1 : 0); // 5 bits instance
else
sensor.instance = _instance;
sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx idx
sensor.moduleIdx = (_instance >> 7) & 0x1; // 1 bit module idx
sensor.ratio = _ratio;
@@ -1954,6 +1958,7 @@ class SensorField: public TransformedField {
protected:
StructField internalField;
SensorData & sensor;
const ModelData& model;
unsigned int version;
unsigned int _id;
unsigned int _subid;
@@ -2426,7 +2431,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, Board::Type board, unsig
}
for (int i=0; i<MAX_TELEMETRY_SENSORS(board, version); ++i) {
internalField.Append(new SensorField(this, modelData.sensorData[i], board, version));
internalField.Append(new SensorField(this, modelData, modelData.sensorData[i], board, version));
}
if (IS_TARANIS_X9E(board)) {