mirror of https://github.com/espruino/BangleApps
Added third [C]lock mode to display large clock face.
parent
b55b53d5dc
commit
75ed834129
|
@ -3,7 +3,7 @@ Speed and Altitude [speedalt]
|
||||||
Mike Bennett mike[at]kereru.com
|
Mike Bennett mike[at]kereru.com
|
||||||
1.16 : Use new GPS settings module
|
1.16 : Use new GPS settings module
|
||||||
*/
|
*/
|
||||||
var v = '1.20';
|
var v = '1.21';
|
||||||
var buf = Graphics.createArrayBuffer(240,160,2,{msb:true});
|
var buf = Graphics.createArrayBuffer(240,160,2,{msb:true});
|
||||||
|
|
||||||
// Load fonts
|
// Load fonts
|
||||||
|
@ -25,7 +25,6 @@ var emulator = (process.env.BOARD=="EMSCRIPTEN")?1:0; // 1 = running in emulato
|
||||||
var wp = {}; // Waypoint to use for distance from cur position.
|
var wp = {}; // Waypoint to use for distance from cur position.
|
||||||
|
|
||||||
function nxtWp(inc){
|
function nxtWp(inc){
|
||||||
if (cfg.modeA) return;
|
|
||||||
cfg.wp+=inc;
|
cfg.wp+=inc;
|
||||||
loadWp();
|
loadWp();
|
||||||
}
|
}
|
||||||
|
@ -98,6 +97,14 @@ function drawFix(dat) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function drawClock() {
|
||||||
|
if (!canDraw) return;
|
||||||
|
buf.clear();
|
||||||
|
drawTime();
|
||||||
|
g.reset();
|
||||||
|
g.drawImage(img,0,40);
|
||||||
|
}
|
||||||
|
|
||||||
function drawPrimary(n,u) {
|
function drawPrimary(n,u) {
|
||||||
|
|
||||||
// Primary Display
|
// Primary Display
|
||||||
|
@ -146,11 +153,21 @@ function drawSecondary(n,u) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawTime() {
|
function drawTime() {
|
||||||
var x = 0;
|
var x, y;
|
||||||
var y = 160;
|
|
||||||
|
|
||||||
|
if ( cfg.modeA == 2 ) {
|
||||||
|
x=120;
|
||||||
|
y=80;
|
||||||
|
buf.setFontAlign(0,0); //left, bottom
|
||||||
|
buf.setFontVector(80);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
x = 0;
|
||||||
|
y = 160;
|
||||||
|
buf.setFontAlign(-1,1);
|
||||||
buf.setFont("7x11Numeric7Seg", 2);
|
buf.setFont("7x11Numeric7Seg", 2);
|
||||||
buf.setFontAlign(-1,1); //left, bottom
|
}
|
||||||
|
|
||||||
|
|
||||||
buf.setColor(0);
|
buf.setColor(0);
|
||||||
buf.drawString(time,x,y);
|
buf.drawString(time,x,y);
|
||||||
|
@ -161,7 +178,7 @@ function drawTime() {
|
||||||
|
|
||||||
function drawWP() {
|
function drawWP() {
|
||||||
var nm = wp.name;
|
var nm = wp.name;
|
||||||
if ( nm == undefined || nm == 'NONE' || cfg.modeA ) nm = '';
|
if ( nm == undefined || nm == 'NONE' || cfg.modeA != 0 ) nm = '';
|
||||||
|
|
||||||
buf.setFontAlign(-1,1); //left, bottom
|
buf.setFontAlign(-1,1); //left, bottom
|
||||||
buf.setColor(2);
|
buf.setColor(2);
|
||||||
|
@ -180,15 +197,14 @@ function drawSats(sats) {
|
||||||
buf.setFontVector(20);
|
buf.setFontVector(20);
|
||||||
buf.setColor(2);
|
buf.setColor(2);
|
||||||
|
|
||||||
if ( cfg.modeA ) buf.drawString("A",240,140);
|
if ( cfg.modeA == 1 ) {
|
||||||
else buf.drawString("D",240,140);
|
buf.drawString("A",240,140);
|
||||||
|
if ( showMax ) {
|
||||||
if ( showMax && cfg.modeA ) {
|
|
||||||
buf.setFontAlign(0,1); //centre, bottom
|
buf.setFontAlign(0,1); //centre, bottom
|
||||||
buf.drawString("MAX",120,164);
|
buf.drawString("MAX",120,164);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if ( cfg.modeA == 0 ) buf.drawString("D",240,140);
|
||||||
}
|
}
|
||||||
|
|
||||||
function onGPS(fix) {
|
function onGPS(fix) {
|
||||||
|
@ -239,7 +255,7 @@ function onGPS(fix) {
|
||||||
age = Math.max(0,Math.round(getTime())-(lf.time.getTime()/1000));
|
age = Math.max(0,Math.round(getTime())-(lf.time.getTime()/1000));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( cfg.modeA ) {
|
if ( cfg.modeA == 1 ) {
|
||||||
if ( showMax )
|
if ( showMax )
|
||||||
drawFix({
|
drawFix({
|
||||||
speed:max.spd,
|
speed:max.spd,
|
||||||
|
@ -259,7 +275,7 @@ function onGPS(fix) {
|
||||||
fix:lf.fix
|
fix:lf.fix
|
||||||
}); // Show speed/altitude
|
}); // Show speed/altitude
|
||||||
}
|
}
|
||||||
else {
|
if ( cfg.modeA == 0 ) {
|
||||||
// Show speed/distance
|
// Show speed/distance
|
||||||
if ( di <= 0 )
|
if ( di <= 0 )
|
||||||
drawFix({
|
drawFix({
|
||||||
|
@ -280,6 +296,10 @@ function onGPS(fix) {
|
||||||
fix:lf.fix
|
fix:lf.fix
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if ( cfg.modeA == 2 ) {
|
||||||
|
// Large clock
|
||||||
|
drawClock();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -288,12 +308,12 @@ function setButtons(){
|
||||||
// Spd+Dist : Select next waypoint
|
// Spd+Dist : Select next waypoint
|
||||||
setWatch(function(e) {
|
setWatch(function(e) {
|
||||||
var dur = e.time - e.lastTime;
|
var dur = e.time - e.lastTime;
|
||||||
if ( cfg.modeA ) {
|
if ( cfg.modeA == 1 ) {
|
||||||
// Spd+Alt mode - Switch between fix and MAX
|
// Spd+Alt mode - Switch between fix and MAX
|
||||||
if ( dur < 2 ) showMax = !showMax; // Short press toggle fix/max display
|
if ( dur < 2 ) showMax = !showMax; // Short press toggle fix/max display
|
||||||
else { max.spd = 0; max.alt = 0; } // Long press resets max values.
|
else { max.spd = 0; max.alt = 0; } // Long press resets max values.
|
||||||
}
|
}
|
||||||
else nxtWp(1); // Spd+Dist mode - Select next waypoint
|
if ( cfg.modeA == 0 ) nxtWp(1); // Spd+Dist mode - Select next waypoint
|
||||||
onGPS(lf);
|
onGPS(lf);
|
||||||
}, BTN1, { edge:"falling",repeat:true});
|
}, BTN1, { edge:"falling",repeat:true});
|
||||||
|
|
||||||
|
@ -315,7 +335,8 @@ function setButtons(){
|
||||||
|
|
||||||
// Toggle between alt or dist
|
// Toggle between alt or dist
|
||||||
setWatch(function(e){
|
setWatch(function(e){
|
||||||
cfg.modeA = !cfg.modeA;
|
cfg.modeA = cfg.modeA+1;
|
||||||
|
if ( cfg.modeA > 2 ) cfg.modeA = 0;
|
||||||
savSettings();
|
savSettings();
|
||||||
onGPS(lf);
|
onGPS(lf);
|
||||||
}, BTN3, {repeat:true,edge:"falling"});
|
}, BTN3, {repeat:true,edge:"falling"});
|
||||||
|
@ -373,7 +394,7 @@ cfg.dist = cfg.dist||1000;// Multiplier for distnce unit conversions.
|
||||||
cfg.dist_unit = cfg.dist_unit||'km'; // Displayed altitude units
|
cfg.dist_unit = cfg.dist_unit||'km'; // Displayed altitude units
|
||||||
cfg.colour = cfg.colour||0; // Colour scheme.
|
cfg.colour = cfg.colour||0; // Colour scheme.
|
||||||
cfg.wp = cfg.wp||0; // Last selected waypoint for dist
|
cfg.wp = cfg.wp||0; // Last selected waypoint for dist
|
||||||
cfg.modeA = cfg.modeA||0; // 0 = [D], 1 = [A]
|
cfg.modeA = cfg.modeA||0; // 0 = [D]ist, 1 = [A]ltitude, 2 = [C]lock
|
||||||
cfg.primSpd = cfg.primSpd||0; // 1 = Spd in primary, 0 = Spd in secondary
|
cfg.primSpd = cfg.primSpd||0; // 1 = Spd in primary, 0 = Spd in secondary
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue