broken EthernetInterface + mbed
Dependencies: EthernetInterface WebSocketClient mbed-rtos mbed
Fork of MPOA_cv5 by
main.cpp@1:608807b39972, 2014-11-13 (annotated)
- Committer:
- alpov
- Date:
- Thu Nov 13 20:55:35 2014 +0000
- Revision:
- 1:608807b39972
- Parent:
- 0:5ea574b42acf
demo for mbed fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alpov | 0:5ea574b42acf | 1 | #include "mbed.h" |
alpov | 0:5ea574b42acf | 2 | #include "rtos.h" |
alpov | 0:5ea574b42acf | 3 | #include "EthernetInterface.h" |
alpov | 0:5ea574b42acf | 4 | #include "Websocket.h" |
alpov | 0:5ea574b42acf | 5 | |
alpov | 0:5ea574b42acf | 6 | extern "C" void mbed_mac_address(char *mac) |
alpov | 0:5ea574b42acf | 7 | { |
alpov | 0:5ea574b42acf | 8 | mac[0] = 0x00; |
alpov | 0:5ea574b42acf | 9 | mac[1] = 0x02; |
alpov | 0:5ea574b42acf | 10 | mac[2] = 0xF7; |
alpov | 0:5ea574b42acf | 11 | mac[3] = 0xFE; |
alpov | 0:5ea574b42acf | 12 | mac[4] = 0xEC; |
alpov | 0:5ea574b42acf | 13 | mac[5] = 0x85; |
alpov | 0:5ea574b42acf | 14 | } |
alpov | 0:5ea574b42acf | 15 | |
alpov | 0:5ea574b42acf | 16 | EthernetInterface eth; |
alpov | 0:5ea574b42acf | 17 | Serial pc(USBTX, USBRX); |
alpov | 0:5ea574b42acf | 18 | DigitalOut led(PTE26, 1); |
alpov | 0:5ea574b42acf | 19 | |
alpov | 0:5ea574b42acf | 20 | bool command(TCPSocketConnection *client, Websocket *ws, char *cmd) |
alpov | 0:5ea574b42acf | 21 | { |
alpov | 0:5ea574b42acf | 22 | if (strcmp(cmd, "help") == 0) { |
alpov | 0:5ea574b42acf | 23 | char s[] = "Napoveda s prikazy\r\nTak ruzne\r\n"; |
alpov | 0:5ea574b42acf | 24 | client->send_all(s, strlen(s)); |
alpov | 0:5ea574b42acf | 25 | return true; |
alpov | 0:5ea574b42acf | 26 | } |
alpov | 0:5ea574b42acf | 27 | else if (strcmp(cmd, "start") == 0) { |
alpov | 0:5ea574b42acf | 28 | led = 0; |
alpov | 0:5ea574b42acf | 29 | char s[] = "Zapnuto\r\n"; |
alpov | 0:5ea574b42acf | 30 | client->send_all(s, strlen(s)); |
alpov | 0:5ea574b42acf | 31 | return true; |
alpov | 0:5ea574b42acf | 32 | } |
alpov | 0:5ea574b42acf | 33 | else if (strcmp(cmd, "stop") == 0) { |
alpov | 0:5ea574b42acf | 34 | led = 1; |
alpov | 0:5ea574b42acf | 35 | char s[] = "Vypnuto\r\n"; |
alpov | 0:5ea574b42acf | 36 | client->send_all(s, strlen(s)); |
alpov | 0:5ea574b42acf | 37 | return true; |
alpov | 0:5ea574b42acf | 38 | } |
alpov | 0:5ea574b42acf | 39 | else if (strcmp(cmd, "exit") == 0) { |
alpov | 0:5ea574b42acf | 40 | return false; |
alpov | 0:5ea574b42acf | 41 | } |
alpov | 0:5ea574b42acf | 42 | else if (strcmp(cmd, "quit") == 0) { |
alpov | 0:5ea574b42acf | 43 | return false; |
alpov | 0:5ea574b42acf | 44 | } |
alpov | 0:5ea574b42acf | 45 | else if (strncmp(cmd, "ws ", 3) == 0) { |
alpov | 0:5ea574b42acf | 46 | char s[100]; |
alpov | 0:5ea574b42acf | 47 | sprintf(s, "%s rika: '%s'", eth.getIPAddress(), &cmd[3]); |
alpov | 0:5ea574b42acf | 48 | ws->send(s); |
alpov | 0:5ea574b42acf | 49 | return true; |
alpov | 0:5ea574b42acf | 50 | } |
alpov | 0:5ea574b42acf | 51 | else { |
alpov | 0:5ea574b42acf | 52 | char s[] = "Neznamy prikaz\r\n"; |
alpov | 0:5ea574b42acf | 53 | client->send_all(s, strlen(s)); |
alpov | 0:5ea574b42acf | 54 | return true; |
alpov | 0:5ea574b42acf | 55 | } |
alpov | 0:5ea574b42acf | 56 | } |
alpov | 0:5ea574b42acf | 57 | |
alpov | 0:5ea574b42acf | 58 | |
alpov | 0:5ea574b42acf | 59 | int main (void) |
alpov | 0:5ea574b42acf | 60 | { |
alpov | 0:5ea574b42acf | 61 | char mac[6]; |
alpov | 0:5ea574b42acf | 62 | pc.baud(115200); |
alpov | 0:5ea574b42acf | 63 | |
alpov | 0:5ea574b42acf | 64 | mbed_mac_address(mac); |
alpov | 0:5ea574b42acf | 65 | printf("MAC is %02x:%02x:%02x:%02x:%02x:%02x\r\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); |
alpov | 0:5ea574b42acf | 66 | |
alpov | 0:5ea574b42acf | 67 | eth.init(); //Use DHCP |
alpov | 0:5ea574b42acf | 68 | eth.connect(); |
alpov | 0:5ea574b42acf | 69 | printf("IP Address is %s\n", eth.getIPAddress()); |
alpov | 0:5ea574b42acf | 70 | |
alpov | 0:5ea574b42acf | 71 | TCPSocketServer server; |
alpov | 0:5ea574b42acf | 72 | server.bind(23); |
alpov | 0:5ea574b42acf | 73 | server.listen(); |
alpov | 0:5ea574b42acf | 74 | |
alpov | 0:5ea574b42acf | 75 | while (true) { |
alpov | 0:5ea574b42acf | 76 | TCPSocketConnection client; |
alpov | 0:5ea574b42acf | 77 | server.accept(client); |
alpov | 0:5ea574b42acf | 78 | printf("Connection from: %s\n", client.get_address()); |
alpov | 0:5ea574b42acf | 79 | |
alpov | 0:5ea574b42acf | 80 | char s1[] = "\e[2j\aInicializace WS...\r\n"; |
alpov | 0:5ea574b42acf | 81 | char s2[] = "\aVitejte v programu, pro napovedu prosim help.\r\n"; |
alpov | 0:5ea574b42acf | 82 | client.send_all(s1, strlen(s1)); |
alpov | 0:5ea574b42acf | 83 | |
alpov | 0:5ea574b42acf | 84 | Websocket ws("ws://sockets.mbed.org/ws/mpoa/wo"); |
alpov | 0:5ea574b42acf | 85 | ws.connect(); |
alpov | 0:5ea574b42acf | 86 | |
alpov | 0:5ea574b42acf | 87 | client.send_all(s2, strlen(s2)); |
alpov | 0:5ea574b42acf | 88 | |
alpov | 0:5ea574b42acf | 89 | char cmd[100]; |
alpov | 0:5ea574b42acf | 90 | int pos = 0; |
alpov | 0:5ea574b42acf | 91 | bool quit = false; |
alpov | 0:5ea574b42acf | 92 | while (true) { |
alpov | 0:5ea574b42acf | 93 | char c; |
alpov | 0:5ea574b42acf | 94 | int n = client.receive(&c, 1); |
alpov | 0:5ea574b42acf | 95 | if (n <= 0) break; |
alpov | 0:5ea574b42acf | 96 | switch (c) { |
alpov | 0:5ea574b42acf | 97 | case 0x04: |
alpov | 0:5ea574b42acf | 98 | quit = true; |
alpov | 0:5ea574b42acf | 99 | break; |
alpov | 0:5ea574b42acf | 100 | case 0x0A: |
alpov | 0:5ea574b42acf | 101 | break; |
alpov | 0:5ea574b42acf | 102 | case 0x0D: |
alpov | 0:5ea574b42acf | 103 | cmd[pos] = '\0'; |
alpov | 0:5ea574b42acf | 104 | quit = not command(&client, &ws, cmd); |
alpov | 0:5ea574b42acf | 105 | pos = 0; |
alpov | 0:5ea574b42acf | 106 | break; |
alpov | 0:5ea574b42acf | 107 | default: |
alpov | 0:5ea574b42acf | 108 | cmd[pos++] = c; |
alpov | 0:5ea574b42acf | 109 | break; |
alpov | 0:5ea574b42acf | 110 | } |
alpov | 0:5ea574b42acf | 111 | if (quit) break; |
alpov | 0:5ea574b42acf | 112 | } |
alpov | 0:5ea574b42acf | 113 | client.close(); |
alpov | 0:5ea574b42acf | 114 | ws.close(); |
alpov | 0:5ea574b42acf | 115 | } |
alpov | 0:5ea574b42acf | 116 | } |
alpov | 0:5ea574b42acf | 117 |