Commit Graph
56 Commits
Author SHA1 Message Date
liu weikai de975f54a3 feat(gat562): wire nrf52 board runtime and bluetooth stack 2026-03-18 19:28:31 +08:00
vicliu d320b6511d Unify PlatformIO and ESP-IDF around a shared UI/runtime shellRefactor/repo structure (#11)
* Unify PlatformIO and ESP-IDF around a shared UI/runtime shell
2026-03-12 01:17:46 +08:00
liu weikai 76d83ef7bf feat(ble,ui): align mesh BLE flows and extract shared two-pane UI
- improve MeshCore BLE security, pairing, MTU handling and passkey popup behavior

- align Meshtastic ack, traceroute and MQTT proxy handling with companion expectations

- extract shared two-pane nav/layout/style components and migrate chat, contacts and settings

- simplify tracker and contacts list interaction, scrolling and visual consistency
2026-03-08 10:41:15 +08:00
vicliu e429db9797 Feature ble (#10)
* Implement TDeck touch-friendly home grid and power management updates

* Add initial M5Stack Tab5 ESP-IDF environment and board skeleton

* BLE/Meshtastic: apply config at runtime and fix Admin/Telemetry for app compatibility

Meshtastic Admin set_* immediate responses:
- After set_channel: respond with get_channel_response (echo applied channel).
- After set_config: respond with get_config_response for the config type that was set.
- After set_module_config: respond with get_module_config_response after saveModuleConfig().
- After store_ui_config: respond with get_ui_config_response.
This prevents the Meshtastic app from marking these operations as failed when the device applied config but did not send a reply.

DeviceMetrics and Telemetry:
- Add buildDeviceMetrics() in meshtastic_ble (battery from board, uptime_seconds from millis).
- Set has_device_metrics and device_metrics in buildSelfNodeInfo() so the app receives battery and uptime for the local node.
- Give Telemetry module config explicit defaults in loadModuleConfig() (device_update_interval, device_telemetry_enabled, etc.) so get_module_config returns a valid structure.

Apply config at runtime (so BLE-written config takes effect):
- Add AppContext::applyPositionConfig() to push gps_interval_ms and gps_mode to GpsService (setCollectionInterval, setGnssConfig). Call it from BLE set_config when position config is written.
- Add screen_sleep.h with getScreenSleepTimeout() / setScreenSleepTimeout() declarations (implemented in main.cpp). BLE display, device_ui, and store_ui_config now call setScreenSleepTimeout() instead of writing Preferences only, so the in-memory screen timeout updates immediately without reboot.
- Settings UI includes screen_sleep.h and uses the same API.

Other:
- BLE topbar asset and icon when BLE is enabled (ble_topbar.png/c, ui_status, LV_Helper).
- Node store: PersistedNodeEntry and INodeStore gain hw_model; mt_adapter and contact_service pass/store it for Meshtastic app compatibility.
- Variant env tweaks (tlora_pager, tdeck). Event bus and minor cleanups.

* feat: align Meshtastic BLE/iOS flow and add T-Deck keyboard support

- add BLE pairing popup and align more Meshtastic admin/status behavior with iOS expectations
- complete BLE MQTT client proxy bridge and persist OK-to-MQTT / ignore-MQTT channel settings
- add native T-Deck I2C keyboard input, backlight control, and SPACE-to-menu behavior
- fix chat bubble wrapping, contact removal sync, and pager wake/menu regressions

* fix: restore lilygo_twatch_s3 build

- remove duplicate M5Tab5Board isGPSReady declaration
- exclude M5Tab5Board.cpp from T-Watch S3 source filters to avoid duplicate board singletons
- verified with pio run -e lilygo_twatch_s3
2026-03-06 21:01:35 +08:00
liu weikai 6e71362cb7 Merge branch 'main' of github.com:vicliu624/trail-mate 2026-02-24 01:40:16 +08:00
liu weikai 3b7355fea7 Add boot splash screen and update assets 2026-02-24 01:39:10 +08:00
liu weikai 8c6fa6e10e fix(settings): persist mesh protocol switch across reboot 2026-02-23 21:41:04 +08:00
liu weikai a7c54419f3 HostLink: switch mesh backend at runtime and expose protocol context
Add a thread-safe mesh adapter router and route AppContext through it so MeshProtocol can switch backend adapters at runtime without stale state.\n\nWire CMD_SET_CONFIG MeshProtocol updates to runtime backend switching before persisting config, emit EV_STATUS immediately after HELLO handshake, and document protocol-aware decode guidance for HostLink clients.
2026-02-22 20:09:58 +08:00
liu weikai 78a89bfa7a chore(font): add compressed CJK bitmap font pipeline assets 2026-02-22 11:11:20 +08:00
liu weikai aff2787019 feat(settings): add system speaker volume control with tone preview 2026-02-22 11:09:15 +08:00
liu weikai 40fac02439 feat(audio): add protocol-agnostic message prompt tones for pager and tdeck 2026-02-22 10:20:05 +08:00
liu weikai bbd5b8c08c style: reformat sources with clang-format 14.0.6 2026-02-22 09:42:58 +08:00
liu weikai 6f126458d8 style: apply clang-format to satisfy CI format check 2026-02-22 09:37:41 +08:00
liu weikai c948461269 feat(mesh): align MeshCore behavior and unify discovery UX
- complete MeshCore protocol alignment work across chat/team/hostlink paths

- refactor Contacts Discover into a mode-based action list for consistent UI behavior

- add MeshCore identity/crypto persistence plumbing and related protocol handlers

- document Meshtastic + MeshCore dual-compatibility in README (EN/CN)
2026-02-22 09:33:38 +08:00
liu weikai f54fd44fb6 style: apply clang-format to energy sweep header 2026-02-21 11:04:51 +08:00
liu weikai a9e28c352a feat: add Energy Sweep app with region-based scan range 2026-02-21 10:57:17 +08:00
liu weikai 7a06f2152b hostlink: accept extended CMD_TX_APP_DATA layout 2026-02-19 00:32:41 +08:00
liu weikai 6a0895e7f2 Fix team location icon scaling and picker focus restore 2026-02-19 00:31:23 +08:00
liu weikai 91f665bc0d feat: finalize pending integration and UI/runtime stability updates
Apply remaining cross-module updates covering HostLink bridge handling, chat/contact storage and event-flow tuning, GPS/track recorder SPI coordination, and USB mode Wi-Fi behavior.

Complete UI refinements for contacts, team, GPS, and GNSS skyplot interactions, including T-Deck layout/input behavior improvements and related state plumbing.
2026-02-18 21:33:57 +08:00
liu weikai a0614ae690 fix(tdeck): enable touch input and reduce SD-induced UI stalls
Enable LVGL touchpad input for the T-Deck environment and wire GT911 touch initialization/point reading in TDeckBoard (with orientation mapping aligned to LilyGo reference behavior).

Improve runtime smoothness after SD insertion by raising T-Deck SD init SPI speed from 800kHz to 4MHz while keeping fallback retries, and reduce periodic SD pressure by caching Team UI snapshot reads in ui_status.

Also harden T-Deck board runtime behavior by enabling PMU battery measurement channels, adding ADC-based battery fallback/anti-drop guards, and tightening RTC readiness to require a sane epoch.
2026-02-18 20:18:27 +08:00
liu weikai 832a215e4a feat(team-hostlink): add semantic team location flow and HostLink CMD_TX_APP_DATA
This commit closes the PC-to-device app-data send path and wires team location semantics end to end across protocol, service, and UI.

HostLink protocol and runtime:

- Add CMD_TX_APP_DATA (0x15) frame type and CapTxAppData capability bit.

- Implement command parsing for portnum/to/channel/flags/payload and validate payload bounds.

- Add a pending command queue and process commands from AppContext::update() to keep IO task light and avoid direct service execution in the USB thread.

- Route Team app portnums (300..304) to TeamController send paths, including Team mgmt wire decoding and plain/encrypted mgmt selection via flags.

- Preserve generic mesh sendAppData fallback for non-Team app portnums.

- Update hostlink protocol docs with CMD_TX_APP_DATA payload, flags, and Team source mapping/compat notes.

Team service/controller send path:

- Extend TeamController and TeamService send APIs with dest and want_ack parameters for mgmt/chat/position/waypoint/track.

- Add explicit send error mapping for hostlink result reporting and improve last_send_error assignment on encode/encrypt/mesh failures.

UI and data model for semantic location markers:

- Add TeamLocationMarker icon enum helpers and integrate source->icon mapping in UI rendering.

- Update team chat compose Position action to open a marker picker dialog with icon choices and cancel flow.

- Encode selected marker in TeamChatLocation.source, auto-fill label, and send as TEAM_CHAT location payload.

- Extend ChatMessage model with team_location_icon and geo fields so conversation and map can render marker semantics.

- Show semantic icon in team conversation message bubble when location source is a known marker.

- Add GPS map overlay for recent semantic team location markers with member/time labels and lifecycle cleanup.

Assets and docs:

- Add LVGL image assets for AreaCleared/BaseCamp/GoodFind/Rally/SOS markers and source PNGs.

- Update TEAM/HostLink docs with source enum mapping and unknown-value fallback guidance for PC clients.

Other platform-specific input adjustment:

- Refine T-Deck LVGL encoder data reset path to avoid stale state interactions in the input callback.
2026-02-18 00:41:51 +08:00
liu weikai 368e75e730 fix(tdeck): make screen sleep actually turn off backlight
Implement a real TDeckBoard::setBrightness() path instead of only updating an in-memory value.

Code changes:

- Move setBrightness override in TDeckBoard.h from inline stub to cpp implementation.

- In TDeckBoard.cpp, persist brightness state, guard on display readiness, and drive DISP_BL pin HIGH/LOW so brightness=0 physically disables backlight.

- Keep LilyGoDispArduinoSPI brightness state in sync via LilyGoDispArduinoSPI::setBrightness(level).

- Refine trackball rotary handling to edge-based detection with lower debounce/repeat latency, and re-arm click on stable release to avoid sticky one-shot behavior.

Impact:

- Auto sleep in screenSleepTask now has visible effect on T-Deck because setBrightness(0) controls hardware backlight.

- Rotary input behavior remains responsive while reducing mixed-direction/sticky states.
2026-02-18 00:37:49 +08:00
liu weikai 3ddd75a620 fix(gps): keep manual pan until [P] position recenter 2026-02-17 12:19:46 +08:00
vicliu 4c16f765db map (#9)
* feat: maps
2026-02-17 11:40:19 +08:00
vicliu 3ed34fbbc6 Sstv (#8)
* feat: add SSTV docs and fix chat compose input
2026-02-12 16:23:01 +08:00
vicliu 27bc13c920 feat: sky plot (#7)
* feat: sky plot
2026-02-09 01:51:08 +08:00
vicliu b4a5055092 Feature aprs (#6)
* feat: PA adjust

* feat: topbar status icon

* fix: settings bug

* feat: unify UI theme and node info link stats

* Improve mesh handling, input back actions, and keyboard alt symbols

- add IRQ/NVS diagnostics for radio and persistence
- refresh link stats and adjust NodeInfo/Position reply handling
- handle Backspace to trigger page back actions
- make Alt act as symbol modifier and rename GPS menu to Map
* fix: hostlink
* style: format
2026-02-08 20:21:51 +08:00
liu weikai 727cffd380 Release 0.1.6-alpha 2026-02-06 17:21:51 +08:00
vicliu 0e3e7800f8 Feature walkie talkie (#5)
* feat: walkie talkie
2026-02-06 15:59:33 +08:00
liu weikai 5cba4d30e6 fix: tdeck 2026-02-05 19:24:10 +08:00
liu weikai cffab9e535 fix: team info 2026-02-05 18:05:14 +08:00
liu weikai f9cfc5a7c0 feat: usb host 2026-02-05 16:13:16 +08:00
liu weikai 7bd6a16f43 feat: route 2026-02-05 10:27:34 +08:00
liu weikai e57bc7b478 fix: ui flex error 2026-02-04 23:06:04 +08:00
liu weikai f8b6072c04 fix: ui flex error 2026-02-04 22:22:06 +08:00
liu weikai d9da762065 fix: ui flex error 2026-02-04 22:07:51 +08:00
liu weikai 56e879139f fix: tracker page crash 2026-02-04 21:45:08 +08:00
liu weikai 36007f5120 fix: tracker page 2026-02-04 20:50:59 +08:00
liu weikai 74a30c8df8 fix: tracker page 2026-02-04 20:31:02 +08:00
liu weikai e61f16abc7 fix: tracker page 2026-02-04 20:08:02 +08:00
liu weikai 4d5f3902b6 fix: route fix 2026-02-04 19:19:06 +08:00
liu weikai 03afe5fc88 fix: settings 2026-02-04 19:12:41 +08:00
liu weikai 45aa9fba54 fix: settings 2026-02-04 15:25:34 +08:00
liu weikai b9aec915f1 fix: settings 2026-02-04 15:09:17 +08:00
liu weikai 6fbcbce48c feat: team tracker 2026-02-04 11:06:53 +08:00
liu weikai b8b99db920 Fix GPX overlay sampling stability 2026-02-03 10:32:45 +08:00
liu weikai 4b68c2f565 chore: format codebase and update changelog 2026-02-02 15:04:17 +08:00
vicliu 4d941c5ca6 fix: ui (#4)
* feat: join team

* fix: ui
2026-02-02 03:46:17 +08:00
liu weikai 2a91fc3aec fix: error node id 2026-01-29 11:19:15 +08:00
vicliu 796fbcc0b9 New env t deck (#3)
* feat: support t-deck plus
2026-01-28 01:57:53 +08:00