Wifi Pressure Sensor

Dependencies:   HTTPClient MPL3115A2 NTPClient TMP102 USBDevice cc3000_hostdriver_mbedsocket mbed

Committer:
markirwin
Date:
Wed Jun 18 06:18:16 2014 +0000
Revision:
12:41ecc717406f
Parent:
11:8a3bc0e3255d
Child:
13:cc381bd02ba1
Added HTTP post to remote server

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