58494cd0a7
Move ftpSrv.handleFTP() from Arduino loop() into a dedicated FreeRTOS task pinned to core 0, leaving core 1 free for LVGL display updates. FTP callbacks now only set volatile flags (ftp_ui_dirty, ftp_sd_dirty) which the main loop polls to safely update UI and NeoPixel from core 1. This eliminates the 20-second PASV data connection timeouts caused by handleFTP() competing with display.update() for CPU time. Also fix pre-existing BLACK constant build error in display_manager.cpp.
KodeDotBSP
Board Support Package for Kode Dot: display bring-up (Arduino_GFX), LVGL integration and capacitive touch.
Usage
Include the public headers with the kodedot/ prefix:
#include <kodedot/display_manager.h>
#include <kodedot/pin_config.h>
Initialize once in setup() and update in loop():
DisplayManager display;
void setup() {
Serial.begin(115200);
if (!display.init()) {
while (1) delay(1000);
}
}
void loop() {
display.update();
delay(5);
}
pin_config.h exposes board pins and constants for the Kode Dot.
Notes
- Prefers PSRAM for LVGL draw buffers; falls back to internal SRAM.
- Registers LVGL display and input drivers.
- Provides simple brightness and touch helpers.