diff --git a/apps.json b/apps.json index 2246a1868..abe88464d 100644 --- a/apps.json +++ b/apps.json @@ -466,5 +466,18 @@ {"name":"*clotris","url":"clock-tris-icon.js","evaluate":true}, {"name":".trishig","url":"clock-tris-high"} ] + }, + { + "id": "gpsinfo", + "name": "GPS Info", + "icon": "gps-info.png", + "description": "An application that displays information about altitude, lat/lon, satellites and time", + "tags": "gps", + "type": "app", + "storage": [ + {"name": "+gpsinfo","url": "gps-info.json"}, + {"name": "-gpsinfo","url": "gps-info.js"}, + {"name": "*gpsinfo","url": "gps-info-icon.js","evaluate": true} + ] } ] diff --git a/apps/gps-info-icon.js b/apps/gps-info-icon.js new file mode 100644 index 000000000..b3f2dd3d4 --- /dev/null +++ b/apps/gps-info-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwghC/AH4AKg9wC6t3u4uVC6wWBI6t3uJeVuMQCqcBLisAi4XLxAABFxAXKgc4DBAuBRhQXEDAq7MmYXEwBHEXZYXFGAOqAAKDMmczC4mIC62CC50PC4JIBkQABiIvRmURAAUSjQXSFwMoxGKC6CRFwUSVYgXLPIgXXwMYegoXLJAYXCGBnzGA0hPQIwMgYwGC6gwCC4ZIMC4gYBC604C4ZISmcRVgapQAAMhC6GIJIwXCMBcIxGDDBAuLC4IwGAARGMAAQWGmAXPJQoWMC4pwCCpoXJAB4XXAH4A/ABQA=")) diff --git a/apps/gps-info.js b/apps/gps-info.js new file mode 100644 index 000000000..d452cd191 --- /dev/null +++ b/apps/gps-info.js @@ -0,0 +1,55 @@ +var img = require("heatshrink").decompress(atob("mEwghC/AH4AKg9wC6t3u4uVC6wWBI6t3uJeVuMQCqcBLisAi4XLxAABFxAXKgc4DBAuBRhQXEDAq7MmYXEwBHEXZYXFGAOqAAKDMmczC4mIC62CC50PC4JIBkQABiIvRmURAAUSjQXSFwMoxGKC6CRFwUSVYgXLPIgXXwMYegoXLJAYXCGBnzGA0hPQIwMgYwGC6gwCC4ZIMC4gYBC604C4ZISmcRVgapQAAMhC6GIJIwXCMBcIxGDDBAuLC4IwGAARGMAAQWGmAXPJQoWMC4pwCCpoXJAB4XXAH4A/ABQA=")) + +Bangle.setGPSPower(1); +Bangle.setLCDMode("doublebuffered"); + +var lastFix = { + fix: 0, + alt: 0, + lat: 0, + lon: 0, + time: 0, + satellites: 0 +}; + +function formatTime(now) { + var fd = now.toUTCString().split(" "); + var time = fd[4].substr(0, 5); + var date = [fd[0], fd[1], fd[2]].join(" "); + var year = now.getFullYear(); + return time + " - " + date; +} + +function onGPS(fix) { + lastFix = fix; + g.clear(); + g.setFontAlign(-1, -1); + g.drawImage(img, 30, -6); + g.setFont("6x8"); + g.setFontVector(22); + g.drawString("GPS Info", 80, 6); + if (fix.fix) { + var alt = fix.alt; + var lat = fix.lat; + var lon = fix.lon; + var time = formatTime(fix.time); + var satellites = fix.satellites; + + var s = 12; + g.setFontVector(s+4); + g.drawString("Altitude: "+alt+" m",0,60); + g.setFontVector(s); + g.drawString("Lat: "+lat, 0, 60+20+s/2); + g.drawString("Lon: "+lon,0,60+40+s/2); + g.drawString("Time: "+time, 0, 60+60+s/2); + g.drawString("Satellites: "+satellites,0,60+80+s/2); + + } else { + g.setFontAlign(0, 1); + g.setFont("6x8", 2); + g.drawString("Waiting for GPS", 120, 80); + } + g.flip(); +} + +Bangle.on('GPS', onGPS); diff --git a/apps/gps-info.json b/apps/gps-info.json new file mode 100644 index 000000000..b86b11d58 --- /dev/null +++ b/apps/gps-info.json @@ -0,0 +1,6 @@ +{ + "name": "GPS Info", + "type": "app", + "icon": "*gpsinfo", + "src": "-gpsinfo" +} diff --git a/apps/gps-info.png b/apps/gps-info.png new file mode 100644 index 000000000..970e85139 Binary files /dev/null and b/apps/gps-info.png differ