Wifi Pressure Sensor

Dependencies:   HTTPClient MPL3115A2 NTPClient TMP102 USBDevice cc3000_hostdriver_mbedsocket mbed

Committer:
markirwin
Date:
Wed Jan 08 22:36:17 2014 +0000
Revision:
9:ac299b1a17a0
Parent:
8:65a5f359a100
Child:
10:11d946f4ecea
Temp Read Uncommented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SolderSplashLabs 0:0bce3a738bcb 1 #include "mbed.h"
SolderSplashLabs 0:0bce3a738bcb 2 #include "cc3000.h"
SolderSplashLabs 0:0bce3a738bcb 3 #include "USBSerial.h"
SolderSplashLabs 0:0bce3a738bcb 4
SolderSplashLabs 0:0bce3a738bcb 5 #include "TCPSocketConnection.h"
SolderSplashLabs 0:0bce3a738bcb 6 #include "TCPSocketServer.h"
SolderSplashLabs 0:0bce3a738bcb 7 #include "HTTPClient.h"
SolderSplashLabs 0:0bce3a738bcb 8 #include "Websocket.h"
markirwin 7:3d9d776dc20b 9 #include "TMP102.h"
SolderSplashLabs 0:0bce3a738bcb 10
SolderSplashLabs 0:0bce3a738bcb 11 using namespace mbed_cc3000;
SolderSplashLabs 0:0bce3a738bcb 12
SolderSplashLabs 0:0bce3a738bcb 13 extern cc3000 wifi;
SolderSplashLabs 0:0bce3a738bcb 14 extern USBSerial pc;
SolderSplashLabs 0:0bce3a738bcb 15
SolderSplashLabs 0:0bce3a738bcb 16 HTTPClient http;
SolderSplashLabs 0:0bce3a738bcb 17
SolderSplashLabs 3:15828ac052f1 18 // NOTE : Change SolderSplashLabs to anything else for your own channel
SolderSplashLabs 0:0bce3a738bcb 19 // Goto the viewier page here : http://sockets.mbed.org/SolderSplashLabs/viewer to see the websocket writes
SolderSplashLabs 3:15828ac052f1 20 const char WEB_SOCKET_URL[] = {"ws://sockets.mbed.org/ws/SolderSplashLabs/rw"};
SolderSplashLabs 0:0bce3a738bcb 21 const char* ECHO_SERVER_ADDRESS = "192.168.0.10";
SolderSplashLabs 0:0bce3a738bcb 22 const int ECHO_SERVER_PORT_TCP = 80;
SolderSplashLabs 0:0bce3a738bcb 23 char hello[] = "Hello World\r\n";
SolderSplashLabs 0:0bce3a738bcb 24
SolderSplashLabs 3:15828ac052f1 25 // Put the tmpbuffer into RAM1
SolderSplashLabs 3:15828ac052f1 26 char tmpBuffer[512] __attribute__((section("AHBSRAM0")));
SolderSplashLabs 0:0bce3a738bcb 27
SolderSplashLabs 3:15828ac052f1 28 // Add your own feed Id and API key here..
SolderSplashLabs 0:0bce3a738bcb 29 char XivelyHostname[] = "api.xively.com";
markirwin 4:1ecda7622e07 30 char XivelyPath[] = "/v2/feeds/601288128";
markirwin 4:1ecda7622e07 31 char XivelyApiKey[] = "6X82TDHSY7YKSJSraTBmS0nIMwO3W5NOMbVbeKPwwLNBgggw";
SolderSplashLabs 0:0bce3a738bcb 32
markirwin 7:3d9d776dc20b 33 uint32_t number = 0;
markirwin 6:65fb503512ad 34
SolderSplashLabs 0:0bce3a738bcb 35 AnalogIn adc0(P0_11); //P2
SolderSplashLabs 0:0bce3a738bcb 36 AnalogIn adc1(P0_12); //P3
SolderSplashLabs 0:0bce3a738bcb 37 AnalogIn adc2(P0_13); //P4
SolderSplashLabs 0:0bce3a738bcb 38 AnalogIn adc3(P0_14); //P5
SolderSplashLabs 0:0bce3a738bcb 39 AnalogIn adc5(P0_16); //P8
SolderSplashLabs 0:0bce3a738bcb 40 AnalogIn adc6(P0_22); //P9
SolderSplashLabs 0:0bce3a738bcb 41 AnalogIn adc7(P0_23); //P10
SolderSplashLabs 0:0bce3a738bcb 42
markirwin 7:3d9d776dc20b 43
markirwin 7:3d9d776dc20b 44 TMP102 temperature(P0_5, P0_4, 0x90); //A0 pin is connected to ground
markirwin 7:3d9d776dc20b 45
SolderSplashLabs 0:0bce3a738bcb 46 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 47 /*!
SolderSplashLabs 1:6f4eaec531c4 48 @brief Post all analog inputs to xively every second
SolderSplashLabs 0:0bce3a738bcb 49 */
SolderSplashLabs 0:0bce3a738bcb 50 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 51 void XivelySimpleTest ( void )
SolderSplashLabs 0:0bce3a738bcb 52 {
SolderSplashLabs 0:0bce3a738bcb 53 TCPSocketConnection socket;
SolderSplashLabs 0:0bce3a738bcb 54 int res = 0;
SolderSplashLabs 0:0bce3a738bcb 55 uint16_t counter = 0;
SolderSplashLabs 0:0bce3a738bcb 56 int httpCmdLen = 0;
markirwin 7:3d9d776dc20b 57 float tempt = 0;
SolderSplashLabs 0:0bce3a738bcb 58
SolderSplashLabs 0:0bce3a738bcb 59 //if ( wifi.is_connected() )
SolderSplashLabs 0:0bce3a738bcb 60
SolderSplashLabs 0:0bce3a738bcb 61 while (1)
SolderSplashLabs 0:0bce3a738bcb 62 {
SolderSplashLabs 0:0bce3a738bcb 63 if (socket.connect(XivelyHostname, 80) < 0)
SolderSplashLabs 0:0bce3a738bcb 64 {
SolderSplashLabs 0:0bce3a738bcb 65 pc.printf("\r\nUnable to connect to (%s) on port (%d)\r\n", XivelyHostname, 80);
SolderSplashLabs 0:0bce3a738bcb 66 socket.close();
SolderSplashLabs 0:0bce3a738bcb 67 }
SolderSplashLabs 0:0bce3a738bcb 68 else
SolderSplashLabs 0:0bce3a738bcb 69 {
SolderSplashLabs 0:0bce3a738bcb 70 // Block for 1 second
SolderSplashLabs 0:0bce3a738bcb 71 socket.set_blocking( true, 1000 );
SolderSplashLabs 0:0bce3a738bcb 72 counter ++;
SolderSplashLabs 0:0bce3a738bcb 73
markirwin 7:3d9d776dc20b 74 // loop
markirwin 7:3d9d776dc20b 75 if (number > 10)
markirwin 7:3d9d776dc20b 76 {number = 0;}
markirwin 7:3d9d776dc20b 77 else
markirwin 7:3d9d776dc20b 78 {number++;}
markirwin 9:ac299b1a17a0 79 // Temp Read
markirwin 9:ac299b1a17a0 80 tempt = temperature.read();
markirwin 7:3d9d776dc20b 81
SolderSplashLabs 0:0bce3a738bcb 82 // Build the header
SolderSplashLabs 0:0bce3a738bcb 83 httpCmdLen = sprintf(&tmpBuffer[0], "PUT %s.csv HTTP/1.1\r\n", XivelyPath );
SolderSplashLabs 0:0bce3a738bcb 84 httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "Host: %s\r\nUser-Agent: WiFi-DipCortex\r\n", XivelyHostname);
SolderSplashLabs 0:0bce3a738bcb 85 httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "X-ApiKey: %s\r\n", XivelyApiKey);
SolderSplashLabs 1:6f4eaec531c4 86 // TODO : hardcoded data length of 91, using printf with padding to fix the string length
SolderSplashLabs 0:0bce3a738bcb 87 httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "Content-Type: text/csv\r\nContent-Length: 91\r\n");
SolderSplashLabs 0:0bce3a738bcb 88 httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "Connection: close\r\n\r\n");
SolderSplashLabs 0:0bce3a738bcb 89
SolderSplashLabs 0:0bce3a738bcb 90 // add the data
markirwin 8:65a5f359a100 91 //httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "ADC0, %05d\r\nADC1, %05d\r\nADC2, %05d\r\nADC3, %05d\r\nADC5, %05d\r\nADC6, %05d\r\nADC7, %05d\r\n\0",
markirwin 8:65a5f359a100 92 //adc0.read_u16(), adc1.read_u16(), adc2.read_u16(), adc3.read_u16(), adc5.read_u16(), adc6.read_u16(), adc7.read_u16());
markirwin 8:65a5f359a100 93
markirwin 8:65a5f359a100 94 httpCmdLen += sprintf(&tmpBuffer[httpCmdLen], "COUNT, %05d\r\nRAMP, %05d\r\nTEMP, %f\r\n\0",
markirwin 8:65a5f359a100 95 counter, number, tempt);
markirwin 8:65a5f359a100 96
SolderSplashLabs 0:0bce3a738bcb 97 pc.printf("Data to be sent : \r\n %s", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 98
SolderSplashLabs 0:0bce3a738bcb 99 pc.printf("Posting ADC's to Xively \r\n");
SolderSplashLabs 0:0bce3a738bcb 100 res = socket.send_all(tmpBuffer, httpCmdLen);
SolderSplashLabs 0:0bce3a738bcb 101
SolderSplashLabs 0:0bce3a738bcb 102 if ( res > 0 )
SolderSplashLabs 0:0bce3a738bcb 103 {
SolderSplashLabs 0:0bce3a738bcb 104 pc.printf("%05d : Data Sent \r\n", counter);
SolderSplashLabs 0:0bce3a738bcb 105 }
SolderSplashLabs 0:0bce3a738bcb 106 else
SolderSplashLabs 0:0bce3a738bcb 107 {
SolderSplashLabs 0:0bce3a738bcb 108 pc.printf("Failed to send\r\n");
SolderSplashLabs 0:0bce3a738bcb 109 break;
SolderSplashLabs 0:0bce3a738bcb 110 }
SolderSplashLabs 0:0bce3a738bcb 111
SolderSplashLabs 0:0bce3a738bcb 112 res = socket.receive(tmpBuffer, 512);
SolderSplashLabs 0:0bce3a738bcb 113
SolderSplashLabs 0:0bce3a738bcb 114 if ( res > 0 )
SolderSplashLabs 0:0bce3a738bcb 115 {
SolderSplashLabs 0:0bce3a738bcb 116 pc.printf("TCP Socket Recv'd : \r\n %s", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 117 tmpBuffer[res] = '\0';
SolderSplashLabs 0:0bce3a738bcb 118 }
SolderSplashLabs 0:0bce3a738bcb 119 else
SolderSplashLabs 0:0bce3a738bcb 120 {
SolderSplashLabs 0:0bce3a738bcb 121 tmpBuffer[0] = '\0';
SolderSplashLabs 0:0bce3a738bcb 122 pc.printf("TCP : Failed to Recv\r\n");
SolderSplashLabs 0:0bce3a738bcb 123 break;
SolderSplashLabs 0:0bce3a738bcb 124 }
SolderSplashLabs 0:0bce3a738bcb 125
SolderSplashLabs 0:0bce3a738bcb 126 socket.close();
SolderSplashLabs 0:0bce3a738bcb 127 }
SolderSplashLabs 0:0bce3a738bcb 128
SolderSplashLabs 0:0bce3a738bcb 129 wait_ms(1000);
SolderSplashLabs 0:0bce3a738bcb 130
SolderSplashLabs 0:0bce3a738bcb 131 if ( pc.readable() )
SolderSplashLabs 0:0bce3a738bcb 132 {
SolderSplashLabs 0:0bce3a738bcb 133 pc.printf("Ending Xively Post \r\n");
SolderSplashLabs 0:0bce3a738bcb 134 pc.getc();
SolderSplashLabs 0:0bce3a738bcb 135 break;
SolderSplashLabs 0:0bce3a738bcb 136 }
SolderSplashLabs 0:0bce3a738bcb 137 }
SolderSplashLabs 0:0bce3a738bcb 138 }
SolderSplashLabs 0:0bce3a738bcb 139
SolderSplashLabs 0:0bce3a738bcb 140 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 141 /*!
SolderSplashLabs 0:0bce3a738bcb 142 @brief Exercise the HTTP Client library
SolderSplashLabs 0:0bce3a738bcb 143 */
SolderSplashLabs 0:0bce3a738bcb 144 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 145 void HttpClientTest ( void )
SolderSplashLabs 0:0bce3a738bcb 146 {
SolderSplashLabs 0:0bce3a738bcb 147
SolderSplashLabs 0:0bce3a738bcb 148 //GET data
SolderSplashLabs 0:0bce3a738bcb 149 pc.printf("\r\nTrying to fetch page... \r\n");
SolderSplashLabs 0:0bce3a738bcb 150 int ret = http.get("http://mbed.org/media/uploads/donatien/hello.txt", tmpBuffer, 128);
SolderSplashLabs 0:0bce3a738bcb 151 if (!ret)
SolderSplashLabs 0:0bce3a738bcb 152 {
SolderSplashLabs 0:0bce3a738bcb 153 pc.printf("Page fetched successfully - read %d characters \r\n", strlen(tmpBuffer));
SolderSplashLabs 0:0bce3a738bcb 154 pc.printf("Result: %s \r\n", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 155 }
SolderSplashLabs 0:0bce3a738bcb 156 else
SolderSplashLabs 0:0bce3a738bcb 157 {
SolderSplashLabs 0:0bce3a738bcb 158 pc.printf("Error - ret = %d - HTTP return code = %d \r\n", tmpBuffer, http.getHTTPResponseCode());
SolderSplashLabs 0:0bce3a738bcb 159 }
SolderSplashLabs 0:0bce3a738bcb 160
SolderSplashLabs 0:0bce3a738bcb 161 //POST data
SolderSplashLabs 0:0bce3a738bcb 162 HTTPMap map;
SolderSplashLabs 0:0bce3a738bcb 163 HTTPText inText(tmpBuffer, 512);
SolderSplashLabs 0:0bce3a738bcb 164 map.put("Hello", "World");
SolderSplashLabs 0:0bce3a738bcb 165 map.put("test", "1234");
SolderSplashLabs 0:0bce3a738bcb 166 pc.printf(" \r\nTrying to post data... \r\n");
SolderSplashLabs 0:0bce3a738bcb 167 ret = http.post("http://httpbin.org/post", map, &inText);
SolderSplashLabs 0:0bce3a738bcb 168 if (!ret)
SolderSplashLabs 0:0bce3a738bcb 169 {
SolderSplashLabs 0:0bce3a738bcb 170 pc.printf("Executed POST successfully - read %d characters \r\n", strlen(tmpBuffer));
SolderSplashLabs 0:0bce3a738bcb 171 pc.printf("Result: %s \r\n", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 172 }
SolderSplashLabs 0:0bce3a738bcb 173 else
SolderSplashLabs 0:0bce3a738bcb 174 {
SolderSplashLabs 0:0bce3a738bcb 175 pc.printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode());
SolderSplashLabs 0:0bce3a738bcb 176 }
SolderSplashLabs 0:0bce3a738bcb 177
SolderSplashLabs 0:0bce3a738bcb 178 //PUT data
SolderSplashLabs 0:0bce3a738bcb 179 strcpy(tmpBuffer, "This is a PUT test!");
SolderSplashLabs 0:0bce3a738bcb 180 HTTPText outText(tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 181 //HTTPText inText(tmpBuffer, 512);
SolderSplashLabs 0:0bce3a738bcb 182 pc.printf(" \r\nTrying to put resource... \r\n");
SolderSplashLabs 0:0bce3a738bcb 183 ret = http.put("http://httpbin.org/put", outText, &inText);
SolderSplashLabs 0:0bce3a738bcb 184 if (!ret)
SolderSplashLabs 0:0bce3a738bcb 185 {
SolderSplashLabs 0:0bce3a738bcb 186 pc.printf("Executed PUT successfully - read %d characters \r\n", strlen(tmpBuffer));
SolderSplashLabs 0:0bce3a738bcb 187 pc.printf("Result: %s \r\n", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 188 }
SolderSplashLabs 0:0bce3a738bcb 189 else
SolderSplashLabs 0:0bce3a738bcb 190 {
SolderSplashLabs 0:0bce3a738bcb 191 pc.printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode());
SolderSplashLabs 0:0bce3a738bcb 192 }
SolderSplashLabs 0:0bce3a738bcb 193
SolderSplashLabs 0:0bce3a738bcb 194 //DELETE data
SolderSplashLabs 0:0bce3a738bcb 195 //HTTPText inText(tmpBuffer, 512);
SolderSplashLabs 0:0bce3a738bcb 196 pc.printf(" \r\nTrying to delete resource... \r\n");
SolderSplashLabs 0:0bce3a738bcb 197 ret = http.del("http://httpbin.org/delete", &inText);
SolderSplashLabs 0:0bce3a738bcb 198 if (!ret)
SolderSplashLabs 0:0bce3a738bcb 199 {
SolderSplashLabs 0:0bce3a738bcb 200 pc.printf("Executed DELETE successfully - read %d characters \r\n", strlen(tmpBuffer));
SolderSplashLabs 0:0bce3a738bcb 201 pc.printf("Result: %s \r\n", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 202 }
SolderSplashLabs 0:0bce3a738bcb 203 else
SolderSplashLabs 0:0bce3a738bcb 204 {
SolderSplashLabs 0:0bce3a738bcb 205 pc.printf("Error - ret = %d - HTTP return code = %d \r\n", ret, http.getHTTPResponseCode());
SolderSplashLabs 0:0bce3a738bcb 206 }
SolderSplashLabs 0:0bce3a738bcb 207 }
SolderSplashLabs 0:0bce3a738bcb 208
SolderSplashLabs 0:0bce3a738bcb 209 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 210 /*!
SolderSplashLabs 0:0bce3a738bcb 211 @brief Open a WebSocket, send a string
SolderSplashLabs 0:0bce3a738bcb 212 */
SolderSplashLabs 0:0bce3a738bcb 213 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 214 void WebSocketTest ( void )
SolderSplashLabs 0:0bce3a738bcb 215 {
SolderSplashLabs 0:0bce3a738bcb 216
SolderSplashLabs 0:0bce3a738bcb 217 int res = 0;
SolderSplashLabs 0:0bce3a738bcb 218 uint16_t counter = 0;
SolderSplashLabs 0:0bce3a738bcb 219 uint16_t reconnects = 0;
SolderSplashLabs 0:0bce3a738bcb 220 uint8_t myMAC[8];
SolderSplashLabs 0:0bce3a738bcb 221
SolderSplashLabs 0:0bce3a738bcb 222 wifi.get_mac_address(myMAC);
SolderSplashLabs 0:0bce3a738bcb 223
SolderSplashLabs 0:0bce3a738bcb 224 Websocket ws((char *)WEB_SOCKET_URL);
SolderSplashLabs 0:0bce3a738bcb 225 if ( ws.connect() )
SolderSplashLabs 0:0bce3a738bcb 226 {
SolderSplashLabs 0:0bce3a738bcb 227 pc.printf("Connected to websocket server.\r\n");
SolderSplashLabs 0:0bce3a738bcb 228
SolderSplashLabs 0:0bce3a738bcb 229 pc.printf("\r\n!! Press any key to stop sending !!\r\n\r\n");
SolderSplashLabs 0:0bce3a738bcb 230 while (1)
SolderSplashLabs 0:0bce3a738bcb 231 {
SolderSplashLabs 0:0bce3a738bcb 232 counter ++;
SolderSplashLabs 0:0bce3a738bcb 233 sprintf(tmpBuffer, "WiFi DipCortex / CC3000 - %05d - %02x:%02x:%02x:%02x:%02x:%02x\r\n", counter, myMAC[0], myMAC[1], myMAC[2], myMAC[3], myMAC[4], myMAC[5]);
SolderSplashLabs 0:0bce3a738bcb 234
SolderSplashLabs 0:0bce3a738bcb 235 if ( wifi.is_connected() )
SolderSplashLabs 0:0bce3a738bcb 236 {
SolderSplashLabs 0:0bce3a738bcb 237 res = ws.send(tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 238 pc.printf("Reconnects : %05d, Messages Sent : %05d, Websocket send returned : %d.\r\n", reconnects, counter, res);
SolderSplashLabs 0:0bce3a738bcb 239
SolderSplashLabs 0:0bce3a738bcb 240 if ( -1 == res )
SolderSplashLabs 0:0bce3a738bcb 241 {
SolderSplashLabs 0:0bce3a738bcb 242 pc.printf("Websocket Failure, reconnecting .... \r\n");
SolderSplashLabs 0:0bce3a738bcb 243 ws.close();
SolderSplashLabs 0:0bce3a738bcb 244 if ( ws.connect() )
SolderSplashLabs 0:0bce3a738bcb 245 {
SolderSplashLabs 0:0bce3a738bcb 246 // Reconnected
SolderSplashLabs 0:0bce3a738bcb 247 reconnects ++;
SolderSplashLabs 0:0bce3a738bcb 248 }
SolderSplashLabs 0:0bce3a738bcb 249 else
SolderSplashLabs 0:0bce3a738bcb 250 {
SolderSplashLabs 0:0bce3a738bcb 251 // Failure!
SolderSplashLabs 0:0bce3a738bcb 252 break;
SolderSplashLabs 0:0bce3a738bcb 253 }
SolderSplashLabs 0:0bce3a738bcb 254 }
SolderSplashLabs 0:0bce3a738bcb 255
SolderSplashLabs 0:0bce3a738bcb 256 wait_ms(1000);
SolderSplashLabs 0:0bce3a738bcb 257 }
SolderSplashLabs 0:0bce3a738bcb 258 else
SolderSplashLabs 0:0bce3a738bcb 259 {
SolderSplashLabs 0:0bce3a738bcb 260 pc.printf("WiFi Connection Lost .... \r\n");
SolderSplashLabs 0:0bce3a738bcb 261 }
SolderSplashLabs 0:0bce3a738bcb 262
SolderSplashLabs 0:0bce3a738bcb 263 if ( pc.readable() )
SolderSplashLabs 0:0bce3a738bcb 264 {
SolderSplashLabs 0:0bce3a738bcb 265 pc.printf("Closing Socket \r\n");
SolderSplashLabs 0:0bce3a738bcb 266 pc.getc();
SolderSplashLabs 0:0bce3a738bcb 267 break;
SolderSplashLabs 0:0bce3a738bcb 268 }
SolderSplashLabs 0:0bce3a738bcb 269 }
SolderSplashLabs 0:0bce3a738bcb 270
SolderSplashLabs 0:0bce3a738bcb 271 ws.close();
SolderSplashLabs 0:0bce3a738bcb 272 pc.printf("Websocket Closed \r\n");
SolderSplashLabs 0:0bce3a738bcb 273 }
SolderSplashLabs 3:15828ac052f1 274 else
SolderSplashLabs 3:15828ac052f1 275 {
SolderSplashLabs 3:15828ac052f1 276 pc.printf("Websocket connection failed\r\n");
SolderSplashLabs 3:15828ac052f1 277 }
SolderSplashLabs 0:0bce3a738bcb 278 }
SolderSplashLabs 0:0bce3a738bcb 279
SolderSplashLabs 0:0bce3a738bcb 280 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 281 /*!
SolderSplashLabs 2:8f5776c287c5 282 @brief Open a WebSocket, send a string
SolderSplashLabs 2:8f5776c287c5 283 */
SolderSplashLabs 2:8f5776c287c5 284 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 2:8f5776c287c5 285 void WebSocketReadTest ( void )
SolderSplashLabs 2:8f5776c287c5 286 {
SolderSplashLabs 2:8f5776c287c5 287
SolderSplashLabs 2:8f5776c287c5 288 int res = 0;
SolderSplashLabs 2:8f5776c287c5 289 uint16_t counter = 0;
SolderSplashLabs 2:8f5776c287c5 290 uint16_t reconnects = 0;
SolderSplashLabs 2:8f5776c287c5 291 uint8_t myMAC[8];
SolderSplashLabs 2:8f5776c287c5 292
SolderSplashLabs 2:8f5776c287c5 293 wifi.get_mac_address(myMAC);
SolderSplashLabs 2:8f5776c287c5 294
SolderSplashLabs 2:8f5776c287c5 295 Websocket ws((char *)WEB_SOCKET_URL);
SolderSplashLabs 2:8f5776c287c5 296 if ( ws.connect() )
SolderSplashLabs 2:8f5776c287c5 297 {
SolderSplashLabs 2:8f5776c287c5 298 pc.printf("Connected to websocket server.\r\n");
SolderSplashLabs 2:8f5776c287c5 299
SolderSplashLabs 2:8f5776c287c5 300 pc.printf("\r\n!! Press any key to stop receiving !!\r\n\r\n");
SolderSplashLabs 2:8f5776c287c5 301 while (1)
SolderSplashLabs 2:8f5776c287c5 302 {
SolderSplashLabs 2:8f5776c287c5 303 counter ++;
SolderSplashLabs 2:8f5776c287c5 304 //sprintf(tmpBuffer, "WiFi DipCortex / CC3000 - %05d - %02x:%02x:%02x:%02x:%02x:%02x\r\n", counter, myMAC[0], myMAC[1], myMAC[2], myMAC[3], myMAC[4], myMAC[5]);
SolderSplashLabs 2:8f5776c287c5 305
SolderSplashLabs 2:8f5776c287c5 306 if ( wifi.is_connected() )
SolderSplashLabs 2:8f5776c287c5 307 {
SolderSplashLabs 2:8f5776c287c5 308 res = ws.read(tmpBuffer);
SolderSplashLabs 2:8f5776c287c5 309
SolderSplashLabs 2:8f5776c287c5 310 if ( res )
SolderSplashLabs 2:8f5776c287c5 311 {
SolderSplashLabs 2:8f5776c287c5 312 pc.printf("Websocket Received : %s (Reconnects : %05d, Messages Recv : %05d)\r\n", tmpBuffer, reconnects, counter);
SolderSplashLabs 2:8f5776c287c5 313 }
SolderSplashLabs 2:8f5776c287c5 314
SolderSplashLabs 2:8f5776c287c5 315 if ( ws.is_connected() )
SolderSplashLabs 2:8f5776c287c5 316 {
SolderSplashLabs 2:8f5776c287c5 317
SolderSplashLabs 2:8f5776c287c5 318 }
SolderSplashLabs 2:8f5776c287c5 319 else
SolderSplashLabs 2:8f5776c287c5 320 {
SolderSplashLabs 2:8f5776c287c5 321 pc.printf("Websocket Closed, reconnecting .... \r\n");
SolderSplashLabs 2:8f5776c287c5 322 ws.close();
SolderSplashLabs 2:8f5776c287c5 323 if ( ws.connect() )
SolderSplashLabs 2:8f5776c287c5 324 {
SolderSplashLabs 2:8f5776c287c5 325 // Reconnected
SolderSplashLabs 2:8f5776c287c5 326 reconnects ++;
SolderSplashLabs 2:8f5776c287c5 327 }
SolderSplashLabs 2:8f5776c287c5 328 else
SolderSplashLabs 2:8f5776c287c5 329 {
SolderSplashLabs 2:8f5776c287c5 330 // Failure!
SolderSplashLabs 2:8f5776c287c5 331 break;
SolderSplashLabs 2:8f5776c287c5 332 }
SolderSplashLabs 2:8f5776c287c5 333 }
SolderSplashLabs 2:8f5776c287c5 334 }
SolderSplashLabs 2:8f5776c287c5 335 else
SolderSplashLabs 2:8f5776c287c5 336 {
SolderSplashLabs 2:8f5776c287c5 337 pc.printf("WiFi Connection Lost .... \r\n");
SolderSplashLabs 2:8f5776c287c5 338 }
SolderSplashLabs 2:8f5776c287c5 339
SolderSplashLabs 2:8f5776c287c5 340 if ( pc.readable() )
SolderSplashLabs 2:8f5776c287c5 341 {
SolderSplashLabs 2:8f5776c287c5 342 pc.printf("Closing Socket \r\n");
SolderSplashLabs 2:8f5776c287c5 343 pc.getc();
SolderSplashLabs 2:8f5776c287c5 344 break;
SolderSplashLabs 2:8f5776c287c5 345 }
SolderSplashLabs 2:8f5776c287c5 346 }
SolderSplashLabs 2:8f5776c287c5 347
SolderSplashLabs 2:8f5776c287c5 348 ws.close();
SolderSplashLabs 2:8f5776c287c5 349 pc.printf("Websocket Closed \r\n");
SolderSplashLabs 2:8f5776c287c5 350 }
SolderSplashLabs 3:15828ac052f1 351 else
SolderSplashLabs 3:15828ac052f1 352 {
SolderSplashLabs 3:15828ac052f1 353 pc.printf("Websocket connection failed\r\n");
SolderSplashLabs 3:15828ac052f1 354 }
SolderSplashLabs 2:8f5776c287c5 355 }
SolderSplashLabs 2:8f5776c287c5 356
SolderSplashLabs 2:8f5776c287c5 357 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 2:8f5776c287c5 358 /*!
SolderSplashLabs 0:0bce3a738bcb 359 @brief Open a TCP port send a string and wait for a reply
SolderSplashLabs 0:0bce3a738bcb 360 */
SolderSplashLabs 0:0bce3a738bcb 361 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 362 void TcpClientTest ( void )
SolderSplashLabs 0:0bce3a738bcb 363 {
SolderSplashLabs 0:0bce3a738bcb 364 uint16_t counter = 0;
SolderSplashLabs 0:0bce3a738bcb 365 TCPSocketConnection socket;
SolderSplashLabs 0:0bce3a738bcb 366 int n = 0;
SolderSplashLabs 0:0bce3a738bcb 367
SolderSplashLabs 0:0bce3a738bcb 368 if (socket.connect(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP) < 0)
SolderSplashLabs 0:0bce3a738bcb 369 {
SolderSplashLabs 0:0bce3a738bcb 370 pc.printf("\r\nUnable to connect to (%s) on port (%d)\r\n", ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT_TCP);
SolderSplashLabs 0:0bce3a738bcb 371 }
SolderSplashLabs 0:0bce3a738bcb 372 else
SolderSplashLabs 0:0bce3a738bcb 373 {
SolderSplashLabs 0:0bce3a738bcb 374 // Block for 1 second
SolderSplashLabs 0:0bce3a738bcb 375 socket.set_blocking( true, 1000 );
SolderSplashLabs 0:0bce3a738bcb 376
SolderSplashLabs 0:0bce3a738bcb 377 pc.printf("\r\n!! Press any key to stop sending !!\r\n\r\n");
SolderSplashLabs 0:0bce3a738bcb 378 while (1)
SolderSplashLabs 0:0bce3a738bcb 379 {
SolderSplashLabs 0:0bce3a738bcb 380 counter ++;
SolderSplashLabs 0:0bce3a738bcb 381
SolderSplashLabs 0:0bce3a738bcb 382 n = socket.send_all(hello, sizeof(hello) - 1);
SolderSplashLabs 0:0bce3a738bcb 383
SolderSplashLabs 0:0bce3a738bcb 384 if ( n > 0 )
SolderSplashLabs 0:0bce3a738bcb 385 {
SolderSplashLabs 0:0bce3a738bcb 386 pc.printf("%05d : TCP Socket Sent : Hello World\r\n", counter);
SolderSplashLabs 0:0bce3a738bcb 387 }
SolderSplashLabs 0:0bce3a738bcb 388 else
SolderSplashLabs 0:0bce3a738bcb 389 {
SolderSplashLabs 0:0bce3a738bcb 390 pc.printf("Failed to send\r\n");
SolderSplashLabs 0:0bce3a738bcb 391 break;
SolderSplashLabs 0:0bce3a738bcb 392 }
SolderSplashLabs 0:0bce3a738bcb 393
SolderSplashLabs 0:0bce3a738bcb 394 n = socket.receive(tmpBuffer, 256);
SolderSplashLabs 0:0bce3a738bcb 395
SolderSplashLabs 0:0bce3a738bcb 396 if ( n > 0 )
SolderSplashLabs 0:0bce3a738bcb 397 {
SolderSplashLabs 0:0bce3a738bcb 398 pc.printf("TCP Socket Recv'd : %s \r\n", tmpBuffer);
SolderSplashLabs 0:0bce3a738bcb 399 tmpBuffer[n] = '\0';
SolderSplashLabs 0:0bce3a738bcb 400 }
SolderSplashLabs 0:0bce3a738bcb 401 else
SolderSplashLabs 0:0bce3a738bcb 402 {
SolderSplashLabs 0:0bce3a738bcb 403 tmpBuffer[0] = '\0';
SolderSplashLabs 0:0bce3a738bcb 404 pc.printf("TCP : Failed to Recv\r\n");
SolderSplashLabs 0:0bce3a738bcb 405 break;
SolderSplashLabs 0:0bce3a738bcb 406 }
SolderSplashLabs 0:0bce3a738bcb 407
SolderSplashLabs 0:0bce3a738bcb 408 wait_ms(50);
SolderSplashLabs 0:0bce3a738bcb 409
SolderSplashLabs 0:0bce3a738bcb 410 // Should we stop?
SolderSplashLabs 0:0bce3a738bcb 411 if ( pc.readable() )
SolderSplashLabs 0:0bce3a738bcb 412 {
SolderSplashLabs 0:0bce3a738bcb 413 pc.printf("Closing Socket \r\n");
SolderSplashLabs 0:0bce3a738bcb 414 pc.getc();
SolderSplashLabs 0:0bce3a738bcb 415 break;
SolderSplashLabs 0:0bce3a738bcb 416 }
SolderSplashLabs 0:0bce3a738bcb 417 }
SolderSplashLabs 0:0bce3a738bcb 418 if ( wifi.is_connected() )
SolderSplashLabs 0:0bce3a738bcb 419 {
SolderSplashLabs 0:0bce3a738bcb 420 socket.close();
SolderSplashLabs 0:0bce3a738bcb 421 }
SolderSplashLabs 0:0bce3a738bcb 422 pc.printf("Completed.\r\n");
SolderSplashLabs 0:0bce3a738bcb 423 }
SolderSplashLabs 0:0bce3a738bcb 424 }
SolderSplashLabs 0:0bce3a738bcb 425
SolderSplashLabs 0:0bce3a738bcb 426
SolderSplashLabs 0:0bce3a738bcb 427 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 428 /*!
SolderSplashLabs 0:0bce3a738bcb 429 @brief Opens a sockets to listen for connections, upon connection a message is sent and the
SolderSplashLabs 0:0bce3a738bcb 430 client disconnected
SolderSplashLabs 0:0bce3a738bcb 431 */
SolderSplashLabs 0:0bce3a738bcb 432 // ------------------------------------------------------------------------------------------------------------
SolderSplashLabs 0:0bce3a738bcb 433 void TcpServerTest ( void )
SolderSplashLabs 0:0bce3a738bcb 434 {
SolderSplashLabs 0:0bce3a738bcb 435 int32_t status;
SolderSplashLabs 0:0bce3a738bcb 436 TCPSocketServer server;
SolderSplashLabs 0:0bce3a738bcb 437 TCPSocketConnection client;
SolderSplashLabs 0:0bce3a738bcb 438
SolderSplashLabs 0:0bce3a738bcb 439 server.bind(80);
SolderSplashLabs 0:0bce3a738bcb 440 server.listen();
SolderSplashLabs 0:0bce3a738bcb 441 pc.printf("\r\n!! Press any key to stop listening !!\r\n\r\n");
SolderSplashLabs 0:0bce3a738bcb 442 while (1)
SolderSplashLabs 0:0bce3a738bcb 443 {
SolderSplashLabs 0:0bce3a738bcb 444 status = server.accept(client);
SolderSplashLabs 0:0bce3a738bcb 445 if (status >= 0)
SolderSplashLabs 0:0bce3a738bcb 446 {
SolderSplashLabs 0:0bce3a738bcb 447 client.set_blocking(false, 1500); // Timeout after (1.5)s
SolderSplashLabs 0:0bce3a738bcb 448 pc.printf("Connection from: %s \r\n", client.get_address());
SolderSplashLabs 0:0bce3a738bcb 449 //client.receive(buffer, sizeof(buffer));
SolderSplashLabs 0:0bce3a738bcb 450 //pc.printf("Received: %s \r\n",buffer);
SolderSplashLabs 0:0bce3a738bcb 451 pc.printf("Sending the message to the server. \r\n");
SolderSplashLabs 0:0bce3a738bcb 452 client.send_all(hello, sizeof(hello));
SolderSplashLabs 0:0bce3a738bcb 453 client.close();
SolderSplashLabs 0:0bce3a738bcb 454 }
SolderSplashLabs 0:0bce3a738bcb 455
SolderSplashLabs 0:0bce3a738bcb 456 // Should we stop?
SolderSplashLabs 0:0bce3a738bcb 457 if ( pc.readable() )
SolderSplashLabs 0:0bce3a738bcb 458 {
SolderSplashLabs 0:0bce3a738bcb 459 pc.printf("Closing Socket \r\n");
SolderSplashLabs 0:0bce3a738bcb 460 pc.getc();
SolderSplashLabs 0:0bce3a738bcb 461 break;
SolderSplashLabs 0:0bce3a738bcb 462 }
SolderSplashLabs 0:0bce3a738bcb 463
SolderSplashLabs 0:0bce3a738bcb 464 if (! wifi.is_connected() )
SolderSplashLabs 0:0bce3a738bcb 465 {
SolderSplashLabs 0:0bce3a738bcb 466 pc.printf("WiFi Connection lost \r\n");
SolderSplashLabs 0:0bce3a738bcb 467 break;
SolderSplashLabs 0:0bce3a738bcb 468 }
SolderSplashLabs 0:0bce3a738bcb 469 }
SolderSplashLabs 0:0bce3a738bcb 470
SolderSplashLabs 0:0bce3a738bcb 471 if ( wifi.is_connected() )
SolderSplashLabs 0:0bce3a738bcb 472 {
SolderSplashLabs 0:0bce3a738bcb 473 server.close();
SolderSplashLabs 0:0bce3a738bcb 474 }
SolderSplashLabs 0:0bce3a738bcb 475 }