]> git.karo-electronics.de Git - oswald.git/blob - ui/oswald_main.c
Too much to note...
[oswald.git] / ui / oswald_main.c
1 #include "oswald.h"
2 #include "oswald_watch_faces.h"
3
4 #include "oswald_main.h"
5
6 /*
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
10  */
11 clock_state OswaldClk;
12 watch_state OswaldState;
13
14 void update_screen(void)
15 {
16         switch (OswaldState.screen) {
17                 case IDLE_SCREEN:
18                         if (OswaldState.idle_draw_func != NULL)
19                                 OswaldState.idle_draw_func(OswaldState.idle_show_seconds);
20                         break;
21                 case APPLICATION_SCREEN:
22                         break;
23                 deafault:
24                         break;
25         };
26 }
27
28 void oswald_change_to_screen(screen_number screen)
29 {
30         // we spare the update if no change
31         if (OswaldState.screen != screen) {
32                 OswaldState.screen = screen;
33                 update_screen();
34         }
35 }
36
37 void oswald_set_time(u8t hour, u8t minute, u8t second)
38 {
39         OswaldClk.hour = hour;
40         OswaldClk.minute = minute;
41         OswaldClk.second = second;
42 }
43
44 static void update_clock_state (void)
45 {
46         OswaldClk.second += 1;
47         if (OswaldClk.second > 59) {
48                 OswaldClk.second = 0;
49                 OswaldClk.minute += 1;
50         } else
51                 return;
52         if (OswaldClk.minute > 59) {
53                 OswaldClk.minute = 0;
54                 OswaldClk.hour += 1;
55         } else
56                 return;
57         if (OswaldClk.hour > 23) {
58                 OswaldClk.hour = 0;
59                 // day++
60         } else
61                 return;
62 }
63
64 void oswald_one_second_tick(void)
65 {
66         update_clock_state();
67         update_screen();
68 }
69
70 void oswald_handle_button_press(watch_button button)
71 {
72 }
73
74 void oswald_init(void)
75 {
76         OswaldState.screen = IDLE_SCREEN;
77         OswaldState.idle_draw_func = DrawLcdDigitalClock;
78         OswaldState.idle_show_seconds = FALSE;
79 }
80