/*********************************************************************** *@函数名称: sdfuse_dis_key *@功能描述: LCD上左下角显示两行提示字符 *@参数: 无 *@返回: 无 *@备注: 无 **********************************************************************/ void sdfuse_dis_key(void) { #define KEY_AREA_COLORS 0xffffff lcd_fill_rectangle(0, 400, 360, 200, KEY_AREA_COLORS, 0); lcd_draw_string(0, 520, 1, 1, 0, "%s", "Press UP key, Burn all file"); lcd_draw_string(0, 550, 1, 1, 0, "%s", "Press DOWN key, Reset system"); }
void show_traffic(char *dev) { static int prev_traffic[MAX_TRAFFIC_DEVICES][2] = { {0,0}, {0,0}, {0,0} }; static int pos = 0; static int line = 9 * 6; if (is_link_down(dev)) { lcd_draw_string(line, 0, "Link is down"); return; } int prev_tx = prev_traffic[pos][0], prev_rx = prev_traffic[pos][1]; int traffic[2]; get_traffic(dev, traffic); int tx_bytes = traffic[0] - prev_tx, rx_bytes = traffic[1] - prev_rx; char tx_rate[32], rx_rate[32], tx_tmp[32], rx_tmp[32]; convert_bytes_to_rate_string(tx_bytes, tx_tmp); convert_bytes_to_rate_string(rx_bytes, rx_tmp); prev_traffic[pos][0] = traffic[0]; prev_traffic[pos][1] = traffic[1]; sprintf(tx_rate, "%s%s", "t", tx_tmp); sprintf(rx_rate, "%s%s", "r", rx_tmp); lcd_draw_string(line, 0, tx_rate); lcd_draw_string(line, 128 - 8 * strlen(rx_rate), rx_rate); }
void show_mems() { struct sysinfo *sinfo = get_sysinfo(); char tmp[20]; lcd_draw_string(9 * 4, 0, "Mem"); sprintf(tmp, "%0.1f/%0.0fM", sinfo->totalram/1024.0/1024.0 - sinfo->freeram/1024.0/1024.0, sinfo->totalram/1024.0/1024.0 ); lcd_draw_string(9 * 4, 128 - 8 * strlen(tmp), tmp); }
/** * @see http://www.linuxquestions.org/questions/programming-9/load-average-return-values-from-sysinfo-309720/ */ void show_loads() { unsigned long *loads = get_loads(); lcd_draw_string(9 * 1, 0, "Load"); char result[128]; strcpy(result, ""); int i; for (i = 0; i < 3; i++) { char tmp[16]; sprintf(tmp, " %0.1f", loads[i]/65536.0); strcat(result, tmp); } lcd_draw_string(9 * 1, 128 - 8 * strlen(result), result); }
void skin_draw_header_text(Skin *skin, char *text, SDL_Surface *target) { lcd_draw_string(&skin->font1, text, target, gmu_widget_get_pos_x(&skin->header, 1), gmu_widget_get_pos_y(&skin->header, 0) + (gmu_widget_get_height(&skin->header, 0) - skin->font1_char_height) / 2); }
/** * \brief Starts the calibration routines and displays user instructions on screen. * * \return 0 if calibration is successful, else 1. */ uint32_t rtouch_calibrate(void) { uint32_t i; uint32_t x, y; /* Print user instructions */ lcd_fill(UNI_COLOR_WHITE); lcd_set_foreground_color(UNI_COLOR_BLACK); lcd_draw_string(30, 60, (uint8_t *)"LCD calibration"); lcd_draw_string(1, 190, (uint8_t *)"Touch the dots to\ncalibrate the screen"); /* Calibration points */ for (i = 0; i < 5; i++) { draw_calibration_point(&gs_calibration_points[i].panel); /* Wait for touch & end of conversion */ rtouch_wait_pressed(); rtouch_get_raw_point(&x, &y); gs_calibration_points[i].raw.x = x; gs_calibration_points[i].raw.y = y; clear_calibration_point(&gs_calibration_points[i].panel); /* Wait for contact loss */ rtouch_wait_released(); } if (rtouch_compute_calibration((rtouch_calibration_point_t *) &gs_calibration_points) == 0) { lcd_fill(UNI_COLOR_WHITE); lcd_set_foreground_color(UNI_COLOR_BLACK); lcd_draw_string(20, 130, (uint8_t *)"Calibration done."); return 0; } else { lcd_fill(UNI_COLOR_WHITE); lcd_set_foreground_color(UNI_COLOR_BLACK); lcd_draw_string(10, 100, (uint8_t *)"Calibration failed!"); lcd_draw_string(10, 190, (uint8_t *)"Please try again..."); /* Wait for contact loss */ rtouch_wait_released(); return 1; } }
void show_uptime() { char result[128]; strcpy(result, ""); long uptime = get_uptime(); long day = uptime / (24 * 60 * 60); long hour = (uptime / (60 * 60) - day * 24); long minute = ((uptime / 60) - day * 24 * 60 - hour * 60); long second = (uptime - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60); lcd_draw_string(9 * 2, 0, "Uptime"); if (day > 0) { char tmp[10]; sprintf(tmp, "%ldd", day); strcat(result, tmp); } if (day > 0 || hour > 0) { char tmp[10]; sprintf(tmp, "%ldh", hour); strcat(result, tmp); } if (minute > 0) { char tmp[10]; sprintf(tmp, "%ldm", minute); strcat(result, tmp); } if (hour <= 0 && second > 0) { char tmp[3]; sprintf(tmp, "%lds", second); strcat(result, tmp); } lcd_draw_string(9 * 2, 128 - 8 * strlen(result), result); }
void sample_adc_channel(uint8_t channel){ ADMUX &= ~((1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0)); // Clear ADC Mux Bits if(channel == 1){ ADMUX |= (1<<MUX0); // setup ADC Channel 1 uint16_t adcVal; char valueIn[4]; lcd_draw_string(0, 0, "ADXL335 Readings: " , buffer); ADCSRA |= (1 << ADSC); // Start a new conversion, adcVal = ADC; // 10 bit reading itoa(adcVal, valueIn, 10); lcd_draw_string(0,2, "X: " , buffer); lcd_draw_string(13, 2, valueIn, buffer); } else if(channel == 2){ ADMUX |= (1<<MUX1); // setup ADC Channel 2 uint16_t adcVal; char valueIn[4]; ADCSRA |= (1 << ADSC); // Start a new conversion, adcVal = ADC; // 10 bit reading itoa(adcVal, valueIn, 10); lcd_draw_string(0, 3, "Y: ", buffer); lcd_draw_string(13, 3, valueIn, buffer); } else if(channel == 3){ ADMUX |= ((1<<MUX1)|(1<<MUX0)); // setup ADC Channel 3 uint16_t adcVal; char valueIn[4]; ADCSRA |= (1 << ADSC); // Start a new conversion, adcVal = ADC; // 10 bit reading itoa(adcVal, valueIn, 10); lcd_draw_string(0, 4, "Z: ", buffer); lcd_draw_string(13, 4, valueIn, buffer); } }
void show_traffic(int pos, char *dev, char *name) { static int prev_traffic[MAX_TRAFFIC_DEVICES][2] = { {0,0}, {0,0}, {0,0} }; static int traffic_loaded[MAX_TRAFFIC_DEVICES] = { 0 }; int y = pos * 9 + 19; if (is_link_down(dev)) { lcd_draw_string(0, y, name); lcd_draw_string(33, y, "link is down"); return; } int prev_tx = prev_traffic[pos][0], prev_rx = prev_traffic[pos][1]; int traffic[2]; get_traffic(dev, traffic); //printf("traffic %d, %d\n", traffic[0], traffic[1]); int tx_bytes = traffic[0] - prev_tx, rx_bytes = traffic[1] - prev_rx; char tx_rate[10], rx_rate[10]; convert_bytes_to_rate_string(tx_bytes, tx_rate); convert_bytes_to_rate_string(rx_bytes, rx_rate); prev_traffic[pos][0] = traffic[0]; prev_traffic[pos][1] = traffic[1]; if (traffic_loaded[pos] == 0) { lcd_draw_string(0, y, name); lcd_draw_string(33, y, " "); // clear link is down text lcd_draw_image(33, y, 1, 7, arrow_up); lcd_draw_image(82, y, 1, 7, arrow_down); traffic_loaded[pos] = 1; } lcd_draw_string(39, y, tx_rate); lcd_draw_string(88, y, rx_rate); }
void pl_browser_draw(PlaylistBrowser *pb, SDL_Surface *sdl_target) { int i = 0; char buf[64]; Entry *pl_entry; int number_of_visible_lines = skin_textarea_get_number_of_lines((Skin *)pb->skin); int len = (skin_textarea_get_characters_per_line((Skin *)pb->skin) > 63 ? 63 : skin_textarea_get_characters_per_line((Skin *)pb->skin)); int selected_entry_drawn = 0; snprintf(buf, 63, "Playlist (%d %s)", gmu_core_playlist_get_length(), gmu_core_playlist_get_length() != 1 ? "entries" : "entry"); skin_draw_header_text((Skin *)pb->skin, buf, sdl_target); if (pb->first_visible_entry == NULL || pb->offset == 0) { pb->first_visible_entry = gmu_core_playlist_get_first(); } pb->longest_line_so_far = 0; pl_entry = pb->first_visible_entry; for (i = pb->offset; i < pb->offset + number_of_visible_lines && i < gmu_core_playlist_get_length() && pl_entry != NULL; i++) { char c = (playlist_get_played(pl_entry) ? 'o' : ' '); char *entry_name = gmu_core_playlist_get_entry_name(pl_entry); char *format = "%c%3d"; int l = gmu_core_playlist_get_length(); int line_length = strlen(entry_name); LCD *font, *font_inverted; if (line_length > pb->longest_line_so_far) pb->longest_line_so_far = line_length; if (l > 999 && l <= 9999) format = "%c%4d"; if (l > 9999) format = "%c%5d"; if (playlist_entry_get_queue_pos(pl_entry) == 0) snprintf(buf, len, format, (pl_entry == gmu_core_playlist_get_current() ? '*' : c), i + 1); else snprintf(buf, len, "%cQ:%d", (pl_entry == gmu_core_playlist_get_current() ? '*' : c), playlist_entry_get_queue_pos(pl_entry)); if (i == pb->offset + number_of_visible_lines - 1 && !selected_entry_drawn) pb->selection = i; font = (LCD *)(i == pb->selection ? &pb->skin->font2 : &pb->skin->font1); font_inverted = (LCD *)(i == pb->selection ? &pb->skin->font1 : &pb->skin->font2); if (i == pb->selection) selected_entry_drawn = 1; lcd_draw_string(font, buf, sdl_target, gmu_widget_get_pos_x((GmuWidget *)&pb->skin->lv, 1), gmu_widget_get_pos_y((GmuWidget *)&pb->skin->lv, 1) + 1 + (i-pb->offset) * (pb->skin->font2_char_height + 1)); lcd_draw_string_with_highlight(font, font_inverted, entry_name, pb->horiz_offset, sdl_target, gmu_widget_get_pos_x((GmuWidget *)&pb->skin->lv, 1) + pb->skin->font1_char_width * 7, gmu_widget_get_pos_y((GmuWidget *)&pb->skin->lv, 1) + 1 + (i-pb->offset)*(pb->skin->font2_char_height+1), skin_textarea_get_characters_per_line((Skin *)pb->skin)-6, RENDER_ARROW); pl_entry = playlist_get_next(pl_entry); } }
void show_ip(char *dev) { char *ip = get_ip(dev); lcd_draw_string(9 * 5, 0, "IP"); lcd_draw_string(9 * 5, 128 - 8 * strlen(ip), ip); }
void show_hostname() { char hostname[50]; gethostname(hostname, sizeof(hostname)); lcd_draw_string(0, 0, hostname); }
void show_time() { char tmp[10]; sprintf(tmp, "%5s", get_cmd_result("date '+%H:%M'")); lcd_draw_string(0, 128 - 8 * strlen(tmp), tmp); }