]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_main.c
Power saving changes, add new fonts, bitmaps and screens
[oswald.git] / ui / oswald_main.c
index f26603b9e4a085c9947d659cfef4a5f2d21be5e8..2f8583ad104b34c24d12f944afb26f4cb9beb926 100644 (file)
@@ -116,11 +116,15 @@ void oswald_handle_button_press(watch_button button)
                                        break;
                        }
                        OswaldState.screen->event_func(EVENT_SCREEN_DESTROY, NULL);
+#if 0
                        // next screen
                        OswaldState.screen_id++;
                        if (OswaldState.screen_id >= LAST_SCREEN) {
                                OswaldState.screen_id = IDLE_SCREEN;
                        };
+#else
+                       OswaldState.screen_id = IDLE_SCREEN;
+#endif
                        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
                        OswaldState.screen->event_func(EVENT_SCREEN_VISIBLE, NULL);
                        break;
@@ -170,6 +174,9 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat)
                        snprintf(rtime, 16, "#RTC%02d%02d%02d\n", OswaldClk.hour, OswaldClk.minute, OswaldClk.second);
                        hal_bluetooth_send_data(rtime, strlen(rtime));
                } else if (strncmp(icmd, "$SRT", 4) == 0) { // set current RTC
+                       char rtime[16];
+                       snprintf(rtime, 16, "#USP\n");
+                       hal_bluetooth_send_data(rtime, strlen(rtime));
                } else if (strncmp(icmd, "$MSG", 4) == 0) { // message on main screen
                        char *msg = (icmd+4);
                        mlen -= 4;
@@ -181,6 +188,10 @@ void oswald_handle_comm_input(uint16_t mlen, const void *mdat)
                        char rtime[16];
                        snprintf(rtime, 16, "#BAT%d,%d\n", OswaldPowerState.charge_state, OswaldPowerState.percent);
                        hal_bluetooth_send_data(rtime, strlen(rtime));
+               } else if (strncmp(icmd, "$GAL", 4) == 0) { // get ambient light value
+                       char rtime[16];
+                       snprintf(rtime, 16, "#GAL%d\n", hal_amblight_get_val());
+                       hal_bluetooth_send_data(rtime, strlen(rtime));
                }
        }
 }
@@ -190,30 +201,39 @@ void oswald_init(void)
        OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
        OswaldScreens[IDLE_SCREEN].event_func = idle_handle_events;
 
-       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE;
-       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events;
-
-       OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
-       OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events;
+       OswaldScreens[MAIN_MENU_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
+       OswaldScreens[MAIN_MENU_SCREEN].event_func = main_menu_handle_events;
 
        OswaldScreens[ALARM_SETUP_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[ALARM_SETUP_SCREEN].event_func = alarm_setup_events;
 
-       OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS;
-       OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events;
-
        OswaldScreens[STOP_WATCH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_CS_TIMER;
        OswaldScreens[STOP_WATCH_SCREEN].event_func = stop_watch_handle_events;
 
        OswaldScreens[BLUETOOTH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[BLUETOOTH_SCREEN].event_func = bluetooth_screen_events;
 
-       OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
-       OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;
+       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ACCEL_UPDATE;
+       OswaldScreens[ACCEL_DISPLAY_SCREEN].event_func = accel_handle_events;
+
+       OswaldScreens[MESSAGES_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MESSAGES_SCREEN].event_func = messages_screen_handle_events;
+
+       OswaldScreens[MESSAGE_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MESSAGE_SCREEN].event_func = message_screen_handle_events;
 
        OswaldScreens[INFO_SCREEN].event_mask = 0x00; // this one does not consume any events
        OswaldScreens[INFO_SCREEN].event_func = info_screen_handle_events;
 
+       OswaldScreens[DATETIME_SETTING_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
+       OswaldScreens[DATETIME_SETTING_SCREEN].event_func = datetime_setup_events;
+
+       OswaldScreens[MENU_TEST_SCREEN].event_mask = EVENT_USER_BUTTONS;
+       OswaldScreens[MENU_TEST_SCREEN].event_func = test_menu_handle_events;
+
+       OswaldScreens[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
+       OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;
+
        OswaldState.screen_id = IDLE_SCREEN;
        OswaldState.screen = &OswaldScreens[OswaldState.screen_id];
 
@@ -224,6 +244,5 @@ void oswald_init(void)
        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.");
 }