aboutsummaryrefslogtreecommitdiffstats
path: root/src/DisplayApp/DisplayApp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DisplayApp/DisplayApp.cpp')
-rw-r--r--src/DisplayApp/DisplayApp.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/DisplayApp/DisplayApp.cpp b/src/DisplayApp/DisplayApp.cpp
index e17dd55c..ea92a29d 100644
--- a/src/DisplayApp/DisplayApp.cpp
+++ b/src/DisplayApp/DisplayApp.cpp
@@ -67,18 +67,33 @@ void DisplayApp::InitHw() {
}
void DisplayApp::Refresh() {
-// uint32_t systick_counter = nrf_rtc_counter_get(portNRF_RTC_REG);
-// auto raw = systick_counter / 1000;
+ uint32_t systick_counter = nrf_rtc_counter_get(portNRF_RTC_REG);
+
+ auto raw = systick_counter / 1000;
+ auto currentDeltaSeconds = raw - deltaSeconds;
+
+
+ auto deltaMinutes = (currentDeltaSeconds / 60);
+ auto currentMinutes = minutes + deltaMinutes;
+
+ auto deltaHours = currentMinutes / 60;
+ currentMinutes -= (deltaHours * 60);
+
//
// TODO make this better!
// minutes = raw / 60;
// seconds = raw - (minutes*60);
+
+ auto currentHours = hours + deltaHours;
+
+
+
char minutesChar[3];
- sprintf(minutesChar, "%02d", minutes);
+ sprintf(minutesChar, "%02d", currentMinutes);
char hoursChar[3];
- sprintf(hoursChar, "%02d", hours);
+ sprintf(hoursChar, "%02d", currentHours);
uint8_t x = 7;
if(hoursChar[0] != currentChar[0]) {
@@ -115,3 +130,9 @@ void DisplayApp::Hours(uint8_t h) {
// TODO yeah, I know, race condition too...
hours = h;
}
+
+void DisplayApp::SetTime(uint8_t minutes, uint8_t hours) {
+ deltaSeconds = nrf_rtc_counter_get(portNRF_RTC_REG) / 1000;
+ this->minutes = minutes;
+ this->hours = hours;
+}