diff --git a/apps/powermanager/ChangeLog b/apps/powermanager/ChangeLog index d5abdc79b..d660ed56d 100644 --- a/apps/powermanager/ChangeLog +++ b/apps/powermanager/ChangeLog @@ -14,3 +14,4 @@ Log additional timestamp for trace log 0.11: Minor code improvements 0.12: Round monotonic percentage, rename to stable percentage/voltage +0.13: Fix stable percentage not updating diff --git a/apps/powermanager/boot.js b/apps/powermanager/boot.js index 64267daa7..898b75cbc 100644 --- a/apps/powermanager/boot.js +++ b/apps/powermanager/boot.js @@ -3,7 +3,7 @@ require('Storage').readJSON("powermanager.default.json", true) || {}, require('Storage').readJSON("powermanager.json", true) || {} ); - + if (settings.log) { let logFile = require('Storage').open("powermanager.log","a"); let def = require('Storage').readJSON("powermanager.def.json", true) || {}; @@ -12,7 +12,7 @@ let hw = require('Storage').readJSON("powermanager.hw.json", true) || {}; if (!hw.start) hw.start = Date.now(); if (!hw.power) hw.power = {}; - + const saveEvery = 1000 * 60 * 5; const TO_WRAP = ["GPS","Compass","Barometer","HRM","LCD"]; @@ -28,9 +28,7 @@ require('Storage').writeJSON("powermanager.hw.json", hw); } } - - - + setInterval(save, saveEvery); E.on("kill", ()=>{ @@ -77,7 +75,6 @@ })(Bangle[functionName]); } - let wrapDeferred = ((o,t) => (a) => { if (a == eval || typeof a == "string") { return o.apply(this, arguments); @@ -133,25 +130,19 @@ handleCharging(Bangle.isCharging()); } - var savedBatPercent=E.getBattery(); if (settings.forceMonoPercentage){ - var newPercent =Math.round((E.getBattery()+E.getBattery()+E.getBattery()+E.getBattery()+E.getBattery()+E.getBattery())/6); - + var p = Math.round((E.getBattery()+E.getBattery()+E.getBattery()+E.getBattery())/4); + var op = E.getBattery; E.getBattery = function() { - - if(Bangle.isCharging()){ - if(newPercent > savedBatPercent) - savedBatPercent = newPercent; - }else{ - if(newPercent < savedBatPercent) - savedBatPercent = newPercent; - } - return savedBatPercent; - }; + var current = Math.round((op()+op()+op()+op())/4); + if (Bangle.isCharging() && current > p) p = current; + if (!Bangle.isCharging() && current < p) p = current; + return p; + }; } if (settings.forceMonoVoltage){ - var v = (NRF.getBattery()+NRF.getBattery()+NRF.getBattery()+NRF.getBattery()+NRF.getBattery()+NRF.getBattery())/6; + var v = (NRF.getBattery()+NRF.getBattery()+NRF.getBattery()+NRF.getBattery())/4; var ov = NRF.getBattery; NRF.getBattery = function() { var current = (ov()+ov()+ov()+ov())/4; diff --git a/apps/powermanager/metadata.json b/apps/powermanager/metadata.json index fed7e3bb3..49c77c9d8 100644 --- a/apps/powermanager/metadata.json +++ b/apps/powermanager/metadata.json @@ -2,7 +2,7 @@ "id": "powermanager", "name": "Power Manager", "shortName": "Power Manager", - "version": "0.12", + "version": "0.13", "description": "Allow configuration of warnings for battery charging, stabilization of voltage, stabilization of battery percentage, and battery logging.", "icon": "app.png", "type": "bootloader",