Time & date, system events and much more (#152)

## Time & Date
- Added time to statusbar widget
- Added Time & Date Settings app
- Added TimeZone app for selecting TimeZone
- Added `tt::time` namespace with timezone code

## Other changes

- Added `SystemEvent` to publish/subscribe to system wide (e.g. for init code, but also for time settings changes)
- Changed the way the statusbar widget works: now there's only 1 that gets shown/hidden, instead of 1 instance per app instance.
- Moved `lowercase()` function to new namespace: `tt::string`
- Increased T-Deck flash & PSRAM SPI frequencies to 120 MHz (from 80 MHz)
- Temporary work-around (+ TODO item) for LVGL stack size (issue with WiFi app)
- Suppress T-Deck keystroke debugging to debug level (privacy issue)
- Improved SDL dependency wiring in various `CMakeLists.txt`
- `Loader` service had some variables renamed to the newer C++ style (from previous C style)
This commit is contained in:
Ken Van Hoeylandt
2025-01-10 23:44:32 +01:00
committed by GitHub
parent 4f360741a1
commit bf91e7530d
50 changed files with 1498 additions and 153 deletions
+2 -2
View File
@@ -8,8 +8,8 @@
// LVGL
// The minimum task stack seems to be about 3500, but that crashes the wifi app in some scenarios
// At 4000, it crashes when the fps renderer is available
#define TDECK_LVGL_TASK_STACK_DEPTH 8192
// 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
bool tdeck_init_lvgl() {
static lv_disp_t* display = nullptr;
@@ -4,7 +4,7 @@
#define TDECK_LCD_PIN_CS GPIO_NUM_12
#define TDECK_LCD_PIN_DC GPIO_NUM_11 // RS
#define TDECK_LCD_PIN_BACKLIGHT GPIO_NUM_42
#define TDECK_LCD_SPI_FREQUENCY 40000000
#define TDECK_LCD_SPI_FREQUENCY 80000000
#define TDECK_LCD_HORIZONTAL_RESOLUTION 320
#define TDECK_LCD_VERTICAL_RESOLUTION 240
#define TDECK_LCD_BITS_PER_PIXEL 16
@@ -30,11 +30,11 @@ static void keyboard_read_callback(TT_UNUSED lv_indev_t* indev, lv_indev_data_t*
if (keyboard_i2c_read(&read_buffer)) {
if (read_buffer == 0 && read_buffer != last_buffer) {
TT_LOG_I(TAG, "Released %d", last_buffer);
TT_LOG_D(TAG, "Released %d", last_buffer);
data->key = last_buffer;
data->state = LV_INDEV_STATE_RELEASED;
} else if (read_buffer != 0) {
TT_LOG_I(TAG, "Pressed %d", read_buffer);
TT_LOG_D(TAG, "Pressed %d", read_buffer);
data->key = read_buffer;
data->state = LV_INDEV_STATE_PRESSED;
}
+1 -1
View File
@@ -8,7 +8,7 @@
// LVGL
// The minimum task stack seems to be about 3500, but that crashes the wifi app in some scenarios
// At 4000, it crashes when the fps renderer is available
#define CORE2_LVGL_TASK_STACK_DEPTH 8192
#define CORE2_LVGL_TASK_STACK_DEPTH 9216
bool initLvgl() {
const lvgl_port_cfg_t lvgl_cfg = {
+1 -1
View File
@@ -8,7 +8,7 @@
// LVGL
// The minimum task stack seems to be about 3500, but that crashes the wifi app in some scenarios
// At 4000, it crashes when the fps renderer is available
#define CORE2_LVGL_TASK_STACK_DEPTH 8192
#define CORE2_LVGL_TASK_STACK_DEPTH 9216
bool initLvgl() {
const lvgl_port_cfg_t lvgl_cfg = {
+7
View File
@@ -11,13 +11,20 @@ if (NOT DEFINED ENV{ESP_IDF_VERSION})
PRIVATE ${SOURCES}
PUBLIC ${HEADERS}
)
target_link_libraries(Simulator
PRIVATE Tactility
PRIVATE TactilityCore
PRIVATE TactilityHeadless
PRIVATE lvgl
PRIVATE ${SDL2_LIBRARIES}
)
if (NOT DEFINED ENV{SKIP_SDL})
find_package(SDL2 REQUIRED CONFIG)
target_link_libraries(Simulator PRIVATE ${SDL2_LIBRARIES})
endif()
add_definitions(-D_Nullable=)
add_definitions(-D_Nonnull=)
-1
View File
@@ -2,7 +2,6 @@
#include "lvgl.h"
#include "Log.h"
#include "TactilityCore.h"
#include "Thread.h"
#include "lvgl/LvglSync.h"