mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-02-18 19:03:16 +00:00
- `TT_LOG_*` macros are replaced by `Logger` via `#include<Tactility/Logger.h>` - Changed default timezone to Europe/Amsterdam - Fix for logic bug in unPhone hardware - Fix for init/deinit in DRV2605 driver - Other fixes - Removed optimization that broke unPhone (disabled the moving of heap-related functions to flash)
72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
#include "devices/Display.h"
|
|
#include "devices/Power.h"
|
|
#include "devices/Constants.h"
|
|
|
|
#include <Tactility/hal/Configuration.h>
|
|
#include <Tactility/lvgl/LvglSync.h>
|
|
#include <Tactility/Logger.h>
|
|
#include <ButtonControl.h>
|
|
|
|
#include "driver/gpio.h"
|
|
#include "driver/i2c.h"
|
|
#include "freertos/FreeRTOS.h"
|
|
#include "freertos/task.h"
|
|
|
|
static void enableOledPower() {
|
|
gpio_config_t io_conf = {
|
|
.pin_bit_mask = (1ULL << DISPLAY_PIN_POWER),
|
|
.mode = GPIO_MODE_OUTPUT,
|
|
.pull_up_en = GPIO_PULLUP_DISABLE, // The board has an external pull-up
|
|
.pull_down_en = GPIO_PULLDOWN_DISABLE,
|
|
.intr_type = GPIO_INTR_DISABLE,
|
|
};
|
|
gpio_config(&io_conf);
|
|
gpio_set_level(DISPLAY_PIN_POWER, 0); // Active low
|
|
|
|
vTaskDelay(pdMS_TO_TICKS(500)); // Add a small delay for power to stabilize
|
|
tt::Logger("HeltecV3").info("OLED power enabled");
|
|
}
|
|
|
|
static bool initBoot() {
|
|
// Enable power to the OLED before doing anything else
|
|
enableOledPower();
|
|
|
|
return true;
|
|
}
|
|
|
|
using namespace tt::hal;
|
|
|
|
static std::vector<std::shared_ptr<Device>> createDevices() {
|
|
return {
|
|
createPower(),
|
|
ButtonControl::createOneButtonControl(0),
|
|
createDisplay()
|
|
};
|
|
}
|
|
|
|
extern const Configuration hardwareConfiguration = {
|
|
.initBoot = initBoot,
|
|
.uiScale = UiScale::Smallest,
|
|
.createDevices = createDevices,
|
|
.i2c = {
|
|
tt::hal::i2c::Configuration {
|
|
.name = "Internal",
|
|
.port = DISPLAY_I2C_PORT,
|
|
.initMode = tt::hal::i2c::InitMode::ByTactility,
|
|
.isMutable = true,
|
|
.config = (i2c_config_t) {
|
|
.mode = I2C_MODE_MASTER,
|
|
.sda_io_num = DISPLAY_PIN_SDA,
|
|
.scl_io_num = DISPLAY_PIN_SCL,
|
|
.sda_pullup_en = GPIO_PULLUP_ENABLE,
|
|
.scl_pullup_en = GPIO_PULLUP_ENABLE,
|
|
.master = {
|
|
.clk_speed = DISPLAY_I2C_SPEED
|
|
},
|
|
.clk_flags = 0
|
|
}
|
|
}
|
|
},
|
|
.spi {},
|
|
};
|