From fe9133cc24c0da1ca92b91c05070f66baa65215b Mon Sep 17 00:00:00 2001 From: nujw Date: Tue, 2 Feb 2021 15:57:41 +1300 Subject: [PATCH] Update app.js --- apps/speedalt/app.js | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/apps/speedalt/app.js b/apps/speedalt/app.js index 77e6ff258..2b16ef9da 100644 --- a/apps/speedalt/app.js +++ b/apps/speedalt/app.js @@ -1,6 +1,6 @@ /* Speed and Altitude [speedalt] -Ver : 1.05 +Ver : 1.06 Mike Bennett mike[at]kereru.com process.memory() */ @@ -13,8 +13,6 @@ var buf = Graphics.createArrayBuffer(240,160,2,{msb:true}); require("Font7x11Numeric7Seg").add(Graphics); var lf = {fix:0,satellites:0}; -var primaryDisp = 1; // 1 = Speed in primary display. 0 = alt/dist in primary -var altDisp = 1; // 1 = alt, 0 = dist to wp var showMax = 0; // 1 = display the max values. 0 = display the cur fix var maxPress = 0; // Time max button pressed. Used to calculate short or long press. var canDraw = 1; @@ -30,7 +28,7 @@ if (process.env.BOARD=="EMSCRIPTEN") emulator = 1; // 1 = running in emulator. var wp = {}; // Waypoint to use for distance from cur position. function nxtWp(inc){ - if (altDisp) return; + if (settings.modeA) return; settings.wp+=inc; loadWp(); } @@ -39,7 +37,7 @@ function loadWp() { var w = require("Storage").readJSON('waypoints.json')||[{name:"NONE"}]; if (settings.wp>=w.length) settings.wp=0; if (settings.wp<0) settings.wp = w.length-1; - require("Storage").write('speedalt.json',settings); + savSettings(); wp = w[settings.wp]; } @@ -70,21 +68,21 @@ function drawFix(speed,units,sats,alt,alt_units,age,fix) { // Primary Display val = speed.toString(); - if ( !primaryDisp ) val = alt.toString(); + if ( !settings.primSpd ) val = alt.toString(); // Primary Units u = settings.spd_unit; - if ( !primaryDisp ) u = alt_units; + if ( !settings.primSpd ) u = alt_units; drawPrimary(val,u); // Secondary Display val = alt.toString(); - if ( !primaryDisp ) val = speed.toString(); + if ( !settings.primSpd ) val = speed.toString(); // Secondary Units u = alt_units; - if ( !primaryDisp ) u = settings.spd_unit; + if ( !settings.primSpd ) u = settings.spd_unit; drawSecondary(val,u); @@ -166,7 +164,7 @@ function drawWP() { var nm = wp.name; if ( nm == undefined ) nm = ''; if ( nm == 'NONE' ) nm = ''; - if ( altDisp ) nm=''; + if ( settings.modeA ) nm=''; buf.setFontAlign(-12,1); //left, bottom buf.setColor(2); @@ -186,10 +184,10 @@ function drawSats(sats) { buf.setFontVector(20); buf.setColor(2); - if ( altDisp ) buf.drawString("A",240,140); + if ( settings.modeA ) buf.drawString("A",240,140); else buf.drawString("D",240,140); - if ( showMax && altDisp ) { + if ( showMax && settings.modeA ) { buf.setFontAlign(0,1); //centre, bottom buf.drawString("MAX",120,164); } @@ -249,7 +247,7 @@ function onGPS(fix) { if ( age > 90 ) age = '>90'; } - if ( altDisp ) { + if ( settings.modeA ) { if ( showMax ) { // Speed and alt maximums drawFix(max.spd,settings.spd_unit,fix.satellites,max.alt,settings.alt_unit,age,fix.fix); @@ -274,12 +272,14 @@ function onGPS(fix) { function toggleDisplay() { - primaryDisp = !primaryDisp; + settings.primSpd = !settings.primSpd; + savSettings(); onGPS(lf); // Update display } function toggleAltDist() { - altDisp = !altDisp; + settings.modeA = !settings.modeA; + savSettings(); onGPS(lf); } @@ -306,7 +306,7 @@ function btnPressed() { function btnReleased() { var dur = getTime()-maxPress; - if ( altDisp ) { + if ( settings.modeA ) { // Spd+Alt mode - Switch between fix and MAX if ( dur < 2 ) { showMax = !showMax; // Short press toggle fix/max display @@ -350,6 +350,10 @@ function stopDraw() { canDraw=false; } +function savSettings() { + require("Storage").write('speedalt.json',settings); +} + // =Main Prog // Read settings. @@ -363,6 +367,9 @@ settings.dist = settings.dist||1000;// Multiplier for distnce unit conversions. settings.dist_unit = settings.dist_unit||'km'; // Displayed altitude units settings.colour = settings.colour||0; // Colour scheme. settings.wp = settings.wp||0; // Last selected waypoint for dist +settings.modeA = settings.modeA||0; // 0 = [D], 1 = [A] +settings.primSpd = settings.primSpd||0; // 1 = Spd in primary, 0 = Spd in secondary + loadWp();