diff --git a/radio/src/telemetry/frsky.h b/radio/src/telemetry/frsky.h index 589a6fa53..635a4e0a5 100644 --- a/radio/src/telemetry/frsky.h +++ b/radio/src/telemetry/frsky.h @@ -165,7 +165,8 @@ PACK(struct FrskySerialData { uint8_t gpsDistNeeded:1; // 1bits out of 16bits spare reused int8_t gpsFix:2; // 2bits out of 16bits spare reused: -1=never fixed, 0=not fixed now, 1=fixed uint8_t openXsensor:1; // 1bits out of 16bits spare reused: we receive data from the openXsensor - uint8_t cellsCount:4; // 4bits out of 16bits spare reused + uint8_t varioHighPrecision:1; + uint8_t spare6:3; int32_t gpsAltitude; @@ -173,12 +174,13 @@ PACK(struct FrskySerialData { uint16_t currentPrescale; uint16_t power; + uint8_t cellsCount; + uint8_t sensorCellsCount[2]; uint16_t cellVolts[12]; int16_t cellsSum; - uint8_t cellsState; + uint16_t cellsState; uint16_t minCellVolts; - bool varioHighPrecision; uint16_t airSpeed; uint16_t dTE; }); diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 16fa8b17b..361fa8146 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -279,8 +279,6 @@ bool checkSportPacket(uint8_t *packet) #define SPORT_DATA_U32(packet) (*((uint32_t *)(packet+4))) #define HUB_DATA_U16(packet) (*((uint16_t *)(packet+4))) -uint8_t noCellsSensor[2]; - void frskySportProcessPacket(uint8_t *packet) { uint8_t dataId = packet[0]; @@ -471,21 +469,21 @@ void frskySportProcessPacket(uint8_t *packet) if (dataId == DATA_ID_FLVSS) { // first sensor, remember its cell count - noCellsSensor[0] = cells; - cells += noCellsSensor[1]; + frskyData.hub.sensorCellsCount[0] = cells; + cells += frskyData.hub.sensorCellsCount[1]; } else { // second sensor connected - noCellsSensor[1] = cells; - cells += noCellsSensor[0]; - battnumber += noCellsSensor[0]; + frskyData.hub.sensorCellsCount[1] = cells; + cells += frskyData.hub.sensorCellsCount[0]; + battnumber += frskyData.hub.sensorCellsCount[0]; } if (cells != frskyData.hub.cellsCount) { frskySetCellsCount(cells); } - frskySetCellVoltage(battnumber, (frskyCellVoltage_t) ((data & 0x000FFF00) >> 8) / 5); + frskySetCellVoltage(battnumber, (frskyCellVoltage_t) ((data & 0x000FFF00) >> 8) / 5); if (useSecondCell) { frskySetCellVoltage(battnumber+1, (frskyCellVoltage_t) ((data & 0xFFF00000) >> 20) / 5); }