2 #include "oswald_watch_faces.h"
4 #include "oswald_main.h"
7 * some variable defining our curent state
8 * these are globals in order to avoid having to pass pointers
9 * through function calls thus saving stack space
11 clock_state OswaldClk;
12 watch_state OswaldState;
14 void update_screen(void)
16 switch (OswaldState.screen) {
18 if (OswaldState.idle_draw_func != NULL)
19 OswaldState.idle_draw_func(OswaldState.idle_show_seconds);
21 case APPLICATION_SCREEN:
28 void oswald_change_to_screen(screen_number screen)
30 // we spare the update if no change
31 if (OswaldState.screen != screen) {
32 OswaldState.screen = screen;
37 void oswald_set_time(u8t hour, u8t minute, u8t second)
39 OswaldClk.hour = hour;
40 OswaldClk.minute = minute;
41 OswaldClk.second = second;
44 static void update_clock_state (void)
46 OswaldClk.second += 1;
47 if (OswaldClk.second > 59) {
49 OswaldClk.minute += 1;
52 if (OswaldClk.minute > 59) {
57 if (OswaldClk.hour > 23) {
64 void oswald_one_second_tick(void)
70 void oswald_handle_button_press(watch_button button)
74 void oswald_init(void)
76 OswaldState.screen = IDLE_SCREEN;
77 OswaldState.idle_draw_func = DrawLcdDigitalClock;
78 OswaldState.idle_show_seconds = FALSE;