Commit Graph
274 Commits
Author SHA1 Message Date
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 5a26d4ddd1 fix: stabilize Heltec RC32 startup 2026-08-27 17:06:20 -07:00
mikecarper 7676e4b1c2 feat: unify companion builds and USB runtime modes 2026-08-27 15:06:26 -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
mikecarper 91870e4bb0 fix: harden firmware builds and runtime reliability 2026-08-26 15:42:12 -07:00
mikecarper 65e40ff05f feat: add customizable companion Bluetooth names 2026-08-25 20:51:18 -07:00
mikecarper f01970058d feat: add capability-aware firmware build profiles 2026-08-25 20:07:09 -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 4a4a795f52 Harden recoverable external radio startup 2026-08-24 16:54:41 -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
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
mikecarper 671dd30769 Expand companion offline queues 2026-08-19 17:32:05 -07:00
mikecarper a192c1ea69 Merge remote-tracking branch 'iotthinks/PowerSaving-v17' into keymindCascade
# Conflicts:
#	examples/companion_radio/main.cpp
#	variants/heltec_v4/platformio.ini
2026-08-19 13:31:42 -07:00
Kevin Le a3b9ad91a5 Disabled automatic light sleep for companions with USB CDC Serial 2026-08-19 19:19:16 +07:00
mikecarper 47993d178e Update MeshCore features and OTA layout handling 2026-08-18 23:17:42 -07:00
mikecarper 0c4619bcc3 Expose Companion WiFi and radio power controls 2026-08-18 16:51:59 -07:00
mikecarper 818f610ba3 Fix Cascade power saving, USB Companion, and mOTA flows 2026-08-18 14:02:10 -07:00
Kevin Le 4027acc74b Fixed to support usb companions 2026-08-18 20:57:20 +07:00
mikecarper 68c67f2cd4 Merge PR #3214: companion USB connection and flow control
Preserve the newer terminal and mOTA passthrough paths while adding real USB client detection and whole-frame transmit pacing.
2026-08-17 23:55:40 -07:00
mikecarper 87fb6f9fa5 Fit complete Companion correction matrix 2026-08-16 22:42:07 -07:00
mikecarper e2afc1bc5a Stabilize T-Beam full companion startup 2026-08-16 11:00:55 -07:00
mikecarper 8b4e57b1e5 Keep T-Beam companion available without radio 2026-08-15 22:34:45 -07:00
mikecarper bd2e668961 Add T-Beam WiFi button toggle 2026-08-15 18:12:09 -07:00
mikecarper 843d309e2b Fix Companion device power saving 2026-08-15 17:58:37 -07:00
rootandClaude Fable 5 a7724b9ec6 Add flow control to the companion USB interface
The contact sync streams up to MAX_CONTACTS frames back to back, but
ArduinoSerialInterface never checked whether the stream could take
them: isWriteBusy() returned false unconditionally, so MyMesh's pacing
gate had no effect, and writeFrame() called write() without looking at
availableForWrite(). On ESP32 (HWCDC, 256 byte TX ring) a host that
stalls for a moment makes the driver drop queued bytes silently, which
tears a frame in half - and since the framing is length prefixed with
no checksum and no resync marker, the client stays desynchronised for
the rest of the session. Reported as 'the app disconnects while
syncing contacts' on devices with a large contact list.

Add opt-in flow control: report busy until a whole frame fits, and
drop frames as a unit instead of tearing them. Enable it for the
companion USB interface and give HWCDC a bigger TX buffer with a short
write timeout, mirroring what kiss_modem already does.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 20:16:20 +02:00
rootandClaude Fable 5 ab492ba187 Report the real USB client connection state in companion builds
ArduinoSerialInterface::isConnected() always returned true, so any
companion build with a USB interface believes a client is attached from
boot onwards. Two user visible effects:

- new message notifications never fire, because MyMesh only notifies
  the UI (display, buzzer) while no client is connected
- on builds that also expose BLE the home screen shows '< Connected >'
  instead of the BLE pairing PIN, so a freshly flashed device cannot be
  paired at all

Add an optional connection check callback and wire it up per platform:
native USB-CDC (TinyUSB on nRF52/RP2040/ESP32 with USB_MODE=0) exposes
real DTR through (bool)Serial. The ESP32 USB-Serial-JTAG peripheral has
no DTR concept - it reports 'connected' as soon as the host enumerated
the device - so fall back to frame activity there. Plain UARTs keep the
previous assume-connected behaviour.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 20:13:36 +02:00
Kevin Le d42f4240ff Fixed PowerSaving for ESP32 USB companions 2026-08-14 23:42:25 +07:00
Kevin Le 594d770968 PowerSaving for companions 2026-08-14 23:36:52 +07:00
mikecarper 71619934fc Fix USB terminal backspace handling 2026-08-10 23:47:09 -07:00
mikecarper 968ca3363b Add runtime FEM control and fix full Companion boot 2026-08-10 17:10:18 -07:00
mikecarper 4e91cc9487 Expand full Companion terminal tooling 2026-08-10 14:53:39 -07:00
mikecarper 88ba5b26cb Add full Companion OTA source builds 2026-08-10 12:39:07 -07:00
mikecarper bf62afa240 Add companion terminal mode and LoRa OTA tooling 2026-08-07 19:19:44 -07:00
mikecarper 44ec918303 Harden WiFi and LR1110 recovery 2026-08-03 16:23:23 -07:00
mikecarper 61cb8d6e96 Merge upstream dev into keymindCascade
# Conflicts:
#	docs/payloads.md
#	examples/companion_radio/DataStore.cpp
#	examples/companion_radio/DataStore.h
#	examples/companion_radio/MyMesh.cpp
#	examples/companion_radio/MyMesh.h
#	examples/companion_radio/NodePrefs.h
#	examples/companion_radio/main.cpp
#	examples/simple_room_server/MyMesh.cpp
#	examples/simple_room_server/MyMesh.h
#	examples/simple_sensor/SensorMesh.cpp
#	platformio.ini
#	src/Utils.cpp
#	src/helpers/CommonCLI.cpp
#	src/helpers/CommonCLI.h
#	src/helpers/NRF52Board.cpp
#	src/helpers/nrf52/SerialEthernetInterface.cpp
#	src/helpers/radiolib/CustomLLCC68.h
#	src/helpers/radiolib/CustomLLCC68Wrapper.h
#	src/helpers/radiolib/CustomLR1110.h
#	src/helpers/radiolib/CustomSTM32WLxWrapper.h
#	src/helpers/radiolib/CustomSX1262.h
#	src/helpers/radiolib/CustomSX1268.h
#	src/helpers/radiolib/CustomSX1268Wrapper.h
#	src/helpers/ui/ST7735Display.cpp
#	test/mocks/Stream.h
#	variants/minewsemi_me25ls01/target.h
#	variants/wio-tracker-l1/platformio.ini
2026-08-03 14:53:59 -07:00
mikecarper 308589afa3 Harden nRF52 shutdown and radio recovery 2026-07-31 16:01:02 -07:00
mikecarper e6abf3ea7d Share WiFi OTA seeding across full ESP32 builds 2026-07-29 01:51:01 -07:00
liamcottle 203fd4e407 refactor rak13800 to new ethernet interface class 2026-07-28 03:18:54 +12:00
liamcottle e672679d6e refactored companion interfaces to allow for multiple active connection modes 2026-07-28 03:18:54 +12:00
liamcottle b4143a4402 rename class 2026-07-28 03:18:54 +12:00
liamcottle 5de857f8f8 initial ch390 ethernet support for thinknode m7 companion 2026-07-28 03:18:54 +12:00
mikecarper 9a4834b192 Merge PowerSaving v16 updates 2026-07-24 01:34:35 -07:00
mikecarper 371d86c4b1 Normalize tracked text to ASCII 2026-07-22 00:43:38 -07:00
mikecarper bda0722ad8 Harden nRF52 storage and hardware recovery 2026-07-21 00:01:01 -07:00
mikecarper d5a00da2a0 Harden nRF52 persistence, watchdog, and build variants 2026-07-20 22:55:58 -07:00
Kevin Le a7a4e52947 GPS PowerSaving v1.1: Added support for BLE companions 2026-07-20 16:19:27 +07:00
mikecarper 67cfc30588 Fix companion display behavior on USB hosts 2026-07-19 22:18:26 -07:00