Work with nodejs server: https://github.com/bjo3rn/idd-examples/tree/ben-node-demo/web/nodeServerHTTPSocket
Dependencies: HTTPClient WebSocketClient cc3000_hostdriver_mbedsocket mbed
Fork of CC3000_demo by
main.cpp
- Committer:
- nebgnahz
- Date:
- 2014-11-05
- Revision:
- 18:922b1ad5c826
- Parent:
- 17:97c355870263
File content as of revision 18:922b1ad5c826:
/** * \brief CS294-84 demo \author Ben Zhang, Antonio Iannopollo * * This sampel code illustrates how to connect the mbed KL25Z platform to internet * thorugh the CC3000 wifi breakout board (http://www.adafruit.com/product/1469). * Connections between the KL25Z and the CC3000 are made according to the * guide at https://learn.adafruit.com/adafruit-cc3000-wifi -- KL25Z and arduino * UNO are pin to pin compatible -- * * This application uses the following libraries: * - cc3000_hostdriver_mbedsocket * (http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/) * - HTTPClient (http://developer.mbed.org/users/donatien/code/HTTPClient/) */ #include <string> #include "cc3000.h" #include "mbed.h" #include "HTTPClient.h" const string POLLING_URL = "http://universe.eecs.berkeley.edu:8080/value"; const string UPDATE_URL = "http://universe.eecs.berkeley.edu:8080/update?value="; // KL25Z wifi connection // we need to define connection pins for: // - IRQ => (pin D3) // - Enable => (pin D5) // - SPI CS => (pin D10) // - SPI MOSI => (pin D11) // - SPI MISO => (pin D12) // - SPI CLK => (pin D13) // plus wifi network SSID, password, security level and smart-configuration flag. mbed_cc3000::cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13), "SSID", "PASSWORD", WPA2, false); // create an http instance HTTPClient http; // str is used to hold the response data char str[512]; char url[80]; // setup the serial connection, and LEDs Serial pc(USBTX, USBRX); DigitalOut led_green(LED_GREEN); PwmOut led_red(LED_RED); Ticker reportSensorTicker; bool shouldReadSensor; int sensorData; void readSensor() { // avoid doing much work here (in the interrupt). // put the actual sensor reading in the main function shouldReadSensor = true; } int main() { pc.printf("CC3000 Nodejs Demo Starts\r\n"); // by default, we make the LED red led_red = 0; led_green = 1; // reset the readsensor bool to false so we don't read the data. shouldReadSensor = false; sensorData = 0; // Every 5 second, we sample the sensor and report the data. reportSensorTicker.attach(&readSensor, 5.0); wifi.init(); while(1) { // continuosly check connection status if(wifi.is_connected() == false) { // try to connect if (wifi.connect() == -1) { pc.printf("Failed to connect." "Please verify connection details and try again.\r\n"); continue; } else { pc.printf("IP address: %s \r\n", wifi.getIPAddress()); // once connected, turn green LED on and red LED off led_red = 1; led_green = 0; } } // update the value when shouldReadSensor is true if (shouldReadSensor == true) { shouldReadSensor = false; sensorData += 10; char url[128]; snprintf(url, sizeof(url), "%s%d", UPDATE_URL.c_str(), sensorData); int ret = http.get(url, str, 128); if (!ret) { pc.printf("sending sensorData %d, response: %s\r\n", sensorData, str); } else { pc.printf("[PUSH] Error - ret = %d - HTTP %d\r\n", ret, http.getHTTPResponseCode()); } } // everytime we do HTTP polling int ret = http.get(POLLING_URL.c_str(), str, 128); if (!ret) { int value = atoi(str); led_red = 1.0 * value / 255; } else { pc.printf("[POLL] Error - ret = %d - HTTP %d\r\n", ret, http.getHTTPResponseCode()); } wait(0.1); } }