1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-21 15:25:36 +03:00

fix crsf mah telemetry

This commit is contained in:
Steffen Windoffer 2017-08-30 10:03:12 +02:00
parent 36133164e2
commit 1d3a2f253e
2 changed files with 11 additions and 6 deletions

View file

@ -135,7 +135,7 @@ void crsfFrameGps(sbuf_t *dst)
Payload: Payload:
uint16_t Voltage ( mV * 100 ) uint16_t Voltage ( mV * 100 )
uint16_t Current ( mA * 100 ) uint16_t Current ( mA * 100 )
uint24_t Capacity ( mAh ) uint24_t Fuel ( drawn mAh )
uint8_t Battery remaining ( percent ) uint8_t Battery remaining ( percent )
*/ */
void crsfFrameBatterySensor(sbuf_t *dst) void crsfFrameBatterySensor(sbuf_t *dst)
@ -145,11 +145,11 @@ void crsfFrameBatterySensor(sbuf_t *dst)
sbufWriteU8(dst, CRSF_FRAMETYPE_BATTERY_SENSOR); sbufWriteU8(dst, CRSF_FRAMETYPE_BATTERY_SENSOR);
sbufWriteU16BigEndian(dst, getBatteryVoltage()); // vbat is in units of 0.1V sbufWriteU16BigEndian(dst, getBatteryVoltage()); // vbat is in units of 0.1V
sbufWriteU16BigEndian(dst, getAmperage() / 10); sbufWriteU16BigEndian(dst, getAmperage() / 10);
const uint32_t batteryCapacity = batteryConfig()->batteryCapacity; const uint32_t mAhDrawn = getMAhDrawn();
const uint8_t batteryRemainingPercentage = calculateBatteryPercentageRemaining(); const uint8_t batteryRemainingPercentage = calculateBatteryPercentageRemaining();
sbufWriteU8(dst, (batteryCapacity >> 16)); sbufWriteU8(dst, (mAhDrawn >> 16));
sbufWriteU8(dst, (batteryCapacity >> 8)); sbufWriteU8(dst, (mAhDrawn >> 8));
sbufWriteU8(dst, (uint8_t)batteryCapacity); sbufWriteU8(dst, (uint8_t)mAhDrawn);
sbufWriteU8(dst, batteryRemainingPercentage); sbufWriteU8(dst, batteryRemainingPercentage);
} }

View file

@ -58,6 +58,7 @@ extern "C" {
uint16_t testBatteryVoltage = 0; uint16_t testBatteryVoltage = 0;
int32_t testAmperage = 0; int32_t testAmperage = 0;
int32_t testmAhDrawn = 0;
serialPort_t *telemetrySharedPort; serialPort_t *telemetrySharedPort;
PG_REGISTER(batteryConfig_t, batteryConfig, PG_BATTERY_CONFIG, 0); PG_REGISTER(batteryConfig_t, batteryConfig, PG_BATTERY_CONFIG, 0);
@ -155,7 +156,7 @@ TEST(TelemetryCrsfTest, TestBattery)
testBatteryVoltage = 33; // 3.3V = 3300 mv testBatteryVoltage = 33; // 3.3V = 3300 mv
testAmperage = 2960; // = 29.60A = 29600mA - amperage is in 0.01A steps testAmperage = 2960; // = 29.60A = 29600mA - amperage is in 0.01A steps
batteryConfigMutable()->batteryCapacity = 1234; testmAhDrawn = 1234;
frameLen = getCrsfFrame(frame, CRSF_FRAMETYPE_BATTERY_SENSOR); frameLen = getCrsfFrame(frame, CRSF_FRAMETYPE_BATTERY_SENSOR);
voltage = frame[3] << 8 | frame[4]; // mV * 100 voltage = frame[3] << 8 | frame[4]; // mV * 100
EXPECT_EQ(33, voltage); EXPECT_EQ(33, voltage);
@ -318,4 +319,8 @@ uint8_t calculateBatteryPercentageRemaining(void) {
return 67; return 67;
} }
int32_t getMAhDrawn(void){
return testmAhDrawn;
}
} }