diff options
author | JF <jf@codingfield.com> | 2020-01-03 16:32:31 +0100 |
---|---|---|
committer | JF <jf@codingfield.com> | 2020-01-03 16:32:31 +0100 |
commit | ee530baaa05faeb246392cd2ac0ee66e79af49db (patch) | |
tree | 0fa4254e99d33bd065c3dd3a19157f125d053fc5 /src/DisplayApp | |
parent | 27d0e1e02f97912ae2a18a0254060a546d2fc42b (diff) |
Add basic touch panel driver.
Handle touch event in display app : draw a big square at the touch point coordinates.
Diffstat (limited to 'src/DisplayApp')
-rw-r--r-- | src/DisplayApp/DisplayApp.cpp | 18 | ||||
-rw-r--r-- | src/DisplayApp/DisplayApp.h | 8 |
2 files changed, 22 insertions, 4 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp index 20704c0d..2a26f189 100644 --- a/src/DisplayApp/DisplayApp.cpp +++ b/src/DisplayApp/DisplayApp.cpp @@ -8,6 +8,7 @@ #include "Components/Gfx/Gfx.h" #include <queue.h> #include <Components/DateTime/DateTimeController.h> +#include <drivers/Cst816s.h> using namespace Pinetime::Applications; @@ -56,7 +57,6 @@ void DisplayApp::Process(void *instance) { auto *app = static_cast<DisplayApp *>(instance); NRF_LOG_INFO("DisplayApp task started!"); app->InitHw(); - while (1) { app->Refresh(); } @@ -101,6 +101,8 @@ void DisplayApp::InitHw() { gfx->DrawString(10, 0, 0x0000, "BLE", &smallFont, false); gfx->DrawString(20, 180, 0xffff, "", &smallFont, false); + + touchPanel.Init(); } void DisplayApp::Refresh() { @@ -148,6 +150,10 @@ void DisplayApp::Refresh() { case Messages::UpdateBatteryLevel: batteryLevelUpdated = true; break; + case Messages::TouchEvent: + if(state != States::Running) break; + OnTouchEvent(); + break; } } } @@ -247,3 +253,13 @@ void DisplayApp::PushMessage(DisplayApp::Messages msg) { // TODO : should I do something here? } } + +static uint16_t pointColor = 0x07e0; +void DisplayApp::OnTouchEvent() { + auto info = touchPanel.GetTouchInfo(); + + if(info.isTouch) { + lcd->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 24b8e45d..75c74227 100644 --- a/src/DisplayApp/DisplayApp.h +++ b/src/DisplayApp/DisplayApp.h @@ -10,6 +10,8 @@ #include <Components/Ble/BleController.h> #include <Components/DateTime/DateTimeController.h> #include "lcdfont14.h" +#include "../drivers/Cst816s.h" + extern const FONT_INFO lCD_70ptFontInfo; @@ -18,7 +20,7 @@ namespace Pinetime { class DisplayApp { public: enum class States {Idle, Running}; - enum class Messages : uint8_t {GoToSleep, GoToRunning, UpdateDateTime, UpdateBleConnection, UpdateBatteryLevel} ; + enum class Messages : uint8_t {GoToSleep, GoToRunning, UpdateDateTime, UpdateBleConnection, UpdateBatteryLevel, TouchEvent} ; DisplayApp(Controllers::Battery &batteryController, Controllers::Ble &bleController, Controllers::DateTime& dateTimeController); @@ -59,11 +61,11 @@ namespace Pinetime { bool batteryLevelUpdated = false; static char const *DaysString[]; - static char const *MonthsString[]; - bool dateUpdated = false; + Pinetime::Drivers::Cst816S touchPanel; + void OnTouchEvent(); }; } } |