aboutsummaryrefslogtreecommitdiffstats
path: root/pico-watch.c
diff options
context:
space:
mode:
Diffstat (limited to 'pico-watch.c')
-rw-r--r--pico-watch.c71
1 files changed, 28 insertions, 43 deletions
diff --git a/pico-watch.c b/pico-watch.c
index a07cd23..a7c3886 100644
--- a/pico-watch.c
+++ b/pico-watch.c
@@ -6,57 +6,42 @@
#include "oled/ss_oled.h"
#include "init.h"
+#include "apps/main_clock.h"
+int current_app = 0;
-// 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() {
- 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);
+#define NUMBER_OF_APPS 1
+#define APP_DATA_BUFFER_LEN 256
+int (*APPS_FUNC_INIT[NUMBER_OF_APPS])(SSOLED *oled, char *data, uint data_size) = {main_clock_init};
+int (*APPS_FUNC_RENDER[NUMBER_OF_APPS])(SSOLED *oled, char *data, uint data_size) = {main_clock_render};
+int (*APPS_FUNC_BGREFRESH[NUMBER_OF_APPS])(SSOLED *oled, char *data, uint data_size) = {main_clock_bgrefresh};
+int (*APPS_FUNC_DESTROY[NUMBER_OF_APPS])(SSOLED *oled, char *data, uint data_size) = {main_clock_destroy};
+char APPS_DATA[NUMBER_OF_APPS][APP_DATA_BUFFER_LEN];
+int APPS_DESTROY_ON_EXIT[NUMBER_OF_APPS] = {1};
+int APPS_IS_INIT[NUMBER_OF_APPS] = {0};
+
+int app_init(int app_id) {
+ APPS_IS_INIT[app_id] = 1;
+ return (*APPS_FUNC_INIT[app_id])(&oled, &APPS_DATA[app_id][0], sizeof(APPS_DATA[app_id]));
+}
+
+int app_render(int app_id) {
+ return (*APPS_FUNC_RENDER[app_id])(&oled, &APPS_DATA[app_id][0], sizeof(APPS_DATA[app_id]));
+}
+
+int app_destroy(int app_id) {
+ if (APPS_IS_INIT[app_id])
+ return (*APPS_FUNC_INIT[app_id])(&oled, &APPS_DATA[app_id][0], sizeof(APPS_DATA[app_id]));
}
int main() {
init_all();
+
+ app_init(current_app);
+
oledWriteString(&oled, 0,15,0, (char *)"Test clock", FONT_8x8, 0, 1);
while (1) {
- show_datetime();
+ app_render(current_app);
sleep_ms(500);
}
return 0;