#include "oswald.h" #include "oswald_watch_faces.h" #include "oswald_main.h" /* * some variable defining our curent state * these are globals in order to avoid having to pass pointers * through function calls thus saving stack space */ clock_state OswaldClk; watch_state OswaldState; void update_screen(void) { switch (OswaldState.screen) { case IDLE_SCREEN: if (OswaldState.idle_draw_func != NULL) OswaldState.idle_draw_func(OswaldState.idle_show_seconds); break; case APPLICATION_SCREEN: break; deafault: break; }; } void oswald_change_to_screen(screen_number screen) { // we spare the update if no change if (OswaldState.screen != screen) { OswaldState.screen = screen; update_screen(); } } void oswald_set_time(u8t hour, u8t minute, u8t second) { OswaldClk.hour = hour; OswaldClk.minute = minute; OswaldClk.second = second; } static void update_clock_state (void) { OswaldClk.second += 1; if (OswaldClk.second > 59) { OswaldClk.second = 0; OswaldClk.minute += 1; } else return; if (OswaldClk.minute > 59) { OswaldClk.minute = 0; OswaldClk.hour += 1; } else return; if (OswaldClk.hour > 23) { OswaldClk.hour = 0; // day++ } else return; } void oswald_one_second_tick(void) { update_clock_state(); update_screen(); } void oswald_handle_button_press(watch_button button) { } void oswald_init(void) { OswaldState.screen = IDLE_SCREEN; OswaldState.idle_draw_func = DrawLcdDigitalClock; OswaldState.idle_show_seconds = FALSE; }