Commit Graph
1905 Commits
Author SHA1 Message Date
mikecarper d270cd611a Add split RX and TX repeater modes with source-based bridge routing 2026-10-28 15:34:42 -07:00
mikecarper 2fa1b63e14 Allow bridge ingress to target radio2 without primary fallback 2026-10-28 15:10:17 -07:00
mikecarper 67009e0d1e Add ESP32 app slot selection to the CLI 2026-10-28 14:03:31 -07:00
mikecarper 1d09ea4bde Expose board-aware setting capabilities and saved primary preamble 2026-10-28 12:52:48 -07:00
mikecarper f6034e1f02 Shorten RAK Bluetooth startup diagnostics 2026-10-28 10:00:54 -07:00
mikecarper 8c2ddc9ac7 Coalesce repeater clock and radio schedule runtime fields 2026-10-28 05:03:29 -07:00
mikecarper acacf548ef Group runtime timers and flags to recover nRF52 repeater RAM 2026-10-28 04:57:03 -07:00
mikecarper 8f20fe5d83 Trim remaining validation wording in small Companion profiles 2026-10-28 04:44:06 -07:00
mikecarper 8a51a54fd7 Use concise validation replies in constrained Companion builds 2026-10-28 04:22:07 -07:00
mikecarper cea654cb47 Use shorter CLI validation replies on the constrained Mini 2026-10-28 04:15:04 -07:00
mikecarper c778abceab Shorten Companion help descriptions while retaining every command 2026-10-28 03:52:08 -07:00
mikecarper f0bcb10ff0 Handle USB mode queries in the existing getter paths 2026-10-28 03:21:36 -07:00
mikecarper 411144f69c Keep local Companion control parsing in a cold function 2026-10-28 03:15:49 -07:00
mikecarper 3385f2acaa Avoid repeated channel alias parsing in constrained companions 2026-10-28 03:03:48 -07:00
mikecarper 4261889095 Recover constrained firmware flash and update USB dispatch fixtures 2026-10-28 02:51:56 -07:00
mikecarper dfef59331c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-28 02:33:24 -07:00
mikecarper b18ba8288a Report the running firmware USB mode without disturbing logging 2026-10-28 02:14:11 -07:00
mikecarper 0c7dec9f19 Add an hourly emergency battery sleep schedule for infrastructure nodes 2026-10-28 02:06:58 -07:00
mikecarper 744692fb93 Configure MediaMesh radio2 presets when joining Companion channels 2026-10-28 00:05:10 -07:00
mikecarper 1e22f6326d Fix Cardputer history, notifications and hardware lifecycle 2026-10-27 23:45:06 -07:00
mikecarper 9a2211e85a Fix Cardputer delivery, live settings and power management
Keep selected chats bound to full contact keys and route keyboard channel sends through the active transport. Deliver accepted plain, room and Meshtext messages to local history and notifications once; disarm rejected sends and retries.

Use shared live radio settings, GPS acquisition and power-saving policy, screen timers and red night palette. Report save failures, preserve verified custom preferences, and guard display controls and shutdown.

Add executable sanitizer regressions for routing, retries, selection, storage faults, UI lifecycle and GPS. Both Companion builds and the shared T-Deck regression pass; no physical Cardputer testing performed.
2026-10-27 22:59:26 -07:00
mikecarper 64a068506b Merge PR #26: add M5Stack Cardputer-Adv support
Integrate mjgodat's keyboard/display Companion, USB Companion, Repeater and
Room Server support for Cardputer-Adv with Cap LoRa-1262.

Fix UI retry dispatch and ACK ownership, packet/storage bounds, numeric
input validation, sparse channel selection, optional-display shutdown,
keyboard layout limits, reserved GPIOs and Windows cross-drive includes.
Retain all 350 contacts and queue capacity using the existing contact cache;
account for the custom UI's runtime allocations in the RAM admission gate.
Carry the MultiMote and DejaVu notices with firmware packages and add CI
coverage for all four board roles plus the shared T-Deck Companion.

Validation: all four Cardputer roles and the T-Deck BLE Companion build;
Cardputer sanitizer, UI, layout, ownership, licensing and storage tests;
65 RAM-policy tests and 14 contact-cache tests. PlatformIO ran serially.

PR: https://github.com/mikecarper/MeshCore/pull/26
2026-10-27 22:25:35 -07:00
mikecarper 80bfa754d1 Keep the continuous logging help entry within USB output bounds 2026-10-27 18:50:28 -07:00
mikecarper 05679aa741 Add a saved override to keep USB packet logging continuous 2026-10-27 18:47:05 -07:00
mikecarper b3df8bfd3f Quiet USB packet logs for five minutes after console commands 2026-10-27 18:19:19 -07:00
mjgodatandClaude Opus 5.5 5681898ad4 Add M5Stack Cardputer-Adv variant with keyboard/display companion UI
New variant variants/m5stack_cardputer_adv for the Cardputer-Adv
(ESP32-S3, 8 MB) with the Cap LoRa-1262 (SX1262 + GNSS):

- Envs: companion_radio_ble, companion_radio_usb, repeater, room_server.
- Board: enables the Cap's antenna path via the PI4IOE5V6408 on the
  internal I2C bus (Wire1, G8/G9); Wire stays on the Grove port. LoRa and
  microSD share FSPI because the display owns SPI3. TCXO 1.8 V.
- Companion UI adapted from MultiMote/meshcore-cardputer-adv (MIT,
  LICENSE.MultiMote), running on the standard companion so the USB
  terminal CLI stays available. Contacts/identity stay in internal
  SPIFFS; the microSD card is optional (chat history, keyboard layouts).
- Sticky Shift, one-shot Fn with Fn+letter shortcuts, top button (G0)
  sends a flood advert, brightness control.
- Text size setting (Normal/Large/Extra large) with DejaVu Sans fonts
  generated by tools/gen_vlw_font.py; layouts derive from the font size.
- Power save maps to the companion's powersaving pref; the UI vetoes
  light sleep while the screen is on. Low-battery power-off at 3.4 V.
- win_long_cmdline.py: Windows-only -iprefix include shortening so the
  ESP32 compile command stays under the 32,767-character limit.

Shared companion changes are guarded by CARDPUTER_ADV_UI: main.cpp
selects CardputerDataStore/CardputerUITask/CardputerMesh, and MyMesh.h
maps the_mesh to the subclass like the PSRAM storage path does.

Tested on hardware (910.525 MHz mesh): radio RX/TX, USB CLI, BLE, UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:24:43 -07:00
mikecarper eab29a12cd Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-27 14:11:07 -07:00
mikecarper 6ac2ec357a Let a new trace replace the previous attempt on its connection 2026-10-27 14:08:50 -07:00
mikecarper 61b584f946 Extend PSRAM offload to supported ESP32 boards after startup 2026-10-27 14:06:32 -07:00
mikecarper 2a6d59474d Report saved Bluetooth PIN settings to Companion apps 2026-10-27 13:50:40 -07:00
mikecarper 74c03cb30f Move G3 repeater policy tables and MQTT WebSocket buffers to PSRAM 2026-10-27 13:14:28 -07:00
mikecarper c650278fa7 Share constrained STM32 code while preserving firmware features
Omit unbound forwarding-region callbacks only for exclusive Companion source roles. Reuse the compact neighbor sorter in repeaters for every RPC order and the CLI list, removing duplicate sort implementations while preserving storage and size gates.
2026-10-27 08:17:23 -07:00
mikecarper cfcfc832b1 Keep Full C3 Companion queues within the DRAM budget
Place 32 existing retained frames in RTC FAST without changing the 224 normal or 128 active-OTA queue capacities. Keep the default backing layout unchanged for other boards and cover ownership, wraparound and OTA transfers.
2026-10-27 08:17:23 -07:00
mikecarper 2be068cafa Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 23:41:20 -07:00
mikecarper 7d413a6806 Fit direct OTA administration into RAK4631 Full 2026-10-26 23:41:20 -07:00
mikecarper cf0628d3db Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 22:15:37 -07:00
mikecarper 71e42b2e62 Manage MediaMesh forwarding region with saved radio2 profiles 2026-10-26 22:15:37 -07:00
mikecarper b0b18eaa22 Keep Wireless Paper terminal input in unused RTC memory 2026-10-26 21:55:27 -07:00
mikecarper d64a4ef234 Preserve unread messages when the OTA wizard borrows queue space 2026-10-26 21:45:18 -07:00
mikecarper dedae3d5ca Keep OTA replies separate from Companion messages and contacts 2026-10-26 21:36:06 -07:00
mikecarper 0a3a72984a Keep direct OTA support within each Companion's flash budget 2026-10-26 20:17:54 -07:00
mikecarper c313658b88 Wait for the radio from the repeater's own loop 2026-10-26 19:46:05 -07:00
mikecarper 435c740e5a Let USB repeaters and Full Companions manage direct OTA updates 2026-10-26 19:46:05 -07:00
mikecarper 1aef6de288 Reserve USB KISS framing before normal parsers consume it 2026-10-26 17:49:20 -07:00
mikecarper ff51126508 Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-26 17:42:58 -07:00
mikecarper 27adc606c8 Ignore unsupported RXPS when applying radio parameters 2026-10-26 17:26:53 -07:00
mikecarper 264a5a8b34 Preserve KISS ownership and wait for initial radio2 readiness 2026-10-26 17:23:38 -07:00
mikecarper d836e661ba Fix Nordic KISS header and RX activity test fixture bindings 2026-10-26 17:04:47 -07:00
mikecarper cb3c92a8da Add saved raw radio2 KISS host sessions to Full firmware 2026-10-26 16:57:49 -07:00
mikecarper 8a8c80ee6a Unblock LR2021 retunes and add saved crystal calibration
Repeated preamble/header activity can keep a requested primary or TempRadio
change busy indefinitely. Bound unfinished-RX admission for accepted LR2021
changes while preserving completed packets, TX, BUSY and exclusive owners.
Ordinary scans and CAD keep their existing admission rules. Expose the failing
stage and native status through get radio.apply.

Add saved radio.xtrim capacitor calibration and measured radio.freqerror in
signed Hz from the last valid LoRa packet. Preserve native trim by default,
restore explicit calibration after resets/Morse, verify saves before applying,
wait two seconds for the acknowledgement, and roll back failed changes.

Calibration motivation and prior upstream work:
https://github.com/meshcore-dev/MeshCore/issues/3365
https://github.com/recrof/MeshCore/tree/lr2021-trim
Packet-status format follows Semtech's LR20xx driver and RadioLib staging.

Tests execute production activity/admission and transaction paths with noisy
RX, completion races, protected owners, failed setters, RX restart and save
rollback. Physical W12 retuning and RF calibration still require confirmation.
2026-10-26 15:55:36 -07:00