Add BLE and CTS client. Time can be retrieved from a CTS server (like NRFConnect) once it's bond.

WIP, the code is really ugly
This commit is contained in:
JF
2019-12-21 17:58:00 +01:00
parent 528fc56616
commit ecf307c559
6 changed files with 695 additions and 26 deletions

View File

@@ -21,7 +21,6 @@ void DisplayApp::Process(void *instance) {
app->InitHw();
while (1) {
NRF_LOG_INFO("BlinkApp task running!");
app->Refresh();
@@ -68,41 +67,51 @@ void DisplayApp::InitHw() {
}
void DisplayApp::Refresh() {
uint32_t systick_counter = nrf_rtc_counter_get(portNRF_RTC_REG);
auto raw = systick_counter / 1000;
// TODO make this better!
minutes = raw / 60;
seconds = raw - (minutes*60);
char secondChar[3];
sprintf(secondChar, "%02d", seconds);
// uint32_t systick_counter = nrf_rtc_counter_get(portNRF_RTC_REG);
// auto raw = systick_counter / 1000;
//
// TODO make this better!
// minutes = raw / 60;
// seconds = raw - (minutes*60);
char minutesChar[3];
sprintf(minutesChar, "%02d", minutes);
char hoursChar[3];
sprintf(hoursChar, "%02d", hours);
uint8_t x = 7;
if(minutesChar[0] != currentChar[0]) {
gfx->DrawChar(&largeFont, minutesChar[0], &x, 78, 0xffff);
currentChar[0] = minutesChar[0];
if(hoursChar[0] != currentChar[0]) {
gfx->DrawChar(&largeFont, hoursChar[0], &x, 78, 0xffff);
currentChar[0] = hoursChar[0];
}
x = 61;
if(minutesChar[1] != currentChar[1]) {
gfx->DrawChar(&largeFont, minutesChar[1], &x, 78, 0xffff);
currentChar[1] = minutesChar[1];
if(hoursChar[1] != currentChar[1]) {
gfx->DrawChar(&largeFont, hoursChar[1], &x, 78, 0xffff);
currentChar[1] = hoursChar[1];
}
x = 127;
if(secondChar[0] != currentChar[2]) {
gfx->DrawChar(&largeFont, secondChar[0], &x, 78, 0xffff);
currentChar[2] = secondChar[0];
if(minutesChar[0] != currentChar[2]) {
gfx->DrawChar(&largeFont, minutesChar[0], &x, 78, 0xffff);
currentChar[2] = minutesChar[0];
}
x = 181;
if(secondChar[1] != currentChar[3]) {
gfx->DrawChar(&largeFont, secondChar[1], &x, 78, 0xffff);
currentChar[3] = secondChar[1];
if(minutesChar[1] != currentChar[3]) {
gfx->DrawChar(&largeFont, minutesChar[1], &x, 78, 0xffff);
currentChar[3] = minutesChar[1];
}
}
void DisplayApp::Minutes(uint8_t m) {
// TODO yeah, I know, race condition...
minutes = m;
}
void DisplayApp::Hours(uint8_t h) {
// TODO yeah, I know, race condition too...
hours = h;
}

View File

@@ -14,6 +14,9 @@ namespace Pinetime {
public:
void Start();
void Minutes(uint8_t m);
void Hours(uint8_t h);
private:
TaskHandle_t taskHandle;
static void Process(void* instance);
@@ -24,6 +27,8 @@ namespace Pinetime {
const FONT_INFO largeFont {lCD_70ptFontInfo.height, lCD_70ptFontInfo.startChar, lCD_70ptFontInfo.endChar, lCD_70ptFontInfo.spacePixels, lCD_70ptFontInfo.charInfo, lCD_70ptFontInfo.data};
void Refresh();
uint8_t seconds = 0;
uint8_t minutes = 0;
uint8_t hours = 0;