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 2v11master
parent
d9d5926416
commit
3615d7fe4c
|
|
@ -16,14 +16,18 @@ 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;
|
||||||
var lon=0.0;
|
var lon=0.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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue