v2 for lunchbox
Dependencies: HTTPClient PWM_Tone_Library PinDetect_KL25Z Queue cc3000_hostdriver_mbedsocket mbed
Fork of kragl by
main.cpp@2:f47fb78ba7b0, 2015-11-30 (annotated)
- Committer:
- inezraharjo
- Date:
- Mon Nov 30 01:39:27 2015 +0000
- Revision:
- 2:f47fb78ba7b0
- Parent:
- 1:90b792629d5e
- Child:
- 3:6641e741733c
blinking LED
Who changed what in which revision?
User | Revision | Line number | New 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), |
ahsueh | 0:a77a884aa413 | 35 | "CalVisitor", "", 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 | 1:90b792629d5e | 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 | { |
ahsueh | 0:a77a884aa413 | 191 | pc.printf("Reed Open\n"); |
ahsueh | 0:a77a884aa413 | 192 | reedIsOpen = 1; |
ahsueh | 0:a77a884aa413 | 193 | } |
ahsueh | 0:a77a884aa413 | 194 | |
ahsueh | 0:a77a884aa413 | 195 | void reedClosed( void ) |
ahsueh | 0:a77a884aa413 | 196 | { |
ahsueh | 0:a77a884aa413 | 197 | pc.printf("Reed Closed\n"); |
ahsueh | 0:a77a884aa413 | 198 | reedIsOpen = 0; |
inezraharjo | 1:90b792629d5e | 199 | if (boxOpenLegal==true){ |
inezraharjo | 1:90b792629d5e | 200 | correctLED =0; |
inezraharjo | 2:f47fb78ba7b0 | 201 | for (int j=0; j<8; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 202 | warningLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 203 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 204 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 205 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 206 | } |
inezraharjo | 1:90b792629d5e | 207 | } |
inezraharjo | 1:90b792629d5e | 208 | Buzzer = 0; |
ahsueh | 0:a77a884aa413 | 209 | } |
ahsueh | 0:a77a884aa413 | 210 | |
ahsueh | 0:a77a884aa413 | 211 | void reedOpenHeld( void ) |
ahsueh | 0:a77a884aa413 | 212 | { |
ahsueh | 0:a77a884aa413 | 213 | //pc.printf("Key Pressed Held\n"); |
inezraharjo | 2:f47fb78ba7b0 | 214 | reedIsOpen = 1; |
ahsueh | 0:a77a884aa413 | 215 | } |
ahsueh | 0:a77a884aa413 | 216 | |
ahsueh | 0:a77a884aa413 | 217 | int main() |
ahsueh | 0:a77a884aa413 | 218 | { |
ahsueh | 0:a77a884aa413 | 219 | // by default, it's red |
ahsueh | 0:a77a884aa413 | 220 | led_red = 0; |
ahsueh | 0:a77a884aa413 | 221 | led_green = 1; |
inezraharjo | 2:f47fb78ba7b0 | 222 | for (int j=0; j<4; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 223 | warningLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 224 | wait(0.5); |
inezraharjo | 2:f47fb78ba7b0 | 225 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 226 | wait(0.5); |
inezraharjo | 2:f47fb78ba7b0 | 227 | } |
inezraharjo | 1:90b792629d5e | 228 | correctLED = 0; |
ahsueh | 0:a77a884aa413 | 229 | // print message to indicate the program has started |
ahsueh | 0:a77a884aa413 | 230 | pc.printf("CC3000 Lunch Theft\r\n"); |
ahsueh | 0:a77a884aa413 | 231 | wifi.init(); |
ahsueh | 0:a77a884aa413 | 232 | |
ahsueh | 0:a77a884aa413 | 233 | p1.mode(PullUp); |
ahsueh | 0:a77a884aa413 | 234 | p2.mode(PullUp); |
ahsueh | 0:a77a884aa413 | 235 | p3.mode(PullUp); |
ahsueh | 0:a77a884aa413 | 236 | reed.mode(PullUp); |
ahsueh | 0:a77a884aa413 | 237 | |
ahsueh | 0:a77a884aa413 | 238 | p1.attach_asserted( &key1Pressed); |
ahsueh | 0:a77a884aa413 | 239 | p1.attach_deasserted( &key1Released); |
ahsueh | 0:a77a884aa413 | 240 | p1.attach_asserted_held( &key1PressedHeld); |
ahsueh | 0:a77a884aa413 | 241 | p1.setAssertValue( 0 ); |
ahsueh | 0:a77a884aa413 | 242 | p1.setSampleFrequency( 10000 ); |
ahsueh | 0:a77a884aa413 | 243 | |
ahsueh | 0:a77a884aa413 | 244 | p2.attach_asserted( &key2Pressed); |
ahsueh | 0:a77a884aa413 | 245 | p2.attach_deasserted( &key2Released); |
ahsueh | 0:a77a884aa413 | 246 | p2.attach_asserted_held( &key2PressedHeld); |
ahsueh | 0:a77a884aa413 | 247 | p2.setAssertValue( 0 ); |
ahsueh | 0:a77a884aa413 | 248 | p2.setSampleFrequency( 10000 ); |
ahsueh | 0:a77a884aa413 | 249 | |
ahsueh | 0:a77a884aa413 | 250 | p3.attach_asserted( &key3Pressed); |
ahsueh | 0:a77a884aa413 | 251 | p3.attach_deasserted( &key3Released); |
ahsueh | 0:a77a884aa413 | 252 | p3.attach_asserted_held( &key3PressedHeld); |
ahsueh | 0:a77a884aa413 | 253 | p3.setAssertValue( 0 ); |
ahsueh | 0:a77a884aa413 | 254 | p3.setSampleFrequency( 10000 ); |
ahsueh | 0:a77a884aa413 | 255 | |
ahsueh | 0:a77a884aa413 | 256 | reed.attach_asserted( &reedClosed); |
ahsueh | 0:a77a884aa413 | 257 | reed.attach_deasserted( &reedOpen); |
inezraharjo | 2:f47fb78ba7b0 | 258 | reed.attach_deasserted_held( &reedOpenHeld); |
ahsueh | 0:a77a884aa413 | 259 | reed.setAssertValue( 0 ); |
ahsueh | 0:a77a884aa413 | 260 | reed.setSampleFrequency( 10000 ); |
inezraharjo | 1:90b792629d5e | 261 | |
inezraharjo | 1:90b792629d5e | 262 | Buzzer = 1; //4 Octave C beat 4/16 |
inezraharjo | 1:90b792629d5e | 263 | wait_ms(1000); |
inezraharjo | 1:90b792629d5e | 264 | Buzzer = 0; |
inezraharjo | 1:90b792629d5e | 265 | |
inezraharjo | 1:90b792629d5e | 266 | clock_t start_t, current_t, total_t; |
inezraharjo | 1:90b792629d5e | 267 | //int counterforpasswordcheck = 0; |
inezraharjo | 1:90b792629d5e | 268 | //int i; |
ahsueh | 0:a77a884aa413 | 269 | int init = 0; // init wifi done |
inezraharjo | 1:90b792629d5e | 270 | start_t = clock(); |
ahsueh | 0:a77a884aa413 | 271 | |
inezraharjo | 2:f47fb78ba7b0 | 272 | reedIsOpen = (reed == 1); |
ahsueh | 0:a77a884aa413 | 273 | while (1) { |
inezraharjo | 2:f47fb78ba7b0 | 274 | pc.printf("reed value:%d\r\n",reedIsOpen); |
inezraharjo | 2:f47fb78ba7b0 | 275 | pc.printf("codeEntered:%d\r\n",codeEntered); |
inezraharjo | 2:f47fb78ba7b0 | 276 | pc.printf("boxOpenLegal:%d\r\n",boxOpenLegal); |
inezraharjo | 2:f47fb78ba7b0 | 277 | |
ahsueh | 0:a77a884aa413 | 278 | if (init == 0) { |
ahsueh | 0:a77a884aa413 | 279 | if(wifi.is_connected() == false) { |
ahsueh | 0:a77a884aa413 | 280 | // try to connect |
ahsueh | 0:a77a884aa413 | 281 | if (wifi.connect() == -1) { |
ahsueh | 0:a77a884aa413 | 282 | pc.printf("Failed to connect." |
ahsueh | 0:a77a884aa413 | 283 | "Please verify connection details and try again.\r\n"); |
ahsueh | 0:a77a884aa413 | 284 | } else { |
ahsueh | 0:a77a884aa413 | 285 | pc.printf("IP address: %s \r\n", wifi.getIPAddress()); |
ahsueh | 0:a77a884aa413 | 286 | |
ahsueh | 0:a77a884aa413 | 287 | //once connected, turn green LED on and red LED off |
ahsueh | 0:a77a884aa413 | 288 | led_red = 1; |
ahsueh | 0:a77a884aa413 | 289 | led_green = 0; |
ahsueh | 0:a77a884aa413 | 290 | } |
ahsueh | 0:a77a884aa413 | 291 | } else { |
inezraharjo | 1:90b792629d5e | 292 | pc.printf("Test first\r\n"); |
inezraharjo | 1:90b792629d5e | 293 | sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=NO&alarmOn=OFF&boxLocked=YES"); |
ahsueh | 0:a77a884aa413 | 294 | int ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 295 | init = 1; |
inezraharjo | 1:90b792629d5e | 296 | int tries = 15; |
inezraharjo | 1:90b792629d5e | 297 | while (tries > 0) { |
ahsueh | 0:a77a884aa413 | 298 | ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 299 | if (!ret) { |
ahsueh | 0:a77a884aa413 | 300 | pc.printf("Requested %s\r\n", url); |
ahsueh | 0:a77a884aa413 | 301 | pc.printf("Page fetched successfully - read %d characters\r\n", |
ahsueh | 0:a77a884aa413 | 302 | strlen(str)); |
ahsueh | 0:a77a884aa413 | 303 | pc.printf("Result: %s\r\n", str); |
inezraharjo | 1:90b792629d5e | 304 | break; |
ahsueh | 0:a77a884aa413 | 305 | } else { |
ahsueh | 0:a77a884aa413 | 306 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
ahsueh | 0:a77a884aa413 | 307 | ret, |
ahsueh | 0:a77a884aa413 | 308 | http.getHTTPResponseCode()); |
ahsueh | 0:a77a884aa413 | 309 | } |
ahsueh | 0:a77a884aa413 | 310 | tries--; |
inezraharjo | 1:90b792629d5e | 311 | } |
ahsueh | 0:a77a884aa413 | 312 | } |
ahsueh | 0:a77a884aa413 | 313 | } |
inezraharjo | 1:90b792629d5e | 314 | current_t = clock(); |
inezraharjo | 1:90b792629d5e | 315 | total_t = (double)(current_t - start_t) / CLOCKS_PER_SEC; |
inezraharjo | 1:90b792629d5e | 316 | //pc.printf("total_t: %d\r\n", total_t); |
inezraharjo | 2:f47fb78ba7b0 | 317 | if ((total_t%1)==0){ //every t seconds |
inezraharjo | 1:90b792629d5e | 318 | pc.printf("SENDING TO URL\n"); |
inezraharjo | 1:90b792629d5e | 319 | sprintf(url, "http://www.charlesding.net/kragl/pincode_read.php?"); |
inezraharjo | 1:90b792629d5e | 320 | int ret = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 321 | pc.printf("Trying to Request %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 322 | int tries = 50; |
inezraharjo | 1:90b792629d5e | 323 | while (tries > 0) { |
inezraharjo | 1:90b792629d5e | 324 | pc.printf("still in while lop #%d", tries); |
inezraharjo | 1:90b792629d5e | 325 | if (!ret) { |
inezraharjo | 1:90b792629d5e | 326 | pc.printf("Requested %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 327 | pc.printf("Page fetched successfully - read %d characters\r\n", |
inezraharjo | 1:90b792629d5e | 328 | strlen(str)); |
inezraharjo | 2:f47fb78ba7b0 | 329 | |
inezraharjo | 1:90b792629d5e | 330 | char* s = strtok(str, "\n"); |
inezraharjo | 1:90b792629d5e | 331 | char test[] = {s[5]}; |
inezraharjo | 1:90b792629d5e | 332 | int num = atoi(test); |
inezraharjo | 2:f47fb78ba7b0 | 333 | pc.printf("Result last digit: %d\r\n", num); |
inezraharjo | 1:90b792629d5e | 334 | if (num==1){ |
inezraharjo | 2:f47fb78ba7b0 | 335 | boxOpenLegal = true; |
inezraharjo | 2:f47fb78ba7b0 | 336 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 337 | for (int j=0; j<8; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 338 | correctLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 339 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 340 | correctLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 341 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 342 | } |
inezraharjo | 2:f47fb78ba7b0 | 343 | Buzzer = 0; |
inezraharjo | 1:90b792629d5e | 344 | } else { |
inezraharjo | 2:f47fb78ba7b0 | 345 | boxOpenLegal = false; |
inezraharjo | 2:f47fb78ba7b0 | 346 | correctLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 347 | for (int j=0; j<8; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 348 | warningLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 349 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 350 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 351 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 352 | } |
inezraharjo | 1:90b792629d5e | 353 | } |
inezraharjo | 1:90b792629d5e | 354 | break; |
inezraharjo | 1:90b792629d5e | 355 | } else { |
inezraharjo | 1:90b792629d5e | 356 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
inezraharjo | 1:90b792629d5e | 357 | ret, |
inezraharjo | 1:90b792629d5e | 358 | http.getHTTPResponseCode()); |
inezraharjo | 1:90b792629d5e | 359 | |
inezraharjo | 1:90b792629d5e | 360 | } |
inezraharjo | 1:90b792629d5e | 361 | tries--; |
inezraharjo | 1:90b792629d5e | 362 | ret = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 363 | } |
inezraharjo | 1:90b792629d5e | 364 | } |
inezraharjo | 2:f47fb78ba7b0 | 365 | pc.printf("waiting to check...\r\n"); |
ahsueh | 0:a77a884aa413 | 366 | if (reedIsOpen && codeEntered) { |
ahsueh | 0:a77a884aa413 | 367 | pc.printf("LEGAL OPENING"); |
ahsueh | 0:a77a884aa413 | 368 | boxOpenLegal = true; |
ahsueh | 0:a77a884aa413 | 369 | codeEntered = false; |
inezraharjo | 1:90b792629d5e | 370 | Buzzer = 0; |
ahsueh | 0:a77a884aa413 | 371 | wait(0.3); |
ahsueh | 0:a77a884aa413 | 372 | } else if (reedIsOpen && !boxOpenLegal) { |
ahsueh | 0:a77a884aa413 | 373 | // turn on alarm; |
inezraharjo | 1:90b792629d5e | 374 | pc.printf("ALARM TIME\r\n"); |
inezraharjo | 1:90b792629d5e | 375 | Buzzer = 1; |
inezraharjo | 1:90b792629d5e | 376 | |
inezraharjo | 1:90b792629d5e | 377 | /* |
ahsueh | 0:a77a884aa413 | 378 | for(i=0; i<tones_num; i++) { |
ahsueh | 0:a77a884aa413 | 379 | Auto_tunes(Buzzer, tones[i], 4); // Auto performance |
ahsueh | 0:a77a884aa413 | 380 | Stop_tunes(Buzzer); |
ahsueh | 0:a77a884aa413 | 381 | } |
inezraharjo | 1:90b792629d5e | 382 | */ |
ahsueh | 0:a77a884aa413 | 383 | |
ahsueh | 0:a77a884aa413 | 384 | if(wifi.is_connected() == false) { |
ahsueh | 0:a77a884aa413 | 385 | // try to connect |
ahsueh | 0:a77a884aa413 | 386 | if (wifi.connect() == -1) { |
ahsueh | 0:a77a884aa413 | 387 | pc.printf("Failed to connect." |
ahsueh | 0:a77a884aa413 | 388 | "Please verify connection details and try again.\r\n"); |
ahsueh | 0:a77a884aa413 | 389 | } else { |
ahsueh | 0:a77a884aa413 | 390 | pc.printf("IP address: %s \r\n", wifi.getIPAddress()); |
ahsueh | 0:a77a884aa413 | 391 | |
ahsueh | 0:a77a884aa413 | 392 | //once connected, turn green LED on and red LED off |
ahsueh | 0:a77a884aa413 | 393 | led_red = 1; |
ahsueh | 0:a77a884aa413 | 394 | led_green = 0; |
ahsueh | 0:a77a884aa413 | 395 | } |
ahsueh | 0:a77a884aa413 | 396 | } else { |
ahsueh | 0:a77a884aa413 | 397 | // get input url and then return the value |
ahsueh | 0:a77a884aa413 | 398 | pc.printf("SENDING TO URL\n"); |
inezraharjo | 1:90b792629d5e | 399 | sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=YES1&alarmOn=ON&boxLocked=NO"); |
ahsueh | 0:a77a884aa413 | 400 | |
ahsueh | 0:a77a884aa413 | 401 | int ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 402 | pc.printf("Trying to Request %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 403 | int tries = 20; |
inezraharjo | 1:90b792629d5e | 404 | while (tries > 0) { |
ahsueh | 0:a77a884aa413 | 405 | if (!ret) { |
ahsueh | 0:a77a884aa413 | 406 | pc.printf("Requested %s\r\n", url); |
ahsueh | 0:a77a884aa413 | 407 | pc.printf("Page fetched successfully - read %d characters\r\n", |
ahsueh | 0:a77a884aa413 | 408 | strlen(str)); |
ahsueh | 0:a77a884aa413 | 409 | pc.printf("Result: %s\r\n", str); |
inezraharjo | 1:90b792629d5e | 410 | break; |
ahsueh | 0:a77a884aa413 | 411 | } else { |
ahsueh | 0:a77a884aa413 | 412 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
ahsueh | 0:a77a884aa413 | 413 | ret, |
ahsueh | 0:a77a884aa413 | 414 | http.getHTTPResponseCode()); |
ahsueh | 0:a77a884aa413 | 415 | tries--; |
ahsueh | 0:a77a884aa413 | 416 | } |
inezraharjo | 1:90b792629d5e | 417 | ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 418 | } |
ahsueh | 0:a77a884aa413 | 419 | } |
ahsueh | 0:a77a884aa413 | 420 | wait(0.3); |
ahsueh | 0:a77a884aa413 | 421 | } else if (!reedIsOpen && boxOpenLegal) { |
inezraharjo | 1:90b792629d5e | 422 | Buzzer = 0; |
ahsueh | 0:a77a884aa413 | 423 | boxOpenLegal = false; |
inezraharjo | 1:90b792629d5e | 424 | pc.printf("SENDING TO URL\n"); |
inezraharjo | 1:90b792629d5e | 425 | sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?isOpen=NO&alarmOn=OFF&boxLocked=YES"); |
inezraharjo | 1:90b792629d5e | 426 | |
inezraharjo | 1:90b792629d5e | 427 | int ret = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 428 | pc.printf("Trying to Request %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 429 | int tries = 20; |
inezraharjo | 1:90b792629d5e | 430 | while (tries > 0) { |
inezraharjo | 1:90b792629d5e | 431 | ret = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 432 | if (!ret) { |
inezraharjo | 1:90b792629d5e | 433 | pc.printf("Requested %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 434 | pc.printf("Page fetched successfully - read %d characters\r\n", |
inezraharjo | 1:90b792629d5e | 435 | strlen(str)); |
inezraharjo | 1:90b792629d5e | 436 | pc.printf("Result: %s\r\n", str); |
inezraharjo | 1:90b792629d5e | 437 | break; |
inezraharjo | 1:90b792629d5e | 438 | } else { |
inezraharjo | 1:90b792629d5e | 439 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
inezraharjo | 1:90b792629d5e | 440 | ret, |
inezraharjo | 1:90b792629d5e | 441 | http.getHTTPResponseCode()); |
inezraharjo | 1:90b792629d5e | 442 | tries--; |
inezraharjo | 1:90b792629d5e | 443 | } |
inezraharjo | 1:90b792629d5e | 444 | } |
ahsueh | 0:a77a884aa413 | 445 | wait(0.3); |
ahsueh | 0:a77a884aa413 | 446 | } |
inezraharjo | 1:90b792629d5e | 447 | if (!codeEntered && passwordcounter==sizeof(code)/4) { |
ahsueh | 0:a77a884aa413 | 448 | codeEntered = true; |
inezraharjo | 1:90b792629d5e | 449 | |
inezraharjo | 1:90b792629d5e | 450 | sprintf(url, "http://www.charlesding.net/kragl/pincode_read.php?"); |
inezraharjo | 1:90b792629d5e | 451 | int ret2 = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 452 | |
inezraharjo | 1:90b792629d5e | 453 | pc.printf("Trying to Request %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 454 | int tries = 20; |
inezraharjo | 1:90b792629d5e | 455 | char* s; |
inezraharjo | 1:90b792629d5e | 456 | while (tries > 0) { |
inezraharjo | 1:90b792629d5e | 457 | pc.printf("try %d\n",tries); |
inezraharjo | 1:90b792629d5e | 458 | if (!ret2) { |
inezraharjo | 1:90b792629d5e | 459 | pc.printf("Requested %s\r\n", url); |
inezraharjo | 1:90b792629d5e | 460 | pc.printf("Page fetched successfully - read %d characters\r\n", |
inezraharjo | 1:90b792629d5e | 461 | strlen(str)); |
inezraharjo | 1:90b792629d5e | 462 | pc.printf("Result: %s\r\n", str); |
inezraharjo | 1:90b792629d5e | 463 | s = strtok(str, "\n"); |
inezraharjo | 1:90b792629d5e | 464 | pc.printf("code string: %s\r\n",s); |
inezraharjo | 1:90b792629d5e | 465 | int num; |
inezraharjo | 1:90b792629d5e | 466 | |
inezraharjo | 1:90b792629d5e | 467 | if (true){ |
inezraharjo | 1:90b792629d5e | 468 | for (int c=1; c<5; c++){ |
inezraharjo | 1:90b792629d5e | 469 | char test[] = {s[c]}; |
inezraharjo | 1:90b792629d5e | 470 | num = atoi(test); |
inezraharjo | 1:90b792629d5e | 471 | password[c-1] = num; |
inezraharjo | 1:90b792629d5e | 472 | } |
inezraharjo | 1:90b792629d5e | 473 | } |
inezraharjo | 1:90b792629d5e | 474 | pc.printf("Password in the system: %d%d%d%d", password[0], password[1], password[2], password[3]); |
inezraharjo | 1:90b792629d5e | 475 | break; |
inezraharjo | 1:90b792629d5e | 476 | } else { |
inezraharjo | 1:90b792629d5e | 477 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
inezraharjo | 1:90b792629d5e | 478 | ret2, |
inezraharjo | 1:90b792629d5e | 479 | http.getHTTPResponseCode()); |
inezraharjo | 1:90b792629d5e | 480 | } |
inezraharjo | 1:90b792629d5e | 481 | tries--; |
inezraharjo | 1:90b792629d5e | 482 | ret2 = http.get(url, str, 128); |
inezraharjo | 1:90b792629d5e | 483 | } |
inezraharjo | 1:90b792629d5e | 484 | wait(0.3); |
inezraharjo | 1:90b792629d5e | 485 | |
ahsueh | 0:a77a884aa413 | 486 | for (int j=0; j<sizeof(code)/4; j++) { |
ahsueh | 0:a77a884aa413 | 487 | if (code[j]!=password[j]) { |
ahsueh | 0:a77a884aa413 | 488 | codeEntered = false; |
ahsueh | 0:a77a884aa413 | 489 | } |
ahsueh | 0:a77a884aa413 | 490 | } |
inezraharjo | 1:90b792629d5e | 491 | char test[] = {s[5]}; |
inezraharjo | 1:90b792629d5e | 492 | int num = atoi(test); |
inezraharjo | 1:90b792629d5e | 493 | if (num==1){ |
inezraharjo | 1:90b792629d5e | 494 | codeEntered = true; |
inezraharjo | 1:90b792629d5e | 495 | } |
inezraharjo | 1:90b792629d5e | 496 | if (codeEntered==true){ |
inezraharjo | 1:90b792629d5e | 497 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 498 | for (int j=0; j<8; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 499 | correctLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 500 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 501 | correctLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 502 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 503 | } |
inezraharjo | 1:90b792629d5e | 504 | } else { |
inezraharjo | 1:90b792629d5e | 505 | correctLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 506 | for (int j=0; j<8; j++){ |
inezraharjo | 2:f47fb78ba7b0 | 507 | warningLED =1; |
inezraharjo | 2:f47fb78ba7b0 | 508 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 509 | warningLED = 0; |
inezraharjo | 2:f47fb78ba7b0 | 510 | wait(0.15); |
inezraharjo | 2:f47fb78ba7b0 | 511 | } |
inezraharjo | 1:90b792629d5e | 512 | } |
ahsueh | 0:a77a884aa413 | 513 | |
ahsueh | 0:a77a884aa413 | 514 | |
ahsueh | 0:a77a884aa413 | 515 | pc.printf("CODE IS ENTERED\n"); |
ahsueh | 0:a77a884aa413 | 516 | passwordcounter = 0; |
ahsueh | 0:a77a884aa413 | 517 | |
ahsueh | 0:a77a884aa413 | 518 | pc.printf("SENDING TO URL\n"); |
inezraharjo | 1:90b792629d5e | 519 | if (codeEntered==false){ |
inezraharjo | 2:f47fb78ba7b0 | 520 | sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?alarmOn=OFF&authorized=NO&openLock=2"); |
inezraharjo | 1:90b792629d5e | 521 | } else { |
inezraharjo | 2:f47fb78ba7b0 | 522 | sprintf(url, "http://www.charlesding.net/kragl/lunchbox.php?alarmOn=OFF&authorized=YES&openLock=1"); |
inezraharjo | 1:90b792629d5e | 523 | } |
inezraharjo | 2:f47fb78ba7b0 | 524 | |
ahsueh | 0:a77a884aa413 | 525 | int ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 526 | pc.printf("Trying to Request %s\r\n", url); |
inezraharjo | 2:f47fb78ba7b0 | 527 | tries = 50; |
inezraharjo | 1:90b792629d5e | 528 | while (tries > 0) { |
inezraharjo | 1:90b792629d5e | 529 | ret = http.get(url, str, 128); |
ahsueh | 0:a77a884aa413 | 530 | if (!ret) { |
ahsueh | 0:a77a884aa413 | 531 | pc.printf("Requested %s\r\n", url); |
ahsueh | 0:a77a884aa413 | 532 | pc.printf("Page fetched successfully - read %d characters\r\n", |
ahsueh | 0:a77a884aa413 | 533 | strlen(str)); |
ahsueh | 0:a77a884aa413 | 534 | pc.printf("Result: %s\r\n", str); |
inezraharjo | 1:90b792629d5e | 535 | break; |
ahsueh | 0:a77a884aa413 | 536 | } else { |
ahsueh | 0:a77a884aa413 | 537 | pc.printf("Error - ret = %d - HTTP return code = %d\r\n", |
ahsueh | 0:a77a884aa413 | 538 | ret, |
ahsueh | 0:a77a884aa413 | 539 | http.getHTTPResponseCode()); |
ahsueh | 0:a77a884aa413 | 540 | tries--; |
ahsueh | 0:a77a884aa413 | 541 | } |
ahsueh | 0:a77a884aa413 | 542 | } |
ahsueh | 0:a77a884aa413 | 543 | |
ahsueh | 0:a77a884aa413 | 544 | |
inezraharjo | 1:90b792629d5e | 545 | } |
inezraharjo | 1:90b792629d5e | 546 | //counterforpasswordcheck++; |
inezraharjo | 1:90b792629d5e | 547 | //pc.printf("C%d ", counterforpasswordcheck); |
ahsueh | 0:a77a884aa413 | 548 | } |
inezraharjo | 1:90b792629d5e | 549 | |
inezraharjo | 1:90b792629d5e | 550 | |
ahsueh | 0:a77a884aa413 | 551 | |
inezraharjo | 1:90b792629d5e | 552 | |
ahsueh | 0:a77a884aa413 | 553 | |
ahsueh | 0:a77a884aa413 | 554 | } |