diff --git a/apps/widalt/widalt.settings.js b/apps/widalt/widalt.settings.js index 28ed60bc2..a4f883039 100644 --- a/apps/widalt/widalt.settings.js +++ b/apps/widalt/widalt.settings.js @@ -4,14 +4,11 @@ E.showMenu({ "" : { "title" : "Altimeter Widget" }, "< Back" : () => back(), - 'QNH: ': { - value: o.seaLevelPressure, + 'QNH': { + value: Math.floor(o.seaLevelPressure), min: 100, max: 10000, format: v=>(v+"hPa\nAlt: "+(44330 * (1.0 - Math.pow(p.pressure/v, 0.1903))).toFixed(0)+"m"), - onchange: v => { - o.seaLevelPressure = v; - Bangle.setOptions(o); - } + onchange: v => {Bangle.setOptions({seaLevelPressure:v});} } }); }); diff --git a/apps/widalt/widalt.wid.js b/apps/widalt/widalt.wid.js index 645aea2cd..72f889748 100644 --- a/apps/widalt/widalt.wid.js +++ b/apps/widalt/widalt.wid.js @@ -1,35 +1,22 @@ (()=>{ var alt=""; - var lastDraw=0; var lastAlt=0; - - function readAltitude() { - try {Bangle.getPressure().then((p)=>{ - print("pressure read, altitude "+p.altitude.toFixed(0)); - if (Math.floor(p.altitude)!=lastAlt) { - print("altitude changed!"); - lastAlt=Math.floor(p.altitude); - alt=p.altitude.toFixed(0); - var w = WIDGETS["widalt"].width; - WIDGETS["widalt"].width = 1 + (alt.length)*12+16; - if (w!=WIDGETS["widalt"].width) Bangle.drawWidgets(); - WIDGETS["widalt"].draw(); - setTimeout(readAltitude,60000); - } - });} - catch(err) { - print("ERROR"); - setTimeout(readAltitude,1000); - } - } - - readAltitude(); + Bangle.setBarometerPower(true,"widalt"); + Bangle.on("pressure", (p)=>{ + if (Math.floor(p.altitude)!=lastAlt) { + lastAlt=Math.floor(p.altitude); + alt=p.altitude.toFixed(0); + var w = WIDGETS["widalt"].width; + WIDGETS["widalt"].width = 1 + (alt.length)*12+16; + if (w!=WIDGETS["widalt"].width) Bangle.drawWidgets(); + else WIDGETS["widalt"].draw(); + } + Bangle.setBarometerPower(false,"widalt") + setTimeout(()=>{Bangle.setBarometerPower(true,"widalt");},5000); + }); function draw() { - //if (Date().getTime()-lastDraw<6000) return;//!!!!! if (!Bangle.isLCDOn()) return; - //lastDraw=Date().getTime(); - print("drawing"); g.reset(); g.setColor(g.theme.bg); g.fillRect(this.x, this.y, this.x + this.width, this.y + 23); @@ -37,7 +24,7 @@ g.drawImage(atob("EBCBAAAAAAAIAAwgFXAX0BCYIIggTD/EYPZADkACf/4AAAAA"), this.x, this.y+4); g.setFontCustom(atob("AAAAABwAAOAAAgAAHAADwAD4AB8AB8AA+AAeAADAAAAOAAP+AH/8B4DwMAGBgAwMAGBgAwOAOA//gD/4AD4AAAAAAAABgAAcAwDAGAwAwP/+B//wAAGAAAwAAGAAAAAAAAIAwHgOA4DwMA+BgOwMDmBg4wOeGA/gwDwGAAAAAAAAAGAHA8A4DwMAGBhAwMMGBjgwOcOA+/gDj4AAAAABgAAcAAHgADsAA5gAOMAHBgBwMAP/+B//wABgAAMAAAAAAAgD4OB/AwOYGBjAwMYGBjBwMe8Bh/AIHwAAAAAAAAAfAAP8AHxwB8GAdgwPMGBxgwMOOAB/gAH4AAAAAAABgAAMAABgAwMAeBgPgMHwBj4AN8AB+AAPAABAAAAAAAMfAH38B/xwMcGBhgwMMGBjgwP+OA+/gDj4AAAAAAAAOAAH4AA/gQMMGBgzwME8BhvAOPgA/4AD8AAEAAAAAAGAwA4OAHBwAAA="), 46, atob("BAgMDAwMDAwMDAwMBQ=="), 21+(1<<8)+(1<<16)); g.setFontAlign(-1, 0); - g.drawString(alt, this.x+16, this.y + 12); + g.drawString(alt, this.x+16, this.y + 12); } WIDGETS["widalt"] = { area: "tr",