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:
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user