]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_main.c
Too much to note...
[oswald.git] / ui / oswald_main.c
diff --git a/ui/oswald_main.c b/ui/oswald_main.c
new file mode 100644 (file)
index 0000000..9dd69cc
--- /dev/null
@@ -0,0 +1,80 @@
+#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;
+}
+