From 77f153ea76397c032b6e28005b66ed7e2f1971cf Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:52:10 +0100 Subject: [PATCH 01/28] Create app.js --- apps/bikespeedo/app.js | 546 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 546 insertions(+) create mode 100644 apps/bikespeedo/app.js diff --git a/apps/bikespeedo/app.js b/apps/bikespeedo/app.js new file mode 100644 index 000000000..edf507823 --- /dev/null +++ b/apps/bikespeedo/app.js @@ -0,0 +1,546 @@ +// Bike Speedometer by https://github.com/HilmarSt +// Big parts of this software are based on https://github.com/espruino/BangleApps/tree/master/apps/speedalt +// Compass and Compass Calibration based on https://github.com/espruino/BangleApps/tree/master/apps/magnav + +const BANGLEJS2 = 1; +const screenH = g.getHeight(); +const screenYstart = 24; // 0..23 for widgets +const screenY_Half = screenH / 2 + screenYstart; +const screenW = g.getWidth(); +const screenW_Half = screenW / 2; +const fontFactorB2 = 2/3; +const colfg=g.theme.fg, colbg=g.theme.bg; +const col1=colfg, colUncertain="#88f"; // if (lf.fix) g.setColor(col1); else g.setColor(colUncertain); + +var altiGPS=0, altiBaro=0; +var hdngGPS=0, hdngCompass=0, calibrateCompass=false; + +/*kalmanjs, Wouter Bulten, MIT, https://github.com/wouterbulten/kalmanjs */ +var KalmanFilter = (function () { + 'use strict'; + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + /** + * KalmanFilter + * @class + * @author Wouter Bulten + * @see {@link http://github.com/wouterbulten/kalmanjs} + * @version Version: 1.0.0-beta + * @copyright Copyright 2015-2018 Wouter Bulten + * @license MIT License + * @preserve + */ + var KalmanFilter = + /*#__PURE__*/ + function () { + /** + * Create 1-dimensional kalman filter + * @param {Number} options.R Process noise + * @param {Number} options.Q Measurement noise + * @param {Number} options.A State vector + * @param {Number} options.B Control vector + * @param {Number} options.C Measurement vector + * @return {KalmanFilter} + */ + function KalmanFilter() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$R = _ref.R, + R = _ref$R === void 0 ? 1 : _ref$R, + _ref$Q = _ref.Q, + Q = _ref$Q === void 0 ? 1 : _ref$Q, + _ref$A = _ref.A, + A = _ref$A === void 0 ? 1 : _ref$A, + _ref$B = _ref.B, + B = _ref$B === void 0 ? 0 : _ref$B, + _ref$C = _ref.C, + C = _ref$C === void 0 ? 1 : _ref$C; + + _classCallCheck(this, KalmanFilter); + + this.R = R; // noise power desirable + + this.Q = Q; // noise power estimated + + this.A = A; + this.C = C; + this.B = B; + this.cov = NaN; + this.x = NaN; // estimated signal without noise + } + /** + * Filter a new value + * @param {Number} z Measurement + * @param {Number} u Control + * @return {Number} + */ + + + _createClass(KalmanFilter, [{ + key: "filter", + value: function filter(z) { + var u = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + if (isNaN(this.x)) { + this.x = 1 / this.C * z; + this.cov = 1 / this.C * this.Q * (1 / this.C); + } else { + // Compute prediction + var predX = this.predict(u); + var predCov = this.uncertainty(); // Kalman gain + + var K = predCov * this.C * (1 / (this.C * predCov * this.C + this.Q)); // Correction + + this.x = predX + K * (z - this.C * predX); + this.cov = predCov - K * this.C * predCov; + } + + return this.x; + } + /** + * Predict next value + * @param {Number} [u] Control + * @return {Number} + */ + + }, { + key: "predict", + value: function predict() { + var u = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + return this.A * this.x + this.B * u; + } + /** + * Return uncertainty of filter + * @return {Number} + */ + + }, { + key: "uncertainty", + value: function uncertainty() { + return this.A * this.cov * this.A + this.R; + } + /** + * Return the last filtered measurement + * @return {Number} + */ + + }, { + key: "lastMeasurement", + value: function lastMeasurement() { + return this.x; + } + /** + * Set measurement noise Q + * @param {Number} noise + */ + + }, { + key: "setMeasurementNoise", + value: function setMeasurementNoise(noise) { + this.Q = noise; + } + /** + * Set the process noise R + * @param {Number} noise + */ + + }, { + key: "setProcessNoise", + value: function setProcessNoise(noise) { + this.R = noise; + } + }]); + + return KalmanFilter; + }(); + + return KalmanFilter; + +}()); + + +//==================================== MAIN ==================================== + +var lf = {fix:0,satellites:0}; +var showMax = 0; // 1 = display the max values. 0 = display the cur fix +var canDraw = 1; +var time = ''; // Last time string displayed. Re displayed in background colour to remove before drawing new time. +var sec; // actual seconds for testing purposes + +var max = {}; +max.spd = 0; +max.alt = 0; +max.n = 0; // counter. Only start comparing for max after a certain number of fixes to allow kalman filter to have smoohed the data. + +var emulator = (process.env.BOARD=="EMSCRIPTEN" || process.env.BOARD=="EMSCRIPTEN2")?1:0; // 1 = running in emulator. Supplies test values; + +var wp = {}; // Waypoint to use for distance from cur position. +var SATinView = 0; + +function radians(a) { + return a*Math.PI/180; +} + +function distance(a,b){ + var x = radians(a.lon-b.lon) * Math.cos(radians((a.lat+b.lat)/2)); + var y = radians(b.lat-a.lat); + + // Distance in selected units + var d = Math.sqrt(x*x + y*y) * 6371000; + d = (d/parseFloat(cfg.dist)).toFixed(2); + if ( d >= 100 ) d = parseFloat(d).toFixed(1); + if ( d >= 1000 ) d = parseFloat(d).toFixed(0); + + return d; +} + +function drawFix(dat) { + + if (!canDraw) return; + + g.clearRect(0,screenYstart,screenW,screenH); + + var v = ''; + var u=''; + + // Primary Display + v = (cfg.primSpd)?dat.speed.toString():dat.alt.toString(); + + // Primary Units + u = (cfg.primSpd)?cfg.spd_unit:dat.alt_units; + + drawPrimary(v,u); + + // Secondary Display + v = (cfg.primSpd)?dat.alt.toString():dat.speed.toString(); + + // Secondary Units + u = (cfg.primSpd)?dat.alt_units:cfg.spd_unit; + + drawSecondary(v,u); + + // Time + drawTime(); + + //Sats + if ( dat.age > 10 ) { + if ( dat.age > 90 ) dat.age = '>90'; + drawSats('Age:'+dat.age); + } + else if (!BANGLEJS2) { + drawSats('Sats:'+dat.sats); + } else { + if (lf.fix) { + drawSats('Sats:'+dat.sats); + } else { + drawSats('View:' + SATinView); + } + } + g.reset(); +} + + +function drawClock() { + if (!canDraw) return; + g.clearRect(0,screenYstart,screenW,screenH); + drawTime(); + g.reset(); +} + + +function drawPrimary(n,u) { + //if(emulator)console.log("\n1: " + n +" "+ u); + var s=40; // Font size + var l=n.length; + + if ( l <= 7 ) s=48; + if ( l <= 6 ) s=55; + if ( l <= 5 ) s=66; + if ( l <= 4 ) s=85; + if ( l <= 3 ) s=110; + + // X -1=left (default), 0=center, 1=right + // Y -1=top (default), 0=center, 1=bottom + g.setFontAlign(0,-1); // center, top + if (lf.fix) g.setColor(col1); else g.setColor(colUncertain); + if (BANGLEJS2) s *= fontFactorB2; + g.setFontVector(s); + g.drawString(n, screenW_Half - 10, screenYstart); + + // Primary Units + s = 35; // Font size + g.setFontAlign(1,-1,3); // right, top, rotate + g.setColor(col1); + if (BANGLEJS2) s = 20; + g.setFontVector(s); + g.drawString(u, screenW - 20, screenYstart + 2); +} + + +function drawSecondary(n,u) { + //if(emulator)console.log("2: " + n +" "+ u); + + if (calibrateCompass) hdngCompass = "CALIB!"; + else hdngCompass +="°"; + + g.setFontAlign(0,1); + g.setColor(col1); + + g.setFontVector(12).drawString("Altitude GPS / Barometer", screenW_Half - 5, screenY_Half - 10); + g.setFontVector(20); + g.drawString(n+" "+u+" / "+altiBaro+" "+u, screenW_Half, screenY_Half + 11); + + g.setFontVector(12).drawString("Heading GPS / Compass", screenW_Half - 10, screenY_Half + 26); + g.setFontVector(20); + g.drawString(hdngGPS+"° / "+hdngCompass, screenW_Half, screenY_Half + 47); +} + + +function drawTime() { + var x = 0, y = screenH; + g.setFontAlign(-1,1); // left, bottom + g.setFont("6x8", 2); + + g.setColor(colbg); + g.drawString(time,x+1,y); // clear old time + + time = require("locale").time(new Date(),1); + + g.setColor(colfg); // draw new time + g.drawString(time,x+2,y); +} + + +function drawSats(sats) { + + g.setColor(col1); + g.setFont("6x8", 2); + g.setFontAlign(1,1); //right, bottom + g.drawString(sats,screenW,screenH); + + g.setFontVector(18); + g.setColor(col1); + + if ( cfg.modeA == 1 ) { + if ( showMax ) { + g.setFontAlign(0,1); //centre, bottom + g.drawString('MAX',120,164); + } + } +} + +function onGPS(fix) { + + if ( emulator ) { + fix.fix = 1; + fix.speed = Math.random()*30; // calmed by Kalman filter if cfg.spdFilt + fix.alt = Math.random()*200 -20; // calmed by Kalman filter if cfg.altFilt + fix.lat = 50.59; // google.de/maps/@50.59,8.53,17z + fix.lon = 8.53; + fix.course = 365; + fix.satellites = sec; + fix.time = new Date(); + fix.smoothed = 0; + } + + var m; + + var sp = '---'; + var al = '---'; + var di = '---'; + var age = '---'; + + if (fix.fix) lf = fix; + + hdngGPS = lf.course; + if (isNaN(hdngGPS)) hdngGPS = "---"; + else if (0 == hdngGPS) hdngGPS = "0?"; + else hdngGPS = hdngGPS.toFixed(0); + + if (emulator) hdngCompass = hdngGPS; + if (emulator) altiBaro = lf.alt.toFixed(0); + + if (lf.fix) { + + if (BANGLEJS2 && !emulator) Bangle.removeListener('GPS-raw', onGPSraw); + + // Smooth data + if ( lf.smoothed !== 1 ) { + if ( cfg.spdFilt ) lf.speed = spdFilter.filter(lf.speed); + if ( cfg.altFilt ) lf.alt = altFilter.filter(lf.alt); + lf.smoothed = 1; + if ( max.n <= 15 ) max.n++; + } + + + // Speed + if ( cfg.spd == 0 ) { + m = require("locale").speed(lf.speed).match(/([0-9,\.]+)(.*)/); // regex splits numbers from units + sp = parseFloat(m[1]); + cfg.spd_unit = m[2]; + } + else sp = parseFloat(lf.speed)/parseFloat(cfg.spd); // Calculate for selected units + + if ( sp < 10 ) sp = sp.toFixed(1); + else sp = Math.round(sp); + if (parseFloat(sp) > parseFloat(max.spd) && max.n > 15 ) max.spd = parseFloat(sp); + + // Altitude + al = lf.alt; + al = Math.round(parseFloat(al)/parseFloat(cfg.alt)); + if (parseFloat(al) > parseFloat(max.alt) && max.n > 15 ) max.alt = parseFloat(al); + + // Distance to waypoint + di = distance(lf,wp); + if (isNaN(di)) di = 0; + + // Age of last fix (secs) + age = Math.max(0,Math.round(getTime())-(lf.time.getTime()/1000)); + } + + if ( cfg.modeA == 1 ) { + if ( showMax ) + drawFix({ + speed:max.spd, + sats:lf.satellites, + alt:max.alt, + alt_units:cfg.alt_unit, + age:age, + fix:lf.fix + }); // Speed and alt maximums + else + drawFix({ + speed:sp, + sats:lf.satellites, + alt:al, + alt_units:cfg.alt_unit, + age:age, + fix:lf.fix + }); // Show speed/altitude + } +} + +function setButtons(){ + setWatch(_=>load(), BTN1); + +onGPS(lf); +} + + +function updateClock() { + if (!canDraw) return; + drawTime(); + g.reset(); + + if ( emulator ) { + max.spd++; max.alt++; + d=new Date(); sec=d.getSeconds(); + onGPS(lf); + } +} + + + +//### +let cfg = {}; +cfg.spd = 1; // Multiplier for speed unit conversions. 0 = use the locale values for speed +cfg.spd_unit = 'km/h'; // Displayed speed unit +cfg.alt = 1; // Multiplier for altitude unit conversions. (feet:'0.3048') +cfg.alt_unit = 'm'; // Displayed altitude units ('feet') +cfg.dist = 1000; // Multiplier for distnce unit conversions. +cfg.dist_unit = 'km'; // Displayed distnce units +cfg.modeA = 1; +cfg.primSpd = 1; // 1 = Spd in primary, 0 = Spd in secondary + +cfg.spdFilt = false; +cfg.altFilt = false; + +if ( cfg.spdFilt ) var spdFilter = new KalmanFilter({R: 0.1 , Q: 1 }); +if ( cfg.altFilt ) var altFilter = new KalmanFilter({R: 0.01, Q: 2 }); + +function onGPSraw(nmea) { + var nofGP = 0, nofBD = 0, nofGL = 0; + if (nmea.slice(3,6) == "GSV") { + // console.log(nmea.slice(1,3) + " " + nmea.slice(11,13)); + if (nmea.slice(0,7) == "$GPGSV,") nofGP = Number(nmea.slice(11,13)); + if (nmea.slice(0,7) == "$BDGSV,") nofBD = Number(nmea.slice(11,13)); + if (nmea.slice(0,7) == "$GLGSV,") nofGL = Number(nmea.slice(11,13)); + SATinView = nofGP + nofBD + nofGL; + } } +if(BANGLEJS2) Bangle.on('GPS-raw', onGPSraw); + +function onPressure(dat) { altiBaro = dat.altitude.toFixed(0); } + +Bangle.setBarometerPower(1); // needs some time... +g.clearRect(0,screenYstart,screenW,screenH); +onGPS(lf); +Bangle.setGPSPower(1); +Bangle.on('GPS', onGPS); +Bangle.on('pressure', onPressure); + +Bangle.setCompassPower(1); +var CALIBDATA = require("Storage").readJSON("magnav.json",1)||null; +if (!CALIBDATA) calibrateCompass = true; +function Compass_tiltfixread(O,S){ + "ram"; + //console.log(O.x+" "+O.y+" "+O.z); + var m = Bangle.getCompass(); + var g = Bangle.getAccel(); + m.dx =(m.x-O.x)*S.x; m.dy=(m.y-O.y)*S.y; m.dz=(m.z-O.z)*S.z; + var d = Math.atan2(-m.dx,m.dy)*180/Math.PI; + if (d<0) d+=360; + var phi = Math.atan(-g.x/-g.z); + var cosphi = Math.cos(phi), sinphi = Math.sin(phi); + var theta = Math.atan(-g.y/(-g.x*sinphi-g.z*cosphi)); + var costheta = Math.cos(theta), sintheta = Math.sin(theta); + var xh = m.dy*costheta + m.dx*sinphi*sintheta + m.dz*cosphi*sintheta; + var yh = m.dz*sinphi - m.dx*cosphi; + var psi = Math.atan2(yh,xh)*180/Math.PI; + if (psi<0) psi+=360; + return psi; +} +var Compass_heading = 0; +function Compass_newHeading(m,h){ + var s = Math.abs(m - h); + var delta = (m>h)?1:-1; + if (s>=180){s=360-s; delta = -delta;} + if (s<2) return h; + var hd = h + delta*(1 + Math.round(s/5)); + if (hd<0) hd+=360; + if (hd>360)hd-= 360; + return hd; +} +function Compass_reading() { + "ram"; + var d = Compass_tiltfixread(CALIBDATA.offset,CALIBDATA.scale); + Compass_heading = Compass_newHeading(d,Compass_heading); + hdngCompass = Compass_heading.toFixed(0); +} +setInterval(Compass_reading,200); + +setButtons(); +if (emulator) setInterval(updateClock, 2000); +else setInterval(updateClock, 10000); + +Bangle.loadWidgets(); +Bangle.drawWidgets(); From 20dd99487d0aae6784518d020607f66588e4f0a9 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:56:44 +0100 Subject: [PATCH 02/28] Add files via upload --- apps/bikespeedo/app-icon.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/bikespeedo/app-icon.js diff --git a/apps/bikespeedo/app-icon.js b/apps/bikespeedo/app-icon.js new file mode 100644 index 000000000..bb0f97f3a --- /dev/null +++ b/apps/bikespeedo/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwkE/4A/AAUkn4WU+Ufj4URmQCBikTiIWQ+cRl/xl8xmJIQFIMTiYdCJB/xFAP0l4HCiSRW+SzgmUimY4UoUhKahwCACi0BC61AgC3CI6fzkMCJaRfDmNBO63yoYHBglAGpXyiMEgJeDmEf+cRCxUxgMjn8zkMBBIUQkCXKaYLxFAwXzMRcRL4xFBHQQvJ+AKBCgPzEA8CC5ESCgKHBAAUzGgIwCEoRdGBgSDEDgQfDEYgACmgfKBYYPHIwIfJ+JECJgYADh/zBApwB+VPBQhIFBQRdEIwXzBAMDBIUhKwp/GmgdEia3DBIjQDDwZmFkRACilBFQYXBaQkhIIcyIYXzgMjmUUPwc/+hsDiQvDik/C4MgH4b4CF4QJDmI7DeIMh+UPLggqBWQYAJkX0UQYuBVYLmDABMTPAX/kgVBmIcBHAcyl8jl4DBcgaoC+MSFQPwAwMDbIUfmcfmQDB+cvHgIlCikxOAK9CkIXCEoMTkYNBBAP0n4XB+cDoDVEbwcfkcjdYimBC4PxkZeBC4fzAwQXBGYIaC+dPKoP/+kQFARfCPwKZCn4fCAQM0AQKPBkigDR4IAB+QwCAAg5DDQJOCAAISEkjaGkhAC+RKBd4onDiAYD+cgBggcD+cBIA0QiMikMAIAgTCkcyihAGAAMzkUjE4QYFkMSBQ4AT")) From 8c769f9c5a98ca52e31767a204bb0147038649fc Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:58:25 +0100 Subject: [PATCH 03/28] Add files via upload --- ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 000000000..5fb78710b --- /dev/null +++ b/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From 4f3a6b0a5d2943a54dac3b109f0cd5f5253737d7 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 15:59:36 +0100 Subject: [PATCH 04/28] Delete ChangeLog --- ChangeLog | 1 - 1 file changed, 1 deletion(-) delete mode 100644 ChangeLog diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 5fb78710b..000000000 --- a/ChangeLog +++ /dev/null @@ -1 +0,0 @@ -0.01: New App! From 556befc7e3587068a88c4c2ec973f503e3164919 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:00:40 +0100 Subject: [PATCH 05/28] Add files via upload --- apps/bikespeedo/ChangeLog | 1 + 1 file changed, 1 insertion(+) create mode 100644 apps/bikespeedo/ChangeLog diff --git a/apps/bikespeedo/ChangeLog b/apps/bikespeedo/ChangeLog new file mode 100644 index 000000000..5fb78710b --- /dev/null +++ b/apps/bikespeedo/ChangeLog @@ -0,0 +1 @@ +0.01: New App! From 168ca0ed8dd0296e56f392ba0a98a5cbad72a284 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:04:57 +0100 Subject: [PATCH 06/28] Add files via upload --- apps/bikespeedo/Screenshot.png | Bin 0 -> 4245 bytes apps/bikespeedo/metadata.json | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 apps/bikespeedo/Screenshot.png create mode 100644 apps/bikespeedo/metadata.json diff --git a/apps/bikespeedo/Screenshot.png b/apps/bikespeedo/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..fd27728e44de8ddfc18190928193e7c1b3869373 GIT binary patch literal 4245 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 Qe+Iw|bC!0pce0E_V%=Kufz literal 0 HcmV?d00001 diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json new file mode 100644 index 000000000..76d98d282 --- /dev/null +++ b/apps/bikespeedo/metadata.json @@ -0,0 +1,18 @@ +{ + "id": "bikespeedo", + "name": "Bike Speedometer", + "shortName": "BikeSpeedo", + "version": "0.01", + "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", + "icon": "app.png", + "screenshots": [{"url":"screenshot.png"}], + "type": "app", + "tags": "tool,cycling,bicycle,outdoors,sport", + "supports": ["BANGLEJS2"], + "readme": "README.md", + "allow_emulator": true, + "storage": [ + {"name":"bikespeedo.app.js","url":"app.js"}, + {"name":"bikespeedo.img","url":"app-icon.js","evaluate":true} + ] +} From 9f4836fcde203030e21fca91cac36ae21c4083a3 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:07:22 +0100 Subject: [PATCH 07/28] Update metadata.json --- apps/bikespeedo/metadata.json | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index 76d98d282..d1e9191f6 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -9,7 +9,6 @@ "type": "app", "tags": "tool,cycling,bicycle,outdoors,sport", "supports": ["BANGLEJS2"], - "readme": "README.md", "allow_emulator": true, "storage": [ {"name":"bikespeedo.app.js","url":"app.js"}, From 450832e7b940dc5e1047ec85f1b67d18278ec32d Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:08:41 +0100 Subject: [PATCH 08/28] Add files via upload --- apps/bikespeedo/app.png | Bin 0 -> 779 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/bikespeedo/app.png diff --git a/apps/bikespeedo/app.png b/apps/bikespeedo/app.png new file mode 100644 index 0000000000000000000000000000000000000000..530945f4713e3264b5fe012c3ab950a9a27da75e GIT binary patch literal 779 zcmV+m1N8ifP){#^z@UlC!AM~5{Wz@R z{F0M%u}W|qz+n>eClwqL5*?-v*d*AFYhUYpfK37z2%Ci!7?_llP&K-NLPt}EL9J0@ z1Cp@5S!0_`0RuyXId|F@q-urC|~e6(BU{0tSXapn(Sqpc0l)dZPln0v9k^nHNC#>`mMTV5|BWI7L8-fJGD{ z!J5Dx0JVzm081Z`^$lt_)D;gOfJk7{Vc>uyD&_-VsvZ)tHyIde423^|m|Pq9K+c-h z3M3*GJ~QxiU5#IO1uWqRa>mMhAh9suGsBDxpg?i}N(8WiBH$G$RNpv!=4}VkMP5LM zGJik{Plox5Ky&$$*?~^x2l;}9!5xT!AbTc|xG2qV3@F_IWbVH-_4@uxAm8ROFchy` zz~BMY*vf6fuw=Kvd84PS6Zp+r7#IwJxq}U8?>Fux40bBk_rf;t7&vZfVc=_(Z~!M7 z51ZZy`6|$6kPdD+1_qWAZWw_$ zAX)Ba2dEh002ov JPDHLkV1lozPD=m) literal 0 HcmV?d00001 From b35cd628b1540e2eef4cce5474be3896943fb8b0 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:35:59 +0100 Subject: [PATCH 09/28] Update metadata.json --- apps/bikespeedo/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index d1e9191f6..3a102bd72 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -5,7 +5,7 @@ "version": "0.01", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", "icon": "app.png", - "screenshots": [{"url":"screenshot.png"}], + "screenshots": [{"url":"Screenshot.png"}], "type": "app", "tags": "tool,cycling,bicycle,outdoors,sport", "supports": ["BANGLEJS2"], From c1e802da4e05f9f6c10770380cc320e8f9118d4f Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 16:36:35 +0100 Subject: [PATCH 10/28] Update metadata.json --- apps/bikespeedo/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index 3a102bd72..9ee325b35 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -1,6 +1,6 @@ { "id": "bikespeedo", - "name": "Bike Speedometer", + "name": "Bike Speedometer (beta)", "shortName": "BikeSpeedo", "version": "0.01", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", From 913bb4b68ecd663186d7d005c376298e271bbda2 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 17:09:29 +0100 Subject: [PATCH 11/28] Update app.js --- apps/bikespeedo/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/app.js b/apps/bikespeedo/app.js index edf507823..0c5680c9d 100644 --- a/apps/bikespeedo/app.js +++ b/apps/bikespeedo/app.js @@ -536,7 +536,7 @@ function Compass_reading() { Compass_heading = Compass_newHeading(d,Compass_heading); hdngCompass = Compass_heading.toFixed(0); } -setInterval(Compass_reading,200); +if (!calibrateCompass) setInterval(Compass_reading,200); setButtons(); if (emulator) setInterval(updateClock, 2000); From c082aec72ca9e56e8258070ebe9269437f7cfe84 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 17:37:27 +0100 Subject: [PATCH 12/28] Add files via upload --- apps/bikespeedo/Hochrad120px.gif | Bin 0 -> 2601 bytes apps/bikespeedo/README.md | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 apps/bikespeedo/Hochrad120px.gif create mode 100644 apps/bikespeedo/README.md diff --git a/apps/bikespeedo/Hochrad120px.gif b/apps/bikespeedo/Hochrad120px.gif new file mode 100644 index 0000000000000000000000000000000000000000..1952cf44f89a0fb2f61a8fac6c40177fa2d25706 GIT binary patch literal 2601 zcmV+^3fA>UNk%w1VR!&|0J8u9|Ns90008{_{0|Qg;o;%$@9!TUA5TwDzP`TC&(AtK zI*g2rt*xzjd3l_ioMmNYA^8LW00031EC2ui0C)g+00RX75XecZy*TU5yZ>M)j-)4) zXsWJk>%QArAO&pSPA)L6N5OYEp0>}jbIBX6b$N?{qSURsSSp#WE6po4-cFg%{ zbO+=^%t%_v@X#s28ypzb({@03$KwPG2!0bM3ygFu~&4-N>iX`TxQi(;my5(rZVya5JcoxoKT1V;x|2uKZtxh^_e z%ryyWRtSg+c|T?ZURDoCdCxY7ND6~i3vLOBUCtCh#{&=WAef5FL>_ZF z!bTZmaXgsFV#zEV8(6@(GoF5zF_*AQ){}w;4E&lA&7x$)(up3>D8yQYYuOB9Az;uT ztLX*^3f3l3GJp~b1qd*BnQEWk;UbDRfJ}*igIS**6blWVFo0#o?G;RbHC2P{-F<>r zVwlMcfQSb0JDI$%{l0&t^CZlKfV6DrRltD%0g9AnM=?FEHokxI}$z1keBhAB84>14jsk-~VKG@tB)fEO(#hkygj)oEr7OYDJ&ASLRv$$nOC3PTsgpb1!?G@gUVs&p+{%}smK76#`p+8%siP9E1j+d6QBZYq==BN z{$e73G3=)48&}1b>3(#qwFaU;0g%uCpe*@R4M$5Q3kIqWrU^_Ba8_cFt*rt}(052w z=F>tgVmofG+aAy@9N!|Nt_KTg$1JDmA_@gE?_v=zx6TOglx?E|5E7O??F;Z2|GEng zK+Qmzk-;qv>z%?5Uol644u53Vs#)fQzypWIL-7&yEcS0RajH;2MRxRS%w0x~;8*}S zwbICb|HhwF@>BG2tP{A_*f(D%hxgzl-Z~`sUwhSTzRq%s^la%qYU>d^k zwTH~201?@S%_EV@08}$*+0g;8&MhWX?cLnL015@&32*E33upiRwA-riEI?cs0xF>a zA+MlOB3+*nSIW{RlD7vtfNgjG8B=7Pma~>SEkFSu0c2L?h@9S9+vOr>u}p0jDEK1> z7;wOo)0*oO-i_zLG!kki8?tBFim&p^tDK>h60;19)x)kpw~y zk{cqju1NE8kgL3R?X0bW+KHPCUg4BTuRxqLfp6RI@K?Z><3%SD#s&$%0|o#>KCOw5 zajoIOifVfyhk+BSWj$YqM&6$6g#w;Kzw`%o5<`34Kv{FbsQ)_HgX~X zX&gsfImyTDSU@=9Wki7%i=TD4fB>nO?1R#kLR!(0TN-cx3n?Hk zh^j-#0wKi_(BuJ0Q(X#00lmjX&s3|#2Iasv=#2UxTKH^~Q41}RbiJn~5^%wbI&5ymQ6 zvA3w5MUNFw;aY_FAcbK{dl?`N*xDFD>AkINtHH)HCqhOGkcb|3E5H{cMv?^(NE^s= z$nHNRS*#7!n~#YiBf5V+FN^K`;0dXdKR>LAEwmWP0iTBh?x$TQNmOro->ELJKFJAq{ysK^g`T4oB2r3+)TwW+lM9N31ZSNefE#pu|N#wAEb0_+K)Q zP>idPa-Q)26ToDd7E8kH2|d$tpcQiG(5OyC2Z}HN9en{1W)1_Qtc-5a7NOkW|~ zAOQ!AzzEKO^hzv^*QR&@jq>F#da+xR?JaNmNy^z)v5q4^)O|K4NL&gjWd$#RKt`4^ z23kB*oECIUF`>+ZHZmAEx}$)--(}EhVlC1R}|@5aNWKf>bKx5(Us$ zFp6mZac|r|MGzJMtF6foNDN)7_D>17Ei-MB<~e#Aa3iO=lmoaUUDj&gYZmz~6c+HU z`AoMI5lY5)T-4-F96^x7_%kar@hhHAs~!<;hhSt@0mrU`)e_*r?C7wM1C6TPmqlR0B+uJvHd*=qI$Ogbknm=C1 zx_n~;>AW$8Y?MZ{Z3<*~8AORHR=}>*C5@Y}dN3)I|1go5!Zvs2Aq8x;j3rw*LPi1B ze!Os(8evJVoDP5yvgpsjpW0~+i~9->- Date: Wed, 16 Mar 2022 17:49:15 +0100 Subject: [PATCH 13/28] Update README.md --- apps/bikespeedo/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/bikespeedo/README.md b/apps/bikespeedo/README.md index 045dff6a5..b4fe95595 100644 --- a/apps/bikespeedo/README.md +++ b/apps/bikespeedo/README.md @@ -1,12 +1,12 @@ -## GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude... +# GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude... ![](Hochrad120px.gif)...all taken from internal sources. -# To speed-up GPS reception it is strongly recommended to upload AGPS data with ["Assisted GPS Update"](https://banglejs.com/apps/?id=assistedgps) +### To speed-up GPS reception it is strongly recommended to upload AGPS data with ["Assisted GPS Update"](https://banglejs.com/apps/?id=assistedgps) -# If "CALIB!" is shown on the display or the compass heading differs too much from GPS heading, compass calibration should be done with the ["Navigation Compass" App](https://banglejs.com/apps/?id=magnav) +### If "CALIB!" is shown on the display or the compass heading differs too much from GPS heading, compass calibration should be done with the ["Navigation Compass" App](https://banglejs.com/apps/?id=magnav) -**Credits:** -Bike Speedometer App by github.com/HilmarSt -Big parts of the software are based on github.com/espruino/BangleApps/tree/master/apps/speedalt -Compass and Compass Calibration based on github.com/espruino/BangleApps/tree/master/apps/magnav +**Credits:**
+Bike Speedometer App by *github.com/HilmarSt*
+Big parts of the software are based on *github.com/espruino/BangleApps/tree/master/apps/speedalt*
+Compass and Compass Calibration based on *github.com/espruino/BangleApps/tree/master/apps/magnav* From 7bb2044d88a0637a6d94ffd6342c487ff85ac2b3 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 17:50:46 +0100 Subject: [PATCH 15/28] Delete Hochrad120px.gif --- apps/bikespeedo/Hochrad120px.gif | Bin 2601 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/bikespeedo/Hochrad120px.gif diff --git a/apps/bikespeedo/Hochrad120px.gif b/apps/bikespeedo/Hochrad120px.gif deleted file mode 100644 index 1952cf44f89a0fb2f61a8fac6c40177fa2d25706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2601 zcmV+^3fA>UNk%w1VR!&|0J8u9|Ns90008{_{0|Qg;o;%$@9!TUA5TwDzP`TC&(AtK zI*g2rt*xzjd3l_ioMmNYA^8LW00031EC2ui0C)g+00RX75XecZy*TU5yZ>M)j-)4) zXsWJk>%QArAO&pSPA)L6N5OYEp0>}jbIBX6b$N?{qSURsSSp#WE6po4-cFg%{ zbO+=^%t%_v@X#s28ypzb({@03$KwPG2!0bM3ygFu~&4-N>iX`TxQi(;my5(rZVya5JcoxoKT1V;x|2uKZtxh^_e z%ryyWRtSg+c|T?ZURDoCdCxY7ND6~i3vLOBUCtCh#{&=WAef5FL>_ZF z!bTZmaXgsFV#zEV8(6@(GoF5zF_*AQ){}w;4E&lA&7x$)(up3>D8yQYYuOB9Az;uT ztLX*^3f3l3GJp~b1qd*BnQEWk;UbDRfJ}*igIS**6blWVFo0#o?G;RbHC2P{-F<>r zVwlMcfQSb0JDI$%{l0&t^CZlKfV6DrRltD%0g9AnM=?FEHokxI}$z1keBhAB84>14jsk-~VKG@tB)fEO(#hkygj)oEr7OYDJ&ASLRv$$nOC3PTsgpb1!?G@gUVs&p+{%}smK76#`p+8%siP9E1j+d6QBZYq==BN z{$e73G3=)48&}1b>3(#qwFaU;0g%uCpe*@R4M$5Q3kIqWrU^_Ba8_cFt*rt}(052w z=F>tgVmofG+aAy@9N!|Nt_KTg$1JDmA_@gE?_v=zx6TOglx?E|5E7O??F;Z2|GEng zK+Qmzk-;qv>z%?5Uol644u53Vs#)fQzypWIL-7&yEcS0RajH;2MRxRS%w0x~;8*}S zwbICb|HhwF@>BG2tP{A_*f(D%hxgzl-Z~`sUwhSTzRq%s^la%qYU>d^k zwTH~201?@S%_EV@08}$*+0g;8&MhWX?cLnL015@&32*E33upiRwA-riEI?cs0xF>a zA+MlOB3+*nSIW{RlD7vtfNgjG8B=7Pma~>SEkFSu0c2L?h@9S9+vOr>u}p0jDEK1> z7;wOo)0*oO-i_zLG!kki8?tBFim&p^tDK>h60;19)x)kpw~y zk{cqju1NE8kgL3R?X0bW+KHPCUg4BTuRxqLfp6RI@K?Z><3%SD#s&$%0|o#>KCOw5 zajoIOifVfyhk+BSWj$YqM&6$6g#w;Kzw`%o5<`34Kv{FbsQ)_HgX~X zX&gsfImyTDSU@=9Wki7%i=TD4fB>nO?1R#kLR!(0TN-cx3n?Hk zh^j-#0wKi_(BuJ0Q(X#00lmjX&s3|#2Iasv=#2UxTKH^~Q41}RbiJn~5^%wbI&5ymQ6 zvA3w5MUNFw;aY_FAcbK{dl?`N*xDFD>AkINtHH)HCqhOGkcb|3E5H{cMv?^(NE^s= z$nHNRS*#7!n~#YiBf5V+FN^K`;0dXdKR>LAEwmWP0iTBh?x$TQNmOro->ELJKFJAq{ysK^g`T4oB2r3+)TwW+lM9N31ZSNefE#pu|N#wAEb0_+K)Q zP>idPa-Q)26ToDd7E8kH2|d$tpcQiG(5OyC2Z}HN9en{1W)1_Qtc-5a7NOkW|~ zAOQ!AzzEKO^hzv^*QR&@jq>F#da+xR?JaNmNy^z)v5q4^)O|K4NL&gjWd$#RKt`4^ z23kB*oECIUF`>+ZHZmAEx}$)--(}EhVlC1R}|@5aNWKf>bKx5(Us$ zFp6mZac|r|MGzJMtF6foNDN)7_D>17Ei-MB<~e#Aa3iO=lmoaUUDj&gYZmz~6c+HU z`AoMI5lY5)T-4-F96^x7_%kar@hhHAs~!<;hhSt@0mrU`)e_*r?C7wM1C6TPmqlR0B+uJvHd*=qI$Ogbknm=C1 zx_n~;>AW$8Y?MZ{Z3<*~8AORHR=}>*C5@Y}dN3)I|1go5!Zvs2Aq8x;j3rw*LPi1B ze!Os(8evJVoDP5yvgpsjpW0~+i~9->- Date: Wed, 16 Mar 2022 17:51:13 +0100 Subject: [PATCH 16/28] Add files via upload --- apps/bikespeedo/Hochrad120px.gif | Bin 0 -> 2601 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/bikespeedo/Hochrad120px.gif diff --git a/apps/bikespeedo/Hochrad120px.gif b/apps/bikespeedo/Hochrad120px.gif new file mode 100644 index 0000000000000000000000000000000000000000..1952cf44f89a0fb2f61a8fac6c40177fa2d25706 GIT binary patch literal 2601 zcmV+^3fA>UNk%w1VR!&|0J8u9|Ns90008{_{0|Qg;o;%$@9!TUA5TwDzP`TC&(AtK zI*g2rt*xzjd3l_ioMmNYA^8LW00031EC2ui0C)g+00RX75XecZy*TU5yZ>M)j-)4) zXsWJk>%QArAO&pSPA)L6N5OYEp0>}jbIBX6b$N?{qSURsSSp#WE6po4-cFg%{ zbO+=^%t%_v@X#s28ypzb({@03$KwPG2!0bM3ygFu~&4-N>iX`TxQi(;my5(rZVya5JcoxoKT1V;x|2uKZtxh^_e z%ryyWRtSg+c|T?ZURDoCdCxY7ND6~i3vLOBUCtCh#{&=WAef5FL>_ZF z!bTZmaXgsFV#zEV8(6@(GoF5zF_*AQ){}w;4E&lA&7x$)(up3>D8yQYYuOB9Az;uT ztLX*^3f3l3GJp~b1qd*BnQEWk;UbDRfJ}*igIS**6blWVFo0#o?G;RbHC2P{-F<>r zVwlMcfQSb0JDI$%{l0&t^CZlKfV6DrRltD%0g9AnM=?FEHokxI}$z1keBhAB84>14jsk-~VKG@tB)fEO(#hkygj)oEr7OYDJ&ASLRv$$nOC3PTsgpb1!?G@gUVs&p+{%}smK76#`p+8%siP9E1j+d6QBZYq==BN z{$e73G3=)48&}1b>3(#qwFaU;0g%uCpe*@R4M$5Q3kIqWrU^_Ba8_cFt*rt}(052w z=F>tgVmofG+aAy@9N!|Nt_KTg$1JDmA_@gE?_v=zx6TOglx?E|5E7O??F;Z2|GEng zK+Qmzk-;qv>z%?5Uol644u53Vs#)fQzypWIL-7&yEcS0RajH;2MRxRS%w0x~;8*}S zwbICb|HhwF@>BG2tP{A_*f(D%hxgzl-Z~`sUwhSTzRq%s^la%qYU>d^k zwTH~201?@S%_EV@08}$*+0g;8&MhWX?cLnL015@&32*E33upiRwA-riEI?cs0xF>a zA+MlOB3+*nSIW{RlD7vtfNgjG8B=7Pma~>SEkFSu0c2L?h@9S9+vOr>u}p0jDEK1> z7;wOo)0*oO-i_zLG!kki8?tBFim&p^tDK>h60;19)x)kpw~y zk{cqju1NE8kgL3R?X0bW+KHPCUg4BTuRxqLfp6RI@K?Z><3%SD#s&$%0|o#>KCOw5 zajoIOifVfyhk+BSWj$YqM&6$6g#w;Kzw`%o5<`34Kv{FbsQ)_HgX~X zX&gsfImyTDSU@=9Wki7%i=TD4fB>nO?1R#kLR!(0TN-cx3n?Hk zh^j-#0wKi_(BuJ0Q(X#00lmjX&s3|#2Iasv=#2UxTKH^~Q41}RbiJn~5^%wbI&5ymQ6 zvA3w5MUNFw;aY_FAcbK{dl?`N*xDFD>AkINtHH)HCqhOGkcb|3E5H{cMv?^(NE^s= z$nHNRS*#7!n~#YiBf5V+FN^K`;0dXdKR>LAEwmWP0iTBh?x$TQNmOro->ELJKFJAq{ysK^g`T4oB2r3+)TwW+lM9N31ZSNefE#pu|N#wAEb0_+K)Q zP>idPa-Q)26ToDd7E8kH2|d$tpcQiG(5OyC2Z}HN9en{1W)1_Qtc-5a7NOkW|~ zAOQ!AzzEKO^hzv^*QR&@jq>F#da+xR?JaNmNy^z)v5q4^)O|K4NL&gjWd$#RKt`4^ z23kB*oECIUF`>+ZHZmAEx}$)--(}EhVlC1R}|@5aNWKf>bKx5(Us$ zFp6mZac|r|MGzJMtF6foNDN)7_D>17Ei-MB<~e#Aa3iO=lmoaUUDj&gYZmz~6c+HU z`AoMI5lY5)T-4-F96^x7_%kar@hhHAs~!<;hhSt@0mrU`)e_*r?C7wM1C6TPmqlR0B+uJvHd*=qI$Ogbknm=C1 zx_n~;>AW$8Y?MZ{Z3<*~8AORHR=}>*C5@Y}dN3)I|1go5!Zvs2Aq8x;j3rw*LPi1B ze!Os(8evJVoDP5yvgpsjpW0~+i~9->- Date: Wed, 16 Mar 2022 17:52:16 +0100 Subject: [PATCH 17/28] Delete Hochrad120px.gif --- apps/bikespeedo/Hochrad120px.gif | Bin 2601 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/bikespeedo/Hochrad120px.gif diff --git a/apps/bikespeedo/Hochrad120px.gif b/apps/bikespeedo/Hochrad120px.gif deleted file mode 100644 index 1952cf44f89a0fb2f61a8fac6c40177fa2d25706..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2601 zcmV+^3fA>UNk%w1VR!&|0J8u9|Ns90008{_{0|Qg;o;%$@9!TUA5TwDzP`TC&(AtK zI*g2rt*xzjd3l_ioMmNYA^8LW00031EC2ui0C)g+00RX75XecZy*TU5yZ>M)j-)4) zXsWJk>%QArAO&pSPA)L6N5OYEp0>}jbIBX6b$N?{qSURsSSp#WE6po4-cFg%{ zbO+=^%t%_v@X#s28ypzb({@03$KwPG2!0bM3ygFu~&4-N>iX`TxQi(;my5(rZVya5JcoxoKT1V;x|2uKZtxh^_e z%ryyWRtSg+c|T?ZURDoCdCxY7ND6~i3vLOBUCtCh#{&=WAef5FL>_ZF z!bTZmaXgsFV#zEV8(6@(GoF5zF_*AQ){}w;4E&lA&7x$)(up3>D8yQYYuOB9Az;uT ztLX*^3f3l3GJp~b1qd*BnQEWk;UbDRfJ}*igIS**6blWVFo0#o?G;RbHC2P{-F<>r zVwlMcfQSb0JDI$%{l0&t^CZlKfV6DrRltD%0g9AnM=?FEHokxI}$z1keBhAB84>14jsk-~VKG@tB)fEO(#hkygj)oEr7OYDJ&ASLRv$$nOC3PTsgpb1!?G@gUVs&p+{%}smK76#`p+8%siP9E1j+d6QBZYq==BN z{$e73G3=)48&}1b>3(#qwFaU;0g%uCpe*@R4M$5Q3kIqWrU^_Ba8_cFt*rt}(052w z=F>tgVmofG+aAy@9N!|Nt_KTg$1JDmA_@gE?_v=zx6TOglx?E|5E7O??F;Z2|GEng zK+Qmzk-;qv>z%?5Uol644u53Vs#)fQzypWIL-7&yEcS0RajH;2MRxRS%w0x~;8*}S zwbICb|HhwF@>BG2tP{A_*f(D%hxgzl-Z~`sUwhSTzRq%s^la%qYU>d^k zwTH~201?@S%_EV@08}$*+0g;8&MhWX?cLnL015@&32*E33upiRwA-riEI?cs0xF>a zA+MlOB3+*nSIW{RlD7vtfNgjG8B=7Pma~>SEkFSu0c2L?h@9S9+vOr>u}p0jDEK1> z7;wOo)0*oO-i_zLG!kki8?tBFim&p^tDK>h60;19)x)kpw~y zk{cqju1NE8kgL3R?X0bW+KHPCUg4BTuRxqLfp6RI@K?Z><3%SD#s&$%0|o#>KCOw5 zajoIOifVfyhk+BSWj$YqM&6$6g#w;Kzw`%o5<`34Kv{FbsQ)_HgX~X zX&gsfImyTDSU@=9Wki7%i=TD4fB>nO?1R#kLR!(0TN-cx3n?Hk zh^j-#0wKi_(BuJ0Q(X#00lmjX&s3|#2Iasv=#2UxTKH^~Q41}RbiJn~5^%wbI&5ymQ6 zvA3w5MUNFw;aY_FAcbK{dl?`N*xDFD>AkINtHH)HCqhOGkcb|3E5H{cMv?^(NE^s= z$nHNRS*#7!n~#YiBf5V+FN^K`;0dXdKR>LAEwmWP0iTBh?x$TQNmOro->ELJKFJAq{ysK^g`T4oB2r3+)TwW+lM9N31ZSNefE#pu|N#wAEb0_+K)Q zP>idPa-Q)26ToDd7E8kH2|d$tpcQiG(5OyC2Z}HN9en{1W)1_Qtc-5a7NOkW|~ zAOQ!AzzEKO^hzv^*QR&@jq>F#da+xR?JaNmNy^z)v5q4^)O|K4NL&gjWd$#RKt`4^ z23kB*oECIUF`>+ZHZmAEx}$)--(}EhVlC1R}|@5aNWKf>bKx5(Us$ zFp6mZac|r|MGzJMtF6foNDN)7_D>17Ei-MB<~e#Aa3iO=lmoaUUDj&gYZmz~6c+HU z`AoMI5lY5)T-4-F96^x7_%kar@hhHAs~!<;hhSt@0mrU`)e_*r?C7wM1C6TPmqlR0B+uJvHd*=qI$Ogbknm=C1 zx_n~;>AW$8Y?MZ{Z3<*~8AORHR=}>*C5@Y}dN3)I|1go5!Zvs2Aq8x;j3rw*LPi1B ze!Os(8evJVoDP5yvgpsjpW0~+i~9->- Date: Wed, 16 Mar 2022 17:52:36 +0100 Subject: [PATCH 18/28] Add files via upload --- apps/bikespeedo/Hochrad120px.gif | Bin 0 -> 2601 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/bikespeedo/Hochrad120px.gif diff --git a/apps/bikespeedo/Hochrad120px.gif b/apps/bikespeedo/Hochrad120px.gif new file mode 100644 index 0000000000000000000000000000000000000000..1952cf44f89a0fb2f61a8fac6c40177fa2d25706 GIT binary patch literal 2601 zcmV+^3fA>UNk%w1VR!&|0J8u9|Ns90008{_{0|Qg;o;%$@9!TUA5TwDzP`TC&(AtK zI*g2rt*xzjd3l_ioMmNYA^8LW00031EC2ui0C)g+00RX75XecZy*TU5yZ>M)j-)4) zXsWJk>%QArAO&pSPA)L6N5OYEp0>}jbIBX6b$N?{qSURsSSp#WE6po4-cFg%{ zbO+=^%t%_v@X#s28ypzb({@03$KwPG2!0bM3ygFu~&4-N>iX`TxQi(;my5(rZVya5JcoxoKT1V;x|2uKZtxh^_e z%ryyWRtSg+c|T?ZURDoCdCxY7ND6~i3vLOBUCtCh#{&=WAef5FL>_ZF z!bTZmaXgsFV#zEV8(6@(GoF5zF_*AQ){}w;4E&lA&7x$)(up3>D8yQYYuOB9Az;uT ztLX*^3f3l3GJp~b1qd*BnQEWk;UbDRfJ}*igIS**6blWVFo0#o?G;RbHC2P{-F<>r zVwlMcfQSb0JDI$%{l0&t^CZlKfV6DrRltD%0g9AnM=?FEHokxI}$z1keBhAB84>14jsk-~VKG@tB)fEO(#hkygj)oEr7OYDJ&ASLRv$$nOC3PTsgpb1!?G@gUVs&p+{%}smK76#`p+8%siP9E1j+d6QBZYq==BN z{$e73G3=)48&}1b>3(#qwFaU;0g%uCpe*@R4M$5Q3kIqWrU^_Ba8_cFt*rt}(052w z=F>tgVmofG+aAy@9N!|Nt_KTg$1JDmA_@gE?_v=zx6TOglx?E|5E7O??F;Z2|GEng zK+Qmzk-;qv>z%?5Uol644u53Vs#)fQzypWIL-7&yEcS0RajH;2MRxRS%w0x~;8*}S zwbICb|HhwF@>BG2tP{A_*f(D%hxgzl-Z~`sUwhSTzRq%s^la%qYU>d^k zwTH~201?@S%_EV@08}$*+0g;8&MhWX?cLnL015@&32*E33upiRwA-riEI?cs0xF>a zA+MlOB3+*nSIW{RlD7vtfNgjG8B=7Pma~>SEkFSu0c2L?h@9S9+vOr>u}p0jDEK1> z7;wOo)0*oO-i_zLG!kki8?tBFim&p^tDK>h60;19)x)kpw~y zk{cqju1NE8kgL3R?X0bW+KHPCUg4BTuRxqLfp6RI@K?Z><3%SD#s&$%0|o#>KCOw5 zajoIOifVfyhk+BSWj$YqM&6$6g#w;Kzw`%o5<`34Kv{FbsQ)_HgX~X zX&gsfImyTDSU@=9Wki7%i=TD4fB>nO?1R#kLR!(0TN-cx3n?Hk zh^j-#0wKi_(BuJ0Q(X#00lmjX&s3|#2Iasv=#2UxTKH^~Q41}RbiJn~5^%wbI&5ymQ6 zvA3w5MUNFw;aY_FAcbK{dl?`N*xDFD>AkINtHH)HCqhOGkcb|3E5H{cMv?^(NE^s= z$nHNRS*#7!n~#YiBf5V+FN^K`;0dXdKR>LAEwmWP0iTBh?x$TQNmOro->ELJKFJAq{ysK^g`T4oB2r3+)TwW+lM9N31ZSNefE#pu|N#wAEb0_+K)Q zP>idPa-Q)26ToDd7E8kH2|d$tpcQiG(5OyC2Z}HN9en{1W)1_Qtc-5a7NOkW|~ zAOQ!AzzEKO^hzv^*QR&@jq>F#da+xR?JaNmNy^z)v5q4^)O|K4NL&gjWd$#RKt`4^ z23kB*oECIUF`>+ZHZmAEx}$)--(}EhVlC1R}|@5aNWKf>bKx5(Us$ zFp6mZac|r|MGzJMtF6foNDN)7_D>17Ei-MB<~e#Aa3iO=lmoaUUDj&gYZmz~6c+HU z`AoMI5lY5)T-4-F96^x7_%kar@hhHAs~!<;hhSt@0mrU`)e_*r?C7wM1C6TPmqlR0B+uJvHd*=qI$Ogbknm=C1 zx_n~;>AW$8Y?MZ{Z3<*~8AORHR=}>*C5@Y}dN3)I|1go5!Zvs2Aq8x;j3rw*LPi1B ze!Os(8evJVoDP5yvgpsjpW0~+i~9->- Date: Wed, 16 Mar 2022 17:55:50 +0100 Subject: [PATCH 19/28] Add files via upload --- apps/bikespeedo/Hochrad120px.png | Bin 0 -> 2505 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 apps/bikespeedo/Hochrad120px.png diff --git a/apps/bikespeedo/Hochrad120px.png b/apps/bikespeedo/Hochrad120px.png new file mode 100644 index 0000000000000000000000000000000000000000..2c2d4e1efd95553442f74bd7ef7ff693692a35a0 GIT binary patch literal 2505 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 Tz%^~j00000NkvXXu0mjffMU Date: Wed, 16 Mar 2022 17:59:49 +0100 Subject: [PATCH 20/28] Update README.md --- apps/bikespeedo/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/README.md b/apps/bikespeedo/README.md index b4fe95595..2abf74633 100644 --- a/apps/bikespeedo/README.md +++ b/apps/bikespeedo/README.md @@ -1,6 +1,6 @@ # GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude... -![](Hochrad120px.gif)...all taken from internal sources. +![](Hochrad120px.png)...all taken from internal sources. ### To speed-up GPS reception it is strongly recommended to upload AGPS data with ["Assisted GPS Update"](https://banglejs.com/apps/?id=assistedgps) From 9a80a8375105e2e7a5956333838bd761af5da761 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:03:14 +0100 Subject: [PATCH 21/28] Update metadata.json --- apps/bikespeedo/metadata.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index 9ee325b35..db5347724 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -1,7 +1,7 @@ { "id": "bikespeedo", "name": "Bike Speedometer (beta)", - "shortName": "BikeSpeedo", + "shortName": "Bike Speedometer", "version": "0.01", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", "icon": "app.png", @@ -9,6 +9,7 @@ "type": "app", "tags": "tool,cycling,bicycle,outdoors,sport", "supports": ["BANGLEJS2"], + "readme": "README.md", "allow_emulator": true, "storage": [ {"name":"bikespeedo.app.js","url":"app.js"}, From 5bd5ae5ef6289042c0392ea39480e01bdb83a230 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:15:12 +0100 Subject: [PATCH 22/28] Add files via upload --- apps/bikespeedo/app.png | Bin 779 -> 751 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/bikespeedo/app.png b/apps/bikespeedo/app.png index 530945f4713e3264b5fe012c3ab950a9a27da75e..50f242b47690b53329237e99d335a3aab9b3c5dc 100644 GIT binary patch delta 37 vcmV+=0NVeH2JZ!sED`_!0N>x=VPRqQ_4T#2wKq36kv_Kr From 21d0626f0ab22da3aec135ccc2fe1b088b89fe7b Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:25:41 +0100 Subject: [PATCH 23/28] Add files via upload --- apps/bikespeedo/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/app-icon.js b/apps/bikespeedo/app-icon.js index bb0f97f3a..891185e0b 100644 --- a/apps/bikespeedo/app-icon.js +++ b/apps/bikespeedo/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwkE/4A/AAUkn4WU+Ufj4URmQCBikTiIWQ+cRl/xl8xmJIQFIMTiYdCJB/xFAP0l4HCiSRW+SzgmUimY4UoUhKahwCACi0BC61AgC3CI6fzkMCJaRfDmNBO63yoYHBglAGpXyiMEgJeDmEf+cRCxUxgMjn8zkMBBIUQkCXKaYLxFAwXzMRcRL4xFBHQQvJ+AKBCgPzEA8CC5ESCgKHBAAUzGgIwCEoRdGBgSDEDgQfDEYgACmgfKBYYPHIwIfJ+JECJgYADh/zBApwB+VPBQhIFBQRdEIwXzBAMDBIUhKwp/GmgdEia3DBIjQDDwZmFkRACilBFQYXBaQkhIIcyIYXzgMjmUUPwc/+hsDiQvDik/C4MgH4b4CF4QJDmI7DeIMh+UPLggqBWQYAJkX0UQYuBVYLmDABMTPAX/kgVBmIcBHAcyl8jl4DBcgaoC+MSFQPwAwMDbIUfmcfmQDB+cvHgIlCikxOAK9CkIXCEoMTkYNBBAP0n4XB+cDoDVEbwcfkcjdYimBC4PxkZeBC4fzAwQXBGYIaC+dPKoP/+kQFARfCPwKZCn4fCAQM0AQKPBkigDR4IAB+QwCAAg5DDQJOCAAISEkjaGkhAC+RKBd4onDiAYD+cgBggcD+cBIA0QiMikMAIAgTCkcyihAGAAMzkUjE4QYFkMSBQ4AT")) +require("heatshrink").decompress(atob("mEwxH+64A/AC+sF1uBgAwsq1W1krGEmswIFDlcAFoMrqyGjlcrGAQDB1guBBQJghKYZZCMYhqBlYugFAesgAuFYgQIHAE2sYMZDfwIABbgIuowMAqwABb4wAjFVQAEqyMrF4cAlYABqwypR4RgBwIyplYnF1hnBGIo8BAAQvhGIj6C1hpBgChBGCqGBqwdCRQQnCB4gJBGAgtWc4WBPoi9JH4ILBGYQATPoRHJRYoACwLFBLi4tGLIyLEA5QuPCoYpEMhBBBGDIuFgArIYQIUHA4b+GABLUBAwoQIXorDGI5RNGCB9WRQ0AJwwHGDxChOH4oDCRI4/GXpAaB1gyLEwlWKgTrBT46ALCogQKZoryFCwzgGBgz/NZpaQHHBCdEF5hKBBxWBUwoGBgEAEoIyHHYesBg7aBJQ7SBBAIvEIIJCBD4IFBgBIGEAcAUA8rGAIWHS4QvDCAJAHG4JfRCgKCFeAovCdRIiBDYq/NABi0Cfo5IEBgjUGACZ6BqwcGwLxBFYRsEHIKBIJwLkBNoIHDF468GYgIBBXY4EDE4IHDYwSwCN4IGBCIp5CJYtWgBZBHAgFEMoRjEE4QDCLYJUEUoaCBPYoQCgA4FGozxFLYwfEQgqrGexIYFBoxbDS4YHCIAYVEEAZcCYwwvGfoQHEcwQHHIg9WIAS9BIoYYESoowIABQuBUgg1DVwwACEpIwBChDLFDQ5JLlZnHJAajBQwgLEO4LDBHKAhBFxQxFCIIACAwadLHgJJBAAUrQJxYFAAbKPCwRGCCqAAm")) \ No newline at end of file From bb0f469b43ed03b27cfe9b6cf96f4c799a35a08e Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:36:18 +0100 Subject: [PATCH 24/28] Update README.md --- apps/bikespeedo/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/bikespeedo/README.md b/apps/bikespeedo/README.md index 2abf74633..f57dcaa50 100644 --- a/apps/bikespeedo/README.md +++ b/apps/bikespeedo/README.md @@ -7,6 +7,6 @@ ### If "CALIB!" is shown on the display or the compass heading differs too much from GPS heading, compass calibration should be done with the ["Navigation Compass" App](https://banglejs.com/apps/?id=magnav) **Credits:**
-Bike Speedometer App by *github.com/HilmarSt*
-Big parts of the software are based on *github.com/espruino/BangleApps/tree/master/apps/speedalt*
-Compass and Compass Calibration based on *github.com/espruino/BangleApps/tree/master/apps/magnav* +Bike Speedometer App by github.com/HilmarSt
+Big parts of the software are based on github.com/espruino/BangleApps/tree/master/apps/speedalt
+Compass and Compass Calibration based on github.com/espruino/BangleApps/tree/master/apps/magnav From 1040f06573a0e7b7495a66b5542f4e5f9ea1fd38 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:43:50 +0100 Subject: [PATCH 25/28] Update README.md --- apps/bikespeedo/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/bikespeedo/README.md b/apps/bikespeedo/README.md index f57dcaa50..7d271a022 100644 --- a/apps/bikespeedo/README.md +++ b/apps/bikespeedo/README.md @@ -1,10 +1,10 @@ -# GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude... +## GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude... ![](Hochrad120px.png)...all taken from internal sources. -### To speed-up GPS reception it is strongly recommended to upload AGPS data with ["Assisted GPS Update"](https://banglejs.com/apps/?id=assistedgps) +#### To speed-up GPS reception it is strongly recommended to upload AGPS data with ["Assisted GPS Update"](https://banglejs.com/apps/?id=assistedgps) -### If "CALIB!" is shown on the display or the compass heading differs too much from GPS heading, compass calibration should be done with the ["Navigation Compass" App](https://banglejs.com/apps/?id=magnav) +#### If "CALIB!" is shown on the display or the compass heading differs too much from GPS heading, compass calibration should be done with the ["Navigation Compass" App](https://banglejs.com/apps/?id=magnav) **Credits:**
Bike Speedometer App by github.com/HilmarSt
From c1e27a00f5776e7d851ee8549947272d23431a33 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 18:54:33 +0100 Subject: [PATCH 26/28] Update app-icon.js --- apps/bikespeedo/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/app-icon.js b/apps/bikespeedo/app-icon.js index 891185e0b..a156afccb 100644 --- a/apps/bikespeedo/app-icon.js +++ b/apps/bikespeedo/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwxH+64A/AC+sF1uBgAwsq1W1krGEmswIFDlcAFoMrqyGjlcrGAQDB1guBBQJghKYZZCMYhqBlYugFAesgAuFYgQIHAE2sYMZDfwIABbgIuowMAqwABb4wAjFVQAEqyMrF4cAlYABqwypR4RgBwIyplYnF1hnBGIo8BAAQvhGIj6C1hpBgChBGCqGBqwdCRQQnCB4gJBGAgtWc4WBPoi9JH4ILBGYQATPoRHJRYoACwLFBLi4tGLIyLEA5QuPCoYpEMhBBBGDIuFgArIYQIUHA4b+GABLUBAwoQIXorDGI5RNGCB9WRQ0AJwwHGDxChOH4oDCRI4/GXpAaB1gyLEwlWKgTrBT46ALCogQKZoryFCwzgGBgz/NZpaQHHBCdEF5hKBBxWBUwoGBgEAEoIyHHYesBg7aBJQ7SBBAIvEIIJCBD4IFBgBIGEAcAUA8rGAIWHS4QvDCAJAHG4JfRCgKCFeAovCdRIiBDYq/NABi0Cfo5IEBgjUGACZ6BqwcGwLxBFYRsEHIKBIJwLkBNoIHDF468GYgIBBXY4EDE4IHDYwSwCN4IGBCIp5CJYtWgBZBHAgFEMoRjEE4QDCLYJUEUoaCBPYoQCgA4FGozxFLYwfEQgqrGexIYFBoxbDS4YHCIAYVEEAZcCYwwvGfoQHEcwQHHIg9WIAS9BIoYYESoowIABQuBUgg1DVwwACEpIwBChDLFDQ5JLlZnHJAajBQwgLEO4LDBHKAhBFxQxFCIIACAwadLHgJJBAAUrQJxYFAAbKPCwRGCCqAAm")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwwkE/4A/AAUkn4WU+Ufj4URmQCBikTiIWQ+cRl/xl8xmJIQFIMTiYdCJB/xFAP0l4HCiSRW+SzgmUimY4UoUhKahwCACi0BC61AgC3CI6fzkMCJaRfDmNBO63yoYHBglAGpXyiMEgJeDmEf+cRCxUxgMjn8zkMBBIUQkCXKaYLxFAwXzMRcRL4xFBHQQvJ+AKBCgPzEA8CC5ESCgKHBAAUzGgIwCEoRdGBgSDEDgQfDEYgACmgfKBYYPHIwIfJ+JECJgYADh/zBApwB+VPBQhIFBQRdEIwXzBAMDBIUhKwp/GmgdEia3DBIjQDDwZmFkRACilBFQYXBaQkhIIcyIYXzgMjmUUPwc/+hsDiQvDik/C4MgH4b4CF4QJDmI7DeIMh+UPLggqBWQYAJkX0UQYuBVYLmDABMTPAX/kgVBmIcBHAcyl8jl4DBcgaoC+MSFQPwAwMDbIUfmcfmQDB+cvHgIlCikxOAK9CkIXCEoMTkYNBBAP0n4XB+cDoDVEbwcfkcjdYimBC4PxkZeBC4fzAwQXBGYIaC+dPKoP/+kQFARfCPwKZCn4fCAQM0AQKPBkigDR4IAB+QwCAAg5DDQJOCAAISEkjaGkhAC+RKBd4onDiAYD+cgBggcD+cBIA0QiMikMAIAgTCkcyihAGAAMzkUjE4QYFkMSBQ4AT")) From 6b3c7d49e288b9a1f6e8dfee19beabb368c4cd0e Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 19:01:19 +0100 Subject: [PATCH 27/28] Update metadata.json --- apps/bikespeedo/metadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/metadata.json b/apps/bikespeedo/metadata.json index db5347724..7dea28649 100644 --- a/apps/bikespeedo/metadata.json +++ b/apps/bikespeedo/metadata.json @@ -1,7 +1,7 @@ { "id": "bikespeedo", "name": "Bike Speedometer (beta)", - "shortName": "Bike Speedometer", + "shortName": "Bike Speedomet.", "version": "0.01", "description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources", "icon": "app.png", From 479214a75e79c40b331496b1cf7db802ad958d89 Mon Sep 17 00:00:00 2001 From: Hilmar Strauch <56518493+HilmarSt@users.noreply.github.com> Date: Wed, 16 Mar 2022 19:25:57 +0100 Subject: [PATCH 28/28] Update app-icon.js --- apps/bikespeedo/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/bikespeedo/app-icon.js b/apps/bikespeedo/app-icon.js index a156afccb..c34f52cfb 100644 --- a/apps/bikespeedo/app-icon.js +++ b/apps/bikespeedo/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwkE/4A/AAUkn4WU+Ufj4URmQCBikTiIWQ+cRl/xl8xmJIQFIMTiYdCJB/xFAP0l4HCiSRW+SzgmUimY4UoUhKahwCACi0BC61AgC3CI6fzkMCJaRfDmNBO63yoYHBglAGpXyiMEgJeDmEf+cRCxUxgMjn8zkMBBIUQkCXKaYLxFAwXzMRcRL4xFBHQQvJ+AKBCgPzEA8CC5ESCgKHBAAUzGgIwCEoRdGBgSDEDgQfDEYgACmgfKBYYPHIwIfJ+JECJgYADh/zBApwB+VPBQhIFBQRdEIwXzBAMDBIUhKwp/GmgdEia3DBIjQDDwZmFkRACilBFQYXBaQkhIIcyIYXzgMjmUUPwc/+hsDiQvDik/C4MgH4b4CF4QJDmI7DeIMh+UPLggqBWQYAJkX0UQYuBVYLmDABMTPAX/kgVBmIcBHAcyl8jl4DBcgaoC+MSFQPwAwMDbIUfmcfmQDB+cvHgIlCikxOAK9CkIXCEoMTkYNBBAP0n4XB+cDoDVEbwcfkcjdYimBC4PxkZeBC4fzAwQXBGYIaC+dPKoP/+kQFARfCPwKZCn4fCAQM0AQKPBkigDR4IAB+QwCAAg5DDQJOCAAISEkjaGkhAC+RKBd4onDiAYD+cgBggcD+cBIA0QiMikMAIAgTCkcyihAGAAMzkUjE4QYFkMSBQ4AT")) +require("heatshrink").decompress(atob("mEwxH+64A/AC+sF1uBgAwsq1W1krGEmswIFDlcAFoMrqyGjlcrGAQDB1guBBQJghKYZZCMYhqBlYugFAesgAuFYgQIHAE2sYMZDfwIABbgIuowMAqwABb4wAjFVQAEqyMrF4cAlYABqwypR4RgBwIyplYnF1hnBGIo8BAAQvhGIj6C1hpBgChBGCqGBqwdCRQQnCB4gJBGAgtWc4WBPoi9JH4ILBGYQATPoRHJRYoACwLFBLi4tGLIyLEA5QuPCoYpEMhBBBGDIuFgArIYQIUHA4b+GABLUBAwoQIXorDGI5RNGCB9WRQ0AJwwHGDxChOH4oDCRI4/GXpAaB1gyLEwlWKgTrBT46ALCogQKZoryFCwzgGBgz/NZpaQHHBCdEF5hKBBxWBUwoGBgEAEoIyHHYesBg7aBJQ7SBBAIvEIIJCBD4IFBgBIGEAcAUA8rGAIWHS4QvDCAJAHG4JfRCgKCFeAovCdRIiBDYq/NABi0Cfo5IEBgjUGACZ6BqwcGwLxBFYRsEHIKBIJwLkBNoIHDF468GYgIBBXY4EDE4IHDYwSwCN4IGBCIp5CJYtWgBZBHAgFEMoRjEE4QDCLYJUEUoaCBPYoQCgA4FGozxFLYwfEQgqrGexIYFBoxbDS4YHCIAYVEEAZcCYwwvGfoQHEcwQHHIg9WIAS9BIoYYESoowIABQuBUgg1DVwwACEpIwBChDLFDQ5JLlZnHJAajBQwgLEO4LDBHKAhBFxQxFCIIACAwadLHgJJBAAUrQJxYFAAbKPCwRGCCqAAm"))