#include <string.h>
#include <stdint.h>
+#define OSWALD_VERSION "v0.3"
+
//#define DEBUG 1
#ifdef DEBUG
#define dbg_out( args... ) fprintf(stderr, args)
#define dbg_out( args... ) do {} while (0)
#endif
-typedef signed char s8t;
-typedef unsigned char u8t;
-typedef signed short s16t;
-typedef unsigned short u16t;
-typedef u8t boolean;
+typedef uint8_t boolean;
#ifdef TRUE
#undef TRUE
#endif
#endif
typedef struct {
- u8t hour;
- u8t minute;
- u8t second;
- u8t day;
- u8t wday; // day in week, 0=sunday, 1=monday,...
- u8t month;
- u16t year;
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t second;
+ uint8_t day;
+ uint8_t wday; // day in week, 0=sunday, 1=monday,...
+ uint8_t month;
+ uint16_t year;
boolean clk24hr;
boolean day_first;
} clock_state;
#define WDAY_FRIDAY (1 << 5)
#define WDAY_SATURDAY (1 << 6)
typedef struct {
- u8t hour;
- u8t minute;
- u8t wday; // bitfield 0 to 6, 1=sunday, 2=monday, 4=tuesday...
+ uint8_t hour;
+ uint8_t minute;
+ uint8_t wday; // bitfield 0 to 6, 1=sunday, 2=monday, 4=tuesday...
} alarm_clk;
typedef enum {
STOP_WATCH_SCREEN,
BLUETOOTH_SCREEN,
ACCEL_DISPLAY_SCREEN,
- MENU_TEST_SCREEN,
-// APPLICATION_SCREEN,
+ INFO_SCREEN,
LAST_SCREEN, // a marker for the last (not valid) screen)
+ MENU_TEST_SCREEN,
+ APPLICATION_SCREEN,
DATETIME_SETTING_SCREEN,
ALARM_SCREEN,
SCREENS_END,
#define EVENT_COMMS (1<<9) // communication, like Bluetooth I/O
#define EVENT_POWER_STATE (1<<10) // power source changed or similar
+typedef enum {
+ EVENT_RET_UNHANDLED = 0,
+ EVENT_RET_HANDLED,
+ EVENT_RET_ERR
+} event_ret_t;
typedef struct {
- u16t event_mask; // the event the screen wants to receive
- void (*event_func)(u16t event, void *data); // callback for events
+ uint16_t event_mask; // the event the screen wants to receive
+ event_ret_t (*event_func)(uint16_t event, void *data); // callback for events
void *user_data;
} watch_screen;
} watch_state;
typedef struct {
- u8t x;
- u8t y;
- u8t z;
+ int8_t x;
+ int8_t y;
+ int8_t z;
} accel_data_t;
#define POWER_SOURCE_BATTERY 0
#define POWER_CHARGER_UNK 3
typedef struct {
- u8t source;
- u8t charge_state;
- u8t percent;
- u16t level;
+ uint8_t source;
+ uint8_t charge_state;
+ uint8_t percent;
+ uint16_t level;
} power_state;
typedef enum {