Wifi Pressure Sensor

Dependencies:   HTTPClient MPL3115A2 NTPClient TMP102 USBDevice cc3000_hostdriver_mbedsocket mbed

Committer:
markirwin
Date:
Fri Jun 20 07:38:10 2014 +0000
Revision:
17:49ff1aa294dd
Parent:
16:a7902d75bef3
Pushed changed to take temp each 10 mins and push to website.

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