Keep the HTTP session alive between weather polls (TODO #1). Re-creating the client each time forced a fresh TLS handshake inside the window where the UI is frozen. Measured on hardware: the fetch went from ~1.3s to ~80ms, so the pause is no longer long enough to matter once thermostat controls exist. The timeout drops from 30s to 10s once a session is warm, since only a cold handshake needs the longer budget. Any transport error or non-200 tears the session down so a half-open connection cannot poison every later poll. The response buffer is now reset per request rather than on HTTP_EVENT_ON_CONNECTED -- a kept-alive connection does not re-fire that event, so the buffer would have accumulated across polls. Indicate stale readings (TODO #2). After two consecutive failures the temperature dims and the status line shows the age. Age comes from tick counts, not weather_data_t.last_update: there is no SNTP client here, so time(NULL) starts at the epoch and any age derived from it is meaningless. Gate the touch readout behind UI_DEBUG_TOUCH, default off (TODO #3). Kept the note about LVGL not bubbling events to parents -- it documents a real trap. Delete main/utils (TODO #4); it had no callers outside itself. Also refreshed project_structure.txt, which was additionally missing i2c_bus and backlight. Lay out two 4MB OTA slots (TODO #5) while no devices are fielded, and document in the README that an OTA download cannot run while the panel is scanning -- the flash write faults the bounce-buffer ISR. Log the truncation warning once per response instead of once per chunk, and record the weather task's stack high-water mark (TODO #6): ~2400 bytes spare of 6144. Co-Authored-By: Claude <noreply@anthropic.com>
33 lines
673 B
CMake
33 lines
673 B
CMake
idf_component_register(
|
|
SRCS
|
|
"main.c"
|
|
"wifi/wifi_manager.c"
|
|
"drivers/i2c_bus.c"
|
|
"drivers/backlight/backlight.c"
|
|
"drivers/display/display_rgb.c"
|
|
"drivers/touch/touch_gt911.c"
|
|
"ui/lvgl_port.c"
|
|
"ui/ui_manager.c"
|
|
"api/ambient_weather.c"
|
|
INCLUDE_DIRS
|
|
"."
|
|
"wifi"
|
|
"drivers"
|
|
"drivers/backlight"
|
|
"drivers/display"
|
|
"drivers/touch"
|
|
"ui"
|
|
"api"
|
|
REQUIRES
|
|
lvgl
|
|
esp_wifi
|
|
esp_http_client
|
|
esp-tls
|
|
json
|
|
esp_driver_i2c
|
|
esp_driver_gpio
|
|
esp_lcd
|
|
esp_timer
|
|
nvs_flash
|
|
)
|