mirror of
https://github.com/ALLFATHER-BV/wadamesh.git
synced 2026-08-14 20:19:57 +00:00
Requested by janmashat: sharing position currently means putting it in the advert, which broadcasts it in the clear to every node in range, forever — poor privacy for something as sensitive as where you are. Almost all of the alternative was already built and unreachable. MeshCore answers telemetry on REQUEST, encrypted to the contact that asked, with three independent permission categories (battery, location, environment) each of which can be denied, allowed for everyone, or allowed only for contacts carrying a permission bit in contact.flags. The GPS emitter exists (EnvironmentSensorManager::querySensors adds LPP GPS when the requester has TELEM_PERM_LOCATION), and the receiving end has worked since #27 — an LPP_GPS field in a response is persisted with uiSetContactGps and the contact appears on the map. The one missing piece was any way to grant it: nothing in the touch UI ever wrote telemetry_mode_loc, so location telemetry was permanently denied, and the per-contact ALLOW_FLAGS mode was unreachable because nothing set those bits. The existing switch is all-or-nothing over battery+environment only, with a comment noting location "keeps its own separate setting" — a setting that was never built. So: Settings > Mesh gains "Share my location when asked" (Never / Chosen contacts only / Anyone who asks, ordered to match TELEM_MODE_*), and a contact's own menu gains "Share my loc", which sets that contact's location bit and flips to the per-contact mode if sharing was off entirely — otherwise the grant would silently do nothing. Revocable from the same place. Two behaviours made explicit rather than left to surprise people: nothing is broadcast (it is sent only when that contact asks, encrypted to them), and MeshCore only answers requests at all when base telemetry is allowed, so enabling location implies answering — the note under the dropdown says so, and the setter turns the master switch on rather than leaving a control that does nothing. No protocol change, so this interoperates with the MeshCore app and other MeshCore nodes rather than forking behaviour. All 8 S3 boards build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>