From b582ed8affa3a62d2f6c1943b03e886bbed78e3d Mon Sep 17 00:00:00 2001 From: Pavel Machek Date: Sun, 2 Jun 2024 23:12:06 +0200 Subject: [PATCH] [] sixths: start implementing reading waypoints from disk --- apps/sixths/README.md | 4 ++++ apps/sixths/sixths.app.js | 40 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/apps/sixths/README.md b/apps/sixths/README.md index 58f7045125e..e738249ad81 100644 --- a/apps/sixths/README.md +++ b/apps/sixths/README.md @@ -54,3 +54,7 @@ possibly allowing scrolling). Todo: *) only turn on compass when needed + +*) only warn about battery low when it crosses thresholds, update battery low message. + +*) rename "show" to something else -- it collides with built-in \ No newline at end of file diff --git a/apps/sixths/sixths.app.js b/apps/sixths/sixths.app.js index 66c411e6392..24ea60657b5 100644 --- a/apps/sixths/sixths.app.js +++ b/apps/sixths/sixths.app.js @@ -185,8 +185,11 @@ function markNew() { } function markHandle() { let m = cur_mark; - let msg = m.name + ">" + fmtTimeDiff(getTime()- m.time); - if (m.fix && m.fix.fix) { + let msg = m.name + ">"; + if (m.time) { + msg += fmtTimeDiff(getTime()- m.time); + } + if (prev_fix && prev_fix.fix && m.fix && m.fix.fix) { let s = fmtDist(calcDistance(m.fix, prev_fix)/1000) + icon_km; msg += " " + s; debug = "wp>" + s; @@ -207,6 +210,34 @@ function entryDone() { in_str = 0; mode = 0; } +var waypoints = [], sel_wp = 0; +function loadWPs() { + waypoints = require("Storage").readJSON(`waypoints.json`)||[{}]; + print("Have waypoints", waypoints); +} +function saveWPs() { + require("Storage").writeJSON(`waypoints.json`,waypoints); +} +function selectWP(i) { + sel_wp += i; + if (sel_wp < 0) + sel_wp = 0; + if (sel_wp >= waypoints.length) + sel_wp = waypoints.length - 1; + if (sel_wp < 0) { + show("No WPs", 60); + } + let wp = waypoints[sel_wp]; + cur_mark = {}; + cur_mark.name = wp.name; + cur_mark.gps_dist = 0; /* HACK */ + cur_mark.fix = {}; + cur_mark.fix.fix = 1; + cur_mark.fix.lat = wp.lat; + cur_mark.fix.lon = wp.lon; + show("WP:"+wp.name, 60); + print("Select waypoint: ", cur_mark); +} function inputHandler(s) { print("Ascii: ", s, s[0], s[1]); if (s[0] == '^') { @@ -234,6 +265,7 @@ function inputHandler(s) { show("Bat "+bat+"%", 60); break; } + case 'D': selectWP(1); break; case 'F': gpsOff(); show("GPS off", 3); break; case 'G': gpsOn(); gps_limit = getTime() + 60*60*4; show("GPS on", 3); break; case 'I': @@ -256,6 +288,7 @@ function inputHandler(s) { break; } case 'R': aload("run.app.js"); break; + case 'U': selectWP(-1); break; case 'Y': doBuzz(buzz); Bangle.resetCompass(); break; } } @@ -695,7 +728,7 @@ function lockHandler(locked) { } function queueDraw() { - if (getTime() - last_unlocked > 5*60) + if (getTime() - last_unlocked > 3*60) next = 60000; else next = 1000; @@ -724,6 +757,7 @@ function start() { } draw(); + loadWPs(); buzzTask(); if (0) accelTask();