Use new GPS settings module

pull/668/head
nujw 2021-02-12 13:53:08 +13:00
parent 0784361e43
commit c3a45287d0
1 changed files with 28 additions and 44 deletions

View File

@ -1,8 +1,9 @@
/* /*
Speed and Altitude [speedalt] Speed and Altitude [speedalt]
Mike Bennett mike[at]kereru.com Mike Bennett mike[at]kereru.com
1.16 : Use new GPS settings module
*/ */
var v = '1.15'; var v = '1.16';
var buf = Graphics.createArrayBuffer(240,160,2,{msb:true}); var buf = Graphics.createArrayBuffer(240,160,2,{msb:true});
// Load fonts // Load fonts
@ -269,22 +270,18 @@ function setButtons(){
// Power saving on/off // Power saving on/off
setWatch(function(e){ setWatch(function(e){
var dur = e.time - e.lastTime; pwrSav=!pwrSav;
if ( dur < 2 ) { // Short press. if ( pwrSav ) {
pwrSav=!pwrSav; LED1.reset();
if ( pwrSav ) { var s = require('Storage').readJSON('setting.json',1)||{};
LED1.reset(); var t = s.timeout||10;
var s = require('Storage').readJSON('setting.json',1)||{}; Bangle.setLCDTimeout(t);
var t = s.timeout||10; }
Bangle.setLCDTimeout(t); else {
} Bangle.setLCDTimeout(0);
else { Bangle.setLCDPower(1);
Bangle.setLCDTimeout(0); LED1.set();
Bangle.setLCDPower(1);
LED1.set();
}
} }
else gpsOff(); // long press, power off LP GPS
}, BTN2, {repeat:true,edge:"falling"}); }, BTN2, {repeat:true,edge:"falling"});
// Toggle between alt or dist // Toggle between alt or dist
@ -328,31 +325,10 @@ function savSettings() {
require("Storage").write('speedalt.json',settings); require("Storage").write('speedalt.json',settings);
} }
// Is low power GPS service available to use?
function isLP() {
if (WIDGETS.gpsservice == undefined) return(0);
return(1);
}
function setLpMode(m) { function setLpMode(m) {
if (tmrLP) {clearInterval(tmrLP);tmrLP = false;} // Stop any scheduled drop to low power if (tmrLP) {clearInterval(tmrLP);tmrLP = false;} // Stop any scheduled drop to low power
if ( !lp ) return; if ( !gpssetup ) return;
var s = WIDGETS.gpsservice.gps_get_settings(); gpssetup.setPowerMode({power_mode:m})
if ( m !== s.power_mode || !s.gpsservice ) {
s.gpsservice = true;
s.power_mode = m;
WIDGETS.gpsservice.gps_set_settings(s);
WIDGETS.gpsservice.reload();
}
}
function gpsOff() {
if ( !lp ) return;
var s = WIDGETS.gpsservice.gps_get_settings();
s.gpsservice = false;
s.power_mode = 'SuperE';
WIDGETS.gpsservice.gps_set_settings(s);
WIDGETS.gpsservice.reload();
} }
// =Main Prog // =Main Prog
@ -404,21 +380,29 @@ Bangle.on('lcdPower',function(on) {
else stopDraw(); else stopDraw();
}); });
var gpssetup;
try {
gpssetup = require("gpssetup")
} catch(e) {
gpssetup = false;
}
// All set up. Lets go. // All set up. Lets go.
g.clear(); g.clear();
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
onGPS(lf); onGPS(lf);
Bangle.setGPSPower(1);
var lp = isLP(); // Low power GPS widget installed? if ( gpssetup ) {
if ( lp ) { gpssetup.setPowerMode({power_mode:"SuperE"}).then(function() { Bangle.setGPSPower(1); });
setLpMode('SuperE'); // setInterval(()=>onGPS(WIDGETS.gpsservice.gps_get_fix()), 1000);
setInterval(()=>onGPS(WIDGETS.gpsservice.gps_get_fix()), 1000);
} }
else { else {
Bangle.setGPSPower(1); Bangle.setGPSPower(1);
Bangle.on('GPS', onGPS);
} }
Bangle.on('GPS', onGPS);
setButtons(); setButtons();
setInterval(updateClock, 30000); setInterval(updateClock, 30000);