Merge pull request #2733 from bobrippling/bikespeedo-tweaks

bikespeedo - tweaks
master
Gordon Williams 2023-05-10 08:14:04 +01:00 committed by GitHub
commit 9dad168cd9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 64 additions and 16 deletions

View File

@ -1,3 +1,4 @@
0.01: New App!
0.02: Barometer altitude adjustment setting
0.03: Use default Bangle formatter for booleans
0.04: Add options for units in locale and recording GPS

View File

@ -403,6 +403,8 @@ function onGPS(fix) {
if ( sp < 10 ) sp = sp.toFixed(1);
else sp = Math.round(sp);
if (isNaN(sp)) sp = '---';
if (parseFloat(sp) > parseFloat(max.spd) && max.n > 15 ) max.spd = parseFloat(sp);
// Altitude
@ -416,6 +418,12 @@ function onGPS(fix) {
// Age of last fix (secs)
age = Math.max(0,Math.round(getTime())-(lf.time.getTime()/1000));
} else {
// populate spd_unit
if (cfg.spd == 0) {
m = require("locale").speed(0).match(/[0-9,\.]+(.*)/);
cfg.spd_unit = m[1];
}
}
if ( cfg.modeA == 1 ) {
@ -465,7 +473,7 @@ function updateClock() {
// Read settings.
let cfg = require('Storage').readJSON('bikespeedo.json',1)||{};
cfg.spd = 1; // Multiplier for speed unit conversions. 0 = use the locale values for speed
cfg.spd = !cfg.localeUnits; // 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')
@ -499,14 +507,6 @@ function onPressure(dat) {
altiBaro = Number(dat.altitude.toFixed(0)) + Number(cfg.altDiff);
}
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){
@ -544,11 +544,33 @@ function Compass_reading() {
Compass_heading = Compass_newHeading(d,Compass_heading);
hdngCompass = Compass_heading.toFixed(0);
}
if (!calibrateCompass) setInterval(Compass_reading,200);
setButtons();
if (emulator) setInterval(updateClock, 2000);
else setInterval(updateClock, 10000);
function start() {
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);
if (!calibrateCompass) setInterval(Compass_reading,200);
setButtons();
if (emulator) setInterval(updateClock, 2000);
else setInterval(updateClock, 10000);
Bangle.drawWidgets();
}
Bangle.loadWidgets();
Bangle.drawWidgets();
if (cfg.record && WIDGETS["recorder"]) {
WIDGETS["recorder"]
.setRecording(true)
.then(start);
if (cfg.recordStopOnExit)
E.on('kill', () => WIDGETS["recorder"].setRecording(false));
} else {
start();
}

View File

@ -2,7 +2,7 @@
"id": "bikespeedo",
"name": "Bike Speedometer (beta)",
"shortName": "Bike Speedometer",
"version": "0.03",
"version": "0.04",
"description": "Shows GPS speed, GPS heading, Compass heading, GPS altitude and Barometer altitude from internal sources",
"icon": "app.png",
"screenshots": [{"url":"Screenshot.png"}],

View File

@ -11,9 +11,34 @@
'< Back': back,
'< Load Bike Speedometer': ()=>{load('bikespeedo.app.js');},
'Barometer Altitude adjustment' : function() { E.showMenu(altdiffMenu); },
'Kalman Filters' : function() { E.showMenu(kalMenu); }
'Kalman Filters' : function() { E.showMenu(kalMenu); },
'Speed units': {
value: !!settings.localeUnits,
format: b => b ? "Locale" : "km/h",
onchange: b => {
settings.localeUnits = b;
writeSettings();
}
},
};
if (global.WIDGETS && WIDGETS["recorder"]) {
appMenu[/*LANG*/"Record rides"] = {
value : !!settings.record,
onchange : v => {
settings.record = v;
writeSettings();
}
};
appMenu[/*LANG*/"Stop record on exit"] = {
value : !!settings.recordStopOnExit,
onchange : v => {
settings.recordStopOnExit = v;
writeSettings();
}
};
}
const altdiffMenu = {
'': { 'title': 'Altitude adjustment' },
'< Back': function() { E.showMenu(appMenu); },