From 43a86fe906925602e8ec7d3c0fbcf3f2e93c0049 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 14 Feb 2004 00:50:30 +0000 Subject: quick & dirty --- main.c | 1 + output.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 92 insertions(+), 15 deletions(-) diff --git a/main.c b/main.c index 36ad8cd..febe505 100644 --- a/main.c +++ b/main.c @@ -32,6 +32,7 @@ int main(int argc, char **argv) { exit(2); initscr(); + curs_set(0); if_init(arg); if_stat(); diff --git a/output.c b/output.c index 51d46dd..c0c36c2 100644 --- a/output.c +++ b/output.c @@ -17,40 +17,89 @@ #include #include "main.h" +#define XPOS 10 +#define YPOS 5 +#define ASTAT 30 u_long delta(u_long, u_long *); -u_long ani[60]; -u_long ano[60]; +void av(u_long, u_long, u_int); +u_int getmax(u_long *); + +u_long ani[ASTAT]; +u_long ano[ASTAT]; +u_long api[ASTAT]; +u_long apo[ASTAT]; +u_long ilast = 0, olast = 0; int out(struct ifdata *diff) { extern struct ifdata ifdata; + u_long dli, dlo; WINDOW *scr; move(0,0); -// clear(); - printw("IF: %s\n", ifdata.xname); - printw("BR: %d Mbps\n\n", ifdata.baudrate / 1000000); + mvprintw(YPOS, XPOS, + "IF: %s\n", ifdata.xname); + mvprintw(YPOS, XPOS + 25, + "BR: %d Mbps\n", ifdata.baudrate / 1000000); +/* + mvprintw(YPOS + 2, XPOS, + "RX: %3lu kBps\n", diff->ibytes / 1024); + mvprintw(YPOS + 3, XPOS, + "RA: %3i kBps\n", delta(diff->ibytes, ani) / 1024); + + mvprintw(YPOS + 2, XPOS + 25, + "TX: %3lu kBps\n", diff->obytes / 1024); + mvprintw(YPOS + 3, XPOS + 25, + "TA: %3i kBps\n", delta(diff->obytes, ano) / 1024); + + mvprintw(YPOS + 5, XPOS, + "RX: %3lu pps\n", diff->ipackets); + mvprintw(YPOS + 6, XPOS, + "RA: %3lu pps\n", delta(diff->ipackets, api)); + + mvprintw(YPOS + 5, XPOS + 25, + "TX: %3lu pps\n", diff->opackets); + mvprintw(YPOS + 6, XPOS + 25, + "TA: %3lu pps\n", delta(diff->opackets, apo)); + + mvprintw(YPOS + 8, XPOS, + "RX: %lu MB\n", ifdata.ibytes / (1024 * 1024)); + mvprintw(YPOS + 8, XPOS + 25, + "TX: %lu MB\n", ifdata.obytes / (1024 * 1024)); +*/ - printw("RX: %lu kBps\n", diff->ibytes / 1024); - printw("RX: %i kBpm\n\n", delta(diff->ibytes, ani) / 1024); + dli = delta(diff->ibytes, ani); + dlo = delta(diff->obytes, ano); - printw("TX: %lu kBps\n", diff->obytes / 1024); - printw("TX: %i kBpm\n\n", delta(diff->obytes, ano) / 1024); + mvprintw(YPOS + 2, XPOS, + "/0 /.1 /.2 /.3 /.4 /.5 /.6 /.7 /.8 /.9 /1 x %3lu kBps", + getmax(ani) / 1024); + mvprintw(YPOS + 3, XPOS - 3, + "RX --------------------------------------------------- %3lu kBps", + diff->ibytes / 1024); + move(YPOS + 3, XPOS); + av(diff->ibytes / 1024, ilast, getmax(ani) / 1024); - printw("RX: %lu pps\n", diff->ipackets); - printw("TX: %lu pps\n\n", diff->opackets); + mvprintw(YPOS + 8, XPOS, + "/0 /.1 /.2 /.3 /.4 /.5 /.6 /.7 /.8 /.9 /1 x %3lu kBps", + getmax(ano) / 1024); + mvprintw(YPOS + 9, XPOS - 3, + "TX --------------------------------------------------- %3lu kBps", + diff->obytes / 1024); + move(YPOS + 9, XPOS); + av(diff->obytes / 1024, olast, getmax(ano) / 1024); - printw("RX: %lu MB\n", ifdata.ibytes / (1024 * 1024)); - printw("TX: %lu MB\n", ifdata.obytes / (1024 * 1024)); + ilast = diff->ibytes / 1024; + olast = diff->obytes / 1024; refresh(); } u_long delta(u_long n, u_long *an) { u_long nsum = 0; - int i, del = 60; - for (i=59; i>0; i--) { + int i, del = ASTAT; + for (i=ASTAT - 1; i>0; i--) { an[i] = an[i-1]; nsum += an[i]; if (an[i] == 0) @@ -60,3 +109,30 @@ u_long delta(u_long n, u_long *an) { nsum += n; return (nsum / del); } + +void av(u_long bytes, u_long avbytes, u_int max) { + u_int b, avb, i, min; + if (max != 0) { + b = bytes * 50 / max; + avb = avbytes * 50 / max; + min = ((bytes < avbytes)?bytes:avbytes) * 50 / max; + for (i = 0; i < min; i++) + addch('='); + if (b > avb) + for (i = min; i < b; i++) + addch(ACS_RARROW); + else + for (i = min; i < avb; i++) + addch(ACS_LARROW); + } +} + +u_int getmax(u_long *an) { + int i; + u_int max = 0; + for (i=0; i max) + max = an[i]; + } + return max; +} -- cgit v1.2.3