]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_main.c
Bluetooth handling, screen reworks for icons
[oswald.git] / ui / oswald_main.c
index e080a7130aee0a0716809031ac66f12ac0ad8d30..02396d4bddab2205c9077dd4cb3097eabacb0fa1 100644 (file)
@@ -18,6 +18,8 @@ watch_state OswaldState;
 watch_screen OswaldScreens[SCREENS_END];
 power_state OswaldPowerState;
 u8t backlight_safety_off = 0;
 watch_screen OswaldScreens[SCREENS_END];
 power_state OswaldPowerState;
 u8t backlight_safety_off = 0;
+char MainMessage[148];
+
 
 void oswald_change_to_screen(screen_number screen_id)
 {
 
 void oswald_change_to_screen(screen_number screen_id)
 {
@@ -152,6 +154,26 @@ void oswald_handle_ambientlight_event(u8t light_level)
                OswaldState.screen->event_func(EVENT_AMBIENTLIGHT_UPDATE, &light_level);
 }
 
                OswaldState.screen->event_func(EVENT_AMBIENTLIGHT_UPDATE, &light_level);
 }
 
+void oswald_handle_comm_input(uint16_t mlen, const void *mdat)
+{
+       char *icmd = (char *) mdat;
+
+       if (icmd[0] == '$') {
+               if (strncmp(icmd, "$GRT", 4) == 0) { // get current RTC
+                       char rtime[16];
+                       snprintf(rtime, 10, "%02d%02d%02d\n", OswaldClk.hour, OswaldClk.minute, OswaldClk.second);
+                       hal_bluetooth_send_data(rtime, strlen(rtime));
+               } else if (strncmp(icmd, "$MSG", 4) == 0) { // message on main screen
+                       char *msg = (icmd+4);
+                       mlen -= 4;
+                       memset(MainMessage, 0, 148);
+                       strncpy(MainMessage, msg, (mlen > 147) ? 147 : mlen);
+               } else if (strncmp(icmd, "$MCL", 4) == 0) { // clear message
+                       memset(MainMessage, 0, 148);
+               }
+       }
+}
+
 void oswald_init(void)
 {
        OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
 void oswald_init(void)
 {
        OswaldScreens[IDLE_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_ONE_SEC_TIMER;
@@ -172,6 +194,9 @@ void oswald_init(void)
        OswaldScreens[STOP_WATCH_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_CS_TIMER;
        OswaldScreens[STOP_WATCH_SCREEN].event_func = stop_watch_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[ALARM_SCREEN].event_mask = EVENT_USER_BUTTONS | EVENT_HALF_SEC_TIMER;
        OswaldScreens[ALARM_SCREEN].event_func = alarm_handle_events;