Nico De Witte / Mbed 2 deprecated tcp_machine_vision_server_single_client

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

main.cpp

Committer:
dwini
Date:
2015-03-05
Revision:
0:bef69e35f486
Child:
1:8efef658d90b

File content as of revision 0:bef69e35f486:

#include "mbed.h"
#include "EthernetInterface.h"
#include "C12832.h"

#define ECHO_SERVER_PORT   6666
#define LCD_LINE_HEIGHT 12
#define DELAY_INDICATION 0

#define STR_FAIL "FAIL"
#define STR_OK "OK"
#define STR_CLEAR "CLEAR"

Serial pc(USBTX,USBRX);
DigitalOut myled(LED1);
C12832 lcd(p5, p7, p6, p8, p11);

PwmOut rOut (p23);
PwmOut gOut (p24);
PwmOut bOut (p25);

void setLcdServerInfo(char * ip) {
    lcd.cls();
    lcd.locate(0,0);
    lcd.printf("IP: %s - Port: %d", ip, ECHO_SERVER_PORT);
}

void setRGB(int r, int g, int b) {
    rOut = r;
    gOut = g;
    bOut = b;
}

void clearRGB(void) {
    setRGB(255, 255, 255);
}

void initRgb(void) {
    rOut.period(0.001);  // set pwm period
    gOut.period(0.001);  // set pwm period
    bOut.period(0.001);  // set pwm period
    
    setRGB(255, 255, 255);
}

void indicateOk(void) {
    setRGB(255, 0, 255);
}

void indicateFail(void) {
    setRGB(0, 255, 255);
}

int main (void) {
    // Init RGB led
    initRgb();
    
    pc.baud(115200);
    EthernetInterface eth;
    printf("Requesting IP address from DHCP\r\n");
    eth.init();         //Use DHCP
    eth.connect();
    printf("IP Address is %s\r\n", eth.getIPAddress());
    printf("Listening on port %d\r\n", ECHO_SERVER_PORT);
    
    // Set ip on LCD
    setLcdServerInfo(eth.getIPAddress());
    
    TCPSocketServer server;
    server.bind(ECHO_SERVER_PORT);
    server.listen();
    
    // Status check
    for (int i = 0; i < 4; i++) {
        indicateOk();
        indicateFail();
    }
    clearRGB();
    
    while (true) {
        printf("Awaiting client connection ...\r\n");
        setLcdServerInfo(eth.getIPAddress());
        lcd.locate(0, LCD_LINE_HEIGHT);
        lcd.printf("Awaiting connection ...");
        
        TCPSocketConnection client;
        server.accept(client);
        //client.set_blocking(false, 5000);   // Timeout after (1.5)s
        
        printf("Client connected: %s\r\n", client.get_address());
        setLcdServerInfo(eth.getIPAddress());
        lcd.locate(0, LCD_LINE_HEIGHT);
        lcd.printf("Client: %s", client.get_address());

        char buffer[256];
        while (true) {
            int n = client.receive(buffer, sizeof(buffer));
            if (n <= 0) {
                break;
            } else {
                if (strcmp(STR_FAIL, buffer) == 0) {
                    printf("Received FAIL\r\n");
                    indicateFail();
                } else if (strcmp(STR_OK, buffer) == 0) {
                    printf("Received OK\r\n");
                    indicateOk();
                } else if (strcmp(STR_CLEAR, buffer) == 0) {
                    printf("Clearing\r\n");
                    clearRGB();
                } else {
                    printf("Unknown message %s\r\n", buffer);
                }
            }
        }
        
        printf("Client disconnected\r\n");        
        client.close();
    }
}