From 7ef63005be28b229129807c56bacb2468cdabc77 Mon Sep 17 00:00:00 2001 From: nujw Date: Fri, 29 Jan 2021 10:03:18 +1300 Subject: [PATCH] Update app.js --- apps/speedalt/app.js | 52 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/apps/speedalt/app.js b/apps/speedalt/app.js index 92b603062..eba98bd1e 100644 --- a/apps/speedalt/app.js +++ b/apps/speedalt/app.js @@ -1,10 +1,10 @@ /* Speed and Altitude [speedalt] -Ver : 0.03 +Ver : 0.04 Mike Bennett mike[at]kereru.com */ -const dbg = 1; +const dbg = 0; var buf = Graphics.createArrayBuffer(240,160,2,{msb:true}); @@ -31,8 +31,8 @@ var showMax = 0; // 1 = display the max values. 0 = display the cur fix //var inMenu = 0; var maxPress = 0; // Time max button pressed. Used to calculate short or long press. var canDraw = 1; - -var timeBright = 0; // Time of last activity that keeps the display bright +var lastBuzz = 0; // What sort of buzz was last performed. 0 = no fix, 1 = fix. +var timerBuzz2 = 0; // ID of timer for fix second buzz var time = ''; // Last time string displayed. Re displayed in background colour to remove before drawing new time. @@ -160,7 +160,7 @@ function drawTime() { var x = 0; var y = 160; - buf.setFont("7x11Numeric7Seg", 1); + buf.setFont("7x11Numeric7Seg", 2); buf.setFontAlign(-1,1); //left, bottom buf.setColor(0); @@ -173,7 +173,7 @@ function drawTime() { function drawSats(sats) { buf.setFontAlign(1,1); //right, bottom buf.setColor(3); - buf.setFont("6x8", 1); + buf.setFont("6x8", 2); if ( showMax ) { buf.setColor(2); buf.drawString("MAX",240,160); @@ -198,6 +198,7 @@ function onGPS(fix) { var m; if (fix.fix || emulator) { + doBuzz(1); //==== Speed ==== if ( settings.spd == 0 ) { @@ -233,11 +234,49 @@ function onGPS(fix) { else drawFix(speed,settings.spd_unit,fix.satellites,alt,settings.alt_unit); } else { + doBuzz(0); drawNoFix(fix.satellites); } } +// Vibrate watch when fix lost or gained. +function doBuzz(hasFix) { + + // nothing to do + if ( lastBuzz === hasFix ) { + print('Buzz : no change'); + return; + } + + // fix gained - double buzz + if ( !lastBuzz && hasFix ) { + if ( dbg ) print('Fix'); + Bangle.buzz(); + timerBuzz2 = setInterval(doBuzz2, 400); // Trigger a second buzz in 400ms + + lastBuzz = 1; + return; + } + + // fix lost - single buzz + if ( lastBuzz && !hasFix ) { + if ( dbg ) print('Fix lost'); + Bangle.buzz(); + lastBuzz = 1; + return; + } + + +} + +// Second buzz +function doBuzz2() { + if ( dbg ) print('Buzz2'); + clearInterval(timerBuzz2); + Bangle.buzz(); + } + /* function setUnits(m,u) { @@ -410,6 +449,7 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); Bangle.setGPSPower(1); +onGPS(lastFix); Bangle.on('GPS', onGPS); setButtons();