mirror of
https://github.com/meshtastic/firmware.git
synced 2026-09-16 08:30:04 -04:00
* feat(t-connect-pro): add LilyGo T-Connect-Pro variant ESP32-S3R8, 16MB flash, 8MB octal PSRAM. SX1262 LoRa, 480x222 ST7796 LCD with CST226SE touch, W5500 ethernet and a 10A relay on EXT_NOTIFY_OUT. LoRa, display and ethernet share one SPI bus (SCK 12 / MISO 13 / MOSI 11), so every peripheral stays on SPI2_HOST. board_level is extra and HW_VENDOR falls through to PRIVATE_HW until a HardwareModel enum value is allocated. * fix(w5500): serialize shared-bus SPI access with spiLock Arduino's ETHClass reaches SPI through SPIClass, whose mutex is invisible to LovyanGFX. On a board where both share a bus the MAC reads glitched frame headers, and the resulting ESP_LOGE flood blocks the W5500 RX task on the console UART until the task watchdog reboots the device. SharedBusEthernet installs esp_eth directly so its custom_spi_driver callbacks can take spiLock, the mutex the radio, display, SD and sensors already share. It derives from NetworkInterface, so localIP(), connected(), config() and the GOT_IP events are unchanged. Selected by ETH_SHARED_SPI; boards without it keep the stock ETHClass path. Measured on T-Connect-Pro under a 150 x 1472 byte flood with the display active: 34948 truncated frames, 3 reboots and 20% packet loss before, none after. * fix(cst226se): honour reset pin, screen rotation and skip wrong-model probes Drive TOUCH_RST when the variant defines one, and stop passing I2C pins to begin() so SensorLib does not re-init a bus the scan already owns. Derive touch geometry from SCREEN_ROTATE the way TFTDisplay does, so a rotated panel maps to the landscape UI rather than the raw panel size. Use TouchDrvCST226 rather than the TouchDrvCSTXXX wrapper. Pinning the model does not stop the wrapper walking CST816 and CST92xx, whose retries cost about 3.5s of boot. T-Beam behaviour is unchanged. * style: trim comments to the two-line limit Follows the comment rule in .github/copilot-instructions.md, which the original commits missed. * feat(t-connect-pro): use the T_CONNECT_PRO hardware model Depends on meshtastic/protobufs#1062. Does not build until that merges and the generated headers are synced, since meshtastic_HardwareModel_T_CONNECT_PRO does not exist yet. Drops -D PRIVATE_HW, which becomes a no-op once HW_VENDOR resolves, and promotes board_level to release. * chore(t-connect-pro): mark as community supported Support level 3, matching the other unlicensed LilyGo boards. * fix(w5500): roll back partial init when begin() fails begin() returns early when ethHandle is set, so a failure after esp_eth_driver_install() left the handle populated and every later call returned true with no working driver. teardown() releases the event handler, netif glue, netif, driver, PHY and MAC in reverse creation order, and every failure path now uses it. * refactor(w5500): drop config the custom SPI driver never reads spi_devcfg and spi_host_id are only read by w5500_spi_init, which esp_eth skips when custom_spi_driver is set, so the device config fields were dead. Also drops the handle() accessor, its only caller is the class's own event handler, the eventRegistered flag, since unregistering an unregistered handler is safe, the redundant _esp_netif guard around destroyNetif(), and the TFT_CS indirection, which this panel path does not read. * fix(w5500): fail begin() when the event handler cannot register The return value was ignored, so a failed registration still started Ethernet and returned true while onEthEvent never fired. WiFiAPClient would then miss ETH_CONNECTED, GOT_IP and DISCONNECTED, leaving the link up with the firmware believing it was down.
41 lines
1.0 KiB
JSON
41 lines
1.0 KiB
JSON
{
|
|
"build": {
|
|
"arduino": {
|
|
"ldscript": "esp32s3_out.ld",
|
|
"memory_type": "qio_opi"
|
|
},
|
|
"core": "esp32",
|
|
"extra_flags": [
|
|
"-D BOARD_HAS_PSRAM",
|
|
"-D ARDUINO_USB_CDC_ON_BOOT=1",
|
|
"-D ARDUINO_USB_MODE=1",
|
|
"-D ARDUINO_RUNNING_CORE=1",
|
|
"-D ARDUINO_EVENT_RUNNING_CORE=1"
|
|
],
|
|
"f_cpu": "240000000L",
|
|
"f_flash": "80000000L",
|
|
"flash_mode": "qio",
|
|
"psram_type": "opi",
|
|
"hwids": [["0x303A", "0x1001"]],
|
|
"mcu": "esp32s3",
|
|
"variant": "esp32s3"
|
|
},
|
|
"connectivity": ["wifi", "bluetooth", "ethernet", "lora"],
|
|
"debug": {
|
|
"default_tool": "esp-builtin",
|
|
"onboard_tools": ["esp-builtin"],
|
|
"openocd_target": "esp32s3.cfg"
|
|
},
|
|
"frameworks": ["arduino", "espidf"],
|
|
"name": "LilyGo T-Connect-Pro (16 MB FLASH, 8 MB PSRAM)",
|
|
"upload": {
|
|
"flash_size": "16MB",
|
|
"maximum_ram_size": 327680,
|
|
"maximum_size": 16777216,
|
|
"require_upload_port": true,
|
|
"speed": 921600
|
|
},
|
|
"url": "https://lilygo.cc/products/t-connect-pro",
|
|
"vendor": "LilyGo"
|
|
}
|