From bf1bc864ae22818cb2f92dc745295731c90aee5b Mon Sep 17 00:00:00 2001 From: Petr Ledvina Date: Wed, 28 Jan 2015 17:28:32 +0100 Subject: [PATCH] Send current meter reading as signed value Use signed value normally, truncate to 0-0xffff when multiwiiCurrentMeterOutput is active --- src/main/io/serial_msp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index a9eff4df27..739cef67db 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -830,9 +830,9 @@ static bool processOutCommand(uint8_t cmdMSP) serialize16((uint16_t)constrain(mAhDrawn, 0, 0xFFFF)); // milliamphours drawn from battery serialize16(rssi); if(masterConfig.batteryConfig.multiwiiCurrentMeterOutput) { - serialize16((uint16_t)constrain((ABS(amperage) * 10), 0, 0xFFFF)); // send amperage in 0.001 A steps + serialize16((uint16_t)constrain(amperage * 10, 0, 0xFFFF)); // send amperage in 0.001 A steps. Negative range is truncated to zero } else - serialize16((uint16_t)constrain(ABS(amperage), 0, 0xFFFF)); // send amperage in 0.01 A steps + serialize16((int16_t)constrain(amperage, -0x8000, 0x7FFF)); // send amperage in 0.01 A steps, range is -320A to 320A break; case MSP_RC_TUNING: headSerialReply(7);