diff options
Diffstat (limited to 'src/DisplayApp')
-rw-r--r-- | src/DisplayApp/DisplayApp.cpp | 45 | ||||
-rw-r--r-- | src/DisplayApp/DisplayApp.h | 17 |
2 files changed, 26 insertions, 36 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp index c1561cc2..8795416c 100644 --- a/src/DisplayApp/DisplayApp.cpp +++ b/src/DisplayApp/DisplayApp.cpp @@ -14,25 +14,20 @@ using namespace Pinetime::Applications; -DisplayApp::DisplayApp(Controllers::Battery &batteryController, +DisplayApp::DisplayApp(Pinetime::Drivers::St7789& lcd, + Pinetime::Components::Gfx& gfx, + Pinetime::Drivers::Cst816S& touchPanel, + Controllers::Battery &batteryController, Controllers::Ble &bleController, Controllers::DateTime &dateTimeController) : - spi{Drivers::SpiMaster::SpiModule::SPI0, { - Drivers::SpiMaster::BitOrder::Msb_Lsb, - Drivers::SpiMaster::Modes::Mode3, - Drivers::SpiMaster::Frequencies::Freq8Mhz, - pinSpiSck, - pinSpiMosi, - pinSpiMiso, - pinSpiCsn - }}, - lcd{new Drivers::St7789(spi, pinLcdDataCommand)}, - gfx{new Components::Gfx(*lcd.get()) }, + lcd{lcd}, + gfx{gfx}, + touchPanel{touchPanel}, batteryController{batteryController}, bleController{bleController}, dateTimeController{dateTimeController}, - clockScreen{*(gfx.get())}, - messageScreen{*(gfx.get())} { + clockScreen{gfx}, + messageScreen{gfx} { msgQueue = xQueueCreate(queueSize, itemSize); currentScreen = &clockScreen; } @@ -59,22 +54,19 @@ void DisplayApp::InitHw() { nrf_gpio_pin_clear(pinLcdBacklight2); nrf_gpio_pin_clear(pinLcdBacklight3); - spi.Init(); - gfx->Init(); currentScreen->Refresh(true); - touchPanel.Init(); } uint32_t acc = 0; uint32_t count = 0; bool toggle = true; void DisplayApp::Refresh() { - +#if 0 uint32_t before = nrf_rtc_counter_get(portNRF_RTC_REG); if(toggle) { - gfx->FillRectangle(0,0,240,240,0x0000); + gfx.FillRectangle(0,0,240,240,0x0000); } else { - gfx->FillRectangle(0,0,240,240,0xffff); + gfx.FillRectangle(0,0,240,240,0xffff); } uint32_t after = nrf_rtc_counter_get(portNRF_RTC_REG); @@ -85,8 +77,9 @@ void DisplayApp::Refresh() { } count++; toggle = !toggle; +#endif -#if 0 +#if 1 TickType_t queueTimeout; switch (state) { case States::Idle: @@ -108,16 +101,16 @@ void DisplayApp::Refresh() { nrf_gpio_pin_set(pinLcdBacklight2); vTaskDelay(100); nrf_gpio_pin_set(pinLcdBacklight1); - lcd->DisplayOff(); - lcd->Sleep(); + lcd.DisplayOff(); + lcd.Sleep(); touchPanel.Sleep(); state = States::Idle; break; case Messages::GoToRunning: - lcd->Wakeup(); + lcd.Wakeup(); touchPanel.Wakeup(); - lcd->DisplayOn(); + lcd.DisplayOn(); nrf_gpio_pin_clear(pinLcdBacklight3); nrf_gpio_pin_clear(pinLcdBacklight2); nrf_gpio_pin_clear(pinLcdBacklight1); @@ -179,7 +172,7 @@ void DisplayApp::OnTouchEvent() { auto info = touchPanel.GetTouchInfo(); if(info.isTouch) { - gfx->FillRectangle(info.x-10, info.y-10, 20,20, pointColor); + gfx.FillRectangle(info.x-10, info.y-10, 20,20, pointColor); pointColor+=10; } } diff --git a/src/DisplayApp/DisplayApp.h b/src/DisplayApp/DisplayApp.h index eabfe099..04265426 100644 --- a/src/DisplayApp/DisplayApp.h +++ b/src/DisplayApp/DisplayApp.h @@ -23,7 +23,10 @@ namespace Pinetime { public: enum class States {Idle, Running}; enum class Messages : uint8_t {GoToSleep, GoToRunning, UpdateDateTime, UpdateBleConnection, UpdateBatteryLevel, TouchEvent} ; - DisplayApp(Controllers::Battery &batteryController, + DisplayApp(Pinetime::Drivers::St7789& lcd, + Pinetime::Components::Gfx& gfx, + Pinetime::Drivers::Cst816S&, + Controllers::Battery &batteryController, Controllers::Ble &bleController, Controllers::DateTime& dateTimeController); void Start(); @@ -33,9 +36,8 @@ namespace Pinetime { TaskHandle_t taskHandle; static void Process(void* instance); void InitHw(); - Pinetime::Drivers::SpiMaster spi; - std::unique_ptr<Drivers::St7789> lcd; - std::unique_ptr<Components::Gfx> gfx; + Pinetime::Drivers::St7789& lcd; + Pinetime::Components::Gfx& gfx; const FONT_INFO largeFont {lCD_70ptFontInfo.height, lCD_70ptFontInfo.startChar, lCD_70ptFontInfo.endChar, lCD_70ptFontInfo.spacePixels, lCD_70ptFontInfo.charInfo, lCD_70ptFontInfo.data}; const FONT_INFO smallFont {lCD_14ptFontInfo.height, lCD_14ptFontInfo.startChar, lCD_14ptFontInfo.endChar, lCD_14ptFontInfo.spacePixels, lCD_14ptFontInfo.charInfo, lCD_14ptFontInfo.data}; void Refresh(); @@ -52,18 +54,13 @@ namespace Pinetime { Pinetime::Controllers::Ble &bleController; Pinetime::Controllers::DateTime& dateTimeController; - Pinetime::Drivers::Cst816S touchPanel; + Pinetime::Drivers::Cst816S& touchPanel; void OnTouchEvent(); Screens::Clock clockScreen; Screens::Screen* currentScreen = nullptr; Screens::Message messageScreen; bool screenState = false; - static constexpr uint8_t pinSpiSck = 2; - static constexpr uint8_t pinSpiMosi = 3; - static constexpr uint8_t pinSpiMiso = 4; - static constexpr uint8_t pinSpiCsn = 25; - static constexpr uint8_t pinLcdDataCommand = 18; static constexpr uint8_t pinLcdBacklight1 = 14; static constexpr uint8_t pinLcdBacklight2 = 22; static constexpr uint8_t pinLcdBacklight3 = 23; |