mirror of https://github.com/espruino/BangleApps
Update gpssetup.js
adding in support for BangleJS2 emulating the PSMOO with timeoutspull/3697/head
parent
6e11c5647a
commit
fbd93f0915
|
@ -1,5 +1,5 @@
|
||||||
const SETTINGS_FILE = "gpssetup.settings.json";
|
const SETTINGS_FILE = "gpssetup.settings.json";
|
||||||
|
const BANGLE_VER = process.env.HWVERSION; //BangleJS2 support
|
||||||
function log_debug(o) {
|
function log_debug(o) {
|
||||||
//let timestamp = new Date().getTime();
|
//let timestamp = new Date().getTime();
|
||||||
//console.log(timestamp + " : " + o);
|
//console.log(timestamp + " : " + o);
|
||||||
|
@ -106,49 +106,94 @@ function delay(ms) {
|
||||||
|
|
||||||
function setupSuperE() {
|
function setupSuperE() {
|
||||||
log_debug("setupGPS() Super-E");
|
log_debug("setupGPS() Super-E");
|
||||||
return Promise.resolve().then(function() {
|
switch(BANGLE_VER){
|
||||||
UBX_CFG_RESET();
|
case(1):
|
||||||
return delay(100);
|
return Promise.resolve().then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_RESET();
|
||||||
UBX_CFG_PMS();
|
return delay(100);
|
||||||
return delay(20);
|
}).then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_PMS();
|
||||||
UBX_CFG_SAVE();
|
return delay(20);
|
||||||
return delay(20);
|
}).then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_SAVE();
|
||||||
log_debug("Powering GPS Off");
|
return delay(20);
|
||||||
/*
|
}).then(function() {
|
||||||
* must be part of the promise chain to ensure that
|
log_debug("Powering GPS Off");
|
||||||
* setup does not return and powerOff before config functions
|
/*
|
||||||
* have run
|
* must be part of the promise chain to ensure that
|
||||||
*/
|
* setup does not return and powerOff before config functions
|
||||||
return delay(20);
|
* have run
|
||||||
});
|
*/
|
||||||
|
return delay(20);
|
||||||
|
});
|
||||||
|
case(2):
|
||||||
|
//nothing more to do.
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupPSMOO(settings) {
|
function setupPSMOO(settings) {
|
||||||
log_debug("setupGPS() PSMOO");
|
log_debug("setupGPS() PSMOO");
|
||||||
return Promise.resolve().then(function() {
|
switch(BANGLE_VER){
|
||||||
UBX_CFG_RESET();
|
case(1):
|
||||||
return delay(100);
|
return Promise.resolve().then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_RESET();
|
||||||
UBX_CFG_PM2(settings.update, settings.search);
|
return delay(100);
|
||||||
return delay(20);
|
}).then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_PM2(settings.update, settings.search);
|
||||||
UBX_CFG_RXM();
|
return delay(20);
|
||||||
return delay(20);
|
}).then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_RXM();
|
||||||
UBX_CFG_SAVE();
|
return delay(20);
|
||||||
return delay(20);
|
}).then(function() {
|
||||||
}).then(function() {
|
UBX_CFG_SAVE();
|
||||||
log_debug("Powering GPS Off");
|
return delay(20);
|
||||||
/*
|
}).then(function() {
|
||||||
* must be part of the promise chain to ensure that
|
log_debug("Powering GPS Off");
|
||||||
* setup does not return and powerOff before config functions
|
/*
|
||||||
* have run
|
* must be part of the promise chain to ensure that
|
||||||
*/
|
* setup does not return and powerOff before config functions
|
||||||
return delay(20);
|
* have run
|
||||||
});
|
*/
|
||||||
|
return delay(20);
|
||||||
|
});
|
||||||
|
case(2):
|
||||||
|
let gpsTimeout = null;
|
||||||
|
let gpsActive = false;
|
||||||
|
let fix = 0;
|
||||||
|
function cb(f){
|
||||||
|
if(parseInt(f.fix) === 1){
|
||||||
|
fix++;
|
||||||
|
if(fix >= settings.fix_req){
|
||||||
|
fix = 0;
|
||||||
|
turnOffGPS();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function turnOffGPS() {
|
||||||
|
if (!gpsActive) return;
|
||||||
|
gpsActive = false;
|
||||||
|
clearTimeout(gpsTimeout);
|
||||||
|
Bangle.setGPSPower(0,settings.appName);
|
||||||
|
Bangle.removeListener('GPS', cb); // cleaning it up
|
||||||
|
gpsTimeout = setTimeout(() => {
|
||||||
|
turnOnGPS();
|
||||||
|
}, settings.update * 1000);
|
||||||
|
}
|
||||||
|
function turnOnGPS(){
|
||||||
|
if (gpsActive) return;
|
||||||
|
if(!Bangle.isGPSOn()) Bangle.setGPSPower(1,settings.appName);
|
||||||
|
Bangle.on('GPS',cb);
|
||||||
|
gpsActive = true;
|
||||||
|
gpsTimeout = setTimeout(() => {
|
||||||
|
turnOffGPS();
|
||||||
|
}, settings.search * 1000);
|
||||||
|
}
|
||||||
|
turnOnGPS();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set GPS power mode (assumes GPS on), returns a promise.
|
/** Set GPS power mode (assumes GPS on), returns a promise.
|
||||||
|
@ -165,12 +210,17 @@ exports.setPowerMode = function(options) {
|
||||||
if (options) {
|
if (options) {
|
||||||
if (options.update) settings.update = options.update;
|
if (options.update) settings.update = options.update;
|
||||||
if (options.search) settings.search = options.search;
|
if (options.search) settings.search = options.search;
|
||||||
|
if (options.fix_req) settings.fix_req = options.fix_req;
|
||||||
if (options.power_mode) settings.power_mode = options.power_mode;
|
if (options.power_mode) settings.power_mode = options.power_mode;
|
||||||
|
if (options.appName) settings.appName = options.appName;
|
||||||
}
|
}
|
||||||
settings.update = settings.update||120;
|
settings.update = settings.update||120;
|
||||||
settings.search = settings.search||5;
|
settings.search = settings.search||5;
|
||||||
|
settings.fix_req = settings.fix_req||1; //default to just one fix and will turn off
|
||||||
settings.power_mode = settings.power_mode||"SuperE";
|
settings.power_mode = settings.power_mode||"SuperE";
|
||||||
|
settings.appName = settings.appName || "gpssetup";
|
||||||
if (options) require("Storage").write(SETTINGS_FILE, settings);
|
if (options) require("Storage").write(SETTINGS_FILE, settings);
|
||||||
|
if(!Bangle.isGPSOn()) Bangle.setGPSPower(1,settings.appName); //always know its on - no point calling this otherwise!!!
|
||||||
if (settings.power_mode === "PSMOO") {
|
if (settings.power_mode === "PSMOO") {
|
||||||
return setupPSMOO(settings);
|
return setupPSMOO(settings);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue