Set intervals to trigger aligned to real time (i.e. 60000 on the full minute)
parent
bff3564926
commit
01eef85199
|
|
@ -369,7 +369,7 @@ var requestedDraws = 0;
|
||||||
var isDrawing = false;
|
var isDrawing = false;
|
||||||
|
|
||||||
function initialDraw(){
|
function initialDraw(){
|
||||||
print("Free memory", process.memory(false).free);
|
//print("Free memory", process.memory(false).free);
|
||||||
requestedDraws++;
|
requestedDraws++;
|
||||||
if (!isDrawing){
|
if (!isDrawing){
|
||||||
//print(new Date().toISOString(), "Can draw,", requestedDraws, "draws requested so far");
|
//print(new Date().toISOString(), "Can draw,", requestedDraws, "draws requested so far");
|
||||||
|
|
@ -391,6 +391,7 @@ function handleHrm(e){
|
||||||
if (e.confidence > 70){
|
if (e.confidence > 70){
|
||||||
pulse = e.bpm;
|
pulse = e.bpm;
|
||||||
if (!redrawEvents || redrawEvents.includes("HRM")){
|
if (!redrawEvents || redrawEvents.includes("HRM")){
|
||||||
|
//print("Redrawing on HRM");
|
||||||
initialDraw();
|
initialDraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -401,14 +402,34 @@ function handlePressure(e){
|
||||||
temp = e.temperature;
|
temp = e.temperature;
|
||||||
press = e.pressure;
|
press = e.pressure;
|
||||||
if (!redrawEvents || redrawEvents.includes("pressure")){
|
if (!redrawEvents || redrawEvents.includes("pressure")){
|
||||||
|
//print("Redrawing on pressure");
|
||||||
initialDraw();
|
initialDraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var unlockedDrawInterval;
|
|
||||||
|
|
||||||
var lockedRedraw = getByPath(face, ["Properties","Redraw","Locked"]);
|
function getMatchedWaitingTime(time){
|
||||||
var unlockedRedraw = getByPath(face, ["Properties","Redraw","Unlocked"]);
|
var result = time - (Date.now() % time);
|
||||||
|
//print("Matched timeout", time, result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function setMatchedInterval(callable, time, intervalHandler){
|
||||||
|
//print("Setting matched timeout for", time);
|
||||||
|
setTimeout(()=>{
|
||||||
|
var interval = setInterval(callable, time);
|
||||||
|
if (intervalHandler) intervalHandler(interval);
|
||||||
|
}, getMatchedWaitingTime(time));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var unlockedDrawInterval;
|
||||||
|
var lockedDrawInterval;
|
||||||
|
|
||||||
|
var lockedRedraw = getByPath(face, ["Properties","Redraw","Locked"]) || 60000;
|
||||||
|
var unlockedRedraw = getByPath(face, ["Properties","Redraw","Unlocked"]) || 1000;
|
||||||
var defaultRedraw = getByPath(face, ["Properties","Redraw","Default"]) || "Always";
|
var defaultRedraw = getByPath(face, ["Properties","Redraw","Default"]) || "Always";
|
||||||
var redrawEvents = getByPath(face, ["Properties","Redraw","Events"]);
|
var redrawEvents = getByPath(face, ["Properties","Redraw","Events"]);
|
||||||
var events = getByPath(face, ["Properties","Events"]);
|
var events = getByPath(face, ["Properties","Events"]);
|
||||||
|
|
@ -416,19 +437,31 @@ var events = getByPath(face, ["Properties","Events"]);
|
||||||
//print("events", events);
|
//print("events", events);
|
||||||
//print("redrawEvents", redrawEvents);
|
//print("redrawEvents", redrawEvents);
|
||||||
|
|
||||||
function handleLock(isLocked){
|
function handleLock(isLocked, forceRedraw){
|
||||||
|
//print("isLocked", Bangle.isLocked());
|
||||||
|
if (unlockedDrawInterval) clearInterval(unlockedDrawInterval);
|
||||||
|
if (lockedDrawInterval) clearInterval(lockedDrawInterval);
|
||||||
if (!isLocked){
|
if (!isLocked){
|
||||||
Bangle.setHRMPower(1, "imageclock");
|
Bangle.setHRMPower(1, "imageclock");
|
||||||
Bangle.setBarometerPower(1, 'imageclock');
|
Bangle.setBarometerPower(1, 'imageclock');
|
||||||
unlockedDrawInterval = setInterval(()=>{
|
setMatchedInterval(()=>{
|
||||||
|
//print("Redrawing on unlocked interval");
|
||||||
initialDraw();
|
initialDraw();
|
||||||
},unlockedRedraw?unlockedRedraw:1000);
|
},unlockedRedraw, (v)=>{
|
||||||
|
unlockedDrawInterval = v;
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
Bangle.setHRMPower(0, "imageclock");
|
Bangle.setHRMPower(0, "imageclock");
|
||||||
Bangle.setBarometerPower(0, 'imageclock');
|
Bangle.setBarometerPower(0, 'imageclock');
|
||||||
if (unlockedDrawInterval) clearInterval(unlockedDrawInterval);
|
setMatchedInterval(()=>{
|
||||||
|
//print("Redrawing on locked interval");
|
||||||
|
initialDraw();
|
||||||
|
},lockedRedraw, (v)=>{
|
||||||
|
lockedDrawInterval = v;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (!redrawEvents || redrawEvents.includes("lock")){
|
if (forceRedraw || !redrawEvents || redrawEvents.includes("lock")){
|
||||||
|
//print("Redrawing on lock", isLocked);
|
||||||
initialDraw();
|
initialDraw();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -447,8 +480,4 @@ if (!events || events.includes("lock")) {
|
||||||
Bangle.on('lock', handleLock);
|
Bangle.on('lock', handleLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
setInterval(()=>{
|
handleLock(Bangle.isLocked(), true);
|
||||||
initialDraw();
|
|
||||||
}, lockedRedraw ? lockedRedraw : 60000);
|
|
||||||
|
|
||||||
initialDraw();
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue