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)
{
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;
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;