2021-10-11 14:37:43 +00:00
|
|
|
var Layout = require("Layout");
|
|
|
|
var layout;
|
|
|
|
|
|
|
|
var lastFix = {fix:-1,satellites:0};
|
|
|
|
|
|
|
|
function speedoImage() {
|
|
|
|
return require("heatshrink").decompress(atob("kkdxH+ABteAAwWOECImZDQ2CAQglUD4us2fX68ymQDB1omFESWtDgIACEYYACrolPBwddmWIEZWsmVWJYgiLwXX2YcB1gdDq+BAodWGIWsEhQiDRAWBmQdEAAhGBroFC1ojMC4etERIlDAggkHNIgAWSYYjFVwNWGwgAP5KkBEYoFC1ihBagwAL5W72vKJAxpExCiDABnQ4W12vD6AHBEYxnT4YhB3ghCSIhqDe4SIP3giBM4LfFEYpiMDoQhC3fDCA7+DfBwiCAARmFAAmtEYlYagMywISHEQhEId4UyEYleqwABEZBHERQwABroZBq5rR6BGLNZKzMAAPKRZKzJr2tfaAAKxD7CfgRsD1g1GAAwME2YGDwQjFNgOzwMyCwuCwIAEBg0yHoKODEYmCcYNWCwutAAuzBgg4BCwJGEEgj7JV5r7BIwgjEWrDVCEQYkCWgYAWNYIjF/z8awQfD"));
|
|
|
|
}
|
|
|
|
|
2019-10-30 20:34:41 +00:00
|
|
|
function onGPS(fix) {
|
2021-10-11 14:37:43 +00:00
|
|
|
if (lastFix.fix != fix.fix) {
|
|
|
|
// if fix is different, change the layout
|
|
|
|
if (fix.fix) {
|
|
|
|
layout = new Layout( {
|
|
|
|
type:"v", c: [
|
|
|
|
{type:"txt", font:"6x8:2", label:"Speed" },
|
|
|
|
{type:"h", c: [
|
|
|
|
{type:"img", src:speedoImage, pad:4 },
|
|
|
|
{type:"txt", font:"35%", label:"--", fillx:true, id:"speed" },
|
|
|
|
]},
|
|
|
|
{type:"txt", font:"6x8", label:"--", id:"units" },
|
|
|
|
{type:"h", c: [
|
|
|
|
{type:"txt", font:"10%", label:fix.satellites, pad:2, id:"sat" },
|
|
|
|
{type:"txt", font:"6x8", pad:3, label:"Satellites" }
|
|
|
|
]},
|
2021-10-18 10:32:46 +00:00
|
|
|
]},{lazy:true});
|
2021-10-11 14:37:43 +00:00
|
|
|
} else {
|
|
|
|
layout = new Layout( {
|
|
|
|
type:"v", c: [
|
|
|
|
{type:"txt", font:"6x8:2", label:"Speed" },
|
|
|
|
{type:"img", src:speedoImage, pad:4 },
|
|
|
|
{type:"txt", font:"6x8", label:"Waiting for GPS" },
|
|
|
|
{type:"h", c: [
|
|
|
|
{type:"txt", font:"10%", label:fix.satellites, pad:2, id:"sat" },
|
|
|
|
{type:"txt", font:"6x8", pad:3, label:"Satellites" }
|
|
|
|
]},
|
2021-10-18 10:32:46 +00:00
|
|
|
]},{lazy:true});
|
2021-10-11 14:37:43 +00:00
|
|
|
}
|
|
|
|
g.clearRect(0,24,g.getWidth(),g.getHeight());
|
|
|
|
layout.render();
|
|
|
|
}
|
2019-10-30 20:34:41 +00:00
|
|
|
lastFix = fix;
|
2021-10-11 14:37:43 +00:00
|
|
|
|
2021-10-11 14:39:44 +00:00
|
|
|
if (fix.fix && isFinite(fix.speed)) {
|
2020-05-07 07:21:12 +00:00
|
|
|
var speed = require("locale").speed(fix.speed);
|
|
|
|
var m = speed.match(/([0-9,\.]+)(.*)/); // regex splits numbers from units
|
2024-03-04 20:34:50 +00:00
|
|
|
//var txt = (fix.speed<20) ? fix.speed.toFixed(1) : Math.round(fix.speed);
|
2021-10-11 14:37:43 +00:00
|
|
|
layout.speed.label = m[1];
|
|
|
|
layout.units.label = m[2];
|
2019-10-30 20:34:41 +00:00
|
|
|
}
|
2021-10-11 14:37:43 +00:00
|
|
|
layout.sat.label = fix.satellites;
|
|
|
|
layout.render();
|
2019-10-30 20:34:41 +00:00
|
|
|
}
|
2020-05-07 07:21:12 +00:00
|
|
|
g.clear();
|
2021-10-11 14:37:43 +00:00
|
|
|
onGPS({fix:0,satellites:0});
|
2021-10-11 14:39:44 +00:00
|
|
|
// onGPS({fix:1,satellites:3,speed:200}); // testing
|
2020-05-07 07:21:12 +00:00
|
|
|
Bangle.loadWidgets();
|
|
|
|
Bangle.drawWidgets();
|
|
|
|
|
2019-10-30 20:34:41 +00:00
|
|
|
Bangle.on('GPS', onGPS);
|
2021-10-11 14:37:43 +00:00
|
|
|
Bangle.setGPSPower(1, "app");
|