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_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); }