diff --git a/targets/embedded_esp32s3/main/board_config.h b/targets/embedded_esp32s3/main/board_config.h index 61a79a8..86cd9e5 100644 --- a/targets/embedded_esp32s3/main/board_config.h +++ b/targets/embedded_esp32s3/main/board_config.h @@ -28,12 +28,12 @@ constexpr uint16_t kHeight = 135; namespace spi { constexpr int kMosiGpio = 35; constexpr int kSclkGpio = 36; -constexpr int kCsGpio = 37; +constexpr int kCsGpio = 7; } // namespace spi -constexpr int kDcGpio = 38; -constexpr int kResetGpio = 39; -constexpr int kBacklightGpio = 40; +constexpr int kDcGpio = 39; +constexpr int kResetGpio = 40; +constexpr int kBacklightGpio = 38; } // namespace tft namespace encoder { @@ -45,10 +45,11 @@ namespace encoder { constexpr int kA = 14; constexpr int kB = 15; constexpr int kSwitch = 16; +constexpr bool kPresent = false; // Set true on board revisions with populated rotary encoder. } // namespace encoder namespace controls { -constexpr int kBypassButton = 5; +constexpr int kBypassButton = 9; } // namespace controls // Guard against accidental overlap with active audio I2S signals. diff --git a/targets/embedded_esp32s3/main/ui_app.h b/targets/embedded_esp32s3/main/ui_app.h index 35f4fdd..f1aa9c6 100644 --- a/targets/embedded_esp32s3/main/ui_app.h +++ b/targets/embedded_esp32s3/main/ui_app.h @@ -33,8 +33,13 @@ class UserInterface { bool init(uint8_t* framebuffer) { if (!display_.init(framebuffer)) return false; - if (!encoder_.init()) return false; - enc_btn_.init(); + encoder_available_ = board::encoder::kPresent; + if (encoder_available_) { + encoder_available_ = encoder_.init(); + if (encoder_available_) { + enc_btn_.init(); + } + } bypass_btn_.init(); // Initialize parameters matching the requested grid layout @@ -53,7 +58,9 @@ class UserInterface { } void tick(ParameterBridge& bridge) { - enc_btn_.update(); + if (encoder_available_) { + enc_btn_.update(); + } bypass_btn_.update(); if (bypass_btn_.justPressed()) { @@ -63,13 +70,13 @@ class UserInterface { display_.update(); } - if (enc_btn_.justPressed()) { + if (encoder_available_ && enc_btn_.justPressed()) { mode_ = (mode_ == UiMode::Scroll) ? UiMode::Edit : UiMode::Scroll; drawUI(); display_.update(); } - int delta = encoder_.getDelta(); + int delta = encoder_available_ ? encoder_.getDelta() : 0; if (delta != 0) { if (mode_ == UiMode::Scroll) { selected_idx_ += delta; @@ -244,6 +251,7 @@ class UserInterface { int selected_idx_ = 0; UiMode mode_ = UiMode::Scroll; bool bypassed_ = false; + bool encoder_available_ = false; }; } // namespace orbit::embedded::ui