#endif
#include "bitmaps/Bluetooth_icon.xbm"
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/info_icon.xbm"
+
+#if defined(__GNUC__) && (__MSP430X__ > 0)
+__attribute__((__far__))
+#endif
+#include "bitmaps/acc_icon.xbm"
+
+
+/*
+ * Common event handler part of the watch faces
+ */
typedef struct {
void (*screendraw_func)(boolean show_seconds);
boolean show_seconds;
}
+/*
+ * Accelerometer and sensor display screen
+ */
typedef struct {
accel_data_t accdata;
} accelscreen_data_t;
void draw_accel_screen(accel_data_t *accel_data)
{
+ uint8_t x,y;
+
hal_lcd_clear_display();
- oswald_write_string(0, 2, FONT_6x9, "X:");
- oswald_write_number(20, 2, FONT_6x9, accel_data->x);
- oswald_write_string(0, 16, FONT_6x9, "Y:");
- oswald_write_number(20, 16, FONT_6x9, accel_data->y);
- oswald_write_string(0, 32, FONT_6x9, "Z:");
- oswald_write_number(20, 32, FONT_6x9, accel_data->z);
+ oswald_draw_bitmap(36, 0, acc_icon_width, acc_icon_height, acc_icon_bits);
- oswald_write_string(0, 54, FONT_6x9, "Light:");
- oswald_write_number(50, 54, FONT_6x9, accel_data->z);
+ oswald_write_string(1, 40, FONT_6x9, "X:");
+ oswald_write_number(15, 40, FONT_6x9, accel_data->x);
+ oswald_write_string(1, 52, FONT_6x9, "Y:");
+ oswald_write_number(15, 52, FONT_6x9, accel_data->y);
+ oswald_write_string(1, 64, FONT_6x9, "Z:");
+ oswald_write_number(15, 64, FONT_6x9, accel_data->z);
+
+ oswald_write_string(1, 85, FONT_6x9, "Light:");
+ oswald_write_number(50, 85, FONT_6x9, 0);
+
+ oswald_draw_line(40, 30, 92, 30);
+ oswald_draw_line(92, 30, 92, 82);
+ oswald_draw_line(40, 82, 92, 82);
+ oswald_draw_line(40, 82, 40, 30);
+
+ x = 41+25+((accel_data->x * 50) / (254));
+ y = 31+25+((accel_data->y * 50) / (254));
+ oswald_draw_pixel(x, y);
+ oswald_draw_pixel(x+1, y);
+ oswald_draw_pixel(x-1, y);
+ oswald_draw_pixel(x, y+1);
+ oswald_draw_pixel(x, y-1);
hal_lcd_update_display();
}
switch (event) {
case EVENT_SCREEN_VISIBLE:
draw_accel_screen(&accel_screen.accdata);
+ hal_accelerometer_enable();
+ return EVENT_RET_HANDLED;
+ break;
+ case EVENT_SCREEN_DESTROY:
+ hal_accelerometer_disable();
return EVENT_RET_HANDLED;
break;
case EVENT_ACCEL_UPDATE: {
}
+/*
+ * Date / time setup screen
+ */
typedef struct {
uint8_t pos;
boolean set_mode;
/*
- * Alarm setup
+ * Alarm setup screen
*/
-
typedef struct {
uint8_t pos;
boolean set_mode;
/*
* Test menu
*/
-
typedef struct {
uint8_t menu_pos;
} test_menu_t;
/*
* Stop Watch
*/
-
typedef struct {
uint8_t hr;
uint8_t min;
/*
- * when alarm is fired
+ * Alarm screen, shown when alarm is fired
*/
void draw_alarm_screen(void)
{
break;
case EVENT_USER_BUTTONS:
dbg_out("button event %d\n", *(int *)data);
- // hal_lcd_set_backlight(FALSE);
- return EVENT_RET_HANDLED;
+ return EVENT_RET_UNHANDLED;
break;
case EVENT_HALF_SEC_TIMER:
hal_lcd_set_backlight(!hal_lcd_get_backlight());
/*
- * Bluetooth screen
+ * Bluetooth setup screen
*/
typedef struct {
uint8_t pos;
return EVENT_RET_HANDLED;
}
+
+/*
+ * Info Screen
+ */
+void draw_info_screen(accel_data_t *accel_data)
+{
+ hal_lcd_clear_display();
+
+ oswald_draw_bitmap(36, 0, info_icon_width, info_icon_height, info_icon_bits);
+
+ oswald_write_string(2, 29, FONT_DROID8x12, "Oswald");
+ oswald_write_string(35, 29, FONT_DROID8x12, OSWALD_VERSION);
+ oswald_write_string(2, 41, FONT_DROID8x12, "HAL");
+ oswald_write_string(35, 41, FONT_DROID8x12, (char *)hal_get_version_string());
+ oswald_write_string(2, 53, FONT_DROID8x12, "Build");
+ oswald_write_string(35, 53, FONT_DROID8x12, (char *)hal_get_buildno_string());
+ oswald_write_string(2, 65, FONT_DROID8x12, "Radio");
+ oswald_write_string(35, 65, FONT_DROID8x12, (char *)hal_get_radio_version_string());
+
+ hal_lcd_update_display();
+}
+
+event_ret_t info_screen_handle_events(uint16_t event, void *data)
+{
+ switch (event) {
+ case EVENT_SCREEN_VISIBLE:
+ draw_info_screen(&accel_screen.accdata);
+ return EVENT_RET_HANDLED;
+ break;
+ case EVENT_USER_BUTTONS:
+ dbg_out("button event %d\n", *(int *)data);
+ break;
+ default:
+ return EVENT_RET_UNHANDLED;
+ break;
+ };
+ return EVENT_RET_UNHANDLED;
+}
+