diff --git a/apps/gipy/ChangeLog b/apps/gipy/ChangeLog index 5cd21bd45..495941ff7 100644 --- a/apps/gipy/ChangeLog +++ b/apps/gipy/ChangeLog @@ -114,4 +114,10 @@ * Better position in elevation profiles * Integrating fixes in upstream rust heatshrink crate * Small path optimisations with brouter (removing looplets) - * Bugfix in nearest segment detection \ No newline at end of file + * Bugfix in nearest segment detection + +0.23: + * Better path simplification + * Waypoints autodetection using the map + * New option: sleep between waypoints + * Removed sharp turns auto-detection \ No newline at end of file diff --git a/apps/gipy/README.md b/apps/gipy/README.md index 58040bfea..e247e954b 100644 --- a/apps/gipy/README.md +++ b/apps/gipy/README.md @@ -18,7 +18,6 @@ It provides the following features : - display the path with current position from gps - display a local map around you, downloaded from openstreetmap - detects and buzzes if you leave the path -- (optional) buzzes before sharp turns - (optional) buzzes before waypoints (for example when you need to turn in https://mapstogpx.com/) - display instant / average speed @@ -122,6 +121,7 @@ Few settings for now (feel free to suggest me more) : - power lcd off (disabled by default): turn lcd off when inactive to save power. the watch will wake up when reaching points, when you touch the screen and when speed is below 13km/h. - powersave by default: when gipy starts is powersaving activated ? (see below) +- sleep between waypoints: instead of powersaving between points save power between waypoints (crossroads). this way you can save more. waypoints autodetection is WIP. ### Powersaving @@ -142,7 +142,7 @@ The algorithm works in the following ways : Activation events are the following : -- you are near (< 100m) the next point on path +- you are near (< 100m) the next point (only waypoints of *sleep between waypoints* is on) on path - you are slow (< *wake-up speed* setting (13 km/h by default)) - you are lost - you press the button / touch the screen diff --git a/apps/gipy/app.js b/apps/gipy/app.js index 8b7a12574..da294baa3 100644 --- a/apps/gipy/app.js +++ b/apps/gipy/app.js @@ -31,9 +31,10 @@ var settings = Object.assign( active_time: 10, brightness: 0.5, buzz_on_turns: false, - disable_bluetooth: true, + disable_bluetooth: false, power_lcd_off: false, powersave_by_default: false, + sleep_between_waypoints: false, }, s.readJSON("gipy.json", true) || {} ); @@ -877,14 +878,15 @@ class Status { // }, time_to_next_point); // } // } + let reaching_waypoint = this.path.is_waypoint(next_point); if (this.distance_to_next_point <= 100) { - this.activate(); - } - if (this.reaching != next_point && this.distance_to_next_point <= 100) { - this.reaching = next_point; - let reaching_waypoint = this.path.is_waypoint(next_point); - if (reaching_waypoint) { - if (settings.buzz_on_turns) { + if (reaching_waypoint || !settings.sleep_between_waypoints) { + this.activate(); + } + + if (this.reaching != next_point) { + this.reaching = next_point; + if (reaching_waypoint && settings.buzz_on_turns) { Bangle.buzz(); setTimeout(() => Bangle.buzz(), 500); setTimeout(() => Bangle.buzz(), 1000); diff --git a/apps/gipy/metadata.json b/apps/gipy/metadata.json index 53176f61f..636bbe865 100644 --- a/apps/gipy/metadata.json +++ b/apps/gipy/metadata.json @@ -2,7 +2,7 @@ "id": "gipy", "name": "Gipy", "shortName": "Gipy", - "version": "0.22", + "version": "0.23", "description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.", "allow_emulator":false, "icon": "gipy.png", diff --git a/apps/gipy/pkg/gps.d.ts b/apps/gipy/pkg/gps.d.ts index 8df9092a9..3b17b5276 100644 --- a/apps/gipy/pkg/gps.d.ts +++ b/apps/gipy/pkg/gps.d.ts @@ -73,11 +73,11 @@ export interface InitOutput { readonly __wbindgen_malloc: (a: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number) => number; readonly __wbindgen_export_2: WebAssembly.Table; - readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9f56e5d7ebbfdb61: (a: number, b: number, c: number) => void; + readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7bd03fc857623879: (a: number, b: number, c: number) => void; readonly __wbindgen_add_to_stack_pointer: (a: number) => number; readonly __wbindgen_free: (a: number, b: number) => void; readonly __wbindgen_exn_store: (a: number) => void; - readonly wasm_bindgen__convert__closures__invoke2_mut__h193105c6f054446a: (a: number, b: number, c: number, d: number) => void; + readonly wasm_bindgen__convert__closures__invoke2_mut__h743e956546cf34aa: (a: number, b: number, c: number, d: number) => void; } export type SyncInitInput = BufferSource | WebAssembly.Module; diff --git a/apps/gipy/pkg/gps.js b/apps/gipy/pkg/gps.js index 70698408d..b943b12b1 100644 --- a/apps/gipy/pkg/gps.js +++ b/apps/gipy/pkg/gps.js @@ -205,7 +205,7 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } function __wbg_adapter_24(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9f56e5d7ebbfdb61(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7bd03fc857623879(arg0, arg1, addHeapObject(arg2)); } function _assertClass(instance, klass) { @@ -379,7 +379,7 @@ function handleError(f, args) { } } function __wbg_adapter_85(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h193105c6f054446a(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); + wasm.wasm_bindgen__convert__closures__invoke2_mut__h743e956546cf34aa(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } /** @@ -440,9 +440,6 @@ async function load(module, imports) { function getImports() { const imports = {}; imports.wbg = {}; - imports.wbg.__wbg_log_d04343b58be82b0f = function(arg0, arg1) { - console.log(getStringFromWasm0(arg0, arg1)); - }; imports.wbg.__wbindgen_string_get = function(arg0, arg1) { const obj = getObject(arg1); const ret = typeof(obj) === 'string' ? obj : undefined; @@ -451,6 +448,9 @@ function getImports() { getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; + imports.wbg.__wbg_log_d04343b58be82b0f = function(arg0, arg1) { + console.log(getStringFromWasm0(arg0, arg1)); + }; imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; @@ -685,8 +685,8 @@ function getImports() { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2230 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 264, __wbg_adapter_24); + imports.wbg.__wbindgen_closure_wrapper2268 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 265, __wbg_adapter_24); return addHeapObject(ret); }; diff --git a/apps/gipy/pkg/gps_bg.wasm b/apps/gipy/pkg/gps_bg.wasm index 16d7109a6..3b0512b51 100644 Binary files a/apps/gipy/pkg/gps_bg.wasm and b/apps/gipy/pkg/gps_bg.wasm differ diff --git a/apps/gipy/pkg/gps_bg.wasm.d.ts b/apps/gipy/pkg/gps_bg.wasm.d.ts index b2d08e6bb..51d70466f 100644 --- a/apps/gipy/pkg/gps_bg.wasm.d.ts +++ b/apps/gipy/pkg/gps_bg.wasm.d.ts @@ -13,8 +13,8 @@ export function gps_from_area(a: number, b: number, c: number, d: number): numbe export function __wbindgen_malloc(a: number): number; export function __wbindgen_realloc(a: number, b: number, c: number): number; export const __wbindgen_export_2: WebAssembly.Table; -export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h9f56e5d7ebbfdb61(a: number, b: number, c: number): void; +export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h7bd03fc857623879(a: number, b: number, c: number): void; export function __wbindgen_add_to_stack_pointer(a: number): number; export function __wbindgen_free(a: number, b: number): void; export function __wbindgen_exn_store(a: number): void; -export function wasm_bindgen__convert__closures__invoke2_mut__h193105c6f054446a(a: number, b: number, c: number, d: number): void; +export function wasm_bindgen__convert__closures__invoke2_mut__h743e956546cf34aa(a: number, b: number, c: number, d: number): void; diff --git a/apps/gipy/settings.js b/apps/gipy/settings.js index fff1f8f79..e3b00359c 100644 --- a/apps/gipy/settings.js +++ b/apps/gipy/settings.js @@ -6,10 +6,11 @@ wake_up_speed: 13, active_time: 10, buzz_on_turns: false, - disable_bluetooth: true, + disable_bluetooth: false, brightness: 0.5, power_lcd_off: false, powersave_by_default: false, + sleep_between_waypoints: false, }, require("Storage").readJSON(FILE, true) || {} ); @@ -89,6 +90,13 @@ settings.powersave_by_default = v; writeSettings(); } + }, + "sleep between waypoints": { + value: settings.sleep_between_waypoints == true, + onchange: (v) => { + settings.sleep_between_waypoints = v; + writeSettings(); + } } }); });