2 #include "oswald_watch_faces.h"
4 #include "LcdDisplay.h"
6 #include "oswald_main.h"
9 * some variable defining our curent state
10 * these are globals in order to avoid having to pass pointers
11 * through function calls thus saving stack space
13 clock_state OswaldClk;
14 watch_state OswaldState;
16 void update_screen(void)
18 if (OswaldState.user_screendraw_func != NULL)
19 OswaldState.user_screendraw_func();
22 void oswald_change_to_screen(screen_number screen)
24 // we spare the update if no change happened
25 if (OswaldState.screen != screen) {
26 OswaldState.screen = screen;
31 void oswald_set_time(u8t hour, u8t minute, u8t second)
33 OswaldClk.hour = hour;
34 OswaldClk.minute = minute;
35 OswaldClk.second = second;
38 static void update_clock_state (void)
40 OswaldClk.second += 1;
41 if (OswaldClk.second > 59) {
43 OswaldClk.minute += 1;
46 if (OswaldClk.minute > 59) {
51 if (OswaldClk.hour > 23) {
58 void oswald_one_second_tick(void)
64 void draw_accel_screen(void)
68 WriteLcdString(2, 2, "X:");
69 WriteLcdString(20, 2, "123");
70 WriteLcdString(2, 18, "Z:");
71 WriteLcdString(20, 18, "123");
72 WriteLcdString(2, 34, "Y:");
73 WriteLcdString(20, 34, "123");
76 void idle_handle_user_buttons(watch_button button)
80 void oswald_handle_button_press(watch_button button)
87 if (OswaldState.user_button_func != NULL)
88 OswaldState.user_button_func(button);
93 if (OswaldState.screen >= LAST_SCREEN) {
94 OswaldState.screen = IDLE_SCREEN;
95 OswaldState.user_button_func = idle_handle_user_buttons;
96 OswaldState.user_screendraw_func = DrawLcdDigitalClock;
98 switch (OswaldState.screen) {
99 case SETTING_DATETIME_SCREEN:
100 OswaldState.user_button_func = idle_handle_user_buttons;
101 OswaldState.user_screendraw_func = draw_accel_screen;
113 // should never get here
118 void oswald_init(void)
120 OswaldState.screen = IDLE_SCREEN;
121 OswaldState.idle_show_seconds = FALSE;
122 OswaldState.user_screendraw_func = DrawLcdDigitalClock;
123 OswaldState.user_button_func = idle_handle_user_buttons;