diff --git a/modules/power_usage.js b/modules/power_usage.js new file mode 100644 index 000000000..df2dd5324 --- /dev/null +++ b/modules/power_usage.js @@ -0,0 +1,15 @@ +exports.get = function () { + var pwr = E.getPowerUsage(); + var batt = E.getBattery(); + var usage = 0; + for (var key in pwr.device) { + if (!/^(LCD|LED)/.test(key)) + usage += pwr.device[key]; + } + var hrsLeft = 175000 * batt / (100 * usage); + return { + usage: usage, + hrsLeft: hrsLeft, + batt: batt, + }; +}; diff --git a/modules/power_usage.ts b/modules/power_usage.ts new file mode 100644 index 000000000..c87420d25 --- /dev/null +++ b/modules/power_usage.ts @@ -0,0 +1,28 @@ +type PowerUsage = { + usage: number, + hrsLeft: number, + batt: number, // battery percentage +}; + +type PowerUsageModule = { + get: () => PowerUsage, +}; + +exports.get = (): PowerUsage => { + const pwr = E.getPowerUsage(); + const batt = E.getBattery(); + let usage = 0; + for(const key in pwr.device){ + if(!/^(LCD|LED)/.test(key)) + usage += pwr.device[key]; + } + + // 175mAh, scaled based on battery (batt/100), scaled down based on usage + const hrsLeft = 175000 * batt / (100 * usage); + + return { + usage, + hrsLeft, + batt, + }; +}; diff --git a/typescript/types/modules.d.ts b/typescript/types/modules.d.ts index ad3612117..e8aa15ac1 100644 --- a/typescript/types/modules.d.ts +++ b/typescript/types/modules.d.ts @@ -5,3 +5,4 @@ declare function require(moduleName: "sched"): typeof Sched; declare function require(moduleName: "ClockFace"): typeof ClockFace_.ClockFace; declare function require(moduleName: "clock_info"): typeof ClockInfo; declare function require(moduleName: "Layout"): typeof Layout.Layout; +declare function require(moduleName: "power_usage"): PowerUsageModule;