load testing EthernetInterface

Dependencies:   EthernetInterface mbed-rtos mbed

main.cpp

Committer:
okini3939
Date:
2014-01-17
Revision:
1:321b8f934993
Parent:
0:09101c438a45

File content as of revision 1:321b8f934993:

#include "mbed.h"
#include "rtos.h"
#include "EthernetInterface.h"

Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);
EthernetInterface eth;

volatile int count = 0, num = 0, reset = 0;
volatile int ref = 123456; // no rtos = 8727224

extern "C"
void os_idle_demon (void) {
    for (;;) {
        if (reset) {
            count = 0;
            reset = 0;
        } else {
            count ++;
        }
    }
}

void isr_timer () {
    num = count;
    reset = 1;
    myled = 1;
}

void dummy_task (const void *args) {
    volatile int w;
    for (;;) {
        for (w = 0; w < 10000; w ++);
        Thread::wait(10);
    }
}

int main() {
    Ticker timer;

    pc.baud(115200);
    pc.printf("LOAD TESTING\r\n");
    pc.printf("system clock: %d\r\n", SystemCoreClock);

    timer.attach(&isr_timer, 1);

    pc.printf("wait...\r\n");
    while (!num) {
        Thread::wait(100);
    }
    pc.printf("   dummy %d%0.1f dummy      \r\n", num, (float)num / ref * 100);
    num = 0;
    for (;;) {
        if (num) {
            pc.printf("reference count: %d /sec\r\n", num);
            ref = num;
            num = 0;
            break;
        }
        Thread::wait(100);
    }

    pc.printf("ethernet...\r\n");
    eth.init(); //Use DHCP
    if (eth.connect()) {
        pc.printf("error\r\n");
        return -1;
    }
    pc.printf("IP: %s\r\n", eth.getIPAddress());

//    Thread thread1(dummy_task);

    num = 0;
    for (;;) {
        if (num) {
            pc.printf("idle count: %d /sec (%0.1f %%)\r\n", num, (float)num / ref * 100);
            num = 0;
            myled = 0;
        }
        Thread::wait(100);
    }
}