From e87771ef5f1db5d0ec9c9a49b96119176791e255 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Mon, 1 Sep 2025 00:24:22 +0200 Subject: [PATCH] Cleanup T-Deck driver --- Boards/LilygoTdeck/Source/Init.cpp | 2 +- Boards/LilygoTdeck/Source/LilygoTdeck.cpp | 18 +++++++++----- .../LilygoTdeck/Source/hal/TdeckDisplay.cpp | 4 ---- .../LilygoTdeck/Source/hal/TdeckKeyboard.cpp | 8 ++----- Boards/LilygoTdeck/Source/hal/TdeckKeyboard.h | 4 ---- Boards/LilygoTdeck/Source/hal/TdeckPower.cpp | 24 ++++--------------- Boards/LilygoTdeck/Source/hal/TdeckPower.h | 7 ++---- Boards/LilygoTdeck/Source/hal/TdeckSdCard.cpp | 4 +--- Boards/LilygoTdeck/Source/hal/TdeckSdCard.h | 2 +- Documentation/ideas.md | 1 + .../Include/Tactility/hal/Configuration.h | 6 ++--- 11 files changed, 28 insertions(+), 52 deletions(-) diff --git a/Boards/LilygoTdeck/Source/Init.cpp b/Boards/LilygoTdeck/Source/Init.cpp index c8c4b6df..57449664 100644 --- a/Boards/LilygoTdeck/Source/Init.cpp +++ b/Boards/LilygoTdeck/Source/Init.cpp @@ -30,7 +30,7 @@ static bool powerOn() { return true; } -bool tdeckInit() { +bool initBoot() { ESP_LOGI(TAG, LOG_MESSAGE_POWER_ON_START); if (!powerOn()) { TT_LOG_E(TAG, LOG_MESSAGE_POWER_ON_FAILED); diff --git a/Boards/LilygoTdeck/Source/LilygoTdeck.cpp b/Boards/LilygoTdeck/Source/LilygoTdeck.cpp index d88e4054..148fed37 100644 --- a/Boards/LilygoTdeck/Source/LilygoTdeck.cpp +++ b/Boards/LilygoTdeck/Source/LilygoTdeck.cpp @@ -9,16 +9,22 @@ #define TDECK_SPI_TRANSFER_SIZE_LIMIT (TDECK_LCD_HORIZONTAL_RESOLUTION * TDECK_LCD_SPI_TRANSFER_HEIGHT * (LV_COLOR_DEPTH / 8)) -bool tdeckInit(); +bool initBoot(); using namespace tt::hal; +static std::vector> createDevices() { + return { + std::make_shared(), + createDisplay(), + std::make_shared(), + createSdCard() + }; +} + extern const Configuration lilygo_tdeck = { - .initBoot = tdeckInit, - .createDisplay = createDisplay, - .createKeyboard = createKeyboard, - .sdcard = createTdeckSdCard(), - .power = tdeck_get_power, + .initBoot = initBoot, + .createDevices = createDevices, .i2c = { i2c::Configuration { .name = "Internal", diff --git a/Boards/LilygoTdeck/Source/hal/TdeckDisplay.cpp b/Boards/LilygoTdeck/Source/hal/TdeckDisplay.cpp index 7b9e5fbd..7a923c05 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckDisplay.cpp +++ b/Boards/LilygoTdeck/Source/hal/TdeckDisplay.cpp @@ -5,10 +5,6 @@ #include #include -#include - -#define TAG "tdeck_display" - static std::shared_ptr createTouch() { // Note for future changes: Reset pin is 48 and interrupt pin is 47 auto configuration = std::make_unique( diff --git a/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.cpp b/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.cpp index 0c357d82..ddd238f4 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.cpp +++ b/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.cpp @@ -4,8 +4,8 @@ #define TAG "tdeck_keyboard" -#define TDECK_KEYBOARD_I2C_BUS_HANDLE I2C_NUM_0 -#define TDECK_KEYBOARD_SLAVE_ADDRESS 0x55 +constexpr auto TDECK_KEYBOARD_I2C_BUS_HANDLE = I2C_NUM_0; +constexpr auto TDECK_KEYBOARD_SLAVE_ADDRESS = 0x55; static bool keyboard_i2c_read(uint8_t* output) { return tt::hal::i2c::masterRead(TDECK_KEYBOARD_I2C_BUS_HANDLE, TDECK_KEYBOARD_SLAVE_ADDRESS, output, 1, 100 / portTICK_PERIOD_MS); @@ -61,7 +61,3 @@ bool TdeckKeyboard::stopLvgl() { bool TdeckKeyboard::isAttached() const { return tt::hal::i2c::masterHasDeviceAtAddress(TDECK_KEYBOARD_I2C_BUS_HANDLE, TDECK_KEYBOARD_SLAVE_ADDRESS, 100); } - -std::shared_ptr createKeyboard() { - return std::make_shared(); -} diff --git a/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.h b/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.h index e526d2dc..c79b54dd 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.h +++ b/Boards/LilygoTdeck/Source/hal/TdeckKeyboard.h @@ -2,8 +2,6 @@ #include #include -#include -#include class TdeckKeyboard final : public tt::hal::keyboard::KeyboardDevice { @@ -19,5 +17,3 @@ public: bool isAttached() const override; lv_indev_t* _Nullable getLvglIndev() override { return deviceHandle; } }; - -std::shared_ptr createKeyboard(); diff --git a/Boards/LilygoTdeck/Source/hal/TdeckPower.cpp b/Boards/LilygoTdeck/Source/hal/TdeckPower.cpp index 008198db..d0405dc0 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckPower.cpp +++ b/Boards/LilygoTdeck/Source/hal/TdeckPower.cpp @@ -2,16 +2,16 @@ #include -#define TAG "power" +constexpr auto* TAG = "TdeckPower"; /** * 2.0 ratio, but +.11 added as display voltage sag compensation. */ -#define ADC_MULTIPLIER 2.11 +constexpr auto ADC_MULTIPLIER = 2.11; -#define ADC_REF_VOLTAGE 3.3f -#define BATTERY_VOLTAGE_MIN 3.2f -#define BATTERY_VOLTAGE_MAX 4.2f +constexpr auto ADC_REF_VOLTAGE = 3.3f; +constexpr auto BATTERY_VOLTAGE_MIN = 3.2f; +constexpr auto BATTERY_VOLTAGE_MAX = 4.2f; static adc_oneshot_unit_init_cfg_t adcConfig = { .unit_id = ADC_UNIT_1, @@ -62,8 +62,6 @@ bool TdeckPower::supportsMetric(MetricType type) const { default: return false; } - - return false; // Safety guard for when new enum values are introduced } bool TdeckPower::getMetric(MetricType type, MetricData& data) { @@ -81,8 +79,6 @@ bool TdeckPower::getMetric(MetricType type, MetricData& data) { default: return false; } - - return false; // Safety guard for when new enum values are introduced } bool TdeckPower::readBatteryVoltageOnce(uint32_t& output) { @@ -118,13 +114,3 @@ bool TdeckPower::readBatteryVoltageSampled(uint32_t& output) { return false; } } - -static std::shared_ptr power; - -std::shared_ptr tdeck_get_power() { - if (power == nullptr) { - power = std::make_shared(); - } - return power; -} - diff --git a/Boards/LilygoTdeck/Source/hal/TdeckPower.h b/Boards/LilygoTdeck/Source/hal/TdeckPower.h index 4dc4d75c..31b9d634 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckPower.h +++ b/Boards/LilygoTdeck/Source/hal/TdeckPower.h @@ -1,12 +1,11 @@ #pragma once -#include "Tactility/hal/power/PowerDevice.h" +#include #include -#include using tt::hal::power::PowerDevice; -class TdeckPower : public PowerDevice { +class TdeckPower final : public PowerDevice { adc_oneshot_unit_handle_t adcHandle = nullptr; @@ -26,5 +25,3 @@ private: bool readBatteryVoltageSampled(uint32_t& output); bool readBatteryVoltageOnce(uint32_t& output); }; - -std::shared_ptr tdeck_get_power(); diff --git a/Boards/LilygoTdeck/Source/hal/TdeckSdCard.cpp b/Boards/LilygoTdeck/Source/hal/TdeckSdCard.cpp index f4f3119e..81e9a5cc 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckSdCard.cpp +++ b/Boards/LilygoTdeck/Source/hal/TdeckSdCard.cpp @@ -3,15 +3,13 @@ #include #include -#include - using tt::hal::sdcard::SpiSdCardDevice; constexpr auto TDECK_SDCARD_PIN_CS = GPIO_NUM_39; constexpr auto TDECK_LCD_PIN_CS = GPIO_NUM_12; constexpr auto TDECK_RADIO_PIN_CS = GPIO_NUM_9; -std::shared_ptr createTdeckSdCard() { +std::shared_ptr createSdCard() { auto configuration = std::make_unique( TDECK_SDCARD_PIN_CS, GPIO_NUM_NC, diff --git a/Boards/LilygoTdeck/Source/hal/TdeckSdCard.h b/Boards/LilygoTdeck/Source/hal/TdeckSdCard.h index e12eb6d0..5cb65a73 100644 --- a/Boards/LilygoTdeck/Source/hal/TdeckSdCard.h +++ b/Boards/LilygoTdeck/Source/hal/TdeckSdCard.h @@ -4,4 +4,4 @@ using tt::hal::sdcard::SdCardDevice; -std::shared_ptr createTdeckSdCard(); +std::shared_ptr createSdCard(); diff --git a/Documentation/ideas.md b/Documentation/ideas.md index fc5739d1..448095f2 100644 --- a/Documentation/ideas.md +++ b/Documentation/ideas.md @@ -9,6 +9,7 @@ - Fix Development service: when no SD card is present, the app fails to install. Consider installing to `/data` - Refactor `PropertiesFile.cpp` to use `tt::file::readLines()` (see TODO in code) - Localize all apps +- Fix: Statusbar time updates result in errors when `system.properties` is not present. ## Lower Priority diff --git a/Tactility/Include/Tactility/hal/Configuration.h b/Tactility/Include/Tactility/hal/Configuration.h index 0d97f86d..e3eded79 100644 --- a/Tactility/Include/Tactility/hal/Configuration.h +++ b/Tactility/Include/Tactility/hal/Configuration.h @@ -1,8 +1,8 @@ #pragma once -#include "Tactility/hal/sdcard/SdCardDevice.h" -#include "Tactility/hal/spi/Spi.h" -#include "Tactility/hal/uart/Uart.h" +#include +#include +#include #include "i2c/I2c.h" namespace tt::hal {