diff options
Diffstat (limited to 'src/DisplayApp')
-rw-r--r-- | src/DisplayApp/DisplayApp.cpp | 197 | ||||
-rw-r--r-- | src/DisplayApp/DisplayApp.h | 32 | ||||
-rw-r--r-- | src/DisplayApp/Fonts/lcdfont14.c (renamed from src/DisplayApp/lcdfont14.c) | 0 | ||||
-rw-r--r-- | src/DisplayApp/Fonts/lcdfont14.h (renamed from src/DisplayApp/lcdfont14.h) | 0 | ||||
-rw-r--r-- | src/DisplayApp/Fonts/lcdfont70.c (renamed from src/DisplayApp/lcdfont70.c) | 0 | ||||
-rw-r--r-- | src/DisplayApp/Fonts/lcdfont70.h (renamed from src/DisplayApp/lcdfont70.h) | 2 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Clock.cpp | 133 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Clock.h | 65 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Message.cpp | 14 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Message.h | 26 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Screen.cpp | 2 | ||||
-rw-r--r-- | src/DisplayApp/Screens/Screen.h | 18 |
12 files changed, 317 insertions, 172 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp index f37cee98..3b7007af 100644 --- a/src/DisplayApp/DisplayApp.cpp +++ b/src/DisplayApp/DisplayApp.cpp @@ -11,45 +11,30 @@ #include <drivers/Cst816s.h> #include <chrono> #include <string> -#include <date/date.h> -#include "../Version.h" using namespace Pinetime::Applications; -char const *DisplayApp::DaysString[] = { - "", - "MONDAY", - "TUESDAY", - "WEDNESDAY", - "THURSDAY", - "FRIDAY", - "SATURDAY", - "SUNDAY" -}; - -char const *DisplayApp::MonthsString[] = { - "", - "JAN", - "FEB", - "MAR", - "APR", - "MAY", - "JUN", - "JUL", - "AUG", - "SEP", - "OCT", - "NOV", - "DEC" -}; - DisplayApp::DisplayApp(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()) }, batteryController{batteryController}, bleController{bleController}, - dateTimeController{dateTimeController} { + dateTimeController{dateTimeController}, + clockScreen{*(gfx.get())}/*, + messageScreen{*(gfx.get())}*/ { msgQueue = xQueueCreate(queueSize, itemSize); + currentScreen = &clockScreen; } void DisplayApp::Start() { @@ -67,55 +52,16 @@ void DisplayApp::Process(void *instance) { } void DisplayApp::InitHw() { - nrf_gpio_cfg_output(14); - nrf_gpio_cfg_output(22); - nrf_gpio_cfg_output(23); - nrf_gpio_pin_clear(14); - nrf_gpio_pin_clear(22); - nrf_gpio_pin_clear(23); - - Drivers::SpiMaster::Parameters params; - params.bitOrder = Drivers::SpiMaster::BitOrder::Msb_Lsb; - params.mode = Drivers::SpiMaster::Modes::Mode3; - params.Frequency = Drivers::SpiMaster::Frequencies::Freq8Mhz; - params.pinCSN = 25; - params.pinMISO = 4; - params.pinMOSI = 3; - params.pinSCK = 2; - spi.Init(Drivers::SpiMaster::SpiModule::SPI0, params); - - lcd.reset(new Drivers::St7789(spi, 18)); - gfx.reset(new Components::Gfx(*lcd.get())); - gfx->ClearScreen(); - - uint8_t x = 7; - gfx->DrawChar(&largeFont, '0', &x, 78, 0xffff); - - x = 61; - gfx->DrawChar(&largeFont, '0', &x, 78, 0xffff); - - x = 94; - gfx->DrawChar(&largeFont, ':', &x, 78, 0xffff); - - x = 127; - gfx->DrawChar(&largeFont, '0', &x, 78, 0xffff); - - x = 181; - gfx->DrawChar(&largeFont, '0', &x, 78, 0xffff); - - gfx->DrawString(10, 0, 0x0000, "BLE", &smallFont, false); - gfx->DrawString(20, 180, 0xffff, "", &smallFont, false); - - char version[20]; - sprintf(version, "VERSION: %d.%d.%d", Version::Major(), Version::Minor(), Version::Patch()); - gfx->DrawString(20, 220, 0xffff, version, &smallFont, false); - - - currentChar[0] = 0; - currentChar[1] = 0; - currentChar[2] = 0; - currentChar[3] = 0; - + nrf_gpio_cfg_output(pinLcdBacklight1); + nrf_gpio_cfg_output(pinLcdBacklight2); + nrf_gpio_cfg_output(pinLcdBacklight3); + nrf_gpio_pin_clear(pinLcdBacklight1); + nrf_gpio_pin_clear(pinLcdBacklight2); + nrf_gpio_pin_clear(pinLcdBacklight3); + + spi.Init(); + gfx->Init(); + currentScreen->Refresh(true); touchPanel.Init(); } @@ -136,11 +82,11 @@ void DisplayApp::Refresh() { if (xQueueReceive(msgQueue, &msg, queueTimeout)) { switch (msg) { case Messages::GoToSleep: - nrf_gpio_pin_set(23); + nrf_gpio_pin_set(pinLcdBacklight3); vTaskDelay(100); - nrf_gpio_pin_set(22); + nrf_gpio_pin_set(pinLcdBacklight2); vTaskDelay(100); - nrf_gpio_pin_set(14); + nrf_gpio_pin_set(pinLcdBacklight1); lcd->DisplayOff(); lcd->Sleep(); touchPanel.Sleep(); @@ -151,18 +97,18 @@ void DisplayApp::Refresh() { touchPanel.Wakeup(); lcd->DisplayOn(); - nrf_gpio_pin_clear(23); - nrf_gpio_pin_clear(22); - nrf_gpio_pin_clear(14); + nrf_gpio_pin_clear(pinLcdBacklight3); + nrf_gpio_pin_clear(pinLcdBacklight2); + nrf_gpio_pin_clear(pinLcdBacklight1); state = States::Running; break; case Messages::UpdateDateTime: break; case Messages::UpdateBleConnection: - bleConnectionUpdated = true; + clockScreen.SetBleConnectionState(bleController.IsConnected() ? Screens::Clock::BleConnectionStates::Connected : Screens::Clock::BleConnectionStates::NotConnected); break; case Messages::UpdateBatteryLevel: - batteryLevelUpdated = true; + clockScreen.SetBatteryPercentRemaining(batteryController.PercentRemaining()); break; case Messages::TouchEvent: if(state != States::Running) break; @@ -173,77 +119,18 @@ void DisplayApp::Refresh() { } void DisplayApp::RunningState() { - if (batteryLevelUpdated) { - char batteryChar[11]; - uint16_t newBatteryValue = batteryController.PercentRemaining(); - newBatteryValue = (newBatteryValue > 100) ? 100 : newBatteryValue; - newBatteryValue = (newBatteryValue < 0) ? 0 : newBatteryValue; - - batteryLevelUpdated = false; - sprintf(batteryChar, "BAT: %d%%", newBatteryValue); - gfx->DrawString((240 - 108), 0, 0xffff, batteryChar, &smallFont, false); - } + clockScreen.SetCurrentDateTime(dateTimeController.CurrentDateTime()); - if (bleConnectionUpdated) { - bleConnectionUpdated = false; - uint16_t color = (bleController.IsConnected()) ? 0xffff : 0x0000; - gfx->DrawString(10, 0, color, "BLE", &smallFont, false); + if(currentScreen != nullptr) { + currentScreen->Refresh(false); } - char minutesChar[3]; - sprintf(minutesChar, "%02d", dateTimeController.Minutes()); - - char hoursChar[3]; - sprintf(hoursChar, "%02d", dateTimeController.Hours()); - - uint8_t x = 7; - if (hoursChar[0] != currentChar[0]) { - gfx->DrawChar(&largeFont, hoursChar[0], &x, 78, 0xffff); - currentChar[0] = hoursChar[0]; - } - - x = 61; - if (hoursChar[1] != currentChar[1]) { - gfx->DrawChar(&largeFont, hoursChar[1], &x, 78, 0xffff); - currentChar[1] = hoursChar[1]; - } - - x = 127; - if (minutesChar[0] != currentChar[2]) { - gfx->DrawChar(&largeFont, minutesChar[0], &x, 78, 0xffff); - currentChar[2] = minutesChar[0]; - } - - x = 181; - if (minutesChar[1] != currentChar[3]) { - gfx->DrawChar(&largeFont, minutesChar[1], &x, 78, 0xffff); - currentChar[3] = minutesChar[1]; - } - - auto y = dateTimeController.Year(); - auto m = dateTimeController.Month(); - auto wd = dateTimeController.DayOfWeek(); - auto d = dateTimeController.Day(); - - if ((y != currentYear) || (m != currentMonth) || (wd != currentDayOfWeek) || (d != currentDay)) { - gfx->FillRectangle(0,180, 240, 15, 0x0000); - char dateStr[22]; - sprintf(dateStr, "%s %d %s %d", DayOfWeekToString(wd), d, MonthToString(m), y); - gfx->DrawString(10, 180, 0xffff, dateStr, &smallFont, false); - - currentYear = y; - currentMonth = m; - currentDayOfWeek = wd; - currentDay = d; - } -} - -const char *DisplayApp::MonthToString(Pinetime::Controllers::DateTime::Months month) { - return DisplayApp::MonthsString[static_cast<uint8_t>(month)]; -} - -const char *DisplayApp::DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek) { - return DisplayApp::DaysString[static_cast<uint8_t>(dayOfWeek)]; +// if(screenState) { +// currentScreen = &clockScreen; +// } else { +// currentScreen = &messageScreen; +// } +// screenState = !screenState; } diff --git a/src/DisplayApp/DisplayApp.h b/src/DisplayApp/DisplayApp.h index 8e92c7bb..5fb8f6f8 100644 --- a/src/DisplayApp/DisplayApp.h +++ b/src/DisplayApp/DisplayApp.h @@ -9,10 +9,11 @@ #include <Components/Battery/BatteryController.h> #include <Components/Ble/BleController.h> #include <Components/DateTime/DateTimeController.h> -#include "lcdfont14.h" +#include "Fonts/lcdfont14.h" #include "../drivers/Cst816s.h" #include <date/date.h> - +#include <DisplayApp/Screens/Clock.h> +#include <DisplayApp/Screens/Message.h> extern const FONT_INFO lCD_70ptFontInfo; @@ -39,15 +40,6 @@ namespace Pinetime { const FONT_INFO smallFont {lCD_14ptFontInfo.height, lCD_14ptFontInfo.startChar, lCD_14ptFontInfo.endChar, lCD_14ptFontInfo.spacePixels, lCD_14ptFontInfo.charInfo, lCD_14ptFontInfo.data}; void Refresh(); - static const char* MonthToString(Pinetime::Controllers::DateTime::Months month); - static const char* DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek); - - char currentChar[4]; - uint16_t currentYear = 1970; - Pinetime::Controllers::DateTime::Months currentMonth = Pinetime::Controllers::DateTime::Months::Unknown; - Pinetime::Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown; - uint8_t currentDay = 0; - States state = States::Running; void RunningState(); void IdleState(); @@ -59,14 +51,22 @@ namespace Pinetime { Pinetime::Controllers::Battery &batteryController; Pinetime::Controllers::Ble &bleController; Pinetime::Controllers::DateTime& dateTimeController; - bool bleConnectionUpdated = false; - bool batteryLevelUpdated = false; - - static char const *DaysString[]; - static char const *MonthsString[]; 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; }; } } diff --git a/src/DisplayApp/lcdfont14.c b/src/DisplayApp/Fonts/lcdfont14.c index b4edf502..b4edf502 100644 --- a/src/DisplayApp/lcdfont14.c +++ b/src/DisplayApp/Fonts/lcdfont14.c diff --git a/src/DisplayApp/lcdfont14.h b/src/DisplayApp/Fonts/lcdfont14.h index 271b19fd..271b19fd 100644 --- a/src/DisplayApp/lcdfont14.h +++ b/src/DisplayApp/Fonts/lcdfont14.h diff --git a/src/DisplayApp/lcdfont70.c b/src/DisplayApp/Fonts/lcdfont70.c index 873e5dd2..873e5dd2 100644 --- a/src/DisplayApp/lcdfont70.c +++ b/src/DisplayApp/Fonts/lcdfont70.c diff --git a/src/DisplayApp/lcdfont70.h b/src/DisplayApp/Fonts/lcdfont70.h index 232dc891..80b5dc15 100644 --- a/src/DisplayApp/lcdfont70.h +++ b/src/DisplayApp/Fonts/lcdfont70.h @@ -1,5 +1,5 @@ // Font data for LCD 70pt -extern const uint_8 lCD_70ptBitmaps[]; +extern const uint8_t lCD_70ptBitmaps[]; extern const FONT_INFO lCD_70ptFontInfo; extern const FONT_CHAR_INFO lCD_70ptDescriptors[]; diff --git a/src/DisplayApp/Screens/Clock.cpp b/src/DisplayApp/Screens/Clock.cpp new file mode 100644 index 00000000..153f4f2e --- /dev/null +++ b/src/DisplayApp/Screens/Clock.cpp @@ -0,0 +1,133 @@ +#include <cstdio> +#include <libs/date/includes/date/date.h> +#include <Components/DateTime/DateTimeController.h> +#include <Version.h> +#include "Clock.h" + +using namespace Pinetime::Applications::Screens; + +void Clock::Refresh(bool fullRefresh) { + if(fullRefresh) { + gfx.FillRectangle(0,0,240,240,0x0000); + currentChar[0] = 0; + currentChar[1] = 0; + currentChar[2] = 0; + currentChar[3] = 0; + auto dummy = currentDateTime.Get(); + } + + if (fullRefresh || batteryPercentRemaining.IsUpdated()) { + char batteryChar[11]; + auto newBatteryValue = batteryPercentRemaining.Get(); + newBatteryValue = (newBatteryValue > 100) ? 100 : newBatteryValue; + newBatteryValue = (newBatteryValue < 0) ? 0 : newBatteryValue; + + sprintf(batteryChar, "BAT: %d%%", newBatteryValue); + gfx.DrawString((240 - 108), 0, 0xffff, batteryChar, &smallFont, false); + } + + if (fullRefresh || bleState.IsUpdated()) { + uint16_t color = (bleState.Get() == BleConnectionStates::Connected) ? 0xffff : 0x0000; + gfx.DrawString(10, 0, color, "BLE", &smallFont, false); + } + + if(fullRefresh || currentDateTime.IsUpdated()) { + auto newDateTime = currentDateTime.Get(); + + auto dp = date::floor<date::days>(newDateTime); + auto time = date::make_time(newDateTime-dp); + auto yearMonthDay = date::year_month_day(dp); + + auto year = (int)yearMonthDay.year(); + auto month = static_cast<Pinetime::Controllers::DateTime::Months>((unsigned)yearMonthDay.month()); + auto day = (unsigned)yearMonthDay.day(); + auto dayOfWeek = static_cast<Pinetime::Controllers::DateTime::Days>(date::weekday(yearMonthDay).iso_encoding()); + + auto hour = time.hours().count(); + auto minute = time.minutes().count(); + auto second = time.seconds().count(); + + char minutesChar[3]; + sprintf(minutesChar, "%02d", minute); + + char hoursChar[3]; + sprintf(hoursChar, "%02d", hour); + + uint8_t x = 7; + if (hoursChar[0] != currentChar[0]) { + gfx.DrawChar(&largeFont, hoursChar[0], &x, 78, 0xffff); + currentChar[0] = hoursChar[0]; + } + + x = 61; + if (hoursChar[1] != currentChar[1]) { + gfx.DrawChar(&largeFont, hoursChar[1], &x, 78, 0xffff); + currentChar[1] = hoursChar[1]; + } + + x = 127; + if (minutesChar[0] != currentChar[2]) { + gfx.DrawChar(&largeFont, minutesChar[0], &x, 78, 0xffff); + currentChar[2] = minutesChar[0]; + } + + x = 181; + if (minutesChar[1] != currentChar[3]) { + gfx.DrawChar(&largeFont, minutesChar[1], &x, 78, 0xffff); + currentChar[3] = minutesChar[1]; + } + + if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) { + gfx.FillRectangle(0,180, 240, 15, 0x0000); + char dateStr[22]; + sprintf(dateStr, "%s %d %s %d", DayOfWeekToString(dayOfWeek), day, MonthToString(month), year); + gfx.DrawString(10, 180, 0xffff, dateStr, &smallFont, false); + + currentYear = year; + currentMonth = month; + currentDayOfWeek = dayOfWeek; + currentDay = day; + } + } + + if(fullRefresh || version.IsUpdated()) { + char version[20]; + sprintf(version, "VERSION: %d.%d.%d", Version::Major(), Version::Minor(), Version::Patch()); + gfx.DrawString(20, 220, 0xffff, version, &smallFont, false); + } +} + +const char *Clock::MonthToString(Pinetime::Controllers::DateTime::Months month) { + return Clock::MonthsString[static_cast<uint8_t>(month)]; +} + +const char *Clock::DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek) { + return Clock::DaysString[static_cast<uint8_t>(dayOfWeek)]; +} + +char const *Clock::DaysString[] = { + "", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" +}; + +char const *Clock::MonthsString[] = { + "", + "JAN", + "FEB", + "MAR", + "APR", + "MAY", + "JUN", + "JUL", + "AUG", + "SEP", + "OCT", + "NOV", + "DEC" +}; diff --git a/src/DisplayApp/Screens/Clock.h b/src/DisplayApp/Screens/Clock.h new file mode 100644 index 00000000..12dd8850 --- /dev/null +++ b/src/DisplayApp/Screens/Clock.h @@ -0,0 +1,65 @@ +#pragma once + +#include <cstdint> +#include <chrono> +#include <Components/Gfx/Gfx.h> +#include "Screen.h" +#include <bits/unique_ptr.h> +#include "../Fonts/lcdfont14.h" +#include "../Fonts/lcdfont70.h" +#include "../../Version.h" + +namespace Pinetime { + namespace Applications { + namespace Screens { + + template <class T> + class DirtyValue { + public: + explicit DirtyValue(T v) { value = v; } + explicit DirtyValue(T& v) { value = v; } + bool IsUpdated() const { return isUpdated; } + T& Get() { return value; this->isUpdated = false;} + + DirtyValue& operator=(const T& other) { + this->value = other; + this->isUpdated = true; + return *this; + } + private: + T value; + bool isUpdated = true; + }; + class Clock : public Screen{ + public: + enum class BleConnectionStates{ NotConnected, Connected}; + Clock(Components::Gfx& gfx) : Screen(gfx), currentDateTime{{}}, version {{}} {} + void Refresh(bool fullRefresh) override; + + void SetBatteryPercentRemaining(uint8_t percent) { batteryPercentRemaining = percent; } + void SetBleConnectionState(BleConnectionStates state) { bleState = state; } + void SetCurrentDateTime(const std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>& tp) { currentDateTime = tp;} + + private: + static const char* MonthToString(Pinetime::Controllers::DateTime::Months month); + static const char* DayOfWeekToString(Pinetime::Controllers::DateTime::Days dayOfWeek); + static char const *DaysString[]; + static char const *MonthsString[]; + + 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}; + + char currentChar[4]; + uint16_t currentYear = 1970; + Pinetime::Controllers::DateTime::Months currentMonth = Pinetime::Controllers::DateTime::Months::Unknown; + Pinetime::Controllers::DateTime::Days currentDayOfWeek = Pinetime::Controllers::DateTime::Days::Unknown; + uint8_t currentDay = 0; + + DirtyValue<uint8_t> batteryPercentRemaining {0}; + DirtyValue<BleConnectionStates> bleState {BleConnectionStates::NotConnected}; + DirtyValue<std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds>> currentDateTime; + DirtyValue<Pinetime::Version> version; + }; + } + } +} diff --git a/src/DisplayApp/Screens/Message.cpp b/src/DisplayApp/Screens/Message.cpp new file mode 100644 index 00000000..2ade4349 --- /dev/null +++ b/src/DisplayApp/Screens/Message.cpp @@ -0,0 +1,14 @@ +#include <cstdio> +#include <libs/date/includes/date/date.h> +#include <Components/DateTime/DateTimeController.h> +#include <Version.h> +#include "Message.h" + +using namespace Pinetime::Applications::Screens; + +void Message::Refresh(bool fullRefresh) { + if(fullRefresh) { + gfx.FillRectangle(0,0,240,240,0xffff); + gfx.DrawString(120, 10, 0x0000, "COUCOU", &smallFont, false); + } +} diff --git a/src/DisplayApp/Screens/Message.h b/src/DisplayApp/Screens/Message.h new file mode 100644 index 00000000..ac300faf --- /dev/null +++ b/src/DisplayApp/Screens/Message.h @@ -0,0 +1,26 @@ +#pragma once + +#include <cstdint> +#include <chrono> +#include <Components/Gfx/Gfx.h> +#include "Screen.h" +#include <bits/unique_ptr.h> +#include "../Fonts/lcdfont14.h" +#include "../Fonts/lcdfont70.h" +#include "../../Version.h" + +namespace Pinetime { + namespace Applications { + namespace Screens { + class Message : public Screen{ + public: + Message(Components::Gfx& gfx) : Screen(gfx) {} + void Refresh(bool fullRefresh) override; + + private: + 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}; + }; + } + } +} diff --git a/src/DisplayApp/Screens/Screen.cpp b/src/DisplayApp/Screens/Screen.cpp new file mode 100644 index 00000000..1467df33 --- /dev/null +++ b/src/DisplayApp/Screens/Screen.cpp @@ -0,0 +1,2 @@ +#include "Screen.h" +using namespace Pinetime::Applications::Screens;
\ No newline at end of file diff --git a/src/DisplayApp/Screens/Screen.h b/src/DisplayApp/Screens/Screen.h new file mode 100644 index 00000000..5e2fa43e --- /dev/null +++ b/src/DisplayApp/Screens/Screen.h @@ -0,0 +1,18 @@ +#pragma once + +#include <Components/Gfx/Gfx.h> + +namespace Pinetime { + namespace Applications { + namespace Screens { + class Screen { + public: + Screen(Components::Gfx& gfx) : gfx{gfx} {} + virtual void Refresh(bool fullRefresh) = 0; + + protected: + Components::Gfx& gfx; + }; + } + } +} |