Files
Confituurke c2d50b5430 feat(sensecap-indicator): ST7701S RGB panel on LovyanGFX
IndicatorDisplay drives the 480x480 ST7701S through LovyanGFX's Bus_RGB
and Panel_ST7701 on the stock core; the CrowPanel 5.0 drives its RGB
panel through the same Bus_RGB. The panel's CS and RESET sit on the TCA9535, so LovyanGFX
gets pin_cs/pin_rst = -1 and begin() drives them through IndicatorIo:
reset pulse, CS low, lcd.init(), CS high. The bus lock is held from CS
low to CS high because the panel's 3-wire init shares GPIO41/48 with
the radio SPI, and no other task may move the radio's NSS meanwhile.

The second init list is Meshtastic device-ui's Indicator list (GPL-3.0,
credited in NOTICE): MADCTL 0x10 and SDIR 0x04 in BK0 flip both axes,
and the closing 0xFF,0xFF terminator keeps the colours from coming up
inverted.

The pixel clock is INDICATOR_PCLK_HZ, 12 MHz by default. The RGB bus
reads its frame buffer out of PSRAM continuously and this core has no
bounce buffers, so PSRAM bandwidth under Wi-Fi and flash traffic sets
the limit, not the panel; 12 MHz leaves margin for that, and the value
is a build flag.

The backlight is Light_PWM on GPIO45, LEDC channel 7; brightness 0
writes duty 0, so it goes dark. begin() returns false with the
backlight off when lcd.init() or any expander write in the sequence
fails, since the panel may then have missed its reset or init. UITask
keeps driving the backlight through the global display even when
begin() failed, so setBrightness() and turnOn() do nothing until the
panel has come up; otherwise the first brightness or wake request
would light a blank panel.

UITask: a 480 px draw band in internal DMA RAM (with LVGL told its full
size), because the RGB panel scans its frame buffer out of PSRAM all
the time and an internal band makes the flush a single PSRAM write. The
resolution is 480x480 with no UI rotation, and the board shares the
Wio L2's brightness, screen-sleep and no-keyboard-rotate branches.

Signed-off-by: Confituurke <9595028+Confituurke@users.noreply.github.com>
2026-10-17 22:39:25 +02:00

118 lines
5.3 KiB
Plaintext

wadamesh
Copyright (c) 2026 Kaj Schittecat and the wadamesh contributors
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version. See the LICENSE file for the full text.
================================================================================
Third-party components and their licenses
================================================================================
wadamesh incorporates and/or depends on the components below. Their own licenses
are preserved and apply to those portions. MIT and Apache-2.0 are compatible with
GPL-3.0; the combined work is distributed under GPL-3.0-or-later.
MeshCore
Copyright (c) 2025 Scott Powell / rippleradios.com
MIT License — https://github.com/meshcore-dev/MeshCore
wadamesh derives its companion-radio application and core hooks from
MeshCore. The MeshCore-derived source files retain their MIT license
notices. The separate MeshCore fork that wadamesh builds against (the
Wi-Fi/BLE/UI hooks) is published under MIT, not GPL, so those hooks remain
upstreamable to MeshCore.
LVGL
Copyright (c) LVGL Kft and contributors
MIT License — https://lvgl.io
NimBLE-Arduino
Copyright (c) h2zero and contributors
Apache License 2.0 — https://github.com/h2zero/NimBLE-Arduino
CayenneLPP
Copyright (c) Electronic Cats
MIT License — https://github.com/ElectronicCats/CayenneLPP
RadioLib
Copyright (c) Jan Gromeš
MIT License — https://github.com/jgromes/RadioLib
Noto Color Emoji (emoji glyph artwork, baked to image data)
Copyright (c) Google, Inc.
SIL Open Font License 1.1 — https://github.com/googlefonts/noto-emoji
Used as bundled image data with attribution.
Touch UI bitmap fonts (generated LVGL font data)
Montserrat Project Authors and Noto Project Authors
SIL Open Font License 1.1 — see src/ui-touch/FONT_LICENSES.md
Generated reproducibly by scripts/build/gen-touch-fonts.sh from pinned,
hash-verified Montserrat and Noto font releases.
ed25519 (bundled in lib/ed25519)
Orson Peters / orlp — public domain (Creative Commons Zero / zlib)
https://github.com/orlp/ed25519
minimp3 (bundled in lib/minimp3)
lieff/minimp3 contributors — CC0 1.0 Universal
https://github.com/lieff/minimp3
Pinned at ea99364f61c14656440e8d77e9c233ccf3124633. The bundled header has
a small opt-in scratch-storage hook so the decoder workspace can live in
PSRAM; default upstream behavior is unchanged when that hook is not used.
AsyncElegantOTA (vendored in arch/esp32/AsyncElegantOTA)
Copyright (c) Ayush Sharma — MIT License
TFT_eSPI (T-LoRa Pager display backend)
Copyright (c) Bodmer — MIT / FreeBSD License — https://github.com/Bodmer/TFT_eSPI
Adafruit GFX / ST7735_ST7789 (T-Deck / Heltec V4 display backend)
Copyright (c) Adafruit Industries — BSD License
chsc6x (Heltec V4 CHSC6x cap-touch driver)
Quency-D — https://github.com/Quency-D/chsc6x
SensorLib (T-LoRa Pager XL9555/BQ27220/AW9364 drivers)
Copyright (c) Lewis He — MIT License — https://github.com/lewisxhe/SensorLib
ES8311 register sequence and clock-divider coefficients (T-LoRa Pager audio
codec driver, variants/lilygo_tlora_pager/Es8311Codec.cpp; T-Display P4 audio
driver, variants/tdisplay_p4/P4Audio.cpp)
Copyright (c) 2023-2026 Espressif Systems (Shanghai) CO LTD
Apache License 2.0 — https://github.com/espressif/esp-adf-libs and
https://github.com/espressif/esp-bsp (components/es8311)
wadamesh's drivers are original code (not copies of esp_codec_dev's
plugin/HAL architecture) but their ES8311 register addresses, startup/
power sequences, and MCLK clock-divider coefficients are derived from
Espressif's public es8311.c/es8311_reg.h; P4Audio.cpp additionally
re-bases the esp-bsp init flow onto Arduino Wire.
ST7701S panel init list (SenseCAP Indicator display driver,
variants/sensecap_indicator/IndicatorDisplay.cpp)
Copyright (c) Meshtastic
GPL-3.0 License — https://github.com/meshtastic/device-ui
The panel's second init command list (MADCTL vertical flip, SDIR
horizontal flip) is taken from Meshtastic device-ui's
include/graphics/LGFX/LGFX_INDICATOR.h (Panel_Indicator::getInitCommands).
The rest of the driver is original code on LovyanGFX's Panel_ST7701.
LovyanGFX (display backend: RAK WisMesh Tap V2, SenseCAP Indicator and others)
Copyright (c) lovyan03 — FreeBSD License — https://github.com/lovyan03/LovyanGFX
Camillia-MT (CrowPanel Advance 3.5 software-SPI microSD backend)
Copyright (c) 2025-2026 Michael A. Cojocari and contributors
GNU General Public License v3.0 or later
Adapted from src/sd_soft_spi.cpp; integrated with WadaMesh's filesystem
API and concurrent storage consumers.
Camillia-MT (CrowPanel Advance 5.0 display, backlight and touch bring-up)
Copyright (c) 2025-2026 Michael A. Cojocari and contributors
GNU General Public License v3.0 or later
The RGB panel configuration, revision detection, backlight controller and
GT911 reset in variants/crowpanel_50/CrowPanel50Display.cpp are adapted
from src/hal/crowpanel_50_display.h and src/hal/hw_crowpanel_50.h.
This list is not exhaustive and is expanded as dependencies are vendored or
added.