void render_battery(int x,int y,int level) { uint16 image_data[384]; // 24*16 // only move bat level, if there's a big difference to prevent flickering. level = (((float) level)/100)*23; uint16 level_delta = level-last_batlevel; if(level_delta < 0) level_delta = 0-level_delta; if(level_delta <= 1) level = last_batlevel; last_batlevel = level; for(int x=0;x<24;x++) { for(int y=0;y<16;y++) { int16 render_value = battery_mask[y][x]; if(x <= level) { if(render_value > 0) render_value = 0xF1FF - (2081*(render_value-1)); else render_value = header_color;// HEADER_COLOR; // header background } if(x > level) { if(render_value > 0) render_value = BACKGROUND_COLOR; //6243 - (2081*(render_value-1)); else render_value = header_color;//HEADER_COLOR; // header background } image_data[(y*24)+x] = render_value; } } display_draw_image(104,0,24,16,image_data); }
void display_gui_about (void (*callback) (void)) { gui_about_callback = callback; current_screen = display_gui_screen_about; display_gui_button_bar_visible = false; display_clear(); display_draw_image (0, 2, image_logo); display_draw_string_delayed (62, 5, 2, "ALMOND", 400); display_draw_string_delayed (62, 22, 0, "Autonomous", 100); display_draw_string_delayed (62, 30, 0, "Logging And", 100); display_draw_string_delayed (62, 38, 0, "Management", 100); display_draw_string_delayed (62, 46, 0, "Of Network", 100); display_draw_string_delayed (62, 54, 0, "Devices", 100); display_gui_sleep (2000); display_clear(); display_draw_string_delayed (30, 30, 0, "starring", 100); display_gui_sleep (1000); static const uint8_t *images[] = {team_salomon, team_linus, team_maximilian, team_sean, team_stefan, team_matthias, team_pascal, team_thomas, team_christian, NULL}; static const char *names[] = {"Salomon", "Linus", "Maxi", "Sean", "Stefan", "Matthias", "Pascal", "Thomas", "Christian", NULL}; static const char *assignments[] = {"Protocols", "Drivers, Nut", "Hardware", "Pong, SD", "Gui, Bluetooth", "Backend, Gui", "Gui EMU, Docu", "Documentation", "Backend", NULL}; uint8_t current_person = 0; while (images[current_person] != NULL) { display_clear(); display_draw_image (0, 0, images[current_person]); display_draw_string_delayed (45, 20, 2, names[current_person], CREDITS_CHARACTER_DELAY); display_draw_string_delayed (45, 38, 0, assignments[current_person], CREDITS_CHARACTER_DELAY); display_gui_sleep (CREDITS_DELAY); current_person++; } gui_about_callback(); }
void display_gui_image (const uint8_t* image, void (*callback) (void)) { current_screen = display_gui_screen_fullscreenimage; gui_image_callback = callback; display_gui_a_function = "Dismiss"; display_gui_b_function = ""; display_gui_left_available = false; display_gui_up_available = false; display_gui_right_available = false; display_gui_down_available = false; display_gui_button_bar_visible = true; display_clear(); display_draw_image (0, 0, image); }
void display_gui_standby () { rtc_init(); set_time(1291482141); current_screen = display_gui_screen_standby; display_gui_button_bar_visible = false; display_clear(); display_draw_string(DISPLAY_WIDTH/2-17,2,0,"Almond"); display_draw_string(DISPLAY_WIDTH-13,2,0,"3G"); display_draw_image(DISPLAY_WIDTH-13,2,bluetooth); display_draw_string(20,DISPLAY_HEIGHT-10,0,"32C"); display_draw_rect(18,DISPLAY_HEIGHT-12,37,DISPLAY_HEIGHT-2,false); display_draw_string(43,DISPLAY_HEIGHT-10,0,"1024hPa"); display_draw_rect(42,DISPLAY_HEIGHT-12,84,DISPLAY_HEIGHT-2,false); display_draw_string(90,DISPLAY_HEIGHT-10,0,"35%"); display_draw_rect(88,DISPLAY_HEIGHT-12,108,DISPLAY_HEIGHT-2,false); display_draw_string(4,DISPLAY_HEIGHT-40,0,"A delightful status\n"); display_draw_string(4,DISPLAY_HEIGHT-30,0,""); uint32_t current_timestamp = get_time(); struct time_struct current_time; char time[6]; timestamp_to_time(current_timestamp, 3600, ¤t_time); sprintf(time,"%02d:%02d",current_time.tm_hour,current_time.tm_min); display_draw_string(DISPLAY_WIDTH/2-22,10,2,time); }
/** * Draw a battery sign on the screen * * @param x X location on screen * @param y Y location on screen * @param level level of charge in percent * @param charging display charging symbol or not */ void render_battery(int x,int y,int level,int charging) { uint16 image_data[384]; // 24*16 // only move bat level, if there's a big difference to prevent flickering. //level = (((float) level)/100)*23; // rescale level based upon our new shut-down level of 25% int lfactor; lfactor = level - ((100 - level)/3); level = (((float) lfactor)/100)*23; uint16 level_delta = level-last_batlevel; if(level_delta < 0) level_delta = 0-level_delta; if(level_delta <= 1) level = last_batlevel; last_batlevel = level; for(int x=0;x<24;x++) { for(int y=0;y<16;y++) { int16 render_value; if(!charging) render_value = battery_mask[y][x]; else render_value = battery_mask_chg[y][x]; if(render_value != 9) { if(x <= level) { if(render_value > 0) render_value = 0xF1FF - (2081*(render_value-1)); else render_value = header_color;// HEADER_COLOR; // header background } if(x > level) { if(render_value > 0) render_value = BACKGROUND_COLOR; //6243 - (2081*(render_value-1)); else render_value = header_color;//HEADER_COLOR; // header background } } if(render_value == 9) render_value = 0xF1F0 - (2001*(render_value-1)); image_data[(y*24)+x] = render_value; } } display_draw_image(104,0,24,16,image_data); }
void render_lock(bool on) { if((on == lock_state) && (on != true)) return; lock_state = on; uint16 image_data[88]; // 8*11 for(int x=0;x<8;x++) { for(int y=0;y<11;y++) { int16 render_value = lock_mask[y][x]; if(render_value > 0) render_value = 0xFFFF; else render_value = 0; if(on == false) render_value = 0; image_data[(y*8)+x] = render_value; } } display_draw_image(128-8,128-11,8,11,image_data); }
void display_gui_draw_button_bar (void) { // Clear background display_set_inverted (true); display_draw_rect (0, BUTTON_INFO_BAR_TOP - 1, DISPLAY_WIDTH, DISPLAY_HEIGHT - 1, true); display_set_inverted (false); // Arrows panel if (display_gui_right_available || display_gui_left_available || display_gui_up_available || display_gui_down_available) { display_draw_rect (0, BUTTON_INFO_BAR_TOP, 29, DISPLAY_HEIGHT, true); display_set_pixel (0, BUTTON_INFO_BAR_TOP, false); display_set_pixel (29, BUTTON_INFO_BAR_TOP, false); } // A-Button panel if (strcmp (display_gui_a_function, "")) { display_draw_rect (31, BUTTON_INFO_BAR_TOP, 31 + 48, DISPLAY_HEIGHT, true); display_set_pixel (31, BUTTON_INFO_BAR_TOP, false); display_set_pixel (31 + 48, BUTTON_INFO_BAR_TOP, false); } // B-Button panel if (strcmp (display_gui_b_function, "")) { display_draw_rect (81, BUTTON_INFO_BAR_TOP, 127, DISPLAY_HEIGHT, true); display_set_pixel (81, BUTTON_INFO_BAR_TOP, false); display_set_pixel (127, BUTTON_INFO_BAR_TOP, false); } // A/B Functions display_set_inverted (true); display_draw_string (32, BUTTON_INFO_BAR_TOP + 1, 0, display_gui_a_function); display_draw_string (82, BUTTON_INFO_BAR_TOP + 1, 0, display_gui_b_function); // Arrows uint8_t current_x = 0; if (display_gui_left_available) { display_draw_image (current_x, BUTTON_INFO_BAR_TOP + 1, arrow_left); current_x += 8; } if (display_gui_right_available) { display_draw_image (current_x, BUTTON_INFO_BAR_TOP + 1, arrow_right); current_x += 8; } if (display_gui_up_available) { display_draw_image (current_x, BUTTON_INFO_BAR_TOP + 1, arrow_up); current_x += 8; } if (display_gui_down_available) { display_draw_image (current_x, BUTTON_INFO_BAR_TOP + 1, arrow_down); } display_set_inverted (false); }