]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_screens.c
Add version information and info screen, some more work on the accel screen
[oswald.git] / ui / oswald_screens.c
index 1da48271650d94fa394141ae772dce811a75b2d0..9952365145772194891e3f1d4145d5b8f88e8924 100644 (file)
@@ -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;
+}
+