update gpssetup

master
nravanelli 2025-04-25 10:51:01 +08:00
parent b63c819a0a
commit 8f9490459c
3 changed files with 18 additions and 5 deletions

View File

@ -1,3 +1,4 @@
0.01: First version of GPS Setup app
0.02: Created gppsetup module
0.03: Added support for Bangle.js2
0.04: Added adaptive option for PSMOO with Bangle.js2

View File

@ -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.
- 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
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
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({
power_mode:"PSMOO",
update:optional (default 120),
search:optional (default 5)})
search:optional (default 5),
adaptive: optional (default 0)
});
// This sets up SuperE
require("gpssetup").setPowerMode({power_mode:"SuperE"})

View File

@ -165,9 +165,11 @@ function setupPSMOO(settings) {
var gpsTimeout = null;
var gpsActive = false;
var fix = 0;
var lastFix = false;
function cb(f){
if(parseInt(f.fix) === 1){
fix++;
lastFix = true;
if(fix >= settings.fix_req){
fix = 0;
turnOffGPS();
@ -180,9 +182,14 @@ function setupPSMOO(settings) {
clearTimeout(gpsTimeout);
Bangle.setGPSPower(0,settings.appName);
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(() => {
turnOnGPS();
}, settings.update * 1000);
}, timeout);
}
function turnOnGPS(){
if (gpsActive) return;
@ -213,12 +220,14 @@ exports.setPowerMode = function(options) {
if (options) {
if (options.update) settings.update = options.update;
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.power_mode) settings.power_mode = options.power_mode;
if (options.appName) settings.appName = options.appName;
}
settings.update = settings.update||120;
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.power_mode = settings.power_mode||"SuperE";
settings.appName = settings.appName||"gpssetup";