CC3000 Chat example posting messages to husk
Dependencies: HTTPClient cc3000_hostdriver_mbedsocket mbed tsi_sensor
Fork of CC3000_demo by
main.cpp@18:c7e626913c98, 2014-10-20 (annotated)
- 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?
User | Revision | Line number | New 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 | } |