#ifndef _OSWALD_H
#define _OSWALD_H
+#define DEBUG 1
+#ifdef DEBUG
+#define dbg_out( args... ) fprintf(stderr, args)
+#else
+#define dbg_out( args... ) do {} while (0)
+#endif
+
typedef signed char s8t;
typedef unsigned char u8t;
typedef signed short s16t;
typedef enum {
IDLE_SCREEN = 0,
- SETTING_DATETIME_SCREEN,
+ ACCEL_DISPLAY_SCREEN,
+ DATETIME_SETTING_SCREEN,
+ MENU_TEST_SCREEN,
// SCREEN2_SCREEN,
// SCREEN3_SCREEN,
// APPLICATION_SCREEN,
BUTTON_F,
} watch_button;
+#define EVENT_SCREEN_VISIBLE (1<<0) // screen just became visible
+#define EVENT_SCREEN_DESTROY (1<<1) // screen is destroyed
+#define EVENT_ONE_SEC_TIMER (1<<2)
+#define EVENT_MS_TIMER (1<<3)
+#define EVENT_USER_BUTTONS (1<<4)
+#define EVENT_ACCEL_UPDATE (1<<5)
+#define EVENT_AMBIENTLIGHT_UPDATE (1<<6)
+#define EVENT_POWER_CHANGE (1<<7)
+#define EVENT_COMMS (1<<8)
+
typedef struct {
- void (*button_func)(watch_button button);
+ u16t event_mask; // the event the screen wants to receive
+ void (*event_func)(u16t event, void *data); // callback for events
+ void *user_data;
} watch_screen;
typedef struct {
- screen_number screen;
- // void (*draw_watchface_func)(boolean show_seconds);
- boolean idle_show_seconds;
- void (*user_button_func)(watch_button button);
- void (*user_screendraw_func)(void);
+ screen_number screen_id;
+ watch_screen *screen; // the current screen
+ boolean pending_idle;
} watch_state;
#endif