Add GPSCFG/GPSMON/GPSPROBE console commands and a Settings re-detect action
Expose the GPS IGps introspection over the serial debug console (debug-gated,
GPS-namespaced, mirroring GPSSYNC/GPSDIAG):
- GPSCFG[?] / GPSCFG get <key|name> / GPSCFG set[!] <key|name> <val>: read and
write u-blox UBX-CFG through the driver's readConfig/writeConfig and the
gps_config_map key table. GPSCFG? dumps every key with its decoded value and a
critical marker; get/set resolve by numeric id or canonical name. A critical
key (one that can cut comms, stop fixes, or sleep the module) is refused on a
plain set with "GPSCFG_ERR: critical, use set!" — only the bang form set!
proceeds, so automated QA never bang-writes. A model without UBX config
(CASIC) returns false -> GPSCFG_UNSUPPORTED on <model>.
- GPSMON: parsed NAV-PVT/NAV-SAT/MON-HW status snapshot.
- GPSPROBE: forgetGpsIdentity() then a fresh createGps() re-detect.
All three power the receiver via createGps(), act, and always power it back off
(enterStandby + end), matching the one-shot power contract. On HAS_GPS=0 boards
createGps() returns nullptr and each command prints the "no gps" path.
Settings -> Device gains a "Re-detect GPS" row on HAS_GPS boards (DEVICE grows to
6 items; kSettingsMaxItems 5->6, RESTART stays last). Selecting it clears the
cached {model,baud} identity via gps::forgetGpsIdentity() and shows a brief
toast; no receiver is powered on that path.
Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
Add GPSCFG/GPSMON/GPSPROBE console commands and a Settings re-detect action
Expose the GPS IGps introspection over the serial debug console (debug-gated,
GPS-namespaced, mirroring GPSSYNC/GPSDIAG):
- GPSCFG[?] / GPSCFG get <key|name> / GPSCFG set[!] <key|name> <val>: read and
write u-blox UBX-CFG through the driver's readConfig/writeConfig and the
gps_config_map key table. GPSCFG? dumps every key with its decoded value and a
critical marker; get/set resolve by numeric id or canonical name. A critical
key (one that can cut comms, stop fixes, or sleep the module) is refused on a
plain set with "GPSCFG_ERR: critical, use set!" — only the bang form set!
proceeds, so automated QA never bang-writes. A model without UBX config
(CASIC) returns false -> GPSCFG_UNSUPPORTED on <model>.
- GPSMON: parsed NAV-PVT/NAV-SAT/MON-HW status snapshot.
- GPSPROBE: forgetGpsIdentity() then a fresh createGps() re-detect.
All three power the receiver via createGps(), act, and always power it back off
(enterStandby + end), matching the one-shot power contract. On HAS_GPS=0 boards
createGps() returns nullptr and each command prints the "no gps" path.
Settings -> Device gains a "Re-detect GPS" row on HAS_GPS boards (DEVICE grows to
6 items; kSettingsMaxItems 5->6, RESTART stays last). Selecting it clears the
cached {model,baud} identity via gps::forgetGpsIdentity() and shows a brief
toast; no receiver is powered on that path.
Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4
Add GPSCFG/GPSMON/GPSPROBE console commands and a Settings re-detect action
Expose the GPS IGps introspection over the serial debug console (debug-gated,
GPS-namespaced, mirroring GPSSYNC/GPSDIAG):
- GPSCFG[?] / GPSCFG get <key|name> / GPSCFG set[!] <key|name> <val>: read and
write u-blox UBX-CFG through the driver's readConfig/writeConfig and the
gps_config_map key table. GPSCFG? dumps every key with its decoded value and a
critical marker; get/set resolve by numeric id or canonical name. A critical
key (one that can cut comms, stop fixes, or sleep the module) is refused on a
plain set with "GPSCFG_ERR: critical, use set!" — only the bang form set!
proceeds, so automated QA never bang-writes. A model without UBX config
(CASIC) returns false -> GPSCFG_UNSUPPORTED on <model>.
- GPSMON: parsed NAV-PVT/NAV-SAT/MON-HW status snapshot.
- GPSPROBE: forgetGpsIdentity() then a fresh createGps() re-detect.
All three power the receiver via createGps(), act, and always power it back off
(enterStandby + end), matching the one-shot power contract. On HAS_GPS=0 boards
createGps() returns nullptr and each command prints the "no gps" path.
Settings -> Device gains a "Re-detect GPS" row on HAS_GPS boards (DEVICE grows to
6 items; kSettingsMaxItems 5->6, RESTART stays last). Selecting it clears the
cached {model,baud} identity via gps::forgetGpsIdentity() and shows a brief
toast; no receiver is powered on that path.
Claude-Session: https://claude.ai/code/session_01SV58JXhfxhhc9DC6vdjBo4