X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=blobdiff_plain;f=ui%2Foswald_screens.c;fp=ui%2Foswald_screens.c;h=9952365145772194891e3f1d4145d5b8f88e8924;hp=1da48271650d94fa394141ae772dce811a75b2d0;hb=84e4829f9f2bbf104d05b4bbb9a2551b3759d792;hpb=6029630643335ebe7dbba2da8e7bf2b5f7a434f9 diff --git a/ui/oswald_screens.c b/ui/oswald_screens.c index 1da4827..9952365 100644 --- a/ui/oswald_screens.c +++ b/ui/oswald_screens.c @@ -48,7 +48,21 @@ __attribute__((__far__)) #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; @@ -117,6 +131,9 @@ event_ret_t idle_handle_events(uint16_t event, void *data) } +/* + * Accelerometer and sensor display screen + */ typedef struct { accel_data_t accdata; } accelscreen_data_t; @@ -128,15 +145,24 @@ void draw_accel_screen(accel_data_t *accel_data) { 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(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_write_string(0, 54, FONT_6x9, "Light:"); - oswald_write_number(50, 54, FONT_6x9, accel_data->z); + 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); + + oswald_draw_pixel(41+25+((accel_data->x * 50) / (254)), 31+25+((accel_data->y * 50) / (254))); hal_lcd_update_display(); } @@ -168,6 +194,9 @@ event_ret_t accel_handle_events(uint16_t event, void *data) } +/* + * Date / time setup screen + */ typedef struct { uint8_t pos; boolean set_mode; @@ -366,9 +395,8 @@ event_ret_t datetime_setup_events(uint16_t event, void *data) /* - * Alarm setup + * Alarm setup screen */ - typedef struct { uint8_t pos; boolean set_mode; @@ -550,7 +578,6 @@ event_ret_t alarm_setup_events(uint16_t event, void *data) /* * Test menu */ - typedef struct { uint8_t menu_pos; } test_menu_t; @@ -625,7 +652,6 @@ event_ret_t test_menu_handle_events(uint16_t event, void *data) /* * Stop Watch */ - typedef struct { uint8_t hr; uint8_t min; @@ -786,7 +812,7 @@ event_ret_t stop_watch_handle_events(uint16_t event, void *data) /* - * when alarm is fired + * Alarm screen, shown when alarm is fired */ void draw_alarm_screen(void) { @@ -832,7 +858,7 @@ event_ret_t alarm_handle_events(uint16_t event, void *data) /* - * Bluetooth screen + * Bluetooth setup screen */ typedef struct { uint8_t pos; @@ -1000,3 +1026,42 @@ event_ret_t bluetooth_screen_events(uint16_t event, void *data) 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; +} +