]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_main.c
Shorten charger plug "tail"
[oswald.git] / ui / oswald_main.c
index f2e4abeeecd4a708a25af77d1d33abd06e77e7ba..f26603b9e4a085c9947d659cfef4a5f2d21be5e8 100644 (file)
@@ -17,7 +17,7 @@ alarm_clk OswaldAlarm;
 watch_state OswaldState;
 watch_screen OswaldScreens[SCREENS_END];
 power_state OswaldPowerState;
-u8t backlight_safety_off = 0;
+uint8_t backlight_safety_off = 0;
 char MainMessage[148];
 
 
@@ -32,7 +32,7 @@ void oswald_change_to_screen(screen_number screen_id)
        }
 }
 
-void oswald_set_time(u8t hour, u8t minute, u8t second, boolean clk24hr)
+void oswald_set_time(uint8_t hour, uint8_t minute, uint8_t second, boolean clk24hr)
 {
        OswaldClk.hour = hour;
        OswaldClk.minute = minute;
@@ -40,7 +40,7 @@ void oswald_set_time(u8t hour, u8t minute, u8t second, boolean clk24hr)
        OswaldClk.clk24hr = clk24hr;
 }
 
-void oswald_set_date(u8t day, u8t month, u16t year, boolean day_first)
+void oswald_set_date(uint8_t day, uint8_t month, uint16_t year, boolean day_first)
 {
        OswaldClk.day = day;
        OswaldClk.month = month;
@@ -100,25 +100,21 @@ void oswald_halfsecond_tick(void)
 void oswald_handle_button_press(watch_button button)
 {
        switch (button) {
-               case BUTTON_D:
-                       // backlight on/off
-                       if (hal_lcd_get_backlight()) {
-                               hal_lcd_set_backlight(FALSE);
-                               backlight_safety_off = 0;
-                       } else {
-                               hal_lcd_set_backlight(TRUE);
-                               backlight_safety_off = 2;
-                       }
-                       break;
                case BUTTON_A:
                case BUTTON_B:
                case BUTTON_E:
                case BUTTON_F:
                        if (OswaldState.screen->event_func != NULL &&
-                           (OswaldState.screen->event_mask & EVENT_USER_BUTTONS))
-                               OswaldState.screen->event_func(EVENT_USER_BUTTONS, &button);
+                           (OswaldState.screen->event_mask & EVENT_USER_BUTTONS)) {
+                               OswaldState.screen->event_func(EVENT_USER_BUTTONS, &button);
+                       }
                        break;
                case BUTTON_C:
+                       if (OswaldState.screen->event_func != NULL &&
+                           (OswaldState.screen->event_mask & EVENT_USER_BUTTONS)) {
+                               if (OswaldState.screen->event_func(EVENT_USER_BUTTONS, &button) == EVENT_RET_HANDLED)
+                                       break;
+                       }
                        OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
                        // next screen
                        OswaldState.screen_id++;
@@ -128,13 +124,23 @@ void oswald_handle_button_press(watch_button button)
                        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
                        OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
                        break;
+               case BUTTON_D:
+                       // backlight on/off
+                       if (hal_lcd_get_backlight()) {
+                               hal_lcd_set_backlight(FALSE);
+                               backlight_safety_off = 0;
+                       } else {
+                               hal_lcd_set_backlight(TRUE);
+                               backlight_safety_off = 2;
+                       }
+                       break;
                default:
                        // should never get here
                        break;
        };
 }
 
-void oswald_handle_accel_event(u8t x, u8t y, u8t z)
+void oswald_handle_accel_event(uint8_t x, uint8_t y, uint8_t z)
 {
        accel_data_t accel_data;
 
@@ -147,7 +153,7 @@ void oswald_handle_accel_event(u8t x, u8t y, u8t z)
                OswaldState.screen->event_func(EVENT_ACCEL_UPDATE, &accel_data);
 }
 
-void oswald_handle_ambientlight_event(u8t light_level)
+void oswald_handle_ambientlight_event(uint8_t light_level)
 {
        if (OswaldState.screen->event_func != NULL &&
            (OswaldState.screen->event_mask & EVENT_AMBIENTLIGHT_UPDATE))
@@ -205,6 +211,9 @@ void oswald_init(void)
        OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;
 
+       OswaldScreens[INFO_SCREEN].event_mask = 0x00; // this one does not consume any events
+       OswaldScreens[INFO_SCREEN].event_func = info_screen_handle_events;
+
        OswaldState.screen_id = IDLE_SCREEN;
        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
 
@@ -214,5 +223,7 @@ void oswald_init(void)
        OswaldAlarm.hour = 12;
        OswaldAlarm.minute = 0;
        OswaldAlarm.wday = 0x00;
+
+       // strcpy(MainMessage, "So koennte dann eine Nachricht aussehen. Samt Text mit Unterlaengen. Und dies ist dann die letzte Zeile und mehr Text als paßt.");
 }