broken EthernetInterface + mbed
Dependencies: EthernetInterface WebSocketClient mbed-rtos mbed
Fork of MPOA_cv5 by
Diff: main.cpp
- Revision:
- 0:5ea574b42acf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue Nov 04 11:06:48 2014 +0000 @@ -0,0 +1,117 @@ +#include "mbed.h" +#include "rtos.h" +#include "EthernetInterface.h" +#include "Websocket.h" + +extern "C" void mbed_mac_address(char *mac) +{ + mac[0] = 0x00; + mac[1] = 0x02; + mac[2] = 0xF7; + mac[3] = 0xFE; + mac[4] = 0xEC; + mac[5] = 0x85; +} + +EthernetInterface eth; +Serial pc(USBTX, USBRX); +DigitalOut led(PTE26, 1); + +bool command(TCPSocketConnection *client, Websocket *ws, char *cmd) +{ + if (strcmp(cmd, "help") == 0) { + char s[] = "Napoveda s prikazy\r\nTak ruzne\r\n"; + client->send_all(s, strlen(s)); + return true; + } + else if (strcmp(cmd, "start") == 0) { + led = 0; + char s[] = "Zapnuto\r\n"; + client->send_all(s, strlen(s)); + return true; + } + else if (strcmp(cmd, "stop") == 0) { + led = 1; + char s[] = "Vypnuto\r\n"; + client->send_all(s, strlen(s)); + return true; + } + else if (strcmp(cmd, "exit") == 0) { + return false; + } + else if (strcmp(cmd, "quit") == 0) { + return false; + } + else if (strncmp(cmd, "ws ", 3) == 0) { + char s[100]; + sprintf(s, "%s rika: '%s'", eth.getIPAddress(), &cmd[3]); + ws->send(s); + return true; + } + else { + char s[] = "Neznamy prikaz\r\n"; + client->send_all(s, strlen(s)); + return true; + } +} + + +int main (void) +{ + char mac[6]; + pc.baud(115200); + + mbed_mac_address(mac); + printf("MAC is %02x:%02x:%02x:%02x:%02x:%02x\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + eth.init(); //Use DHCP + eth.connect(); + printf("IP Address is %s\n", eth.getIPAddress()); + + TCPSocketServer server; + server.bind(23); + server.listen(); + + while (true) { + TCPSocketConnection client; + server.accept(client); + printf("Connection from: %s\n", client.get_address()); + + char s1[] = "\e[2j\aInicializace WS...\r\n"; + char s2[] = "\aVitejte v programu, pro napovedu prosim help.\r\n"; + client.send_all(s1, strlen(s1)); + + Websocket ws("ws://sockets.mbed.org/ws/mpoa/wo"); + ws.connect(); + + client.send_all(s2, strlen(s2)); + + char cmd[100]; + int pos = 0; + bool quit = false; + while (true) { + char c; + int n = client.receive(&c, 1); + if (n <= 0) break; + switch (c) { + case 0x04: + quit = true; + break; + case 0x0A: + break; + case 0x0D: + cmd[pos] = '\0'; + quit = not command(&client, &ws, cmd); + pos = 0; + break; + default: + cmd[pos++] = c; + break; + } + if (quit) break; + } + client.close(); + ws.close(); + } +} +