BangleApps/apps/speedo/speedo.js

62 lines
2.3 KiB
JavaScript
Raw Normal View History

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" }
]},
]},{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" }
]},
]},{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");