diff options
author | ConfuSomu | 2021-02-08 12:44:05 -0500 |
---|---|---|
committer | ConfuSomu | 2021-02-08 12:44:05 -0500 |
commit | 8c27dc6445eedd928e8f7886f9d1b62f74e189f1 (patch) | |
tree | b18492e60eee24add13c79a8ffcbbbed84f33b61 /apps | |
parent | fef4e0343b14d8d95749e60867828b2773bf8f7d (diff) | |
download | pico-watch-8c27dc6445eedd928e8f7886f9d1b62f74e189f1.tar pico-watch-8c27dc6445eedd928e8f7886f9d1b62f74e189f1.tar.gz pico-watch-8c27dc6445eedd928e8f7886f9d1b62f74e189f1.zip |
Create a sort of framework for apps
Each app has its own init, render, bgrefresh and destroy functions.
The app data array alllows apps to persist data between function calls.
Diffstat (limited to 'apps')
-rw-r--r-- | apps/main_clock.c | 72 | ||||
-rw-r--r-- | apps/main_clock.h | 16 |
2 files changed, 88 insertions, 0 deletions
diff --git a/apps/main_clock.c b/apps/main_clock.c new file mode 100644 index 0000000..ec95585 --- /dev/null +++ b/apps/main_clock.c @@ -0,0 +1,72 @@ +#include <stdio.h> +#include "pico/stdlib.h" +#include "hardware/rtc.h" +#include "pico/util/datetime.h" +#include "../oled/ss_oled.h" + +#include "main_clock.h" + +// Time as string +// Adapted from pico-sdk/scr/common/pico_util/datetime.c +void time_as_str(char *buf, uint buf_size, const datetime_t *t) { + snprintf(buf, + buf_size, + "%d:%02d:%02d", + t->hour, + t->min, + t->sec); +}; +void date_as_str(char *buf, uint buf_size, const datetime_t *t) { + static const char *DATETIME_DOWS[7] = { + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + }; + snprintf(buf, + buf_size, + "%02d-%02d-%02d %s", + t->year, + t->month, + t->day, + DATETIME_DOWS[t->dotw - 1]); +}; + +void show_datetime(SSOLED *oled) { + char datetime_buf[256]; + char *datetime_str = &datetime_buf[0]; + datetime_t t; + rtc_get_datetime(&t); + + // time + time_as_str(datetime_str, sizeof(datetime_buf), &t); + oledWriteString(oled, 0,10,3, datetime_str, FONT_12x16, 0, 1); + + // date + date_as_str(datetime_str, sizeof(datetime_buf), &t); + oledWriteString(oled, 0,0,7, datetime_str, FONT_8x8, 0, 1); +} + +int main_clock_render(SSOLED *oled, char *data, uint data_size) { + show_datetime(oled); +// data[1] += 1; // testing +// oledWriteString(oled, 0,0,2, &data[0], FONT_6x8, 0, 1); + return 0; +} + +int main_clock_init(SSOLED *oled, char *data, uint data_size) { +// data[0] = 'a'; // testing, to showcase the use of data +// data[1] = 'b'; + return 1; // return 1 when function not implemented +} + +int main_clock_bgrefresh(SSOLED *oled, char *data, uint data_size) { + return 1; +} + +int main_clock_destroy(SSOLED *oled, char *data, uint data_size) { + return 1; +} diff --git a/apps/main_clock.h b/apps/main_clock.h new file mode 100644 index 0000000..d47e837 --- /dev/null +++ b/apps/main_clock.h @@ -0,0 +1,16 @@ +#ifndef __MAIN_CLOCK_H__ +#define __MAIN_CLOCK_H__ + +#include "pico/util/datetime.h" +#include "../oled/ss_oled.h" + +void time_as_str(char *buf, uint buf_size, const datetime_t *t); +void date_as_str(char *buf, uint buf_size, const datetime_t *t); +void show_datetime(SSOLED *oled); + +int main_clock_init(SSOLED *oled, char *data, uint data_size); +int main_clock_render(SSOLED *oled, char *data, uint data_size); +int main_clock_bgrefresh(SSOLED *oled, char *data, uint data_size); +int main_clock_destroy(SSOLED *oled, char *data, uint data_size); + +#endif
\ No newline at end of file |