mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-27 12:26:48 +01:00
Bangle.js: smooth out battery level readings
This commit is contained in:
parent
e476b8a701
commit
87c61948a6
@ -144,6 +144,8 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
private boolean realtimeHRM = false;
|
private boolean realtimeHRM = false;
|
||||||
private boolean realtimeStep = false;
|
private boolean realtimeStep = false;
|
||||||
private int realtimeHRMInterval = 30*60;
|
private int realtimeHRMInterval = 30*60;
|
||||||
|
/// Last battery percentage reported (or -1) to help with smoothing reported battery levels
|
||||||
|
private int lastBatteryPercent = -1;
|
||||||
|
|
||||||
private final LimitedQueue/*Long*/ mNotificationReplyAction = new LimitedQueue(16);
|
private final LimitedQueue/*Long*/ mNotificationReplyAction = new LimitedQueue(16);
|
||||||
|
|
||||||
@ -273,6 +275,7 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
|
|
||||||
getDevice().setFirmwareVersion("N/A");
|
getDevice().setFirmwareVersion("N/A");
|
||||||
getDevice().setFirmwareVersion2("N/A");
|
getDevice().setFirmwareVersion2("N/A");
|
||||||
|
lastBatteryPercent = -1;
|
||||||
|
|
||||||
LOG.info("Initialization Done");
|
LOG.info("Initialization Done");
|
||||||
|
|
||||||
@ -446,16 +449,25 @@ public class BangleJSDeviceSupport extends AbstractBTLEDeviceSupport {
|
|||||||
} break;
|
} break;
|
||||||
case "status": {
|
case "status": {
|
||||||
GBDeviceEventBatteryInfo batteryInfo = new GBDeviceEventBatteryInfo();
|
GBDeviceEventBatteryInfo batteryInfo = new GBDeviceEventBatteryInfo();
|
||||||
|
batteryInfo.state = BatteryState.UNKNOWN;
|
||||||
|
if (json.has("chg")) {
|
||||||
|
batteryInfo.state = (json.getInt("chg") == 1) ? BatteryState.BATTERY_CHARGING : BatteryState.BATTERY_NORMAL;
|
||||||
|
}
|
||||||
if (json.has("bat")) {
|
if (json.has("bat")) {
|
||||||
int b = json.getInt("bat");
|
int b = json.getInt("bat");
|
||||||
if (b < 0) b = 0;
|
if (b < 0) b = 0;
|
||||||
if (b > 100) b = 100;
|
if (b > 100) b = 100;
|
||||||
|
// smooth out battery level reporting (it can only go up if charging, or down if discharging)
|
||||||
|
// http://forum.espruino.com/conversations/379294
|
||||||
|
if (lastBatteryPercent<0) lastBatteryPercent = b;
|
||||||
|
if (batteryInfo.state == BatteryState.BATTERY_NORMAL && b > lastBatteryPercent)
|
||||||
|
b = lastBatteryPercent;
|
||||||
|
if (batteryInfo.state == BatteryState.BATTERY_CHARGING && b < lastBatteryPercent)
|
||||||
|
b = lastBatteryPercent;
|
||||||
|
lastBatteryPercent = b;
|
||||||
batteryInfo.level = b;
|
batteryInfo.level = b;
|
||||||
batteryInfo.state = BatteryState.BATTERY_NORMAL;
|
|
||||||
}
|
|
||||||
if (json.has("chg") && json.getInt("chg") == 1) {
|
|
||||||
batteryInfo.state = BatteryState.BATTERY_CHARGING;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (json.has("volt"))
|
if (json.has("volt"))
|
||||||
batteryInfo.voltage = (float) json.getDouble("volt");
|
batteryInfo.voltage = (float) json.getDouble("volt");
|
||||||
handleGBDeviceEvent(batteryInfo);
|
handleGBDeviceEvent(batteryInfo);
|
||||||
|
Loading…
Reference in New Issue
Block a user