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 18:32:02 2015 +0000
Revision:
3:6641e741733c
Parent:
2:f47fb78ba7b0
Child:
4:e1f2918c9770
update version 12/1;

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