
DataVizButtonCode
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@0:4f9d1615d0e7, 2017-07-17 (annotated)
- Committer:
- samuelmoss
- Date:
- Mon Jul 17 11:38:39 2017 +0000
- Revision:
- 0:4f9d1615d0e7
DataVizCodeUpload
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samuelmoss | 0:4f9d1615d0e7 | 1 | #include "mbed.h" |
samuelmoss | 0:4f9d1615d0e7 | 2 | #include "EthernetInterface.h" |
samuelmoss | 0:4f9d1615d0e7 | 3 | #include <string> |
samuelmoss | 0:4f9d1615d0e7 | 4 | |
samuelmoss | 0:4f9d1615d0e7 | 5 | |
samuelmoss | 0:4f9d1615d0e7 | 6 | const char* ECHO_SERVER_ADDRESS = "10.2.134.30"; |
samuelmoss | 0:4f9d1615d0e7 | 7 | const int ECHO_SERVER_PORT = 7; |
samuelmoss | 0:4f9d1615d0e7 | 8 | |
samuelmoss | 0:4f9d1615d0e7 | 9 | DigitalOut led1(D7); |
samuelmoss | 0:4f9d1615d0e7 | 10 | DigitalOut led2(D6); |
samuelmoss | 0:4f9d1615d0e7 | 11 | DigitalOut led3(D5); |
samuelmoss | 0:4f9d1615d0e7 | 12 | DigitalOut led4(D4); |
samuelmoss | 0:4f9d1615d0e7 | 13 | |
samuelmoss | 0:4f9d1615d0e7 | 14 | InterruptIn DataSwitch1(D3); |
samuelmoss | 0:4f9d1615d0e7 | 15 | InterruptIn DataSwitch2(D2); |
samuelmoss | 0:4f9d1615d0e7 | 16 | InterruptIn DataSwitch3(D1); |
samuelmoss | 0:4f9d1615d0e7 | 17 | InterruptIn DataSwitch4(D0); |
samuelmoss | 0:4f9d1615d0e7 | 18 | |
samuelmoss | 0:4f9d1615d0e7 | 19 | |
samuelmoss | 0:4f9d1615d0e7 | 20 | int prev_dataset = 0; |
samuelmoss | 0:4f9d1615d0e7 | 21 | char json_str[100]; |
samuelmoss | 0:4f9d1615d0e7 | 22 | int button = 0; |
samuelmoss | 0:4f9d1615d0e7 | 23 | string channel = ("channel"); |
samuelmoss | 0:4f9d1615d0e7 | 24 | char dataset = '1'; |
samuelmoss | 0:4f9d1615d0e7 | 25 | |
samuelmoss | 0:4f9d1615d0e7 | 26 | |
samuelmoss | 0:4f9d1615d0e7 | 27 | void dataset1_cb() |
samuelmoss | 0:4f9d1615d0e7 | 28 | { |
samuelmoss | 0:4f9d1615d0e7 | 29 | |
samuelmoss | 0:4f9d1615d0e7 | 30 | button = 1; |
samuelmoss | 0:4f9d1615d0e7 | 31 | } |
samuelmoss | 0:4f9d1615d0e7 | 32 | void dataset2_cb() |
samuelmoss | 0:4f9d1615d0e7 | 33 | { |
samuelmoss | 0:4f9d1615d0e7 | 34 | |
samuelmoss | 0:4f9d1615d0e7 | 35 | button = 2; |
samuelmoss | 0:4f9d1615d0e7 | 36 | } |
samuelmoss | 0:4f9d1615d0e7 | 37 | void dataset3_cb() |
samuelmoss | 0:4f9d1615d0e7 | 38 | { |
samuelmoss | 0:4f9d1615d0e7 | 39 | |
samuelmoss | 0:4f9d1615d0e7 | 40 | button = 3; |
samuelmoss | 0:4f9d1615d0e7 | 41 | } |
samuelmoss | 0:4f9d1615d0e7 | 42 | void dataset4_cb() |
samuelmoss | 0:4f9d1615d0e7 | 43 | { |
samuelmoss | 0:4f9d1615d0e7 | 44 | |
samuelmoss | 0:4f9d1615d0e7 | 45 | button = 4; |
samuelmoss | 0:4f9d1615d0e7 | 46 | } |
samuelmoss | 0:4f9d1615d0e7 | 47 | |
samuelmoss | 0:4f9d1615d0e7 | 48 | int main() |
samuelmoss | 0:4f9d1615d0e7 | 49 | { |
samuelmoss | 0:4f9d1615d0e7 | 50 | |
samuelmoss | 0:4f9d1615d0e7 | 51 | DataSwitch1.rise(&dataset1_cb); |
samuelmoss | 0:4f9d1615d0e7 | 52 | DataSwitch2.rise(&dataset2_cb); |
samuelmoss | 0:4f9d1615d0e7 | 53 | DataSwitch3.rise(&dataset3_cb); |
samuelmoss | 0:4f9d1615d0e7 | 54 | DataSwitch4.rise(&dataset4_cb); |
samuelmoss | 0:4f9d1615d0e7 | 55 | |
samuelmoss | 0:4f9d1615d0e7 | 56 | EthernetInterface eth; |
samuelmoss | 0:4f9d1615d0e7 | 57 | eth.init(); //Use DHCP |
samuelmoss | 0:4f9d1615d0e7 | 58 | eth.connect(); |
samuelmoss | 0:4f9d1615d0e7 | 59 | printf("\nClient IP Address is %s\n", eth.getIPAddress()); |
samuelmoss | 0:4f9d1615d0e7 | 60 | |
samuelmoss | 0:4f9d1615d0e7 | 61 | // Connect to Server |
samuelmoss | 0:4f9d1615d0e7 | 62 | TCPSocketConnection socket; |
samuelmoss | 0:4f9d1615d0e7 | 63 | while (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT) < 0) |
samuelmoss | 0:4f9d1615d0e7 | 64 | { |
samuelmoss | 0:4f9d1615d0e7 | 65 | printf("Unable to connect to (%s) on port (%d)\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT); |
samuelmoss | 0:4f9d1615d0e7 | 66 | wait(1); |
samuelmoss | 0:4f9d1615d0e7 | 67 | } |
samuelmoss | 0:4f9d1615d0e7 | 68 | printf("Connected to Server at %s\n",ECHO_SERVER_ADDRESS); |
samuelmoss | 0:4f9d1615d0e7 | 69 | |
samuelmoss | 0:4f9d1615d0e7 | 70 | while(1) |
samuelmoss | 0:4f9d1615d0e7 | 71 | { if (dataset != prev_dataset) |
samuelmoss | 0:4f9d1615d0e7 | 72 | { |
samuelmoss | 0:4f9d1615d0e7 | 73 | switch(dataset) |
samuelmoss | 0:4f9d1615d0e7 | 74 | { |
samuelmoss | 0:4f9d1615d0e7 | 75 | case(0): |
samuelmoss | 0:4f9d1615d0e7 | 76 | break; |
samuelmoss | 0:4f9d1615d0e7 | 77 | case(1): |
samuelmoss | 0:4f9d1615d0e7 | 78 | channel = ""; |
samuelmoss | 0:4f9d1615d0e7 | 79 | dataset = '1'; |
samuelmoss | 0:4f9d1615d0e7 | 80 | sprintf (json_str, "{\"channel\":%s,\"dataset\":%c\"}", channel, dataset); |
samuelmoss | 0:4f9d1615d0e7 | 81 | //printf("Sending message to Server : '%s' \n",json_str); |
samuelmoss | 0:4f9d1615d0e7 | 82 | socket.send_all(json_str, sizeof(json_str) - 1); |
samuelmoss | 0:4f9d1615d0e7 | 83 | led1=1; |
samuelmoss | 0:4f9d1615d0e7 | 84 | led2=0; |
samuelmoss | 0:4f9d1615d0e7 | 85 | led3=0; |
samuelmoss | 0:4f9d1615d0e7 | 86 | led4=0; |
samuelmoss | 0:4f9d1615d0e7 | 87 | break; |
samuelmoss | 0:4f9d1615d0e7 | 88 | case(2): |
samuelmoss | 0:4f9d1615d0e7 | 89 | channel = ""; |
samuelmoss | 0:4f9d1615d0e7 | 90 | dataset = '2'; |
samuelmoss | 0:4f9d1615d0e7 | 91 | sprintf (json_str, "{\"channel\":%s,\"dataset\":%c\"}", channel, dataset); |
samuelmoss | 0:4f9d1615d0e7 | 92 | //printf("Sending message to Server : '%s' \n",json_str); |
samuelmoss | 0:4f9d1615d0e7 | 93 | socket.send_all(json_str, sizeof(json_str) - 1); |
samuelmoss | 0:4f9d1615d0e7 | 94 | led1=0; |
samuelmoss | 0:4f9d1615d0e7 | 95 | led2=1; |
samuelmoss | 0:4f9d1615d0e7 | 96 | led3=0; |
samuelmoss | 0:4f9d1615d0e7 | 97 | led4=0; |
samuelmoss | 0:4f9d1615d0e7 | 98 | break; |
samuelmoss | 0:4f9d1615d0e7 | 99 | case(3): |
samuelmoss | 0:4f9d1615d0e7 | 100 | channel = ""; |
samuelmoss | 0:4f9d1615d0e7 | 101 | dataset = '3'; |
samuelmoss | 0:4f9d1615d0e7 | 102 | sprintf (json_str, "{\"channel\":%s,\"dataset\":%c\"}", channel, dataset); |
samuelmoss | 0:4f9d1615d0e7 | 103 | //printf("Sending message to Server : '%s' \n",json_str); |
samuelmoss | 0:4f9d1615d0e7 | 104 | socket.send_all(json_str, sizeof(json_str) - 1); |
samuelmoss | 0:4f9d1615d0e7 | 105 | led1=0; |
samuelmoss | 0:4f9d1615d0e7 | 106 | led2=0; |
samuelmoss | 0:4f9d1615d0e7 | 107 | led3=1; |
samuelmoss | 0:4f9d1615d0e7 | 108 | led4=0; |
samuelmoss | 0:4f9d1615d0e7 | 109 | break; |
samuelmoss | 0:4f9d1615d0e7 | 110 | case(4): |
samuelmoss | 0:4f9d1615d0e7 | 111 | channel = ""; |
samuelmoss | 0:4f9d1615d0e7 | 112 | dataset = '4'; |
samuelmoss | 0:4f9d1615d0e7 | 113 | sprintf (json_str, "{\"channel\":%s,\"dataset\":%c\"}", channel, dataset); |
samuelmoss | 0:4f9d1615d0e7 | 114 | //printf("Sending message to Server : '%s' \n",json_str); |
samuelmoss | 0:4f9d1615d0e7 | 115 | socket.send_all(json_str, sizeof(json_str) - 1); |
samuelmoss | 0:4f9d1615d0e7 | 116 | led1=0; |
samuelmoss | 0:4f9d1615d0e7 | 117 | led2=0; |
samuelmoss | 0:4f9d1615d0e7 | 118 | led3=0; |
samuelmoss | 0:4f9d1615d0e7 | 119 | led4=1; |
samuelmoss | 0:4f9d1615d0e7 | 120 | break; |
samuelmoss | 0:4f9d1615d0e7 | 121 | default: |
samuelmoss | 0:4f9d1615d0e7 | 122 | break; |
samuelmoss | 0:4f9d1615d0e7 | 123 | } |
samuelmoss | 0:4f9d1615d0e7 | 124 | prev_dataset = dataset; |
samuelmoss | 0:4f9d1615d0e7 | 125 | // Receive message from server |
samuelmoss | 0:4f9d1615d0e7 | 126 | char buf[256]; |
samuelmoss | 0:4f9d1615d0e7 | 127 | int n = socket.receive(buf, 256); |
samuelmoss | 0:4f9d1615d0e7 | 128 | buf[n] = '\0'; |
samuelmoss | 0:4f9d1615d0e7 | 129 | printf("Received message from server: '%s'\n", buf); |
samuelmoss | 0:4f9d1615d0e7 | 130 | } |
samuelmoss | 0:4f9d1615d0e7 | 131 | |
samuelmoss | 0:4f9d1615d0e7 | 132 | |
samuelmoss | 0:4f9d1615d0e7 | 133 | |
samuelmoss | 0:4f9d1615d0e7 | 134 | } |
samuelmoss | 0:4f9d1615d0e7 | 135 | |
samuelmoss | 0:4f9d1615d0e7 | 136 | // Clean up |
samuelmoss | 0:4f9d1615d0e7 | 137 | socket.close(); |
samuelmoss | 0:4f9d1615d0e7 | 138 | eth.disconnect(); |
samuelmoss | 0:4f9d1615d0e7 | 139 | |
samuelmoss | 0:4f9d1615d0e7 | 140 | while(true) {} |
samuelmoss | 0:4f9d1615d0e7 | 141 | } |
samuelmoss | 0:4f9d1615d0e7 | 142 | |
samuelmoss | 0:4f9d1615d0e7 | 143 |