Simple program to determine Ethernet Rx bandwidth

Committer:
simon
Date:
Fri Feb 25 16:03:40 2011 +0000
Revision:
0:35df02818f6d

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:35df02818f6d 1 #include "mbed.h"
simon 0:35df02818f6d 2 #include "Ethernet.h"
simon 0:35df02818f6d 3
simon 0:35df02818f6d 4 Ethernet eth;
simon 0:35df02818f6d 5
simon 0:35df02818f6d 6 #define NPACKETS 100000
simon 0:35df02818f6d 7
simon 0:35df02818f6d 8 int main() {
simon 0:35df02818f6d 9 printf("Hello Ethernet Rx Benchmark!\n");
simon 0:35df02818f6d 10
simon 0:35df02818f6d 11 char buffer[0x600];
simon 0:35df02818f6d 12 int size = 0;
simon 0:35df02818f6d 13
simon 0:35df02818f6d 14 char buf[6] = {0};
simon 0:35df02818f6d 15 eth.address(buf);
simon 0:35df02818f6d 16 printf("mbed MAC: %02hx:%02hx:%02hx:%02hx:%02hx:%02hx\n",
simon 0:35df02818f6d 17 buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
simon 0:35df02818f6d 18
simon 0:35df02818f6d 19 while(!eth.link());
simon 0:35df02818f6d 20
simon 0:35df02818f6d 21 printf("Waiting for %d packets...\n", NPACKETS);
simon 0:35df02818f6d 22
simon 0:35df02818f6d 23 Timer t;
simon 0:35df02818f6d 24 int n = 0;
simon 0:35df02818f6d 25 for(int i=0; i<NPACKETS; i++) {
simon 0:35df02818f6d 26 do {
simon 0:35df02818f6d 27 size = eth.receive();
simon 0:35df02818f6d 28 } while(size <= 0);
simon 0:35df02818f6d 29 eth.read(buffer, size);
simon 0:35df02818f6d 30 n += size;
simon 0:35df02818f6d 31 }
simon 0:35df02818f6d 32 t.stop();
simon 0:35df02818f6d 33 printf("Time = %.2f seconds\n", t.read());
simon 0:35df02818f6d 34
simon 0:35df02818f6d 35 float bw = n * 8 / t.read();
simon 0:35df02818f6d 36 printf("bandwidth = %.2f kbps\n", bw / 1024.0);
simon 0:35df02818f6d 37
simon 0:35df02818f6d 38 }