Update gps-info.js

1. (bugfix) Workaround for a crash in toUTCString() if fix.time has the value "undefined", see https://github.com/espruino/BangleApps/issues/1155
2. (improvement) The 4-dot progress indicator is replaced by the number of satellites in view.
Tested on Bangle.js 2 with firmware 2v11
master
Hilmar Strauch 2021-12-22 22:57:05 +01:00 committed by GitHub
parent d9d5926416
commit 3615d7fe4c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 10 deletions

View File

@ -16,13 +16,17 @@ var lastFix = {
time: 0, time: 0,
satellites: 0 satellites: 0
}; };
var nofix = 0; var SATinView = 0;
function formatTime(now) { function formatTime(now) {
if (now == undefined) {
return "no GPS time available";
} else {
var fd = now.toUTCString().split(" "); var fd = now.toUTCString().split(" ");
var time = fd[4].substr(0, 5); var time = fd[4].substr(0, 5);
var date = [fd[0], fd[1], fd[2]].join(" "); var date = [fd[0], fd[1], fd[2]].join(" ");
return time + " - " + date; return time + " - " + date;
}
} }
function getMaidenHead(param1,param2){ function getMaidenHead(param1,param2){
var lat=-100.0; var lat=-100.0;
@ -77,9 +81,9 @@ function onGPS(fix) {
{type:"txt", font:"6x8", label:"Waiting for GPS" }, {type:"txt", font:"6x8", label:"Waiting for GPS" },
{type:"h", c: [ {type:"h", c: [
{type:"txt", font:"10%", label:fix.satellites, pad:2, id:"sat" }, {type:"txt", font:"10%", label:fix.satellites, pad:2, id:"sat" },
{type:"txt", font:"6x8", pad:3, label:"Satellites" } {type:"txt", font:"6x8", pad:3, label:"Satellites used" }
]}, ]},
{type:"txt", font:"6x8", label:"", id:"progress" } {type:"txt", font:"6x8", label:"", fillx:true, id:"progress" }
]},{lazy:true}); ]},{lazy:true});
} }
g.clearRect(0,24,g.getWidth(),g.getHeight()); g.clearRect(0,24,g.getWidth(),g.getHeight());
@ -87,7 +91,6 @@ function onGPS(fix) {
} }
lastFix = fix; lastFix = fix;
if (fix.fix) { if (fix.fix) {
nofix = 0;
var locale = require("locale"); var locale = require("locale");
var satellites = fix.satellites; var satellites = fix.satellites;
var maidenhead = getMaidenHead(fix.lat,fix.lon); var maidenhead = getMaidenHead(fix.lat,fix.lon);
@ -100,12 +103,18 @@ function onGPS(fix) {
layout.maidenhead.label = "Maidenhead: "+maidenhead; layout.maidenhead.label = "Maidenhead: "+maidenhead;
} else { } else {
layout.sat.label = fix.satellites; layout.sat.label = fix.satellites;
nofix = (nofix+1) % 4; layout.progress.label = "in view: " + SATinView;
layout.progress.label = ".".repeat(nofix) + " ".repeat(4-nofix);
} }
layout.render(); layout.render();
} }
function onGPSraw(nmea) {
if (nmea.slice(3,6) == "GSV") {
SATinView = nmea.slice(11,13);
}
}
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
Bangle.on('GPS', onGPS); Bangle.on('GPS', onGPS);
Bangle.on('GPS-raw', onGPSraw);