Commit Graph
139 Commits
Author SHA1 Message Date
mikecarper 61d024bc72 Add saved controls for radio switching acceleration 2026-10-23 10:41:26 -07:00
mikecarper 1b97c089a7 Combine bounded nRF USB and scheduler isolation for explicit HIL trials 2026-10-23 03:52:06 -07:00
mikecarper 3801d49391 Attribute nRF retune stalls to observed interrupt and scheduler activity 2026-10-23 03:27:00 -07:00
mikecarper bb9431973a Add bounded USB IRQ isolation experiment for nRF radio retunes 2026-10-23 03:05:18 -07:00
mikecarper a3168384f9 Add optional nRF profile task-priority scheduling experiment 2026-10-23 02:34:50 -07:00
mikecarper 1412ee4954 Prioritize ESP32 Auto CPU speed during dual-profile radio scanning 2026-10-23 02:34:50 -07:00
mikecarper 663312c820 Separate profile admission and standby costs in hardware timing captures 2026-10-23 02:22:50 -07:00
mikecarper 2629c15804 Add optional nonhalting profile-switch stage timing for hardware diagnostics 2026-10-23 01:59:07 -07:00
mikecarper 3d29a1d811 Keep noise history within small-board memory budgets 2026-10-22 17:21:33 -07:00
mikecarper f4ade738df Add packed noise-floor telemetry history for both radio profiles 2026-10-22 16:50:31 -07:00
mikecarper 9b70827d03 Add opt-in bounded ESP32 radio timing capture 2026-10-22 03:46:43 -07:00
mikecarper a5293fa50b Preserve new SX126x reception after a stale ESP32 interrupt 2026-10-22 01:32:48 -07:00
mikecarper 6e599d1709 Add ESP32 clock selection and bounded power test controls 2026-10-21 21:06:42 -07:00
mikecarper 1ba4e28308 Recover ESP32 radio IRQ levels after light-sleep wake 2026-10-21 20:08:58 -07:00
mikecarper 61eecbd971 Enable reversible ESP32 BLE shutdown and bounded radio2 CPU sleep 2026-10-21 17:53:57 -07:00
mikecarper 1fd993ecf5 Share radio profile validation and simplify bounded airtime arithmetic 2026-10-19 21:20:57 -07:00
mikecarper e0442880e1 Keep Full RAK Companion within flash using integer airtime blocks 2026-10-19 20:36:16 -07:00
mikecarper 8e35f477c0 Repair failed profile retunes before receiving packets 2026-10-19 18:54:14 -07:00
mikecarper 8038715ffe Extend nRF52 radio profile timing across RTC wraps 2026-10-19 18:53:33 -07:00
mikecarper ca67494f8c Correct chip-specific radio profile validation and airtime
Retain supported LR2021 bandwidths and reject frequency gaps. Enable LR1121 high-band bandwidth selection and account for its forced LDRO in profile and beacon airtime.

Cover all eight chip families with production-method regression tests.
2026-10-19 18:49:15 -07:00
mikecarper 55f67f9062 Fit Mini Repeater with approved optional service cuts 2026-10-17 19:35:05 -07:00
mikecarper 97be2b9b21 Delay displayed radio preamble advice for two minutes 2026-10-17 14:45:33 -07:00
mikecarper f1d281a766 Allow safe nRF52 MCU idle between radio2 scan deadlines 2026-10-17 13:21:05 -07:00
mikecarper eb4f837969 Retain valid noise floors during adaptive AGC maintenance 2026-10-17 11:06:10 -07:00
mikecarper dd7a10f9aa Sleep between noise-floor samples and reduce idle refreshes 2026-10-17 10:18:14 -07:00
mikecarper 0dcba50d88 Reject unsupported RXPS before changing suspended scan policy
Keep rejected power-saving requests from changing radio2's saved RX policy or timings. Exercise actual CLI, scan restoration and calibration sleep guards with semantic negative controls.
2026-10-16 19:17:22 -07:00
mikecarper dcfa31bb50 Report radio recovery refusal after receive ownership changes 2026-10-16 04:38:35 -07:00
mikecarper b11cb44e06 Restore RX power saving after deferred calibration cleanup 2026-10-16 01:42:37 -07:00
mikecarper 339079c439 Bound failed RX retries without blocking power-saving sleep 2026-10-16 01:27:24 -07:00
mikecarper d5cc73c43d Validate beacon power without stranding saved settings 2026-10-16 00:39:07 -07:00
mikecarper 23c9648789 Share radio2 raw transport for Ethernet and negotiated direct LoRa OTA 2026-10-15 11:05:21 -07:00
mikecarper 8a49a98709 Support Meshtext beacons across LoRa radio families
Add checked protocol adapters for every project LoRa family and enable Indicator LoRa TX. Preserve normal modem restoration, LR1110 fast hops, LR2021 side detectors and physical-band power limits.

Fix SX1276 beacon CAD completion dispatch, concrete-chip validation on multi-chip variants, no-GPS sensor hook linkage and STM32 file construction. Add fault, negative-control and preset coverage to CI. Keep flash-constrained STM32 artifacts disabled after measured opt-in overflows.
2026-10-14 10:22:04 -07:00
mikecarper 009bfff383 Add staggered transmit-only channel text beacons 2026-10-14 09:58:24 -07:00
mikecarper 457e403017 Adapt AGC maintenance cadence during device power saving 2026-10-14 04:11:10 -07:00
mikecarper d7c8a3a104 Reduce routine RX power-saving noise-floor refreshes 2026-10-14 01:37:55 -07:00
mikecarper b1198b6e3e Improve Morse timing adaptation and repair CI regression coverage 2026-10-13 03:02:52 -07:00
mikecarper ca9caece53 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 05907f49e0 Add Meshtext Companion channel chat and automatic radio2 setup 2026-10-11 02:08:02 -07:00
mikecarper 1f1a499482 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
mikecarper 617aacba42 Fix packet, delivery, clock and radio stability regressions
Reject truncated anonymous reply paths and advert metadata before copying,
while preserving timestamp-only empty-password logins. Limit room posting to
read-write/admin ACL roles, retain inbox frames until the requesting transport
accepts them, and lock raw LittleFS traversal against concurrent writes.

Separate ISR event generations from main-loop radio state. Confirm RX/TX IRQs,
detach concrete wrapper callbacks safely, and discard inconsistent LR2021 FIFO
snapshots before rearming. Preserve bridge RX frames through packet-pool
exhaustion and bound ESP-NOW retries and missing-callback recovery. Screen RTC
register layouts without losing DS1307 startup, and ignore poisoned future
contact timestamps during clock bootstrap.

Keep the nRF52 loop stack at 8 KiB while reducing the OTA listing call chain
from 7,832 to 6,056 static bytes. Retain all target names through lossless Full
Companion compression and the canonical size optimizer. Preserve constrained
STM32 filesystems and bind corrected ESP32 UART/OLED budgets to source size
assertions. Document the separately measured preexisting W12 package limits.

Adapted for this branch from meshcore-dev/MeshCore PRs #3521, #3340, #3362,
#2062, #3503, #3038, #3534, #3544 and #3512.

Validation: 1,829 native tests; sanitized parser, inbox, LittleFS, ACL, clock,
RTC, IRQ/FIFO and bridge fault tests; 332 additional Companion cases; real
RAK4631 Full and both repeater profiles, G2 Full/standard, V3 Full and both
constrained STM32 release recipes. Radio-family compile coverage continues
separately; W12 full/portable package guards remain enforced.
2026-10-09 19:56:08 -07:00
mikecarper ec0ebeb981 Fix radio profile reconfiguration transaction results 2026-10-03 18:25:22 -07:00
mikecarper 69c2e4855f Use nRF52 profile clock only for dual-radio scanning 2026-09-23 15:42:12 -07:00
mikecarper 1e1ee2618a Use precise T1000-E dual-profile timing 2026-09-23 15:31:43 -07:00
mikecarper 04697db82e feat(radio): calibrate dual-profile preambles from live switch timing 2026-09-22 00:09:37 -07:00
mikecarper b089b745fa feat(ui): page radio and system status 2026-09-21 15:35:46 -07:00
mikecarper a88ced23b6 Fix OTA resume, CLI identity, radio persistence, and network sessions
Distinguish OTA read failures from missing blocks and select unique raw-flash checkpoints by MID and target. Keep deferred CLI requests and replies bound to immutable command identity and full authenticated keys.

Gate radio mutations on their exact reply delivery, recover coding-rate restoration, and roll back failed Companion preference writes. Preserve accepted low duty cycles across reboot.

Retain partial network writes, cancel displaced client operations, and reject malformed or stalled framed input. Add regression and CI coverage, and size-optimize the RAK4631 Ethernet build without dropping features.
2026-09-15 14:32:40 -07:00
mikecarper 7c443e9f71 Harden radio recovery, OTA reconnects, and companion settings
Reject radio changes when receive mode cannot resume and restore the previous physical profile and power policy. Preserve selected folder OTA captures across disconnects and recoverable host I/O failures, while keeping corruption failures distinct. Validate OTA staging input before arithmetic or buffer writes and revoke published data before edits.

Commit companion channels through verified file replacement on ESP32, RP2040, and STM32, and quarantine incomplete startup reads. Recheck the last management connection during delayed wireless changes and prevent conflicting Bluetooth shutdowns. Detect complete OTA implementation sources rather than the shared inflater when configuring release builds.

Add fault-injection regressions and CI coverage for these paths, and document folder capture reconnect behavior.

Validation: 1,510 native tests; 55 host integration checks; build profile regressions; ESP32, nRF52, STM32, and RP2040 firmware builds.
2026-09-15 10:02:23 -07:00
mikecarper a07f39c6dd Add per-profile TX routing and bridge filtering
Persist Companion TX preferences per contact and channel. Default repeater,
room, and sensor replies to both active TX profiles, with a reply-only force
option for an RX-only secondary profile. Track both reply copies before a
temporary-radio handoff and account for OTA copies under queue backpressure.

Add bridge/crossover filter modes and the third built-in wardriving filter,
plus compact filter CLI syntax, documentation, and CI coverage.

Fix quoted target names being interpreted as slot/key selectors, partial
recovery of invalid saved reply settings, filter suspension during tempradio2,
and unnecessary packet allocation while OTA traffic is throttled.

Validation: 1,477 native tests, 52 Python integration tests, 29 filter UI tests,
and five firmware builds covering ESP32, nRF52, and STM32 passed.
2026-09-15 01:58:43 -07:00
mikecarper 55b4d8848d Add preamble timeout margin and missing CI coverage
Allow four additional RX preamble symbols without reducing the payload timeout. Exercise receive deadlines and OTA pending-work behavior, run the omitted radio and contact tests in CI, and ignore local lab credentials and transient files.
2026-09-14 22:13:32 -07:00
mikecarper 27e4a0d0db Restore SX1276 CW support and calibrated power sweeps
Retain the original carrier feature from PR #11 with zero-deviation FSK, board PA calibration, and LoRa restoration. Re-key after power changes without extending the timeout, and restore prior power after a failed sweep. Cover native and SX1276 transitions, failure recovery, external PA and RFO mapping; verify Linkflow repeater and Heltec V2 USB Companion builds.
2026-09-14 19:39:33 -07:00