summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-06-06 11:49:41 +1000
committerjacqueline <me@jacqueline.id.au>2023-06-06 11:49:41 +1000
commitd2e5d2ab3cff0723cd995b0fca62aeb2a681d32d (patch)
treeb3e0a9d1129917808876a4dd1d015b166ff425f4
parent8a2a2d226558d099243eea0aa9ae22b2791e0e0e (diff)
downloadtangara-fw-d2e5d2ab3cff0723cd995b0fca62aeb2a681d32d.tar.gz
Fix up screen brightness and transitions
-rw-r--r--src/drivers/display.cpp18
-rw-r--r--src/ui/include/ui_fsm.hpp4
-rw-r--r--src/ui/lvgl_task.cpp2
-rw-r--r--src/ui/ui_fsm.cpp11
4 files changed, 25 insertions, 10 deletions
diff --git a/src/drivers/display.cpp b/src/drivers/display.cpp
index af439def..7a49e02b 100644
--- a/src/drivers/display.cpp
+++ b/src/drivers/display.cpp
@@ -104,15 +104,27 @@ auto Display::Create(GpioExpander* expander,
.freq_hz = 5000,
.clk_cfg = LEDC_AUTO_CLK,
};
- ledc_timer_config(&led_config);
+ ESP_ERROR_CHECK(ledc_timer_config(&led_config));
+
+ gpio_config_t led_pin_config{
+ .pin_bit_mask = 1ULL << kDisplayLedEn,
+ .mode = GPIO_MODE_OUTPUT,
+ .pull_up_en = GPIO_PULLUP_ENABLE,
+ .pull_down_en = GPIO_PULLDOWN_DISABLE,
+ .intr_type = GPIO_INTR_DISABLE,
+ };
+ gpio_config(&led_pin_config);
ledc_channel_config_t led_channel{.gpio_num = kDisplayLedEn,
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = LEDC_CHANNEL_0,
.timer_sel = LEDC_TIMER_0,
- .duty = 4095,
+ .duty = 0,
.hpoint = 0};
- ledc_channel_config(&led_channel);
+ ESP_ERROR_CHECK(ledc_channel_config(&led_channel));
+
+ ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 4096));
+ ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0));
// Next, init the SPI device
spi_device_interface_config_t spi_cfg = {
diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp
index d4d23bb0..dda8e447 100644
--- a/src/ui/include/ui_fsm.hpp
+++ b/src/ui/include/ui_fsm.hpp
@@ -22,8 +22,8 @@ namespace ui {
class UiState : public tinyfsm::Fsm<UiState> {
public:
static auto Init(drivers::GpioExpander* gpio_expander,
- std::weak_ptr<drivers::RelativeWheel> touchwheel,
- std::weak_ptr<drivers::Display> display) -> void;
+ const std::weak_ptr<drivers::RelativeWheel> &touchwheel,
+ const std::weak_ptr<drivers::Display> &display) -> void;
virtual ~UiState() {}
diff --git a/src/ui/lvgl_task.cpp b/src/ui/lvgl_task.cpp
index b0e2e0ed..d70782b2 100644
--- a/src/ui/lvgl_task.cpp
+++ b/src/ui/lvgl_task.cpp
@@ -66,9 +66,9 @@ void LvglMain(std::weak_ptr<drivers::RelativeWheel> weak_touch_wheel,
std::shared_ptr<Screen> screen = UiState::current_screen();
if (screen != current_screen && screen != nullptr) {
- current_screen = screen;
// TODO(jacqueline): animate this sometimes
lv_scr_load(screen->root());
+ current_screen = screen;
}
lv_task_handler();
diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp
index 6d53eb45..1bc7ddb8 100644
--- a/src/ui/ui_fsm.cpp
+++ b/src/ui/ui_fsm.cpp
@@ -23,12 +23,16 @@ std::weak_ptr<drivers::Display> UiState::sDisplay;
std::shared_ptr<Screen> UiState::sCurrentScreen;
auto UiState::Init(drivers::GpioExpander* gpio_expander,
- std::weak_ptr<drivers::RelativeWheel> touchwheel,
- std::weak_ptr<drivers::Display> display) -> void {
+ const std::weak_ptr<drivers::RelativeWheel>& touchwheel,
+ const std::weak_ptr<drivers::Display>& display) -> void {
+ assert(!touchwheel.expired());
+ assert(!display.expired());
sGpioExpander = gpio_expander;
sTouchWheel = touchwheel;
sDisplay = display;
+ sCurrentScreen.reset(new screens::Splash());
+
StartLvgl(sTouchWheel, sDisplay);
}
@@ -39,7 +43,6 @@ void PreBoot::react(const system_fsm::DisplayReady& ev) {
}
void Splash::entry() {
- sCurrentScreen.reset(new screens::Splash());
}
void Splash::react(const system_fsm::BootComplete& ev) {
@@ -47,7 +50,7 @@ void Splash::react(const system_fsm::BootComplete& ev) {
}
void Interactive::entry() {
- // sCurrentScreen.reset(new screens::Menu());
+ sCurrentScreen.reset(new screens::Menu());
}
} // namespace states