diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-09-12 14:11:40 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-09-12 14:18:04 +1000 |
| commit | 86296c187f799eb94fe504e2491d7d991640fadc (patch) | |
| tree | 2127a93f309030f2add2d66e3088377c8e2a771a | |
| parent | b0d745d02dcfd6ab9b1ad14e9060b39bf9ad7bb8 (diff) | |
| download | tangara-fw-86296c187f799eb94fe504e2491d7d991640fadc.tar.gz | |
Use interrupt-based spi for the display
This solves our "audio stutters while scrolling" problem better! Turns
out the real root cause was the polling SPI driver blocking a whole CPU
during playback.
| -rw-r--r-- | src/drivers/display.cpp | 2 | ||||
| -rw-r--r-- | src/tasks/tasks.cpp | 3 | ||||
| -rw-r--r-- | src/ui/include/ui_fsm.hpp | 4 | ||||
| -rw-r--r-- | src/ui/ui_fsm.cpp | 7 |
4 files changed, 4 insertions, 12 deletions
diff --git a/src/drivers/display.cpp b/src/drivers/display.cpp index e261402d..a0ace021 100644 --- a/src/drivers/display.cpp +++ b/src/drivers/display.cpp @@ -283,7 +283,7 @@ void Display::SendTransaction(TransactionType type, gpio_set_level(kDisplayDr, type); // TODO(jacqueline): Handle these errors. - esp_err_t ret = spi_device_polling_transmit(handle_, transaction_); + esp_err_t ret = spi_device_transmit(handle_, transaction_); ESP_ERROR_CHECK(ret); } diff --git a/src/tasks/tasks.cpp b/src/tasks/tasks.cpp index ae7b9eb2..fccdfd8b 100644 --- a/src/tasks/tasks.cpp +++ b/src/tasks/tasks.cpp @@ -114,8 +114,7 @@ auto Priority<Type::kAudioConverter>() -> UBaseType_t { } // After audio issues, UI jank is the most noticeable kind of scheduling-induced // slowness that the user is likely to notice or care about. Therefore we place -// this task directly below audio in terms of priority. Note that during audio -// playback, this priority will be downgraded. +// this task directly below audio in terms of priority. template <> auto Priority<Type::kUi>() -> UBaseType_t { return 10; diff --git a/src/ui/include/ui_fsm.hpp b/src/ui/include/ui_fsm.hpp index de97354e..b8d2b1a0 100644 --- a/src/ui/include/ui_fsm.hpp +++ b/src/ui/include/ui_fsm.hpp @@ -49,8 +49,8 @@ class UiState : public tinyfsm::Fsm<UiState> { void react(const tinyfsm::Event& ev) {} virtual void react(const system_fsm::BatteryStateChanged&); - virtual void react(const audio::PlaybackStarted&); - virtual void react(const audio::PlaybackFinished&); + virtual void react(const audio::PlaybackStarted&){}; + virtual void react(const audio::PlaybackFinished&){}; virtual void react(const audio::PlaybackUpdate&) {} virtual void react(const audio::QueueUpdate&) {} diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp index 70a77c2a..eeaea500 100644 --- a/src/ui/ui_fsm.cpp +++ b/src/ui/ui_fsm.cpp @@ -91,13 +91,6 @@ void UiState::react(const system_fsm::BatteryStateChanged&) { UpdateTopBar(); } -void UiState::react(const audio::PlaybackStarted&) { - vTaskPrioritySet(NULL, 0); -} -void UiState::react(const audio::PlaybackFinished&) { - vTaskPrioritySet(NULL, 10); -} - void UiState::UpdateTopBar() { auto battery_state = sServices->battery().State(); bool has_queue = sServices->track_queue().GetCurrent().has_value(); |
