Commit Graph
1809 Commits
Author SHA1 Message Date
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 c2ae465ece Use one LTO partition for the constrained Mini image 2026-10-28 03:35:52 -07:00
mikecarper 8fdad47b27 Keep Mini single-use helpers out of line and align native fixtures 2026-10-28 03:26:36 -07:00
mikecarper eb7c307583 Register Mini literal reply sharing before source compilation 2026-10-28 02:57:28 -07:00
mikecarper f4f9453248 Suspend the RAK3401 amplifier during emergency sleep 2026-10-28 02:12:04 -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
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 ff1ccacb2a Support LR1121 RX duty-cycle power saving 2026-10-27 14:34:55 -07:00
mikecarper 308fec1162 Keep only local OTA target names in reduced RAK builds 2026-10-27 10:45:24 -07:00
mikecarper 7d413a6806 Fit direct OTA administration into RAK4631 Full 2026-10-26 23:41:20 -07:00
mikecarper b00d346df7 Unify Heltec V4 OLED, TFT and headless display selection
Detect OLED or the original stock TFT touch assembly in ordinary V4.2/V4.3
images. Add saved live display.type auto/oled/tft/off selection and report
the active selection in board output. Keep sensors on primary I2C, preserve
shared power, and isolate TFT FSPI from radio HSPI through sleep and changes.

Consolidate future picker/build choices only with application capability
proof. Retain exact legacy OTA identities and separate R8 hardware images.
Document controls and physical qualification limits.

Validation: five serialized Full builds with capability/size/RAM checks;
focused host tests, existing R8/T-Deck/OLED regressions, build-profile suite,
and picker/provider tests. V4.3 OLED live changes and off/auto reboot
persistence passed on Mercerwood. Physical TFT qualification remains pending.
2026-10-26 15:19:17 -07:00
mikecarper b0c49a4cc3 Fit STM32 release images and repair stale CI fixtures
Fix the STM32 flash overflows and fleet fixture compile failure from
https://github.com/mikecarper/MeshCore/actions/runs/40241742182.

Fold already-unsupported RX control paths only for the integrated STM32WL
wrapper. Preserve RXPS-off validation, persistence, pending application and
rollback. External radios retain their supported controls.

Use measured GCC 14 code sharing in the four small STM32 USB Companion
recipes. Keep firmware features, contact/channel capacities, filesystem
boundaries and flash/RAM admission checks unchanged.

Refresh downstream host fixtures for saved radio intent, deferred service
restarts, WebConfig ownership, RX recovery and color tint state. Retain or
strengthen behavior checks rather than skipping failing coverage.

Validation: canonical RAK3x72, Wio Mini, Wio Dev and Tiny Relay USB Companion
packages and Mini Repeater build passed at release-version length. All
post-failure host checks, compact arithmetic/float checks, build-profile and
real PlatformIO recipe/path/RAM-policy checks passed locally.
2026-10-25 22:00:24 -07:00
mikecarper ad34fd3a0d Integrate W12 RF switching and LR2021 receive PRs
Adapt upstream MeshCore #3579 at 7457cff43c22697119e06ad7d192a37de0990403:
retain GC1109 LF standby bias, with checked cold controls before band supply
changes and shutdown. Preserve exclusive LF/HF rails and TX error cleanup.
Reset before boot rail changes and before SPI-dependent hard recovery.

Retain our stronger implementation of #3512 at
d208bfef94ab83280de30ba4a0675ff73b3ecef3. Add regressions for suspect FIFO
contents, failed RX_DONE acknowledgement, and fresh preamble timing.
W12 TX power defaults from #3319 were already included via 65aa1138a.

Validation: 79 targeted native tests; canonical W12 Full repeater and Full
Companion builds, capability checks, app-size and RAM checks passed.
Physical W12 RF envelope, current and LoRa management confirmation remain.

Upstream PRs:
https://github.com/meshcore-dev/MeshCore/pull/3579
https://github.com/meshcore-dev/MeshCore/pull/3512
https://github.com/meshcore-dev/MeshCore/pull/3319
2026-10-25 15:46:18 -07:00
mikecarper fb73e3afac Add automatic red and black night mode for color screens
Default to one hour after sunset through sunrise, using fresh cached GPS or recent direct RF neighbor locations. Provide saved CLI and WebConfig controls with a small integer solar approximation and no additional framebuffer.
2026-10-25 14:41:14 -07:00
mikecarper 9b0e013f4b Merge PowerSaving-v18 into keymindCascade
Integrate the ESP32 power-saving core and RXPS recovery/status updates while preserving radio2, telemetry and saved settings.
2026-10-23 16:11:49 -07:00
mikecarper d6853f4521 Add saved 9 MHz alias for supported 8.889 MHz SPI clocks 2026-10-23 12:54:54 -07:00
mikecarper 61d024bc72 Add saved controls for radio switching acceleration 2026-10-23 10:41:26 -07:00
mikecarper 86ef1e890c Merge remote-tracking branch 'origin/keymindCascade' into keymindCascade 2026-10-23 10:05:38 -07:00
mikecarper fd47fe0b1a Merge upstream dev into keymindCascade
Bring in the new Companion WiFi profiles while preserving existing OLED detection, message queues and OTA safeguards. Include dynamic WiFi helpers consistently and refresh the affected test fixtures.
2026-10-23 09:57:14 -07:00
mikecarper 04c4fdb240 Expose Companion bootloader version and fence XIAO role-transition tests 2026-10-23 08:33:02 -07:00
mikecarper 61a536c686 Add gated Tag and MeshTower buffered SPIM1 qualification paths 2026-10-23 08:07:01 -07:00
mikecarper 1b9fcf2af5 Add gated XIAO nRF52 buffered SPIM2 qualification candidate 2026-10-23 07:55:07 -07:00
mikecarper 0bcc9e3e9e Isolate fast SPI reads with a bounded 8 to 16 to 8 MHz diagnostic 2026-10-23 03:34:14 -07:00
mikecarper 4e513b19d5 Hold unqualified nRF SPIM3 batching at prior release defaults 2026-10-23 03:10:07 -07:00
mikecarper c83d43e03c Add guarded nRF SPI startup diagnostic for private 16 MHz trials 2026-10-23 02:59:27 -07:00
mikecarper cb03417509 Keep unqualified SPIM3 workaround and clock settings out of release defaults 2026-10-23 02:48:57 -07:00
mikecarper 12b2a02f5b Guard RAK3401 SPI clock experiments and enable nRF SPIM3 DMA workaround 2026-10-23 02:19:44 -07:00
mikecarper 3892599300 Use buffered radio SPI and acknowledged RX reuse on direct-I/O boards 2026-10-23 01:55:23 -07:00
mikecarper b8b7880a48 Use 8 MHz buffered radio SPI on RAK3401 2026-10-23 01:39:08 -07:00
mikecarper 258b37dff5 Enable acknowledged RX retune caches for RAK3401 2026-10-23 01:28:20 -07:00
mikecarper 999796552a Batch RAK3401 radio SPI transfers at the existing clock 2026-10-23 01:16:49 -07:00
mikecarper 2d35a291fa Fix release size regressions and calibration test fixtures 2026-10-22 19:53:31 -07:00
mikecarper ab6412e73c Add persistent battery ADC calibration across boards
Add meter-reference calibration with saved ADC corrections, checked persistence and rollback. Preserve existing board coefficients and nRF52 voltage policy, and merge the Mini Repeater feature gates.

Validation: 69 focused tests, hosted documentation checks, and four firmware builds passed. Mini Repeater retains calibration and its existing filesystem with 376 flash bytes free; earlier Mini Sensor size failures remain documented.
2026-10-22 18:56:32 -07:00
mikecarper 94a3b7e568 Omit optional battery controls from Mini Repeater 2026-10-22 18:13:14 -07:00
mikecarper 3236164d21 Add SenseCAP Indicator LoRa repeater profiles 2026-10-22 12:42:15 -07:00
Kevin Le bdd1d9e652 Fixed missing BSEC library for RAK3401 2026-10-23 00:29:27 +07:00
mikecarper 1d4016f483 Fit Heltec V2 BLE with bounded contact caching 2026-10-22 08:18:26 -07:00
mikecarper 5d31a839c5 Add MeshPocket message board and worldwide map 2026-10-21 23:57:14 -07:00
mikecarper a3d77a9a76 Clean project references and separate optional bench tooling
Remove unrelated ecosystem comparisons and software citations while retaining hardware links, measured model names, and required license notices.

Preserve stock-peer runners and tests in a verified local validation package. Keep shared Companion USB transport in the firmware repository for the raw-radio sweep and OTA seeder, with focused CI coverage. Restore missing hosted documentation links.
2026-10-21 17:35:37 -07:00
mikecarper 9aa7974567 Enable SolarXiao Room Server power profiles and late-detection history 2026-10-21 17:02:01 -07:00
mikecarper 70b8db9388 Scope native SolarXiao power controls to qualified repeater targets 2026-10-21 15:32:23 -07:00
mikecarper 2dcc1caccb Add native SolarXiao MPPT and battery telemetry and controls 2026-10-21 15:25:53 -07:00
mikecarper e7141400d6 Fix SolarXiao INA260 discovery and carrier I2C pins 2026-10-21 14:26:07 -07:00
liamcottle 87c76a8b06 implement new auto detect display for sh1106 and ssd1306 2026-10-21 15:41:11 +13:00
Liam Cottle dec8ad6edc Merge pull request #3614 from amdoolittle/fix/heltec-v4-tft-wifi-enable
Fix: Added WiFi to TFT BLE version of Heltec V4
2026-10-21 13:59:37 +13:00
mikecarper d5a6df6283 Detect SSD1306 and SH1106 screens on RAK boards
Use repeated status reads at screen initialization and preserve SSD1306 for ambiguous responses. Share the existing framebuffer, drawing, rotation and power handling; use SH1106 page transfers when detected.

Enable this for RAK4631 and RAK3401, including WisMesh Pocket v2/v3. Add controller overrides, protocol tests and CI coverage. Addresses meshcore-dev/MeshCore#3296.
2026-10-20 09:43:25 -07:00
9d52b1fd68 Add saved LED controls across supported boards
Add get leds and set leds on|off for Companion, repeater, room server and
sensor builds. Preserve the setting across reboots and cover GPIO, RGB,
Bluetooth, notification and expander indicators without changing radio
amplifier controls or screen backlights.

RAK Companions blink while advertising and keep the Bluetooth LED off once
connected, including late timer callbacks.

Adapted from meshcore-dev/MeshCore#3605 and #2694.
Validated with host regressions and firmware builds for SenseCAP Solar,
RAK4631, T096, Heltec V4, T-Beam, Xiao S3, Pico W and Wio E5 Mini.

Co-authored-by: R0ck <develop@hectospark.co.uk>
Co-authored-by: Nick Dunklee <nick@dunklee.org>
2026-10-20 08:59:39 -07:00