load testing EthernetInterface

Dependencies:   EthernetInterface mbed-rtos mbed

Committer:
okini3939
Date:
Fri Jan 17 09:12:56 2014 +0000
Revision:
0:09101c438a45
Child:
1:321b8f934993
1st build

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:09101c438a45 1 #include "mbed.h"
okini3939 0:09101c438a45 2 #include "rtos.h"
okini3939 0:09101c438a45 3 #include "EthernetInterface.h"
okini3939 0:09101c438a45 4
okini3939 0:09101c438a45 5 Serial pc(USBTX, USBRX);
okini3939 0:09101c438a45 6 DigitalOut myled(LED1);
okini3939 0:09101c438a45 7 EthernetInterface eth;
okini3939 0:09101c438a45 8
okini3939 0:09101c438a45 9 volatile int count = 0, num = 0, reset = 0;
okini3939 0:09101c438a45 10 volatile int ref = 0, refreset = 0; // no rtos = 8727224
okini3939 0:09101c438a45 11
okini3939 0:09101c438a45 12 extern "C"
okini3939 0:09101c438a45 13 void os_idle_demon (void) {
okini3939 0:09101c438a45 14 for (;;) {
okini3939 0:09101c438a45 15 if (reset) {
okini3939 0:09101c438a45 16 count = 0;
okini3939 0:09101c438a45 17 reset = 0;
okini3939 0:09101c438a45 18 } else {
okini3939 0:09101c438a45 19 count ++;
okini3939 0:09101c438a45 20 }
okini3939 0:09101c438a45 21 }
okini3939 0:09101c438a45 22 }
okini3939 0:09101c438a45 23
okini3939 0:09101c438a45 24 void isr_timer () {
okini3939 0:09101c438a45 25 num = count;
okini3939 0:09101c438a45 26 reset = 1;
okini3939 0:09101c438a45 27 refreset = 1;
okini3939 0:09101c438a45 28 myled = 1;
okini3939 0:09101c438a45 29 }
okini3939 0:09101c438a45 30
okini3939 0:09101c438a45 31 void real_count (void const *args) {
okini3939 0:09101c438a45 32 while (!refreset);
okini3939 0:09101c438a45 33 refreset = 0;
okini3939 0:09101c438a45 34 for (;;) {
okini3939 0:09101c438a45 35 if (refreset) {
okini3939 0:09101c438a45 36 count = 0;
okini3939 0:09101c438a45 37 refreset = 0;
okini3939 0:09101c438a45 38 break;
okini3939 0:09101c438a45 39 } else {
okini3939 0:09101c438a45 40 ref ++;
okini3939 0:09101c438a45 41 }
okini3939 0:09101c438a45 42 }
okini3939 0:09101c438a45 43 }
okini3939 0:09101c438a45 44
okini3939 0:09101c438a45 45 int main() {
okini3939 0:09101c438a45 46 Ticker timer;
okini3939 0:09101c438a45 47
okini3939 0:09101c438a45 48 pc.baud(115200);
okini3939 0:09101c438a45 49 pc.printf("LOAD TESTING\r\n");
okini3939 0:09101c438a45 50 pc.printf("system clock: %d\r\n", SystemCoreClock);
okini3939 0:09101c438a45 51
okini3939 0:09101c438a45 52 timer.attach(&isr_timer, 1);
okini3939 0:09101c438a45 53
okini3939 0:09101c438a45 54 pc.printf("wait...\r\n");
okini3939 0:09101c438a45 55 Thread thread(real_count, NULL, osPriorityRealtime);
okini3939 0:09101c438a45 56 while (! ref);
okini3939 0:09101c438a45 57 pc.printf("reference count: %d / sec\r\n", ref);
okini3939 0:09101c438a45 58
okini3939 0:09101c438a45 59 pc.printf("ethernet...\r\n");
okini3939 0:09101c438a45 60 eth.init(); //Use DHCP
okini3939 0:09101c438a45 61 if (eth.connect()) {
okini3939 0:09101c438a45 62 pc.printf("error\r\n");
okini3939 0:09101c438a45 63 return -1;
okini3939 0:09101c438a45 64 }
okini3939 0:09101c438a45 65 pc.printf("IP: %s\r\n", eth.getIPAddress());
okini3939 0:09101c438a45 66
okini3939 0:09101c438a45 67 num = 0;
okini3939 0:09101c438a45 68 for (;;) {
okini3939 0:09101c438a45 69 if (num) {
okini3939 0:09101c438a45 70 pc.printf("idle count: %d / sec (%0.1f %%)\r\n", num, (float)num / ref * 100);
okini3939 0:09101c438a45 71 num = 0;
okini3939 0:09101c438a45 72 myled = 0;
okini3939 0:09101c438a45 73 }
okini3939 0:09101c438a45 74 Thread::wait(100);
okini3939 0:09101c438a45 75 }
okini3939 0:09101c438a45 76 }