Commit Graph
1516 Commits
Author SHA1 Message Date
MUSTARDTIGERFPV f0c4c6af00 Enable the on-demand mOTA context for every classic ESP32 build
Move OTA_HEAP_CONTEXT from two hand-edited envs to a pre-script gated on
build.mcu == "esp32", so every classic ESP32 image gets it and none can drift.
S2/S3/C-series and nRF52 keep the .bss singleton: they have no equivalent
static-DRAM ceiling, so there a guaranteed-present workspace is the better
trade for what is ultimately a recovery path. It has to be a build flag rather
than a header default, because OTA_HEAP_CONTEXT must hold the same value in
every translation unit that sees OtaContext.h - OtaContext.cpp included - and a
header test on CONFIG_IDF_TARGET_ESP32 would depend on include order relative
to sdkconfig.h. The script defers to OTA_SHARED_COMPANION_QUEUE where a Full
Companion recipe already owns the storage.

Fix a gap this exposes in the roles that now use it. Only CLI entry points
acquire the context, so once it was released, a repeater with the temporary
radio profile up would no longer serve or announce its own firmware - LoRa OTA
would look enabled and silently do nothing. ota_service_temp_radio_context()
holds the workspace for exactly the temp-radio window and hands it back
outside it, which is where the saving was coming from anyway. Wired into the
repeater, room server and sensor loops; the Companion keeps its own
acquire-on-host-demand policy, since its context is borrowed from the offline
message queue and must not be taken speculatively.

Static DRAM, classic ESP32 (bytes occupied of a 124,580 region):
  Heltec_v2_repeater                   108,332 -> 70,732
  Heltec_v2_room_server                 83,716 -> 68,300
  Heltec_v2_companion_radio_ble        123,236 -> 107,772  (was failing on main)
  Tbeam_SX1262_repeater                 86,932 -> 71,468
  Tbeam_SX1262_repeater_observer_mqtt  121,132 -> 83,532   (was failing)
2026-09-09 01:24:00 -07:00
MUSTARDTIGERFPV afa1036304 Move large repeater tables off classic ESP32 static DRAM
Classic ESP32 links into a dram0_0_seg of only 124,580 bytes: memory.ld
carves the BT controller's 0xdb5c (56,156) reservation off the 0x2c200
window before the application gets any. Three large objects dominated what
was left, and Tbeam_SX1262_repeater_observer_mqtt overran the build's 8 KiB
static reserve by 4,744 bytes.

Heap-allocate them instead, each with a defined behaviour when the
allocation fails:

- OtaContext: generalize the Companion's borrowed-storage path behind
  OTA_DYNAMIC_CONTEXT and add OTA_HEAP_CONTEXT, which allocates the context
  on first use and frees it once no transfer, apply or folder link needs it.
  A repeater is idle nearly all the time, so the workspace is usually absent.
  Exhaustion is reported to the caller and the operation declines.
- ClientACL: the client table becomes a pointer with a live capacity;
  capacity 0 refuses new clients rather than writing through a null table.
- MyMesh flood packet filters: likewise, with flood_packet_filter_slots as
  the live bound for every rule loop. At capacity 0 the node forwards
  unfiltered, and both save paths refuse to write so a stored ruleset is
  never replaced by an empty file.

Also override the Arduino SDK's weak btInUse() in simple_repeater so
initArduino() releases the BT controller memory to the heap. That grows the
runtime heap these tables now come from; it cannot recover the same
reservation from the linker's static window.

Static DRAM, classic ESP32:
  Heltec_v2_repeater                   108,332 -> 70,732
  Tbeam_SX1262_repeater_observer_mqtt  121,132 -> 83,532  (was failing)
2026-09-09 01:24:00 -07:00
mikecarper aab46c7c84 Use native display resolution and adaptive typography 2026-09-08 16:02:16 -07:00
mikecarper 09639d7e02 Fix G3 USB sleep and two-minute button wake 2026-09-07 16:28:02 -07:00
mikecarper 8995675e1c Enforce classic ESP32 memory budgets and safe image merging 2026-09-05 08:22:56 -07:00
mikecarper 4d89de8544 Improve companion setup and USB session recovery 2026-09-02 03:44:28 -07:00
mikecarper 9816e21834 Harden nRF52 OTA, USB sessions, and T096 controls
Bind Companion replies to request transports, make dual-CDC USB sessions nonblocking and reconnect-safe, and harden nRF52 watchdog/OTA storage paths. Fix T096 button debounce, display wake, sleep races, and the compact message layout; add exact WisBlock OTA profiles plus expanded native/static/HIL documentation.
2026-09-01 20:51:43 -07:00
mikecarper 5de1820765 Unify companion BLE and WiFi setup flows 2026-09-01 01:25:00 -07:00
mikecarper 6df9a9f686 Keep Indicator RGB scanout alive during expander recovery 2026-08-31 19:10:54 -07:00
mikecarper 260b07999e Recover Indicator display after warm reset 2026-08-31 19:06:07 -07:00
mikecarper ba452de3c9 Add SenseCAP Indicator N16R2 profile 2026-08-31 18:29:38 -07:00
mikecarper ec94ac44ae Add Indicator WiFi setup as eighth home page 2026-08-31 17:31:48 -07:00
mikecarper 0496affcf8 Keep Indicator setup text large on fallback canvas 2026-08-31 16:36:46 -07:00
mikecarper 4bbdf4b071 Enlarge Indicator native setup screen 2026-08-31 16:10:03 -07:00
mikecarper 164a6e8227 Fix Indicator transport taps and fresh LoRa defaults 2026-08-31 15:56:54 -07:00
mikecarper 2e026caf4a Improve Indicator transport touch UI 2026-08-31 15:11:11 -07:00
mikecarper 5af7b73ff9 Add safe ESP32 transports and Indicator UI
Reserve board-specific GPIOs, make ESP-NOW channel/format handling configurable, and coordinate WiFi, BLE, NTP, MQTT, and host actions safely.

Add the Indicator message page, exclusive transport selector, dynamic 480/320 rendering, larger transport typography, pairing cleanup, and corresponding tests and documentation.
2026-08-31 14:29:42 -07:00
mikecarper 8920c35da5 Harden marathon-tested OTA and hardware paths
Add durable TempRadio, ACL, clock, bridge, GPS/I2C, USB logging, and Indicator recovery safeguards together with expanded automation, build/profile contracts, release metadata, and the hardware validation ledger.
2026-08-30 19:26:15 -07:00
mikecarper 256eb26b17 fix: reserve Indicator heap for BLE and WiFi 2026-08-29 16:13:47 -07:00
mikecarper e7962f9598 Fix release matrix gaps and add background builds 2026-08-29 14:55:07 -07:00
mikecarper da61c48e7b feat: integrate R8 observer and companion updates 2026-08-28 18:39:26 -07:00
mikecarper c24bc82814 Merge upstream dev companion CLI updates 2026-08-28 17:31:28 -07:00
mikecarper 2b3b93ab2f fix: harden ESP-NOW and full companion networking
Add selectable shared ESP-NOW channels, raw/wrapped bridge compatibility, and bounded fragmentation for maximum-size packets.\n\nGive ESP32 Full profiles WiFi coexistence, stabilize WebConfig and USB terminal lifecycles, and keep disabled bridges stopped during observer updates.\n\nUpdate generated UI, firmware selection, documentation, and regression coverage.
2026-08-28 16:36:34 -07:00
mikecarper c6476b8ba8 feat: consolidate full companion runtime profiles 2026-08-28 08:47:26 -07:00
mikecarper d17c250137 fix: port T-Beam 1W hardware corrections
Adapt the validated fan thermostat, battery ADC calibration, GPS baud, SX1262 register patch, and 1700us PA ramp behavior from mintylinux/Meshcore-T-beam-1W-Firmware to the current board architecture. Also make Arduino 3 full-build dependency switching reliable after standard ESP32 builds and guard the release hardware contract with regression coverage.
2026-08-27 18:58:37 -07:00
mikecarper a0165cb38b fix: harden CLI and GPS handling 2026-08-27 17:59:44 -07:00
mikecarper 5a26d4ddd1 fix: stabilize Heltec RC32 startup 2026-08-27 17:06:20 -07:00
mikecarper e5fd77e53f feat: add Bluetooth-controlled LoRa OTA
Add the framed BLE mOTA transport and companion control path, complete the full-profile build and runtime fixes, and document and test the OTA workflow.
2026-08-27 01:22:18 -07:00
Liam Cottle 1c3248902a Merge pull request #3298 from meshcore-dev/companion-cli
Companion CLI
2026-08-27 18:17:10 +12:00
mikecarper 91870e4bb0 fix: harden firmware builds and runtime reliability 2026-08-26 15:42:12 -07:00
mikecarper ce7e65314d fix: preserve board features in full companion profiles 2026-08-26 13:49:55 -07:00
mikecarper 83e402bd4d fix: preserve complete companion build profiles 2026-08-25 23:47:40 -07:00
mikecarper 42b6a0df60 feat: retain INA monitors in reduced RAK repeaters 2026-08-25 20:24:17 -07:00
mikecarper 9d57a3a4f8 feat: complete Cascade Indicator companion support
Add native-resolution Indicator UI, touch navigation, SD-backed pixel and emoji fonts, LoRa radio support, dual-slot WiFi Companion provisioning, and mesh clock fallback. Harden radio recovery and build defaults, normalize ESP32 setup-AP protocols, and document/test the operator workflows.
2026-08-25 18:37:17 -07:00
mikecarper 1792acda6a Harden external radio recovery and power limits 2026-08-25 10:27:26 -07:00
Scott Powell 9ab13158cb * fix for RPI Picow 2026-08-25 19:04:32 +10:00
mikecarper 7077283e95 Make RXPS preamble adaptive for fast radio settings 2026-08-24 20:42:54 -07:00
mikecarper 4a4a795f52 Harden recoverable external radio startup 2026-08-24 16:54:41 -07:00
mikecarper ba70c5b3c6 Harden fast RXPS timing and board behavior 2026-08-24 15:10:54 -07:00
mikecarper dc92ee61ef Expand and harden full companion profiles 2026-08-24 01:57:38 -07:00
mikecarper f2d4ffbb7e Unify full firmware profiles and add dual USB logging 2026-08-23 19:22:45 -07:00
liamcottle 7dc2d54818 add UI_NO_HIBERNATE build flag to disable hibernate screen on wio tracker l1 2026-08-24 13:45:19 +12:00
mikecarper b699e552ec Add secure host CLI bridge and harden OTA workflows
Expose the Full Companion terminal over TCP and add an authenticated, replay-resistant host command service with documented CPU temperature, reboot, and allowlisted program examples.\n\nImprove LoRa OTA diagnostics and persistent CLI handling, reduce clock correction drift to ten minutes, and make mOTA stream flush behavior an explicit transport policy with regression coverage.
2026-08-23 15:29:30 -07:00
Scott Powell a1cf5bd806 * refactored 'FEM' commands for HeltecTrackerV2 & HeltecV4 2026-08-24 02:16:18 +10:00
Scott Powell 47b0b7b3b8 * T096, and Station G3: refactoring the 'FEM' prefs to variant-specific code
* CommonCLI: 'FEM' commands removed
* introduced static no-op attachDynamicPrefs() for all boards
2026-08-24 01:50:22 +10:00
mikecarper 7d2f69e34f Retain GPS in RAK nRF52 OTA repeaters 2026-08-22 13:27:01 -07:00
liamcottle 0b652b5629 add support for rak12500 and rak12501 gps on rak3401 2026-08-22 16:16:32 +12:00
mikecarper f11e160b73 Harden signed SD and bootloader OTA 2026-08-21 12:15:54 -07:00
mikecarper 30989a0133 Add MeshTower SD bootloader updates over LoRa 2026-08-21 09:55:15 -07:00
mikecarper b7c9e37d09 Add signed XIAO bootloader updates over LoRa 2026-08-20 22:05:11 -07:00