summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2004-02-14 00:50:30 +0000
committerDimitri Sokolyuk <demon@dim13.org>2004-02-14 00:50:30 +0000
commit43a86fe906925602e8ec7d3c0fbcf3f2e93c0049 (patch)
treecbd64a1a82c97741f92c645d15ac050ccbbb54c6
parent04b11235a420c05bce207fcfe7b5395afbbeb936 (diff)
quick & dirty
-rw-r--r--main.c1
-rw-r--r--output.c106
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 <curses.h>
#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<ASTAT; i++) {
+ if(an[i] > max)
+ max = an[i];
+ }
+ return max;
+}