Simplify LVGL init: move code into Tactility (#208)
The esp_lvgl_port code was duplicated across all boards, so I moved it into the Tactility subproject to simplify the board implementations.
This commit is contained in:
committed by
GitHub
parent
c1f55429b6
commit
8ccba15c25
@@ -0,0 +1,38 @@
|
||||
#ifdef ESP_PLATFORM
|
||||
|
||||
#include <Tactility/lvgl/LvglSync.h>
|
||||
#include <esp_lvgl_port.h>
|
||||
#include <Tactility/Mutex.h>
|
||||
|
||||
// LVGL
|
||||
// The minimum task stack seems to be about 3500, but that crashes the wifi app in some scenarios
|
||||
// At 8192, it sometimes crashes when wifi-auto enables and is busy connecting and then you open WifiManage
|
||||
#define TDECK_LVGL_TASK_STACK_DEPTH 9216
|
||||
#define TAG "lvgl"
|
||||
|
||||
namespace tt::lvgl {
|
||||
|
||||
bool initEspLvglPort() {
|
||||
TT_LOG_D(TAG, "Port init");
|
||||
static lv_disp_t* display = nullptr;
|
||||
const lvgl_port_cfg_t lvgl_cfg = {
|
||||
.task_priority = static_cast<UBaseType_t>(tt::THREAD_PRIORITY_RENDER),
|
||||
.task_stack = TDECK_LVGL_TASK_STACK_DEPTH,
|
||||
.task_affinity = -1, // core pinning
|
||||
.task_max_sleep_ms = 500,
|
||||
.timer_period_ms = 5
|
||||
};
|
||||
|
||||
if (lvgl_port_init(&lvgl_cfg) != ESP_OK) {
|
||||
TT_LOG_E(TAG, "Port init failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
tt::lvgl::syncSet(&lvgl_port_lock, &lvgl_port_unlock);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace tt::lvgl
|
||||
|
||||
#endif
|
||||
@@ -7,6 +7,10 @@
|
||||
#include <Tactility/hal/Touch.h>
|
||||
#include <Tactility/kernel/SystemEvents.h>
|
||||
|
||||
#ifdef ESP_PLATFORM
|
||||
#include "Tactility/lvgl/EspLvglPort.h"
|
||||
#endif
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
namespace tt::lvgl {
|
||||
@@ -82,10 +86,11 @@ void init(const hal::Configuration& config) {
|
||||
|
||||
kernel::systemEventPublish(kernel::SystemEvent::BootInitLvglBegin);
|
||||
|
||||
if (config.initLvgl != nullptr && !config.initLvgl()) {
|
||||
TT_LOG_E(TAG, "LVGL init failed");
|
||||
#ifdef ESP_PLATFORM
|
||||
if (config.lvglInit == hal::LvglInit::Default && !initEspLvglPort()) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
auto display = initDisplay(config);
|
||||
if (display == nullptr) {
|
||||
|
||||
Reference in New Issue
Block a user