CC3000 Chat example posting messages to husk

Dependencies:   HTTPClient cc3000_hostdriver_mbedsocket mbed tsi_sensor

Fork of CC3000_demo by Ben Zhang

Committer:
bjo3rn
Date:
Mon Oct 20 18:55:54 2014 +0000
Revision:
18:c7e626913c98
Parent:
17:20238cbdcd9d
in-class chat example

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nebgnahz 13:26905142e97b 1 /**
bjo3rn 17:20238cbdcd9d 2 * \brief CS294-84 Chat Demo \author Ben Zhang, Antonio Iannopollo, Bjoern Hartmann
nebgnahz 14:efd42910791b 3 *
nebgnahz 14:efd42910791b 4 * This sampel code illustrates how to connect the mbed KL25Z platform to internet
nebgnahz 14:efd42910791b 5 * thorugh the CC3000 wifi breakout board (http://www.adafruit.com/product/1469).
bjo3rn 17:20238cbdcd9d 6 * Tap the slider past the midway point to generate an "ON" message;
bjo3rn 17:20238cbdcd9d 7 * release to generate an "OFF" message.
bjo3rn 17:20238cbdcd9d 8 *
nebgnahz 14:efd42910791b 9 * Connections between the KL25Z and the CC3000 are made according to the
nebgnahz 14:efd42910791b 10 * guide at https://learn.adafruit.com/adafruit-cc3000-wifi -- KL25Z and arduino
nebgnahz 14:efd42910791b 11 * UNO are pin to pin compatible --
nebgnahz 14:efd42910791b 12 *
nebgnahz 14:efd42910791b 13 * This application uses the following libraries:
nebgnahz 14:efd42910791b 14 * - cc3000_hostdriver_mbedsocket
nebgnahz 14:efd42910791b 15 * (http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/)
nebgnahz 14:efd42910791b 16 * - HTTPClient (http://developer.mbed.org/users/donatien/code/HTTPClient/)
bjo3rn 17:20238cbdcd9d 17 * - tsi_sensor
nebgnahz 14:efd42910791b 18 */
nebgnahz 13:26905142e97b 19
Kojto 0:fe1445e57b7d 20 #include "mbed.h"
Kojto 0:fe1445e57b7d 21 #include "cc3000.h"
Kojto 0:fe1445e57b7d 22 #include "HTTPClient.h"
bjo3rn 17:20238cbdcd9d 23 #include "tsi_sensor.h"
bjo3rn 17:20238cbdcd9d 24
bjo3rn 17:20238cbdcd9d 25
bjo3rn 17:20238cbdcd9d 26 /* TSI slider configuration - This defines will be replaced by PinNames soon */
bjo3rn 17:20238cbdcd9d 27 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
bjo3rn 17:20238cbdcd9d 28 #define ELEC0 9
bjo3rn 17:20238cbdcd9d 29 #define ELEC1 10
bjo3rn 17:20238cbdcd9d 30 #elif defined (TARGET_KL05Z)
bjo3rn 17:20238cbdcd9d 31 #define ELEC0 9
bjo3rn 17:20238cbdcd9d 32 #define ELEC1 8
bjo3rn 17:20238cbdcd9d 33 #else
bjo3rn 17:20238cbdcd9d 34 #error TARGET NOT DEFINED
bjo3rn 17:20238cbdcd9d 35 #endif
bjo3rn 17:20238cbdcd9d 36
bjo3rn 17:20238cbdcd9d 37
Kojto 0:fe1445e57b7d 38
nebgnahz 13:26905142e97b 39 // KL25Z wifi connection
nebgnahz 13:26905142e97b 40 // we need to define connection pins for:
nebgnahz 13:26905142e97b 41 // - IRQ => (pin D3)
nebgnahz 13:26905142e97b 42 // - Enable => (pin D5)
nebgnahz 13:26905142e97b 43 // - SPI CS => (pin D10)
nebgnahz 13:26905142e97b 44 // - SPI MOSI => (pin D11)
nebgnahz 13:26905142e97b 45 // - SPI MISO => (pin D12)
nebgnahz 13:26905142e97b 46 // - SPI CLK => (pin D13)
nebgnahz 13:26905142e97b 47 // plus wifi network SSID, password, security level and smart-configuration flag.
nebgnahz 14:efd42910791b 48 mbed_cc3000::cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13),
nebgnahz 15:ac15ec676d87 49 "EECS-PSK", "Thequickbrown", WPA2, false);
antoni0 10:1804a9dbaee0 50
nebgnahz 13:26905142e97b 51 // create an http instance
nebgnahz 13:26905142e97b 52 HTTPClient http;
Kojto 0:fe1445e57b7d 53
nebgnahz 13:26905142e97b 54 // str is used to hold the response data
nebgnahz 13:26905142e97b 55 char str[512];
nebgnahz 13:26905142e97b 56 // setup the serial connection, and LEDs
nebgnahz 13:26905142e97b 57 Serial pc(USBTX, USBRX);
antoni0 7:47cd0d3d5e4d 58 DigitalOut led_red(LED_RED);
nebgnahz 13:26905142e97b 59 DigitalOut led_green(LED_GREEN);
antoni0 7:47cd0d3d5e4d 60
bjo3rn 17:20238cbdcd9d 61 TSIAnalogSlider tsi(TSI_ELEC0, TSI_ELEC1, 40);
bjo3rn 17:20238cbdcd9d 62 int tsiState=0;
bjo3rn 17:20238cbdcd9d 63
nebgnahz 13:26905142e97b 64 int main()
nebgnahz 13:26905142e97b 65 {
nebgnahz 15:ac15ec676d87 66 // by default, it's red
nebgnahz 15:ac15ec676d87 67 led_red = 0;
nebgnahz 15:ac15ec676d87 68 led_green = 1;
Kojto 0:fe1445e57b7d 69
nebgnahz 15:ac15ec676d87 70 // print message to indicate the program has started
bjo3rn 17:20238cbdcd9d 71 pc.printf("CC3000 Chat Program\r\n");
nebgnahz 15:ac15ec676d87 72 wifi.init();
nebgnahz 13:26905142e97b 73
nebgnahz 15:ac15ec676d87 74 while(1) {
nebgnahz 15:ac15ec676d87 75 // continuosly check connection status
nebgnahz 15:ac15ec676d87 76 if(wifi.is_connected() == false) {
nebgnahz 15:ac15ec676d87 77 // try to connect
nebgnahz 15:ac15ec676d87 78 if (wifi.connect() == -1) {
nebgnahz 15:ac15ec676d87 79 pc.printf("Failed to connect."
nebgnahz 15:ac15ec676d87 80 "Please verify connection details and try again. \r\n");
nebgnahz 15:ac15ec676d87 81 } else {
nebgnahz 15:ac15ec676d87 82 pc.printf("IP address: %s \r\n", wifi.getIPAddress());
nebgnahz 13:26905142e97b 83
nebgnahz 15:ac15ec676d87 84 //once connected, turn green LED on and red LED off
nebgnahz 15:ac15ec676d87 85 led_red = 1;
nebgnahz 15:ac15ec676d87 86 led_green = 0;
nebgnahz 15:ac15ec676d87 87 }
nebgnahz 15:ac15ec676d87 88 } else {
bjo3rn 17:20238cbdcd9d 89 // send a chat message if slider is tapped or released
bjo3rn 17:20238cbdcd9d 90 float position = tsi.readPercentage();
bjo3rn 17:20238cbdcd9d 91 if(position>0.5 and tsiState==0) {
bjo3rn 17:20238cbdcd9d 92 tsiState=1;
bjo3rn 17:20238cbdcd9d 93 char url[]="http://husk.eecs.berkeley.edu/projects/cc3000/sendchat.php?msg=ON";
bjo3rn 17:20238cbdcd9d 94 pc.printf(url);
bjo3rn 17:20238cbdcd9d 95 pc.printf("\r\n");
bjo3rn 17:20238cbdcd9d 96 int ret = http.get(url, str, 128);
bjo3rn 17:20238cbdcd9d 97 pc.printf("Status: %d\r\n",ret);
bjo3rn 17:20238cbdcd9d 98 } else if(position<0.5 and tsiState==1) {
bjo3rn 17:20238cbdcd9d 99 tsiState=0;
bjo3rn 17:20238cbdcd9d 100 char url[]="http://husk.eecs.berkeley.edu/projects/cc3000/sendchat.php?msg=OFF";
bjo3rn 17:20238cbdcd9d 101 pc.printf(url);
bjo3rn 17:20238cbdcd9d 102 pc.printf("\r\n");
bjo3rn 17:20238cbdcd9d 103 int ret = http.get(url, str, 128);
bjo3rn 17:20238cbdcd9d 104 pc.printf("Status: %d\r\n",ret);
nebgnahz 15:ac15ec676d87 105 }
Kojto 0:fe1445e57b7d 106 }
nebgnahz 15:ac15ec676d87 107 }
nebgnahz 14:efd42910791b 108 }