update gpssetup
parent
b63c819a0a
commit
8f9490459c
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: First version of GPS Setup app
|
0.01: First version of GPS Setup app
|
||||||
0.02: Created gppsetup module
|
0.02: Created gppsetup module
|
||||||
0.03: Added support for Bangle.js2
|
0.03: Added support for Bangle.js2
|
||||||
|
0.04: Added adaptive option for PSMOO with Bangle.js2
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ used. These settings will remain for all apps that use the GPS.
|
||||||
|
|
||||||
- fix_req (Bangle.js2 only) - the number of fixes required before the GPS turns off until next search for GPS signal. default is 1.
|
- fix_req (Bangle.js2 only) - the number of fixes required before the GPS turns off until next search for GPS signal. default is 1.
|
||||||
|
|
||||||
|
- adaptive (Bangle.js2 only) - When a GPS signal is acquired, this can reduce the time in seconds until next scan to generate higher temporal resolution of gps fixes. Off if set to 0.
|
||||||
## Module
|
## Module
|
||||||
|
|
||||||
A module is provided that'll allow you to set GPS configuration from your own
|
A module is provided that'll allow you to set GPS configuration from your own
|
||||||
|
|
@ -69,11 +70,13 @@ app. To use it:
|
||||||
// needed unless the watch's battery has run down
|
// needed unless the watch's battery has run down
|
||||||
require("gpssetup").setPowerMode();
|
require("gpssetup").setPowerMode();
|
||||||
|
|
||||||
// This sets up the PSMOO mode. update/search are optional in seconds
|
// This sets up the PSMOO mode. update/search/adaptive are optional in seconds
|
||||||
require("gpssetup").setPowerMode({
|
require("gpssetup").setPowerMode({
|
||||||
power_mode:"PSMOO",
|
power_mode:"PSMOO",
|
||||||
update:optional (default 120),
|
update:optional (default 120),
|
||||||
search:optional (default 5)})
|
search:optional (default 5),
|
||||||
|
adaptive: optional (default 0)
|
||||||
|
});
|
||||||
|
|
||||||
// This sets up SuperE
|
// This sets up SuperE
|
||||||
require("gpssetup").setPowerMode({power_mode:"SuperE"})
|
require("gpssetup").setPowerMode({power_mode:"SuperE"})
|
||||||
|
|
|
||||||
|
|
@ -165,9 +165,11 @@ function setupPSMOO(settings) {
|
||||||
var gpsTimeout = null;
|
var gpsTimeout = null;
|
||||||
var gpsActive = false;
|
var gpsActive = false;
|
||||||
var fix = 0;
|
var fix = 0;
|
||||||
|
var lastFix = false;
|
||||||
function cb(f){
|
function cb(f){
|
||||||
if(parseInt(f.fix) === 1){
|
if(parseInt(f.fix) === 1){
|
||||||
fix++;
|
fix++;
|
||||||
|
lastFix = true;
|
||||||
if(fix >= settings.fix_req){
|
if(fix >= settings.fix_req){
|
||||||
fix = 0;
|
fix = 0;
|
||||||
turnOffGPS();
|
turnOffGPS();
|
||||||
|
|
@ -180,9 +182,14 @@ function setupPSMOO(settings) {
|
||||||
clearTimeout(gpsTimeout);
|
clearTimeout(gpsTimeout);
|
||||||
Bangle.setGPSPower(0,settings.appName);
|
Bangle.setGPSPower(0,settings.appName);
|
||||||
Bangle.removeListener('GPS', cb); // cleaning it up
|
Bangle.removeListener('GPS', cb); // cleaning it up
|
||||||
|
var timeout = settings.update * 1000;
|
||||||
|
if(lastFix && settings.adaptive > 0){
|
||||||
|
timeout = settings.adaptive * 1000;
|
||||||
|
}
|
||||||
|
lastFix = false;
|
||||||
gpsTimeout = setTimeout(() => {
|
gpsTimeout = setTimeout(() => {
|
||||||
turnOnGPS();
|
turnOnGPS();
|
||||||
}, settings.update * 1000);
|
}, timeout);
|
||||||
}
|
}
|
||||||
function turnOnGPS(){
|
function turnOnGPS(){
|
||||||
if (gpsActive) return;
|
if (gpsActive) return;
|
||||||
|
|
@ -213,15 +220,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.adaptive) settings.adaptive = options.adaptive;
|
||||||
if (options.fix_req) settings.fix_req = options.fix_req;
|
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;
|
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.adaptive = settings.adaptive||0;
|
||||||
settings.fix_req = settings.fix_req||1; //default to just one fix and will turn off
|
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";
|
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(!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") {
|
||||||
|
|
@ -229,4 +238,4 @@ exports.setPowerMode = function(options) {
|
||||||
} else {
|
} else {
|
||||||
return setupSuperE();
|
return setupSuperE();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Loading…
Reference in New Issue