mirror of https://github.com/espruino/BangleApps
Merge branch 'espruino:master' into master
commit
7846b48cf6
|
@ -1124,9 +1124,9 @@
|
|||
"id": "gpsinfo",
|
||||
"name": "GPS Info",
|
||||
"icon": "gps-info.png",
|
||||
"version":"0.04",
|
||||
"version":"0.05",
|
||||
"description": "An application that displays information about altitude, lat/lon, satellites and time",
|
||||
"tags": "gps",
|
||||
"tags": "gps,b2",
|
||||
"type": "app",
|
||||
"storage": [
|
||||
{"name":"gpsinfo.app.js","url": "gps-info.js"},
|
||||
|
|
|
@ -94,9 +94,9 @@ function startRecord(force) {
|
|||
var Layout = require("Layout");
|
||||
var layout = new Layout({ type: "v", c: [
|
||||
{type:"txt", font:"6x8", label:"Samples", pad:2},
|
||||
{type:"txt", id:"samples", font:"6x8:2", label:" - ", pad:5},
|
||||
{type:"txt", id:"samples", font:"6x8:2", label:" - ", pad:5, bgCol:g.theme.bg},
|
||||
{type:"txt", font:"6x8", label:"Time", pad:2},
|
||||
{type:"txt", id:"time", font:"6x8:2", label:" - ", pad:5},
|
||||
{type:"txt", id:"time", font:"6x8:2", label:" - ", pad:5, bgCol:g.theme.bg},
|
||||
{type:"txt", font:"6x8:2", label:"RECORDING", bgCol:"#f00", pad:5, fillx:1},
|
||||
]
|
||||
},[ // Buttons...
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
0.02: Ensure screen doesn't display garbage at startup
|
||||
0.03: Show number of satellites while waiting for fix
|
||||
0.04: Add Maidenhead readout of GPS location
|
||||
0.05: Refactor to use 'layout' library for multi-device support
|
||||
|
|
|
@ -1,11 +1,14 @@
|
|||
var img = require("heatshrink").decompress(atob("mEwghC/AH4AKg9wC6t3u4uVC6wWBI6t3uJeVuMQCqcBLisAi4XLxAABFxAXKgc4DBAuBRhQXEDAq7MmYXEwBHEXZYXFGAOqAAKDMmczC4mIC62CC50PC4JIBkQABiIvRmURAAUSjQXSFwMoxGKC6CRFwUSVYgXLPIgXXwMYegoXLJAYXCGBnzGA0hPQIwMgYwGC6gwCC4ZIMC4gYBC604C4ZISmcRVgapQAAMhC6GIJIwXCMBcIxGDDBAuLC4IwGAARGMAAQWGmAXPJQoWMC4pwCCpoXJAB4XXAH4A/ABQA="))
|
||||
function satelliteImage() {
|
||||
return require("heatshrink").decompress(atob("mEwxH+AH4A/AH4A/AH4AGnE4F1wvsF34wgFldcLdyMYsoACF1WJF4YxPFzOtF4wxNFzAvKSiIvU1ovIGAkJAAQucF5QxCFwYwbF4QwLrwvjYIVfrwABrtdq9Wqwvkq4oCAAtXmYvi1teE4NXrphCrxoCGAbvdSIoAHNQNeFzQvGeRQvCsowrYYNfF8YwHZQQFCF8QwGF4owjeYovBroHEMERhEF8IwNrtWryYFF8YwCq4vhGBeJF5AwaxIwKwVXFwwvandfMJeJF8M6nZiLGQIvdstfGAVlGBZkCxJeZJQIwCGIRjMFzYACGIc6r/+FsIvGGIYABEzYvPGQYvusovkAH4A/AH4A/ACo="));
|
||||
}
|
||||
|
||||
Bangle.setGPSPower(1);
|
||||
Bangle.setLCDMode("doublebuffered");
|
||||
var Layout = require("Layout");
|
||||
var layout;
|
||||
Bangle.setGPSPower(1, "app");
|
||||
E.showMessage("Loading..."); // avoid showing rubbish on screen
|
||||
|
||||
var lastFix = {
|
||||
fix: 0,
|
||||
fix: -1,
|
||||
alt: 0,
|
||||
lat: 0,
|
||||
lon: 0,
|
||||
|
@ -31,14 +34,14 @@ function getMaidenHead(param1,param2){
|
|||
lon = param2;
|
||||
|
||||
lon = lon + 180;
|
||||
t = lon/20;
|
||||
var t = lon/20;
|
||||
fLon = Math.floor(t);
|
||||
t = (t % fLon)*10;
|
||||
sqLon = Math.floor(t);
|
||||
t=(t-sqLon)*24;
|
||||
t = (t-sqLon)*24;
|
||||
subLon = Math.floor(t);
|
||||
extLon = Math.floor((t-subLon)*10);
|
||||
|
||||
|
||||
lat = lat + 90;
|
||||
t = lat/10;
|
||||
fLat = Math.floor(t);
|
||||
|
@ -51,43 +54,58 @@ function getMaidenHead(param1,param2){
|
|||
return U[fLon]+U[fLat]+sqLon+sqLat+L[subLon]+L[subLat]+extLon+extLat;
|
||||
}
|
||||
function onGPS(fix) {
|
||||
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:"GPS Info" },
|
||||
{type:"img", src:satelliteImage, pad:4 },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"alt" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"lat" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"lon" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"speed" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"time" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"sat" },
|
||||
{type:"txt", font:"6x8", label:"", fillx:true, id:"maidenhead" },
|
||||
]},[],{lazy:true});
|
||||
} else {
|
||||
layout = new Layout( {
|
||||
type:"v", c: [
|
||||
{type:"txt", font:"6x8:2", label:"GPS Info" },
|
||||
{type:"img", src:satelliteImage, 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" }
|
||||
]},
|
||||
{type:"txt", font:"6x8", label:"", id:"progress" }
|
||||
]},[],{lazy:true});
|
||||
}
|
||||
g.clearRect(0,24,g.getWidth(),g.getHeight());
|
||||
layout.render();
|
||||
}
|
||||
lastFix = fix;
|
||||
g.clear();
|
||||
g.setFontAlign(-1, -1);
|
||||
g.drawImage(img, 20, -12);
|
||||
g.setFont("6x8");
|
||||
g.setFontVector(22);
|
||||
g.drawString("GPS Info", 70, 0);
|
||||
if (fix.fix) {
|
||||
nofix = 0;
|
||||
var alt = fix.alt;
|
||||
var lat = fix.lat;
|
||||
var lon = fix.lon;
|
||||
var speed = fix.speed;
|
||||
var time = formatTime(fix.time);
|
||||
var locale = require("locale");
|
||||
var satellites = fix.satellites;
|
||||
var maidenhead = getMaidenHead(lat,lon);
|
||||
var s = 15;
|
||||
g.setFontVector(s);
|
||||
g.drawString("Altitude: "+alt+" m",10,36);
|
||||
g.drawString("Lat: "+lat,10,54);
|
||||
g.drawString("Lon: "+lon,10,72);
|
||||
g.drawString("Speed: "+speed.toFixed(1)+" km/h",10,90);
|
||||
g.drawString("Time: "+time,10,108);
|
||||
g.drawString("Satellites: "+satellites,10,126);
|
||||
g.drawString("Maidenhead: "+maidenhead,10,144);
|
||||
var maidenhead = getMaidenHead(fix.lat,fix.lon);
|
||||
layout.alt.label = "Altitude: "+locale.distance(fix.alt);
|
||||
layout.lat.label = "Lat: "+fix.lat.toFixed(6);
|
||||
layout.lon.label = "Lon: "+fix.lon.toFixed(6);
|
||||
layout.speed.label = "Speed: "+locale.speed(fix.speed);
|
||||
layout.time.label = "Time: "+formatTime(fix.time);
|
||||
layout.sat.label = "Satellites: "+satellites;
|
||||
layout.maidenhead.label = "Maidenhead: "+maidenhead;
|
||||
} else {
|
||||
g.setFontAlign(0, 1);
|
||||
g.setFont("6x8", 2);
|
||||
g.drawString("Waiting for GPS", 120, 80);
|
||||
layout.sat.label = fix.satellites;
|
||||
nofix = (nofix+1) % 4;
|
||||
g.drawString(".".repeat(nofix) + " ".repeat(4-nofix), 120, 120);
|
||||
// Show number of satellites:
|
||||
g.setFontAlign(0,0);
|
||||
g.setFont("6x8");
|
||||
g.drawString(fix.satellites+" satellites", 120, 100);
|
||||
layout.progress.label = ".".repeat(nofix) + " ".repeat(4-nofix);
|
||||
}
|
||||
g.flip();
|
||||
layout.render();
|
||||
}
|
||||
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
Bangle.on('GPS', onGPS);
|
||||
|
|
|
@ -312,14 +312,17 @@ Layout.prototype.update = function() {
|
|||
l._h = 24;
|
||||
l._w = 14 + l.label.length*8;
|
||||
}, "img": function(l) {
|
||||
var src = l.src();
|
||||
if (typeof(src) === 'object') {
|
||||
l._h = ("width" in src) ? src.width : src.getWidth();
|
||||
l._w = ("height" in src) ? src.height : src.getHeight();
|
||||
var src = l.src(); // get width and height out of image
|
||||
if (src[0]) {
|
||||
l._w = src[0];
|
||||
l._h = src[1];
|
||||
} else if ('object'==typeof src) {
|
||||
l._w = ("width" in src) ? src.width : src.getWidth();
|
||||
l._h = ("height" in src) ? src.height : src.getHeight();
|
||||
} else {
|
||||
var im = E.toString(src);
|
||||
l._h = im.charCodeAt(0);
|
||||
l._w = im.charCodeAt(1);
|
||||
l._w = im.charCodeAt(0);
|
||||
l._h = im.charCodeAt(1);
|
||||
}
|
||||
}, "": function(l) {
|
||||
// size should already be set up in width/height
|
||||
|
|
Loading…
Reference in New Issue