summaryrefslogtreecommitdiff
path: root/src/DisplayApp
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-01-03 16:32:31 +0100
committerJF <jf@codingfield.com>2020-01-03 16:32:31 +0100
commitee530baaa05faeb246392cd2ac0ee66e79af49db (patch)
tree0fa4254e99d33bd065c3dd3a19157f125d053fc5 /src/DisplayApp
parent27d0e1e02f97912ae2a18a0254060a546d2fc42b (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.cpp18
-rw-r--r--src/DisplayApp/DisplayApp.h8
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();
};
}
}