Files
wadamesh/tdisplay_p4/fetch-deps.sh
T
Kaj SchittecatandClaude Opus 4.8 2353c56adc p4: T-Display P4 port — web VNC/remote, time-sync hardening, brightness + sound
LilyGo T-Display P4 (ESP32-P4 + factory ESP-AT C6) reaches POC: LoRa mesh, Wi-Fi
companion (TCP:5000), GPS, SD, battery gauge, chat persistence, and now:

- Web VNC/REMOTE/terminal via a first-byte router on the single ESP-AT listener
  (HTTP verbs -> WS server, '<' frames -> phone companion; both live at once).
  C6Server gains a _begun gate so never-listening instances stay inert.
- VNC freeze fixed: bounded one-CIPSEND-chunk drains under the WS client mutex
  (a whole-band blocking write starved the main loop), fast-drop of stalled
  mirror clients, SEND-OK wait 8s->4s.
- Wi-Fi robustness: CWJAP? miss-streak tolerance, CIPSERVER liveness verify +
  re-arm (a re-association silently killed the listener until reboot).
- Time sync: HTTP-Date fallback when SNTP is blocked; ClockFloorRTC gains a
  MAX_PLAUSIBLE_EPOCH guard (all boards) after a garbage-future hardware RTC
  read (2043) latched the ratchet.
- Brightness: RM69A10 DCS 0x51 driven live (CC slider + persisted pref).
- Sound: ES8311 + NS4150B notification chimes (P4Audio, esp-bsp-derived
  register sequence on Wire1), full HAS_UI_SOUND surface + CC Screen/Sound
  sliders; ccVolumeReleaseCb's hardcoded tanBeep -> uiSoundPreview.
- tdisplay_p4/: IDF project (build.sh, c6_at AT-over-SDIO driver, sdkconfigs,
  fetch-deps.sh vendoring, .gitignore for local payloads).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 19:13:23 +02:00

62 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Populate tdisplay_p4/components/ with the vendored payloads a fresh clone needs, sourced
# from PlatformIO's already-resolved libdeps (same convention as tanmatsu/fetch-deps.sh —
# payloads are gitignored, the committed component wrappers are tracked). Run an S3 build
# first to populate libdeps:
# /Users/kaj/Library/Python/3.9/bin/pio run -e LilyGo_TDeck_companion_radio_touch
set -euo pipefail
cd "$(dirname "$0")"
LIBDEPS="../.pio/libdeps/LilyGo_TDeck_companion_radio_touch"
[ -d "$LIBDEPS/MeshCore" ] || { echo "!! $LIBDEPS/MeshCore missing — run an S3 'pio run' first"; exit 1; }
mkdir -p components
# --- MeshCore core: shared with the Tanmatsu — one vendored copy, symlinked here.
# Run tanmatsu/fetch-deps.sh first (or let it be run by this one) to materialize it.
[ -d ../tanmatsu/components/meshcore/core/src ] || ../tanmatsu/fetch-deps.sh
mkdir -p components/meshcore
[ -e components/meshcore/core ] || ln -s ../../../tanmatsu/components/meshcore/core components/meshcore/core
echo "linked: meshcore core -> tanmatsu's vendored copy"
# --- LVGL 8.4 (own component; big; uses the repo's include/lv_conf.h) ---
rm -rf components/lvgl/upstream
mkdir -p components/lvgl
cp -R "$LIBDEPS/lvgl" components/lvgl/upstream
echo "vendored: lvgl ($(find components/lvgl/upstream/src -name '*.c' | wc -l | tr -d ' ') c)"
# --- RadioLib: the P4 drives a RAW SX1262 through the core's RadioLib path (unlike the
# Tanmatsu's C6 LoRa bridge), so the resolved RadioLib is vendored as its own component. ---
rm -rf components/RadioLib/src components/RadioLib/library.properties components/RadioLib/license.txt
cp -R "$LIBDEPS/RadioLib/src" components/RadioLib/src
cp "$LIBDEPS/RadioLib/library.properties" components/RadioLib/library.properties
cp "$LIBDEPS/RadioLib/LICENSE" components/RadioLib/license.txt 2>/dev/null || \
cp "$LIBDEPS/RadioLib/license.txt" components/RadioLib/license.txt 2>/dev/null || true
echo "vendored: RadioLib $(grep -m1 '^version=' components/RadioLib/library.properties | cut -d= -f2)"
# --- Arduino libraries: ALL into ONE 'ardlibs' component (inter-library #includes resolve
# without per-lib REQUIRES). Same list as the Tanmatsu. ---
rm -rf components/ardlibs/upstream
mkdir -p components/ardlibs/upstream
vend() {
local src="$1"; local dst="${src// /_}"
[ -d "$LIBDEPS/$src" ] || { echo " skip ($src not in libdeps)"; return; }
cp -R "$LIBDEPS/$src" "components/ardlibs/upstream/$dst"
echo " + $src -> $dst"
}
vend "Crypto"
vend "RTClib"
vend "Adafruit BusIO"
vend "Adafruit Unified Sensor"
vend "Melopero RV3028"
vend "CayenneLPP"
vend "ArduinoJson"
vend "base64"
vend "MicroNMEA"
vend "AsyncTCP"
vend "ESPAsyncWebServer"
vend "AsyncElegantOTA"
touch components/meshcore/CMakeLists.txt components/ardlibs/CMakeLists.txt \
components/RadioLib/CMakeLists.txt components/wadamesh_app/CMakeLists.txt 2>/dev/null || true
echo "done."