feat(crowpanel-35): add Elecrow CrowPanel 3.5" (ESP32-S3, ILI9488 + GT911) touch target

- New crowpanel_35 variant: display, SD, board and target files, plus board JSON
- Portrait mode is drawn rotated 180°; landscape stays at rotation 3
- Share the GT911 touch driver between Wio Tracker L2 and CrowPanel
  (WioTrackerL2Touch.cpp -> src/helpers/input/LgfxGt911Touch.cpp)
- platformio envs, flasher/site entries, release and merge-bin support
- Tests for the CrowPanel SD codec and merge-bin

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132MkJ7RUV32mV9F7o4PJMm
This commit is contained in:
Michael A. CojocariandClaude Opus 5.5 committed 2026-10-02 20:16:06 -04:00
1 parent f7402e628c
commit dbecef0b6f
29 files changed
+1461 -118

No files matched your search

+5
View File
@@ -14,6 +14,7 @@ HELTEC_ENV="heltec_v4_tft_companion_radio_usb_tcp_touch"
HELTEC_R8_ENV="heltec_v4_r8_tft_companion_radio_usb_tcp_touch"
ATTAKY_ENV="attaky_mesh_series_companion_radio_touch"
WIO_ENV="wio_tracker_l2_companion_radio_touch"
CROWPANEL_ENV="crowpanel_35_companion_radio_touch"
PAGER_LR1121_ENV="tlora_pager_lr1121_companion_radio_touch"
PAGER_SX1262_ENV="tlora_pager_sx1262_companion_radio_touch"
M9_ENV="ThinkNode_M9_companion_radio_touch"
@@ -92,6 +93,7 @@ env_label() {
"$HELTEC_R8_ENV") echo "Heltec V4-R8" ;;
"$ATTAKY_ENV") echo "Attaky Mesh Series" ;;
"$WIO_ENV") echo "Seeed Wio Tracker L2" ;;
"$CROWPANEL_ENV") echo "Elecrow CrowPanel Advance 3.5" ;;
"$PAGER_LR1121_ENV") echo "LilyGo T-LoRa Pager LR1121" ;;
"$PAGER_SX1262_ENV") echo "LilyGo T-LoRa Pager SX1262" ;;
"$M9_ENV") echo "ThinkNode M9" ;;
@@ -117,6 +119,7 @@ Devices:
--heltec-r8 Heltec V4-R8
--attaky Attaky Mesh Series
--wio Seeed Wio Tracker L2
--crowpanel-35 Elecrow CrowPanel Advance 3.5
--pager-lr1121 LilyGo T-LoRa Pager LR1121
--pager-sx1262 LilyGo T-LoRa Pager SX1262
--m9 ThinkNode M9
@@ -167,6 +170,7 @@ prompt_for_device() {
"$HELTEC_R8_ENV"
"$ATTAKY_ENV"
"$WIO_ENV"
"$CROWPANEL_ENV"
"$PAGER_LR1121_ENV"
"$PAGER_SX1262_ENV"
"$RAK_ENV"
@@ -245,6 +249,7 @@ while [ $# -gt 0 ]; do
--heltec-r8) select_env "$HELTEC_R8_ENV" ;;
--attaky) select_env "$ATTAKY_ENV" ;;
--wio) select_env "$WIO_ENV" ;;
--crowpanel-35) select_env "$CROWPANEL_ENV" ;;
--pager-lr1121) select_env "$PAGER_LR1121_ENV" ;;
--pager-sx1262) select_env "$PAGER_SX1262_ENV" ;;
--m9) select_env "$M9_ENV" ;;
+1
View File
@@ -44,6 +44,7 @@ BOARDS = {
"manifest-tlora-pager-sx1262.json": ("wadamesh - LilyGo T-LoRa Pager (SX1262)", "wadamesh-tlora-pager-sx1262-merged.bin", "ESP32-S3"),
"manifest-attaky.json": ("wadamesh - Attaky Core (experimental)", "wadamesh-attaky-merged.bin", "ESP32-S3"),
"manifest-wio-tracker-l2.json": ("wadamesh - Seeed Wio Tracker L2 (experimental)", "wadamesh-wio-tracker-l2-merged.bin", "ESP32-S3"),
"manifest-crowpanel-35.json": ("wadamesh - Elecrow CrowPanel Advance 3.5 (experimental)", "wadamesh-crowpanel-35-merged.bin", "ESP32-S3"),
"manifest-tdeck-pro-v1-0.json": ("wadamesh - LilyGo T-Deck Pro V1.0 (experimental)", "wadamesh-tdeck-pro-v1-0-merged.bin", "ESP32-S3"),
"manifest-tdeck-pro-v1-1.json": ("wadamesh - LilyGo T-Deck Pro V1.1 (experimental)", "wadamesh-tdeck-pro-v1-1-merged.bin", "ESP32-S3"),
"manifest-tdeck-max.json": ("wadamesh - LilyGo T-Deck Max (experimental)", "wadamesh-tdeck-max-merged.bin", "ESP32-S3"),
+2 -2
View File
@@ -29,7 +29,7 @@ DEST="${WADAMESH_VPS:-}"; DEST_PATH="${WADAMESH_VPS_PATH:-/srv/wadamesh/firmware
# env:binname pairs — plain string form (works on macOS's bash 3.2; no associative arrays).
# All S3/PIO boards. The T-Display P4 is an ESP32-P4 IDF build (tdisplay_p4/) handled OUT of band
# — see the release skill / the P4 build+merge step — because this loop is PlatformIO-only.
ENVS="heltec_v4_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-tft LilyGo_TDeck_companion_radio_touch:wadamesh-tdeck ThinkNode_M9_companion_radio_touch:wadamesh-thinknode-m9 rak_tap_v2_companion_radio_touch:wadamesh-rak-tap-v2 heltec_v4_r8_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-r8-tft tlora_pager_lr1121_companion_radio_touch:wadamesh-tlora-pager-lr1121 tlora_pager_sx1262_companion_radio_touch:wadamesh-tlora-pager-sx1262 attaky_mesh_series_companion_radio_touch:wadamesh-attaky wio_tracker_l2_companion_radio_touch:wadamesh-wio-tracker-l2 LilyGo_TDeck_Pro_v1_0_companion_radio_touch:wadamesh-tdeck-pro-v1-0 LilyGo_TDeck_Pro_v1_1_companion_radio_touch:wadamesh-tdeck-pro-v1-1 LilyGo_TDeck_Max_companion_radio_touch:wadamesh-tdeck-max"
ENVS="heltec_v4_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-tft LilyGo_TDeck_companion_radio_touch:wadamesh-tdeck ThinkNode_M9_companion_radio_touch:wadamesh-thinknode-m9 rak_tap_v2_companion_radio_touch:wadamesh-rak-tap-v2 heltec_v4_r8_tft_companion_radio_usb_tcp_touch:wadamesh-heltec-v4-r8-tft tlora_pager_lr1121_companion_radio_touch:wadamesh-tlora-pager-lr1121 tlora_pager_sx1262_companion_radio_touch:wadamesh-tlora-pager-sx1262 attaky_mesh_series_companion_radio_touch:wadamesh-attaky wio_tracker_l2_companion_radio_touch:wadamesh-wio-tracker-l2 crowpanel_35_companion_radio_touch:wadamesh-crowpanel-35 LilyGo_TDeck_Pro_v1_0_companion_radio_touch:wadamesh-tdeck-pro-v1-0 LilyGo_TDeck_Pro_v1_1_companion_radio_touch:wadamesh-tdeck-pro-v1-1 LilyGo_TDeck_Max_companion_radio_touch:wadamesh-tdeck-max"
# Per-channel destination paths.
if [ "$MODE" = "stable" ]; then
@@ -53,7 +53,7 @@ fi
mkdir -p "$ARCH/$TAG" "$FEED"
if [ "$MODE" = "beta" ]; then
# 2b. TEST build: compile both boards (tag + version embedded) into the beta archive + feed.
# 2b. TEST build: compile all PlatformIO boards (tag + version embedded) into the beta archive + feed.
# Firmware data (About screen + the app's device info) is derived here, never
# hand-maintained: the tag, the core version actually pinned in platformio.ini,
# and today's build date. Every staged binary is verified to carry them below —