Commit Graph
1707 Commits
Author SHA1 Message Date
mikecarper fbd5c84ec4 Preserve contacts when source discovery is unknown
Do not classify legacy or page-name stat errors as unread payloads. Keep candidate contact files unchanged, retry source selection, and use bounded volatile operation if authority remains unknown. Cover legacy absence, downgrade leftovers, cleanup-time metadata recovery and persistent faults with actual-source sanitizer tests and restored-bug negative controls.
2026-10-16 08:38:26 -07:00
mikecarper 2311160a97 Recover unreadable contacts without stranding Companions
Verify fallback namespace moves before accepting publication or rollback. Reload readable contact images at a safe host boundary, discard only unreadable contact data after bounded retries, and permit volatile operation when storage cannot recover. Preserve unrelated stores and fail explicit durability requests truthfully.

Keep existing flash, RAM, OTA and capability limits by streaming nRF52 preferences through the validated wire table and sharing identical contact deadline resets. Add fault-injection, sanitizer, legacy-image parity and CLI lifecycle regressions.
2026-10-16 08:28:45 -07:00
mikecarper 930a64284f Reconcile uncertain LittleFS writes and preserve storage authority
Verify public images after every rename attempt, expose publication outcomes, and use an independent CRC32C fingerprint so valid IEEE-CRC-tailed images cannot mask a stale target. Preserve persistent formats and reject directories for empty images.

Reconcile uncertain migration journals before choosing filesystem authority. Preserve retained contact snapshots when page publication is unconfirmed without clearing dirty state or acknowledging the new page generation.

Add readback, rename, CRC-tail, migration reboot/quarantine, and snapshot eviction regressions. Keep complete RAK Full Companion within the unchanged OTA ceiling through equivalent code compaction, with no feature or validation cuts.
2026-10-16 06:37:59 -07:00
mikecarper e326503ead Reject binary trace routes that exceed representable hop count 2026-10-16 05:26:29 -07:00
mikecarper bd59c1f3a7 Estimate Companion trace timeouts from planned radio transmissions 2026-10-16 05:20:39 -07:00
mikecarper c3a52e6095 Keep Companion reboot deadlines armed across millis rollover 2026-10-16 05:18:37 -07:00
mikecarper 3b80686455 Use received radio profile for clock transit estimates 2026-10-16 05:04:06 -07:00
mikecarper 277f6d174b Compare Sensor subscription deltas in exact LPP units 2026-10-16 05:03:22 -07:00
mikecarper e27a4ecf2c Use packet radio settings for forwarding delays 2026-10-16 04:43:12 -07:00
mikecarper 898e1b8097 Preserve exact LPP bytes in Sensor telemetry snapshots 2026-10-16 04:40:44 -07:00
mikecarper 48614ad951 Separate tracker RF leases from timed maintenance wakes 2026-10-16 04:03:34 -07:00
mikecarper fd03344fed Publish watchdog HWCDC boundaries before reopening USB 2026-10-16 03:43:22 -07:00
mikecarper aed266121a Keep HWCDC watchdog escalation and pending cleanup live 2026-10-16 03:21:18 -07:00
mikecarper f8e8a9c3a7 Keep OTA-only Companions on inherited foreign callbacks 2026-10-16 03:01:34 -07:00
mikecarper 16749091ff Keep RAK Companion Ethernet waits off the mesh loop
Run DHCP and renewal in a cooperative worker, bound socket commands, and retain SPI ownership until cleanup is safe. Preserve framing deadlines, response ownership and whole-frame replay, including pending-ACK queue pinning.

Budget the worker additively and retain all OTA names with an exact-checked Full-only compact index. Add full-driver, sanitizer, queue, shutdown, storage and memory regression coverage.
2026-10-16 02:23:03 -07:00
mikecarper 3804bca99a Add adaptive RAK4631 SD storage to full firmware profiles 2026-10-16 01:18:26 -07:00
mikecarper edd84b3880 Add opt-in decoded-channel Meshtext rebroadcasting 2026-10-15 23:39:05 -07:00
mikecarper 20e5e0b8e3 Keep local onboarding notices behind real Companion traffic 2026-10-15 23:37:17 -07:00
mikecarper abbc79b8f4 Bound legacy Companion startup version labels without heap copies 2026-10-15 23:34:50 -07:00
mikecarper 7b27dc50af Seed a quiet local emergency-channel notice on Companion joins 2026-10-15 23:16:27 -07:00
mikecarper f765604cb8 Fix peripheral power shutdown and auto-detect Station G3 radio slots 2026-10-15 22:30:37 -07:00
mikecarper 4ed14d37c9 Keep bridged OTA retries resumable across profile handoffs
Let the mesh timed OTA retry guard own byte-identical requests instead of the permanent bridge FIFO. Bind bridge ingress to its primary profile generation and preserve UART reflection/liveness protections. Verified a LoRa to ESP-NOW to LoRa update with outage recovery and install.
2026-10-15 21:05:23 -07:00
mikecarper c176b1349e Fix Meshtext metadata lifecycle and radio2 readiness refresh
Delay automatic GPS-free NodeInfo until a quiet TX gap, invalidate stale metadata after durable node renames, and refresh the profile when same-tuple publication releases its busy guard. Cover the real Companion methods and document the behavior.
2026-10-15 21:05:14 -07:00
mikecarper 8c9ea0d18d Announce MeshTalk identity after first chat and retry until heard 2026-10-15 17:57:34 -07:00
mikecarper 88de438620 Add configuration-preserving Waveshare observer partition migration 2026-10-15 17:37:52 -07:00
mikecarper ecd8e51f84 Merge observer firmware with persistent opt-in advert signature verification
Add Waveshare LR1121 observer recipes. Adapt observer advert verification to existing transactional CLI, append-only binary preferences and Companion NVS, preserving default file lengths and WiFi credentials. Reject oversized unsigned advert tails consistently with Mesh::onRecvPacket. Keep current BLE recovery and GPS claim accounting.
2026-10-15 13:45:27 -07:00
mikecarper f3aa936c41 Merge meshcore-dev dev with routing, WiFi and power-policy compatibility
Integrate upstream 1.18.0, delayed direct ACK forwarding, zero-scope routing, Waveshare LR1121 and dynamic WiFi variants. Preserve fork chemistry-aware power management and bounded multi-interface UI; retain retry/dedup safety while adding upstream ACK delay. Qualify LR1121 band power and HP-only Morse handling with native regressions.
2026-10-15 13:30:41 -07:00
mikecarper 938f637487 Share radio2 raw transport for Ethernet and negotiated direct LoRa OTA 2026-10-15 11:05:21 -07:00
mikecarper 861bd2aad6 Preserve BLE command replies and respect negotiated mOTA MTU 2026-10-15 11:05:00 -07:00
mikecarper 0c7127e843 Add safe ESP32 WiFi compatibility controls and unified status 2026-10-15 11:04:07 -07:00
mikecarper 2bd403e615 Protect ESP32 identities during interrupted partition migration 2026-10-15 11:03:43 -07:00
Scott Powell 07a833bbbe * version 1.18.0 2026-10-15 19:42:01 +11:00
mikecarper b630790556 Add staggered transmit-only channel text beacons 2026-10-14 09:58:24 -07:00
mikecarper dd4554a1a7 Adapt AGC maintenance cadence during device power saving 2026-10-14 04:11:10 -07:00
Liam Cottle 2586f7abe3 Merge pull request #3591 from liamcottle/feature/companion-ble-wifi
Add WiFi support to Heltec v3 and v4 BLE variants
2026-10-14 20:23:11 +13:00
mikecarper ae1003ee92 Keep power-saving sleep within queued work deadlines 2026-10-14 00:20:04 -07:00
liamcottle a0fc769660 rework companion ui for ip address so it fits in multi interface variants 2026-10-14 16:29:41 +13:00
agessaman 14b487da81 Merge upstream/dev into observer-firmware-dev
Preserve observer discovery when forwarding is disabled while honoring hidden-node settings. Keep GPS power ownership paired and incorporate upstream GPS diagnostics.
2026-10-13 19:10:10 -07:00
Scott Powell 481f72cae7 * only 'repeat on' now intercepted 2026-10-14 12:21:38 +11:00
Scott Powell 8579c66747 * Room: "set repeat" CLI now deprecated 2026-10-14 11:48:58 +11:00
mikecarper 6693dba8cf Recover Companion WiFi TCP listener failures and expose diagnostics 2026-10-13 16:24:34 -07:00
mikecarper a2f51253d8 Fix WisBlock GPS power policy and preserve shared peripherals 2026-10-13 09:55:32 -07:00
mikecarper 3963048226 Coordinate Reader output with Morse and enforce HIL flash safety
Preserve Reader streaming during Morse timing and block synchronous inflate/progress interleaving. Fail closed on uncertain port ownership and enforce application-only DFU packages before querying USB. Cover the guards in CI and clarify experimental benchmark scope.
2026-10-13 01:51:27 -07:00
mikecarper 0be4c7488c Add bounded Morse receive and negotiated RS232 autosleep
Add native narrow-band CW capture, ACK-first remote sessions, retained LoRa-readable pages, checked restoration and transport-safe progress. Add stock-compatible negotiated heartbeat/autosleep and recovery. Include host regressions and identity-bound HIL runners; keep unverified faster tuning HIL-only and document outstanding hardware validation.
2026-10-13 01:24:39 -07:00
mikecarper 8c698dc2d1 Reduce nRF52 Companion flash and stream Reader chapters
Use a 960-byte constant-time Ed25519 base table, compact hash/scalar code and unused-library trims while retaining Reader, BLE P-256 and the 8 KiB stack. RAK4631 Full saves 57,496 flash bytes and 3,152 static RAM bytes versus preview3.

Support complete chapters and verse ranges with bounded app continuation replies and cooperative terminal output. Use nonblocking TCP writes under reader backpressure. Add scalar/signature comparisons and a linked ARM crypto/stack CI gate.

Validated clean RAK4631, T1000-E, T096 and V4 Full builds, host regressions, and physical RAK chapter/reconnect and signing comparisons. Physical signing averages 35.9 ms versus 14.4 ms with the original table.
2026-10-13 01:02:30 -07:00
mikecarper 9ce2a076eb Include and qualify Meshtext in RAK4631 Full Companion
Port Meshtext settings to verified atomic nRF52 storage and use the existing radio RNG and hardware entropy. Keep the ExtraFS boundary, GPS, contacts, channel count and 8 KiB stack unchanged; omit unused library data to fit the image. Require linked codec and Companion transport evidence and build the real RAK Full profile in CI. Add configuration and storage-failure regression coverage.
2026-10-12 22:39:00 -07:00
mikecarper 6b3f7df4d0 Suspend failed ESP32 MQTT and NTP uplinks for power saving
Share one bounded WiFi outage and recovery schedule across MQTT, automatic NTP, Companion station ownership and WebConfig. Preserve enabled settings and foreground access while allowing normal sleep after confirmed physical shutdown.

Honor failed SDK client stops before handing off WiFi, protect clean teardown and reconfiguration, and retry transient ESP-NOW channel restoration without repeated disconnects. Add production-method, SDK failure and real sleep regressions to CI.

Validation: native MQTT/NTP/clock/reconnect suites; production power and wrapper failure tests; browser, room HTTP, OTA and combined bridge regressions; Full Heltec V4 repeater, room and companion builds with capability, flash and linked-memory checks.
2026-10-12 14:57:01 -07:00
mikecarper cbafd44047 Add verified USB-only ESP32 partition migration bridges 2026-10-11 13:28:23 -07:00
mikecarper f304b8ff77 Add Meshtext Companion channel chat and automatic radio2 setup 2026-10-11 02:08:02 -07:00
mikecarper 41f48344bd Add opt-in low power Sensor dog tracking
Acquire fresh GPS and validated UTC, check an authenticated owner Companion, and apply saved lost-status cadence with bounded awake windows. Persist request tags, routes, and six-hour flood reservations; preserve the four-day cutoff across sleep and restart.

Keep Dispatcher recovery active after a failed radio wake, honor denied flood retries after lost TxDone, and qualify GPS ownership and clock corrections. Add executable regression tests and nRF52/ESP32 Sensor build jobs.

Validation: six firmware builds, 1829 native test cases, sanitized tracker/storage/GPS/sleep/recovery tests, and strict documentation build. Bluetooth Find My advertising and automatic Room mailbox polling remain separate work.
2026-10-10 20:08:58 -07:00