v2 for lunchbox

Dependencies:   HTTPClient PWM_Tone_Library PinDetect_KL25Z Queue cc3000_hostdriver_mbedsocket mbed

Fork of kragl by The Kragl

Committer:
inezraharjo
Date:
Wed Dec 02 19:30:05 2015 +0000
Revision:
4:e1f2918c9770
Parent:
3:6641e741733c
Reduced delays! for turning on/off alarm by opening box and from app/entering code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ahsueh 0:a77a884aa413 1 /**
ahsueh 0:a77a884aa413 2 * \brief CS294-84 demo \author Ben Zhang, Antonio Iannopollo
ahsueh 0:a77a884aa413 3 *
ahsueh 0:a77a884aa413 4 * This sampel code illustrates how to connect the mbed KL25Z platform to internet
ahsueh 0:a77a884aa413 5 * thorugh the CC3000 wifi breakout board (http://www.adafruit.com/product/1469).
ahsueh 0:a77a884aa413 6 * Connections between the KL25Z and the CC3000 are made according to the
ahsueh 0:a77a884aa413 7 * guide at https://learn.adafruit.com/adafruit-cc3000-wifi -- KL25Z and arduino
ahsueh 0:a77a884aa413 8 * UNO are pin to pin compatible --
ahsueh 0:a77a884aa413 9 *
ahsueh 0:a77a884aa413 10 * This application uses the following libraries:
ahsueh 0:a77a884aa413 11 * - cc3000_hostdriver_mbedsocket
ahsueh 0:a77a884aa413 12 * (http://developer.mbed.org/users/Kojto/code/cc3000_hostdriver_mbedsocket/)
ahsueh 0:a77a884aa413 13 * - HTTPClient (http://developer.mbed.org/users/donatien/code/HTTPClient/)
ahsueh 0:a77a884aa413 14 */
inezraharjo 1:90b792629d5e 15 #include <stdio.h>
inezraharjo 1:90b792629d5e 16 #include <stdlib.h>
inezraharjo 1:90b792629d5e 17 #include <string.h>
inezraharjo 1:90b792629d5e 18 #include <time.h>
ahsueh 0:a77a884aa413 19 #include "mbed.h"
ahsueh 0:a77a884aa413 20 #include "cc3000.h"
ahsueh 0:a77a884aa413 21 #include "HTTPClient.h"
ahsueh 0:a77a884aa413 22 #include "PinDetect.h"
ahsueh 0:a77a884aa413 23 #include "pwm_tone.h"
ahsueh 0:a77a884aa413 24
ahsueh 0:a77a884aa413 25 // KL25Z wifi connection
ahsueh 0:a77a884aa413 26 // we need to define connection pins for:
ahsueh 0:a77a884aa413 27 // - IRQ => (pin D3)
ahsueh 0:a77a884aa413 28 // - Enable => (pin D5)
ahsueh 0:a77a884aa413 29 // - SPI CS => (pin D10)
ahsueh 0:a77a884aa413 30 // - SPI MOSI => (pin D11)
ahsueh 0:a77a884aa413 31 // - SPI MISO => (pin D12)
ahsueh 0:a77a884aa413 32 // - SPI CLK => (pin D13)
ahsueh 0:a77a884aa413 33 // plus wifi network SSID, password, security level and smart-configuration flag.
ahsueh 0:a77a884aa413 34 mbed_cc3000::cc3000 wifi(D3, D5, D10, SPI(D11, D12, D13),
inezraharjo 3:6641e741733c 35 "Fire_2441", "", NONE, false);
ahsueh 0:a77a884aa413 36
ahsueh 0:a77a884aa413 37 // create an http instance
ahsueh 0:a77a884aa413 38 HTTPClient http;
ahsueh 0:a77a884aa413 39
ahsueh 0:a77a884aa413 40 // str is used to hold the response data
ahsueh 0:a77a884aa413 41 char str[512];
ahsueh 0:a77a884aa413 42 char url[128];
ahsueh 0:a77a884aa413 43 char in[512];
ahsueh 0:a77a884aa413 44 char out[512];
ahsueh 0:a77a884aa413 45
ahsueh 0:a77a884aa413 46
ahsueh 0:a77a884aa413 47 // setup the serial connection, and LEDs
ahsueh 0:a77a884aa413 48 Serial pc(USBTX, USBRX);
ahsueh 0:a77a884aa413 49 DigitalOut led_red(LED_RED);
ahsueh 0:a77a884aa413 50 DigitalOut led_green(LED_GREEN);
ahsueh 0:a77a884aa413 51
ahsueh 0:a77a884aa413 52 PinDetect p1(D4);
ahsueh 0:a77a884aa413 53 PinDetect p2(D6);
ahsueh 0:a77a884aa413 54 PinDetect p3(D7);
inezraharjo 1:90b792629d5e 55 PinDetect reed(A3);
inezraharjo 1:90b792629d5e 56 DigitalOut RGBindicator(D2);
inezraharjo 2:f47fb78ba7b0 57 DigitalOut Buzzer(D9);
inezraharjo 1:90b792629d5e 58 DigitalOut warningLED(A4);
inezraharjo 1:90b792629d5e 59 DigitalOut correctLED(A5);
ahsueh 0:a77a884aa413 60
inezraharjo 4:e1f2918c9770 61 int changedFromOFF = 0;
inezraharjo 4:e1f2918c9770 62 int changedFromON = 0;
ahsueh 0:a77a884aa413 63 int code[] = {0, 0, 0, 0};
ahsueh 0:a77a884aa413 64 int passwordcounter = 0;
ahsueh 0:a77a884aa413 65 bool codeEntered = false;
ahsueh 0:a77a884aa413 66 bool reedIsOpen = false;
ahsueh 0:a77a884aa413 67 bool alarmOn = false;
ahsueh 0:a77a884aa413 68 bool boxOpenLegal = false;
inezraharjo 1:90b792629d5e 69 int password[] = {1, 1, 1, 1};
ahsueh 0:a77a884aa413 70 float C_3 = 1000000/Do3,
ahsueh 0:a77a884aa413 71 Cs_3 = 1000000/Do3s,
ahsueh 0:a77a884aa413 72 D_3 = 1000000/Re3,
ahsueh 0:a77a884aa413 73 Ds_3 = 1000000/Re3s,
ahsueh 0:a77a884aa413 74 E_3 = 1000000/Mi3,
ahsueh 0:a77a884aa413 75 F_3 = 1000000/Fa3,
ahsueh 0:a77a884aa413 76 Fs_3 = 1000000/Fa3s,
ahsueh 0:a77a884aa413 77 G_3 = 1000000/So3,
ahsueh 0:a77a884aa413 78 Gs_3 = 1000000/So3s,
ahsueh 0:a77a884aa413 79 A_3 = 1000000/La3,
ahsueh 0:a77a884aa413 80 As_3 = 1000000/La3s,
ahsueh 0:a77a884aa413 81 B_3 = 1000000/Ti3,
ahsueh 0:a77a884aa413 82 C_4 = 1000000/Do4,
ahsueh 0:a77a884aa413 83 Cs_4 = 1000000/Do4s,
ahsueh 0:a77a884aa413 84 D_4 = 1000000/Re4,
ahsueh 0:a77a884aa413 85 Ds_4 = 1000000/Re4s,
ahsueh 0:a77a884aa413 86 E_4 = 1000000/Mi4,
ahsueh 0:a77a884aa413 87 F_4 = 1000000/Fa4,
ahsueh 0:a77a884aa413 88 Fs_4 = 1000000/Fa4s,
ahsueh 0:a77a884aa413 89 G_4 = 1000000/So4,
ahsueh 0:a77a884aa413 90 Gs_4 = 1000000/So4s,
ahsueh 0:a77a884aa413 91 A_4 = 1000000/La4,
ahsueh 0:a77a884aa413 92 As_4 = 1000000/La4s,
ahsueh 0:a77a884aa413 93 B_4 = 1000000/Ti4,
ahsueh 0:a77a884aa413 94 C_5 = 1000000/Do5,
ahsueh 0:a77a884aa413 95 Cs_5 = 1000000/Do5s,
ahsueh 0:a77a884aa413 96 D_5 = 1000000/Re5,
ahsueh 0:a77a884aa413 97 Ds_5 = 1000000/Re5s,
ahsueh 0:a77a884aa413 98 E_5 = 1000000/Mi5,
ahsueh 0:a77a884aa413 99 F_5 = 1000000/Fa5,
ahsueh 0:a77a884aa413 100 Fs_5 = 1000000/Fa5s,
ahsueh 0:a77a884aa413 101 G_5 = 1000000/So5,
ahsueh 0:a77a884aa413 102 Gs_5 = 1000000/So5s,
ahsueh 0:a77a884aa413 103 A_5 = 1000000/La5,
ahsueh 0:a77a884aa413 104 As_5 = 1000000/La5s,
ahsueh 0:a77a884aa413 105 B_5 = 1000000/Ti5;
ahsueh 0:a77a884aa413 106
ahsueh 0:a77a884aa413 107 int tones[] = {E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, D_4, 0, E_4, G_4, G_4, 0,
ahsueh 0:a77a884aa413 108 E_4, D_4, C_4, D_4, E_4, E_4, E_4, 0, D_4, D_4, E_4, D_4, C_4, 0, 0, 0
ahsueh 0:a77a884aa413 109 };
ahsueh 0:a77a884aa413 110 int tones_num = 32;
ahsueh 0:a77a884aa413 111
ahsueh 0:a77a884aa413 112 //Queue buttonQ(4,4);
ahsueh 0:a77a884aa413 113
ahsueh 0:a77a884aa413 114 void key1Pressed( void )
ahsueh 0:a77a884aa413 115 {
ahsueh 0:a77a884aa413 116 //pc.printf("Key Pressed\n");
ahsueh 0:a77a884aa413 117 int i = 1;
ahsueh 0:a77a884aa413 118 code[passwordcounter] = i;
ahsueh 0:a77a884aa413 119 passwordcounter++;
inezraharjo 1:90b792629d5e 120 if (codeEntered==false){
inezraharjo 3:6641e741733c 121 correctLED = 1;
inezraharjo 1:90b792629d5e 122 }
ahsueh 0:a77a884aa413 123 //buttonQ.Put(&i);
ahsueh 0:a77a884aa413 124 }
ahsueh 0:a77a884aa413 125
ahsueh 0:a77a884aa413 126 void key1Released( void )
ahsueh 0:a77a884aa413 127 {
ahsueh 0:a77a884aa413 128 //pc.printf("Key Released\n");
inezraharjo 1:90b792629d5e 129 if (codeEntered==false){
inezraharjo 1:90b792629d5e 130 correctLED = 0;
inezraharjo 1:90b792629d5e 131 }
ahsueh 0:a77a884aa413 132 }
ahsueh 0:a77a884aa413 133
ahsueh 0:a77a884aa413 134 void key1PressedHeld( void )
ahsueh 0:a77a884aa413 135 {
ahsueh 0:a77a884aa413 136 //pc.printf("Key Pressed Held\n");
ahsueh 0:a77a884aa413 137 }
ahsueh 0:a77a884aa413 138
ahsueh 0:a77a884aa413 139 void key2Pressed( void )
ahsueh 0:a77a884aa413 140 {
ahsueh 0:a77a884aa413 141 //pc.printf("Key Pressed\n");
ahsueh 0:a77a884aa413 142 int i = 2;
ahsueh 0:a77a884aa413 143 code[passwordcounter] = i;
ahsueh 0:a77a884aa413 144 passwordcounter++;
ahsueh 0:a77a884aa413 145 //buttonQ.Put(&i);
inezraharjo 1:90b792629d5e 146 if (codeEntered==false){
inezraharjo 1:90b792629d5e 147 correctLED = 1;
inezraharjo 1:90b792629d5e 148 }
ahsueh 0:a77a884aa413 149
ahsueh 0:a77a884aa413 150 }
ahsueh 0:a77a884aa413 151
ahsueh 0:a77a884aa413 152 void key2Released( void )
ahsueh 0:a77a884aa413 153 {
ahsueh 0:a77a884aa413 154 //pc.printf("Key Released\n");
inezraharjo 1:90b792629d5e 155 if (codeEntered==false){
inezraharjo 1:90b792629d5e 156 correctLED = 0;
inezraharjo 1:90b792629d5e 157 }
ahsueh 0:a77a884aa413 158 }
ahsueh 0:a77a884aa413 159
ahsueh 0:a77a884aa413 160 void key2PressedHeld( void)
ahsueh 0:a77a884aa413 161 {
ahsueh 0:a77a884aa413 162 //pc.printf("Key Pressed Held\n");
ahsueh 0:a77a884aa413 163 }
ahsueh 0:a77a884aa413 164
ahsueh 0:a77a884aa413 165 void key3Pressed( void )
ahsueh 0:a77a884aa413 166 {
ahsueh 0:a77a884aa413 167 //pc.printf("Key Pressed\n");
ahsueh 0:a77a884aa413 168 int i = 3;
ahsueh 0:a77a884aa413 169 code[passwordcounter] = i;
ahsueh 0:a77a884aa413 170 passwordcounter++;
ahsueh 0:a77a884aa413 171 //buttonQ.Put(&i);
inezraharjo 1:90b792629d5e 172 if (codeEntered==false){
inezraharjo 1:90b792629d5e 173 correctLED = 1;
inezraharjo 1:90b792629d5e 174 }
ahsueh 0:a77a884aa413 175
ahsueh 0:a77a884aa413 176 }
ahsueh 0:a77a884aa413 177
ahsueh 0:a77a884aa413 178 void key3Released( void )
ahsueh 0:a77a884aa413 179 {
ahsueh 0:a77a884aa413 180 //pc.printf("Key Released\n");
inezraharjo 1:90b792629d5e 181 if (codeEntered==false){
inezraharjo 1:90b792629d5e 182 correctLED = 0;
inezraharjo 1:90b792629d5e 183 }
ahsueh 0:a77a884aa413 184 }
ahsueh 0:a77a884aa413 185
ahsueh 0:a77a884aa413 186 void key3PressedHeld( void )
ahsueh 0:a77a884aa413 187 {
ahsueh 0:a77a884aa413 188 //pc.printf("Key Pressed Held\n");
ahsueh 0:a77a884aa413 189 }
ahsueh 0:a77a884aa413 190
ahsueh 0:a77a884aa413 191 void reedOpen( void )
ahsueh 0:a77a884aa413 192 {
inezraharjo 3:6641e741733c 193 pc.printf("Reed Open\r\n");
inezraharjo 3:6641e741733c 194 pc.printf("boxOpenLegal: %d\r\n", boxOpenLegal);
ahsueh 0:a77a884aa413 195 reedIsOpen = 1;
inezraharjo 4:e1f2918c9770 196 if (!boxOpenLegal){
inezraharjo 4:e1f2918c9770 197 Buzzer = 1;
inezraharjo 4:e1f2918c9770 198 changedFromOFF = 1;
inezraharjo 4:e1f2918c9770 199 }
ahsueh 0:a77a884aa413 200 }
ahsueh 0:a77a884aa413 201
ahsueh 0:a77a884aa413 202 void reedClosed( void )
ahsueh 0:a77a884aa413 203 {
ahsueh 0:a77a884aa413 204 pc.printf("Reed Closed\n");
ahsueh 0:a77a884aa413 205 reedIsOpen = 0;
inezraharjo 1:90b792629d5e 206 if (boxOpenLegal==true){
inezraharjo 4:e1f2918c9770 207 changedFromON = 1;
inezraharjo 1:90b792629d5e 208 correctLED =0;
inezraharjo 2:f47fb78ba7b0 209 for (int j=0; j<8; j++){
inezraharjo 2:f47fb78ba7b0 210 warningLED =1;
inezraharjo 2:f47fb78ba7b0 211 wait(0.15);
inezraharjo 2:f47fb78ba7b0 212 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 213 wait(0.15);
inezraharjo 2:f47fb78ba7b0 214 }
inezraharjo 3:6641e741733c 215 Buzzer = 0;
inezraharjo 1:90b792629d5e 216 }
inezraharjo 3:6641e741733c 217 pc.printf("boxOpenLegal: %d\r\n", boxOpenLegal);
ahsueh 0:a77a884aa413 218 }
ahsueh 0:a77a884aa413 219
ahsueh 0:a77a884aa413 220 void reedOpenHeld( void )
ahsueh 0:a77a884aa413 221 {
ahsueh 0:a77a884aa413 222 //pc.printf("Key Pressed Held\n");
inezraharjo 2:f47fb78ba7b0 223 reedIsOpen = 1;
ahsueh 0:a77a884aa413 224 }
ahsueh 0:a77a884aa413 225
ahsueh 0:a77a884aa413 226 int main()
ahsueh 0:a77a884aa413 227 {
ahsueh 0:a77a884aa413 228 // by default, it's red
ahsueh 0:a77a884aa413 229 led_red = 0;
ahsueh 0:a77a884aa413 230 led_green = 1;
inezraharjo 2:f47fb78ba7b0 231 for (int j=0; j<4; j++){
inezraharjo 2:f47fb78ba7b0 232 warningLED =1;
inezraharjo 2:f47fb78ba7b0 233 wait(0.5);
inezraharjo 2:f47fb78ba7b0 234 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 235 wait(0.5);
inezraharjo 2:f47fb78ba7b0 236 }
inezraharjo 1:90b792629d5e 237 correctLED = 0;
ahsueh 0:a77a884aa413 238 // print message to indicate the program has started
ahsueh 0:a77a884aa413 239 pc.printf("CC3000 Lunch Theft\r\n");
ahsueh 0:a77a884aa413 240 wifi.init();
inezraharjo 4:e1f2918c9770 241
ahsueh 0:a77a884aa413 242 p1.mode(PullUp);
ahsueh 0:a77a884aa413 243 p2.mode(PullUp);
ahsueh 0:a77a884aa413 244 p3.mode(PullUp);
ahsueh 0:a77a884aa413 245 reed.mode(PullUp);
ahsueh 0:a77a884aa413 246
ahsueh 0:a77a884aa413 247 p1.attach_asserted( &key1Pressed);
ahsueh 0:a77a884aa413 248 p1.attach_deasserted( &key1Released);
ahsueh 0:a77a884aa413 249 p1.attach_asserted_held( &key1PressedHeld);
ahsueh 0:a77a884aa413 250 p1.setAssertValue( 0 );
ahsueh 0:a77a884aa413 251 p1.setSampleFrequency( 10000 );
ahsueh 0:a77a884aa413 252
ahsueh 0:a77a884aa413 253 p2.attach_asserted( &key2Pressed);
ahsueh 0:a77a884aa413 254 p2.attach_deasserted( &key2Released);
ahsueh 0:a77a884aa413 255 p2.attach_asserted_held( &key2PressedHeld);
ahsueh 0:a77a884aa413 256 p2.setAssertValue( 0 );
ahsueh 0:a77a884aa413 257 p2.setSampleFrequency( 10000 );
ahsueh 0:a77a884aa413 258
ahsueh 0:a77a884aa413 259 p3.attach_asserted( &key3Pressed);
ahsueh 0:a77a884aa413 260 p3.attach_deasserted( &key3Released);
ahsueh 0:a77a884aa413 261 p3.attach_asserted_held( &key3PressedHeld);
ahsueh 0:a77a884aa413 262 p3.setAssertValue( 0 );
ahsueh 0:a77a884aa413 263 p3.setSampleFrequency( 10000 );
ahsueh 0:a77a884aa413 264
ahsueh 0:a77a884aa413 265 reed.attach_asserted( &reedClosed);
ahsueh 0:a77a884aa413 266 reed.attach_deasserted( &reedOpen);
inezraharjo 2:f47fb78ba7b0 267 reed.attach_deasserted_held( &reedOpenHeld);
ahsueh 0:a77a884aa413 268 reed.setAssertValue( 0 );
ahsueh 0:a77a884aa413 269 reed.setSampleFrequency( 10000 );
inezraharjo 1:90b792629d5e 270
inezraharjo 1:90b792629d5e 271 Buzzer = 1; //4 Octave C beat 4/16
inezraharjo 1:90b792629d5e 272 wait_ms(1000);
inezraharjo 1:90b792629d5e 273 Buzzer = 0;
inezraharjo 1:90b792629d5e 274
inezraharjo 4:e1f2918c9770 275 changedFromOFF = 0;
inezraharjo 4:e1f2918c9770 276 changedFromON = 0;
inezraharjo 4:e1f2918c9770 277
inezraharjo 1:90b792629d5e 278 clock_t start_t, current_t, total_t;
inezraharjo 1:90b792629d5e 279 //int counterforpasswordcheck = 0;
inezraharjo 1:90b792629d5e 280 //int i;
ahsueh 0:a77a884aa413 281 int init = 0; // init wifi done
inezraharjo 1:90b792629d5e 282 start_t = clock();
inezraharjo 3:6641e741733c 283 int num = 0;
inezraharjo 2:f47fb78ba7b0 284 reedIsOpen = (reed == 1);
ahsueh 0:a77a884aa413 285 while (1) {
inezraharjo 2:f47fb78ba7b0 286 pc.printf("reed value:%d\r\n",reedIsOpen);
inezraharjo 2:f47fb78ba7b0 287 pc.printf("codeEntered:%d\r\n",codeEntered);
inezraharjo 2:f47fb78ba7b0 288 pc.printf("boxOpenLegal:%d\r\n",boxOpenLegal);
inezraharjo 2:f47fb78ba7b0 289
ahsueh 0:a77a884aa413 290 if (init == 0) {
ahsueh 0:a77a884aa413 291 if(wifi.is_connected() == false) {
ahsueh 0:a77a884aa413 292 // try to connect
ahsueh 0:a77a884aa413 293 if (wifi.connect() == -1) {
ahsueh 0:a77a884aa413 294 pc.printf("Failed to connect."
ahsueh 0:a77a884aa413 295 "Please verify connection details and try again.\r\n");
ahsueh 0:a77a884aa413 296 } else {
ahsueh 0:a77a884aa413 297 pc.printf("IP address: %s \r\n", wifi.getIPAddress());
ahsueh 0:a77a884aa413 298
ahsueh 0:a77a884aa413 299 //once connected, turn green LED on and red LED off
ahsueh 0:a77a884aa413 300 led_red = 1;
ahsueh 0:a77a884aa413 301 led_green = 0;
ahsueh 0:a77a884aa413 302 }
ahsueh 0:a77a884aa413 303 } else {
inezraharjo 1:90b792629d5e 304 pc.printf("Test first\r\n");
inezraharjo 1:90b792629d5e 305 sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=NO&alarmOn=OFF&boxLocked=YES");
ahsueh 0:a77a884aa413 306 int ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 307 init = 1;
inezraharjo 1:90b792629d5e 308 int tries = 15;
inezraharjo 1:90b792629d5e 309 while (tries > 0) {
ahsueh 0:a77a884aa413 310 ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 311 if (!ret) {
ahsueh 0:a77a884aa413 312 pc.printf("Requested %s\r\n", url);
ahsueh 0:a77a884aa413 313 pc.printf("Page fetched successfully - read %d characters\r\n",
ahsueh 0:a77a884aa413 314 strlen(str));
ahsueh 0:a77a884aa413 315 pc.printf("Result: %s\r\n", str);
inezraharjo 1:90b792629d5e 316 break;
ahsueh 0:a77a884aa413 317 } else {
ahsueh 0:a77a884aa413 318 pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
ahsueh 0:a77a884aa413 319 ret,
ahsueh 0:a77a884aa413 320 http.getHTTPResponseCode());
ahsueh 0:a77a884aa413 321 }
ahsueh 0:a77a884aa413 322 tries--;
inezraharjo 1:90b792629d5e 323 }
ahsueh 0:a77a884aa413 324 }
ahsueh 0:a77a884aa413 325 }
inezraharjo 1:90b792629d5e 326 current_t = clock();
inezraharjo 3:6641e741733c 327 total_t = (double)(current_t - start_t) / (CLOCKS_PER_SEC);
inezraharjo 1:90b792629d5e 328 //pc.printf("total_t: %d\r\n", total_t);
inezraharjo 2:f47fb78ba7b0 329 if ((total_t%1)==0){ //every t seconds
inezraharjo 1:90b792629d5e 330 pc.printf("SENDING TO URL\n");
inezraharjo 1:90b792629d5e 331 sprintf(url, "http://www.charlesding.net/kragl/pincode_read.php?");
inezraharjo 1:90b792629d5e 332 int ret = http.get(url, str, 128);
inezraharjo 1:90b792629d5e 333 pc.printf("Trying to Request %s\r\n", url);
inezraharjo 1:90b792629d5e 334 int tries = 50;
inezraharjo 1:90b792629d5e 335 while (tries > 0) {
inezraharjo 1:90b792629d5e 336 pc.printf("still in while lop #%d", tries);
inezraharjo 1:90b792629d5e 337 if (!ret) {
inezraharjo 1:90b792629d5e 338 pc.printf("Requested %s\r\n", url);
inezraharjo 1:90b792629d5e 339 pc.printf("Page fetched successfully - read %d characters\r\n",
inezraharjo 1:90b792629d5e 340 strlen(str));
inezraharjo 2:f47fb78ba7b0 341
inezraharjo 1:90b792629d5e 342 char* s = strtok(str, "\n");
inezraharjo 3:6641e741733c 343 pc.printf("code string: %s\r\n",s);
inezraharjo 3:6641e741733c 344 if (true){
inezraharjo 3:6641e741733c 345 for (int c=1; c<5; c++){
inezraharjo 3:6641e741733c 346 char test[] = {s[c]};
inezraharjo 3:6641e741733c 347 num = atoi(test);
inezraharjo 3:6641e741733c 348 password[c-1] = num;
inezraharjo 3:6641e741733c 349 }
inezraharjo 3:6641e741733c 350 }
inezraharjo 1:90b792629d5e 351 char test[] = {s[5]};
inezraharjo 3:6641e741733c 352 num = atoi(test);
inezraharjo 2:f47fb78ba7b0 353 pc.printf("Result last digit: %d\r\n", num);
inezraharjo 1:90b792629d5e 354 if (num==1){
inezraharjo 2:f47fb78ba7b0 355 boxOpenLegal = true;
inezraharjo 2:f47fb78ba7b0 356 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 357 for (int j=0; j<8; j++){
inezraharjo 2:f47fb78ba7b0 358 correctLED =1;
inezraharjo 2:f47fb78ba7b0 359 wait(0.15);
inezraharjo 2:f47fb78ba7b0 360 correctLED = 0;
inezraharjo 2:f47fb78ba7b0 361 wait(0.15);
inezraharjo 2:f47fb78ba7b0 362 }
inezraharjo 2:f47fb78ba7b0 363 Buzzer = 0;
inezraharjo 1:90b792629d5e 364 } else {
inezraharjo 2:f47fb78ba7b0 365 boxOpenLegal = false;
inezraharjo 4:e1f2918c9770 366 if (reedIsOpen){
inezraharjo 4:e1f2918c9770 367 Buzzer = 1;
inezraharjo 4:e1f2918c9770 368 }
inezraharjo 2:f47fb78ba7b0 369 correctLED = 0;
inezraharjo 2:f47fb78ba7b0 370 for (int j=0; j<8; j++){
inezraharjo 2:f47fb78ba7b0 371 warningLED =1;
inezraharjo 2:f47fb78ba7b0 372 wait(0.15);
inezraharjo 2:f47fb78ba7b0 373 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 374 wait(0.15);
inezraharjo 2:f47fb78ba7b0 375 }
inezraharjo 1:90b792629d5e 376 }
inezraharjo 1:90b792629d5e 377 break;
inezraharjo 1:90b792629d5e 378 } else {
inezraharjo 1:90b792629d5e 379 pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
inezraharjo 1:90b792629d5e 380 ret,
inezraharjo 1:90b792629d5e 381 http.getHTTPResponseCode());
inezraharjo 1:90b792629d5e 382
inezraharjo 1:90b792629d5e 383 }
inezraharjo 1:90b792629d5e 384 tries--;
inezraharjo 1:90b792629d5e 385 ret = http.get(url, str, 128);
inezraharjo 1:90b792629d5e 386 }
inezraharjo 1:90b792629d5e 387 }
inezraharjo 3:6641e741733c 388 //pc.printf("waiting to check...\r\n");
inezraharjo 3:6641e741733c 389 //pc.printf("boxOpenLegal: %d\r\n", boxOpenLegal);
inezraharjo 3:6641e741733c 390 //pc.printf("reedIsOpen: %d\r\n", reedIsOpen);
inezraharjo 3:6641e741733c 391 if (!boxOpenLegal && reedIsOpen && codeEntered) {
ahsueh 0:a77a884aa413 392 pc.printf("LEGAL OPENING");
ahsueh 0:a77a884aa413 393 boxOpenLegal = true;
ahsueh 0:a77a884aa413 394 codeEntered = false;
inezraharjo 1:90b792629d5e 395 Buzzer = 0;
inezraharjo 3:6641e741733c 396
inezraharjo 4:e1f2918c9770 397 if (changedFromON){
inezraharjo 4:e1f2918c9770 398 pc.printf("SENDING TO URL\n");
inezraharjo 4:e1f2918c9770 399 sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=NO&alarmOn=OFF&boxLocked=YES");
inezraharjo 4:e1f2918c9770 400
inezraharjo 4:e1f2918c9770 401 int ret = http.get(url, str, 128);
inezraharjo 4:e1f2918c9770 402 pc.printf("Trying to Request %s\r\n", url);
inezraharjo 4:e1f2918c9770 403 int tries = 20;
inezraharjo 4:e1f2918c9770 404 while (tries > 0) {
inezraharjo 4:e1f2918c9770 405 ret = http.get(url, str, 128);
inezraharjo 4:e1f2918c9770 406 if (!ret) {
inezraharjo 4:e1f2918c9770 407 pc.printf("Requested %s\r\n", url);
inezraharjo 4:e1f2918c9770 408 pc.printf("Page fetched successfully - read %d characters\r\n",
inezraharjo 4:e1f2918c9770 409 strlen(str));
inezraharjo 4:e1f2918c9770 410 pc.printf("Result: %s\r\n", str);
inezraharjo 4:e1f2918c9770 411 break;
inezraharjo 4:e1f2918c9770 412 } else {
inezraharjo 4:e1f2918c9770 413 pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
inezraharjo 4:e1f2918c9770 414 ret,
inezraharjo 4:e1f2918c9770 415 http.getHTTPResponseCode());
inezraharjo 4:e1f2918c9770 416 tries--;
inezraharjo 4:e1f2918c9770 417 }
inezraharjo 4:e1f2918c9770 418 }
inezraharjo 4:e1f2918c9770 419 changedFromON = 0;
inezraharjo 4:e1f2918c9770 420 }
inezraharjo 4:e1f2918c9770 421
inezraharjo 4:e1f2918c9770 422
ahsueh 0:a77a884aa413 423 } else if (reedIsOpen && !boxOpenLegal) {
ahsueh 0:a77a884aa413 424 // turn on alarm;
inezraharjo 3:6641e741733c 425 pc.printf("boxOpenLegal: %d\r\n", boxOpenLegal);
inezraharjo 3:6641e741733c 426 pc.printf("reedIsOpen: %d\r\n", reedIsOpen);
inezraharjo 1:90b792629d5e 427 pc.printf("ALARM TIME\r\n");
inezraharjo 1:90b792629d5e 428 Buzzer = 1;
ahsueh 0:a77a884aa413 429
ahsueh 0:a77a884aa413 430 if(wifi.is_connected() == false) {
ahsueh 0:a77a884aa413 431 // try to connect
ahsueh 0:a77a884aa413 432 if (wifi.connect() == -1) {
ahsueh 0:a77a884aa413 433 pc.printf("Failed to connect."
ahsueh 0:a77a884aa413 434 "Please verify connection details and try again.\r\n");
ahsueh 0:a77a884aa413 435 } else {
ahsueh 0:a77a884aa413 436 pc.printf("IP address: %s \r\n", wifi.getIPAddress());
ahsueh 0:a77a884aa413 437
ahsueh 0:a77a884aa413 438 //once connected, turn green LED on and red LED off
ahsueh 0:a77a884aa413 439 led_red = 1;
ahsueh 0:a77a884aa413 440 led_green = 0;
ahsueh 0:a77a884aa413 441 }
ahsueh 0:a77a884aa413 442 } else {
ahsueh 0:a77a884aa413 443 // get input url and then return the value
inezraharjo 4:e1f2918c9770 444 if (changedFromOFF){
ahsueh 0:a77a884aa413 445 pc.printf("SENDING TO URL\n");
inezraharjo 1:90b792629d5e 446 sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=YES1&alarmOn=ON&boxLocked=NO");
ahsueh 0:a77a884aa413 447
ahsueh 0:a77a884aa413 448 int ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 449 pc.printf("Trying to Request %s\r\n", url);
inezraharjo 1:90b792629d5e 450 int tries = 20;
inezraharjo 1:90b792629d5e 451 while (tries > 0) {
ahsueh 0:a77a884aa413 452 if (!ret) {
ahsueh 0:a77a884aa413 453 pc.printf("Requested %s\r\n", url);
ahsueh 0:a77a884aa413 454 pc.printf("Page fetched successfully - read %d characters\r\n",
ahsueh 0:a77a884aa413 455 strlen(str));
ahsueh 0:a77a884aa413 456 pc.printf("Result: %s\r\n", str);
inezraharjo 1:90b792629d5e 457 break;
ahsueh 0:a77a884aa413 458 } else {
ahsueh 0:a77a884aa413 459 pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
ahsueh 0:a77a884aa413 460 ret,
ahsueh 0:a77a884aa413 461 http.getHTTPResponseCode());
ahsueh 0:a77a884aa413 462 tries--;
ahsueh 0:a77a884aa413 463 }
inezraharjo 1:90b792629d5e 464 ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 465 }
inezraharjo 4:e1f2918c9770 466 changedFromOFF = 0;
inezraharjo 4:e1f2918c9770 467 }
ahsueh 0:a77a884aa413 468 }
inezraharjo 3:6641e741733c 469 //wait(0.3);
ahsueh 0:a77a884aa413 470 } else if (!reedIsOpen && boxOpenLegal) {
inezraharjo 1:90b792629d5e 471 Buzzer = 0;
inezraharjo 4:e1f2918c9770 472 // boxOpenLegal = false;
inezraharjo 1:90b792629d5e 473
inezraharjo 4:e1f2918c9770 474
inezraharjo 3:6641e741733c 475 //wait(0.3);
ahsueh 0:a77a884aa413 476 }
inezraharjo 1:90b792629d5e 477 if (!codeEntered && passwordcounter==sizeof(code)/4) {
ahsueh 0:a77a884aa413 478 codeEntered = true;
inezraharjo 4:e1f2918c9770 479
ahsueh 0:a77a884aa413 480 for (int j=0; j<sizeof(code)/4; j++) {
ahsueh 0:a77a884aa413 481 if (code[j]!=password[j]) {
ahsueh 0:a77a884aa413 482 codeEntered = false;
ahsueh 0:a77a884aa413 483 }
ahsueh 0:a77a884aa413 484 }
inezraharjo 1:90b792629d5e 485 if (num==1){
inezraharjo 1:90b792629d5e 486 codeEntered = true;
inezraharjo 1:90b792629d5e 487 }
inezraharjo 1:90b792629d5e 488 if (codeEntered==true){
inezraharjo 3:6641e741733c 489 Buzzer = 0;
inezraharjo 1:90b792629d5e 490 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 491 for (int j=0; j<8; j++){
inezraharjo 2:f47fb78ba7b0 492 correctLED =1;
inezraharjo 2:f47fb78ba7b0 493 wait(0.15);
inezraharjo 2:f47fb78ba7b0 494 correctLED = 0;
inezraharjo 2:f47fb78ba7b0 495 wait(0.15);
inezraharjo 2:f47fb78ba7b0 496 }
inezraharjo 1:90b792629d5e 497 } else {
inezraharjo 1:90b792629d5e 498 correctLED = 0;
inezraharjo 2:f47fb78ba7b0 499 for (int j=0; j<8; j++){
inezraharjo 2:f47fb78ba7b0 500 warningLED =1;
inezraharjo 2:f47fb78ba7b0 501 wait(0.15);
inezraharjo 2:f47fb78ba7b0 502 warningLED = 0;
inezraharjo 2:f47fb78ba7b0 503 wait(0.15);
inezraharjo 2:f47fb78ba7b0 504 }
inezraharjo 1:90b792629d5e 505 }
ahsueh 0:a77a884aa413 506
ahsueh 0:a77a884aa413 507
ahsueh 0:a77a884aa413 508 pc.printf("CODE IS ENTERED\n");
ahsueh 0:a77a884aa413 509 passwordcounter = 0;
ahsueh 0:a77a884aa413 510
ahsueh 0:a77a884aa413 511 pc.printf("SENDING TO URL\n");
inezraharjo 1:90b792629d5e 512 if (codeEntered==false){
inezraharjo 2:f47fb78ba7b0 513 sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?alarmOn=OFF&authorized=NO&openLock=2");
inezraharjo 1:90b792629d5e 514 } else {
inezraharjo 2:f47fb78ba7b0 515 sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?alarmOn=OFF&authorized=YES&openLock=1");
inezraharjo 1:90b792629d5e 516 }
inezraharjo 2:f47fb78ba7b0 517
ahsueh 0:a77a884aa413 518 int ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 519 pc.printf("Trying to Request %s\r\n", url);
inezraharjo 3:6641e741733c 520 int tries = 50;
inezraharjo 1:90b792629d5e 521 while (tries > 0) {
inezraharjo 1:90b792629d5e 522 ret = http.get(url, str, 128);
ahsueh 0:a77a884aa413 523 if (!ret) {
ahsueh 0:a77a884aa413 524 pc.printf("Requested %s\r\n", url);
ahsueh 0:a77a884aa413 525 pc.printf("Page fetched successfully - read %d characters\r\n",
ahsueh 0:a77a884aa413 526 strlen(str));
ahsueh 0:a77a884aa413 527 pc.printf("Result: %s\r\n", str);
inezraharjo 1:90b792629d5e 528 break;
ahsueh 0:a77a884aa413 529 } else {
ahsueh 0:a77a884aa413 530 pc.printf("Error - ret = %d - HTTP return code = %d\r\n",
ahsueh 0:a77a884aa413 531 ret,
ahsueh 0:a77a884aa413 532 http.getHTTPResponseCode());
ahsueh 0:a77a884aa413 533 tries--;
ahsueh 0:a77a884aa413 534 }
ahsueh 0:a77a884aa413 535 }
ahsueh 0:a77a884aa413 536
ahsueh 0:a77a884aa413 537
inezraharjo 1:90b792629d5e 538 }
inezraharjo 1:90b792629d5e 539 //counterforpasswordcheck++;
inezraharjo 1:90b792629d5e 540 //pc.printf("C%d ", counterforpasswordcheck);
ahsueh 0:a77a884aa413 541 }
inezraharjo 1:90b792629d5e 542
inezraharjo 1:90b792629d5e 543
ahsueh 0:a77a884aa413 544
inezraharjo 1:90b792629d5e 545
ahsueh 0:a77a884aa413 546
ahsueh 0:a77a884aa413 547 }