Program code for the project

Dependencies:   4DGL-uLCD-SE SDAlarm mbed SDFileSystem SoundAPI mbed-rtos

Committer:
blazar
Date:
Wed Dec 13 02:01:44 2017 +0000
Revision:
3:01d4b03ade7c
Parent:
2:15ba42aea6c7
commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
megnor3 0:ecc736db2e40 1 #include "mbed.h"
megnor3 0:ecc736db2e40 2 #include "uLCD_4DGL.h"
blazar 1:049d9c16aa35 3 #include "rtos.h"
blazar 1:049d9c16aa35 4 #include "SDFileSystem.h"
blazar 1:049d9c16aa35 5 #include "SDAlarm.h"
blazar 1:049d9c16aa35 6 #include "wave_player.h"
megnor3 0:ecc736db2e40 7
megnor3 0:ecc736db2e40 8 Serial pc(USBTX, USBRX);
megnor3 0:ecc736db2e40 9 Serial esp(p28, p27); // tx, rx
blazar 1:049d9c16aa35 10 SDFileSystem sd(p5, p6, p7, p8, "sd");
blazar 1:049d9c16aa35 11
blazar 1:049d9c16aa35 12 RawSerial blue(p13,p14);
megnor3 0:ecc736db2e40 13 DigitalOut reset(p26);
megnor3 0:ecc736db2e40 14 DigitalOut led1(LED1);
megnor3 0:ecc736db2e40 15 DigitalOut led4(LED4);
megnor3 0:ecc736db2e40 16 Timer t;
blazar 1:049d9c16aa35 17 SDAlarm sdalarm;
megnor3 0:ecc736db2e40 18
blazar 1:049d9c16aa35 19 AnalogOut ao(p18);
blazar 1:049d9c16aa35 20 wave_player wp(&ao);
blazar 1:049d9c16aa35 21
blazar 1:049d9c16aa35 22 time_t global_time;
megnor3 0:ecc736db2e40 23 uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
blazar 1:049d9c16aa35 24 Mutex lcd_mutex;
blazar 1:049d9c16aa35 25
blazar 1:049d9c16aa35 26 Thread alarmThread;
blazar 1:049d9c16aa35 27 Thread alarmSound;
blazar 1:049d9c16aa35 28
megnor3 0:ecc736db2e40 29
blazar 1:049d9c16aa35 30 bool alarmWentOff = false;
blazar 1:049d9c16aa35 31 bool play = false;
megnor3 0:ecc736db2e40 32
blazar 1:049d9c16aa35 33 DigitalOut one(LED1);
blazar 1:049d9c16aa35 34 DigitalOut two(LED2);
blazar 1:049d9c16aa35 35 DigitalOut three(LED3);
blazar 1:049d9c16aa35 36 DigitalOut four(LED4);
megnor3 0:ecc736db2e40 37 // Global count variable
megnor3 0:ecc736db2e40 38
blazar 1:049d9c16aa35 39 int volatile hours=0;
megnor3 0:ecc736db2e40 40 int volatile minutes=0;
megnor3 0:ecc736db2e40 41 bool volatile alarmSet=false;
megnor3 0:ecc736db2e40 42 int volatile alarmTimeSet = 0;
megnor3 0:ecc736db2e40 43 int volatile timeDisp=0;
megnor3 0:ecc736db2e40 44 bool volatile AMPM=false; //False AM, true PM
megnor3 0:ecc736db2e40 45
megnor3 0:ecc736db2e40 46 int count,ended,timeout;
megnor3 0:ecc736db2e40 47 char buf[2024];
megnor3 0:ecc736db2e40 48 char snd[1024];
blazar 2:15ba42aea6c7 49 char ssid[32] = ""; // enter WiFi router ssid inside the quotes
blazar 2:15ba42aea6c7 50 char pwd [32] = ""; // enter WiFi router password inside the quotes
megnor3 0:ecc736db2e40 51 bool timeReady = false;
megnor3 0:ecc736db2e40 52
megnor3 0:ecc736db2e40 53 char curTime[20];
megnor3 0:ecc736db2e40 54
megnor3 0:ecc736db2e40 55 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate(), getTime();
megnor3 0:ecc736db2e40 56 int timeFromResponse();
megnor3 0:ecc736db2e40 57 void dev_recv()
megnor3 0:ecc736db2e40 58 {
megnor3 0:ecc736db2e40 59 led1 = !led1;
megnor3 0:ecc736db2e40 60 while(esp.readable()) {
megnor3 0:ecc736db2e40 61 pc.putc(esp.getc());
megnor3 0:ecc736db2e40 62 }
megnor3 0:ecc736db2e40 63 }
megnor3 0:ecc736db2e40 64
megnor3 0:ecc736db2e40 65 void pc_recv()
megnor3 0:ecc736db2e40 66 {
megnor3 0:ecc736db2e40 67 led4 = !led4;
megnor3 0:ecc736db2e40 68 while(pc.readable()) {
megnor3 0:ecc736db2e40 69 esp.putc(pc.getc());
megnor3 0:ecc736db2e40 70 }
megnor3 0:ecc736db2e40 71 }
megnor3 0:ecc736db2e40 72
blazar 1:049d9c16aa35 73
blazar 1:049d9c16aa35 74
blazar 1:049d9c16aa35 75 void bt_rec() {
blazar 1:049d9c16aa35 76 while(blue.readable()) {
blazar 1:049d9c16aa35 77 if (blue.getc()=='!') {
blazar 1:049d9c16aa35 78 char c = blue.getc();
blazar 1:049d9c16aa35 79 if (c=='B') { //button data
blazar 1:049d9c16aa35 80 char bnum = blue.getc(); //button number
blazar 1:049d9c16aa35 81 char pressedOrReleased = blue.getc();
blazar 1:049d9c16aa35 82
blazar 1:049d9c16aa35 83 if (pressedOrReleased == '0') {
blazar 1:049d9c16aa35 84 if (bnum=='1') {
blazar 1:049d9c16aa35 85 alarmSet = !alarmSet;
blazar 1:049d9c16aa35 86 }
blazar 1:049d9c16aa35 87 }
blazar 1:049d9c16aa35 88 if (pressedOrReleased == '1') {
blazar 1:049d9c16aa35 89
blazar 1:049d9c16aa35 90 if (bnum=='2') {
blazar 1:049d9c16aa35 91 hours++;
blazar 1:049d9c16aa35 92 if(hours>24){ hours= 0;}
blazar 1:049d9c16aa35 93 }
blazar 1:049d9c16aa35 94 if (bnum=='3') {
blazar 1:049d9c16aa35 95 minutes++;
blazar 1:049d9c16aa35 96 if(minutes>59) minutes= 0;
blazar 1:049d9c16aa35 97 }
blazar 1:049d9c16aa35 98 }
blazar 1:049d9c16aa35 99
blazar 1:049d9c16aa35 100 }
blazar 1:049d9c16aa35 101 }
blazar 1:049d9c16aa35 102 }
megnor3 0:ecc736db2e40 103 }
blazar 1:049d9c16aa35 104 void alarm_sound() {
blazar 1:049d9c16aa35 105 while (true) {
blazar 1:049d9c16aa35 106 if (play){
blazar 1:049d9c16aa35 107 FILE *wave_file;
blazar 1:049d9c16aa35 108 wave_file=fopen("/sd/alarm_beep.wav","r");
megnor3 0:ecc736db2e40 109
blazar 1:049d9c16aa35 110 wp.play(wave_file);
blazar 1:049d9c16aa35 111 fclose(wave_file);
blazar 1:049d9c16aa35 112 }
blazar 1:049d9c16aa35 113 }
megnor3 0:ecc736db2e40 114 }
blazar 1:049d9c16aa35 115 void alarm_thread() {
blazar 1:049d9c16aa35 116 time_t lastalarm = time(NULL);
blazar 1:049d9c16aa35 117 bool lastset = false;
blazar 1:049d9c16aa35 118 while(1) {
blazar 1:049d9c16aa35 119 time_t rawtime = hours*60*60 + minutes*60;
blazar 1:049d9c16aa35 120 struct tm * timeinfo;
blazar 1:049d9c16aa35 121 char buffer [80];
megnor3 0:ecc736db2e40 122
blazar 1:049d9c16aa35 123 timeinfo = localtime (&rawtime);
blazar 1:049d9c16aa35 124 strftime (buffer,80,"%I:%M %p",timeinfo);
blazar 1:049d9c16aa35 125 //if (lastalarm != rawtime) {
blazar 1:049d9c16aa35 126 lcd_mutex.lock();
blazar 1:049d9c16aa35 127 uLCD.locate(3,11);
blazar 1:049d9c16aa35 128 uLCD.color(WHITE);
blazar 1:049d9c16aa35 129 uLCD.text_width(1);
blazar 1:049d9c16aa35 130 uLCD.text_height(1);
blazar 1:049d9c16aa35 131 uLCD.printf("%s", buffer);
blazar 1:049d9c16aa35 132
blazar 1:049d9c16aa35 133 lastalarm = rawtime;
blazar 1:049d9c16aa35 134
blazar 1:049d9c16aa35 135 //}
blazar 1:049d9c16aa35 136 if (lastset != alarmSet) {
blazar 1:049d9c16aa35 137
megnor3 0:ecc736db2e40 138
blazar 1:049d9c16aa35 139 uLCD.color(WHITE);
blazar 1:049d9c16aa35 140 uLCD.text_width(1);
blazar 1:049d9c16aa35 141 uLCD.text_height(1);
blazar 1:049d9c16aa35 142 uLCD.locate(3,12);
blazar 1:049d9c16aa35 143 if (alarmSet) {
blazar 1:049d9c16aa35 144
blazar 1:049d9c16aa35 145 uLCD.color(WHITE);
blazar 1:049d9c16aa35 146 uLCD.printf("Alarm Set");
blazar 1:049d9c16aa35 147 sdalarm.setAlarm(rawtime);
blazar 1:049d9c16aa35 148 } else {
blazar 1:049d9c16aa35 149
blazar 1:049d9c16aa35 150 uLCD.color(BLACK);
blazar 1:049d9c16aa35 151 uLCD.printf("Alarm Set");
blazar 1:049d9c16aa35 152 }
blazar 1:049d9c16aa35 153 lastset = alarmSet;
blazar 1:049d9c16aa35 154
blazar 1:049d9c16aa35 155 }
blazar 1:049d9c16aa35 156
blazar 1:049d9c16aa35 157 lcd_mutex.unlock();
blazar 1:049d9c16aa35 158 Thread::wait(50);
blazar 1:049d9c16aa35 159 }
megnor3 0:ecc736db2e40 160 }
megnor3 0:ecc736db2e40 161 int main()
megnor3 0:ecc736db2e40 162 {
blazar 1:049d9c16aa35 163 uLCD.baudrate(3000000);
blazar 1:049d9c16aa35 164 blue.attach(&bt_rec,Serial::RxIrq);
blazar 1:049d9c16aa35 165
megnor3 0:ecc736db2e40 166
megnor3 0:ecc736db2e40 167 reset=0; //hardware reset for 8266
megnor3 0:ecc736db2e40 168 pc.baud(9600); // set what you want here depending on your terminal program speed
megnor3 0:ecc736db2e40 169 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
megnor3 0:ecc736db2e40 170 wait(0.5);
megnor3 0:ecc736db2e40 171 reset=1;
megnor3 0:ecc736db2e40 172 timeout=2;
megnor3 0:ecc736db2e40 173 getreply();
megnor3 0:ecc736db2e40 174
megnor3 0:ecc736db2e40 175 esp.baud(9600); // change this to the new ESP8266 baudrate if it is changed at any time.
megnor3 0:ecc736db2e40 176
megnor3 0:ecc736db2e40 177 //ESPsetbaudrate(); //****************** include this routine to set a different ESP8266 baudrate ******************
megnor3 0:ecc736db2e40 178
megnor3 0:ecc736db2e40 179 ESPconfig(); //****************** include Config to set the ESP8266 configuration ***********************
megnor3 0:ecc736db2e40 180 getTime();
megnor3 0:ecc736db2e40 181 pc.printf("%s", buf);
megnor3 0:ecc736db2e40 182
blazar 1:049d9c16aa35 183 timeDisp = timeFromResponse() + 18;
megnor3 0:ecc736db2e40 184 set_time(timeDisp);
blazar 1:049d9c16aa35 185
blazar 1:049d9c16aa35 186
blazar 1:049d9c16aa35 187
blazar 1:049d9c16aa35 188 time_t alarmTime = sdalarm.getAlarm();
blazar 1:049d9c16aa35 189 char timebuffer[80];
blazar 1:049d9c16aa35 190 struct tm * timeinfo;
blazar 1:049d9c16aa35 191 timeinfo = localtime (&alarmTime);
blazar 1:049d9c16aa35 192
blazar 1:049d9c16aa35 193 strftime (timebuffer,80,"%H",timeinfo);
blazar 1:049d9c16aa35 194
blazar 1:049d9c16aa35 195 hours = atoi(timebuffer);
blazar 1:049d9c16aa35 196 strftime (timebuffer,80,"%M",timeinfo);
blazar 1:049d9c16aa35 197 minutes = atoi(timebuffer);
blazar 1:049d9c16aa35 198
blazar 1:049d9c16aa35 199 alarmThread.start(alarm_thread);
blazar 1:049d9c16aa35 200 alarmSound.start(alarm_sound);
blazar 1:049d9c16aa35 201
blazar 1:049d9c16aa35 202
blazar 1:049d9c16aa35 203 while (1) {
blazar 1:049d9c16aa35 204 time_t rawtime;
blazar 1:049d9c16aa35 205 struct tm * timeinfo;
blazar 1:049d9c16aa35 206 char buffer [80];
blazar 1:049d9c16aa35 207 time (&rawtime);
blazar 1:049d9c16aa35 208 global_time = rawtime;
blazar 1:049d9c16aa35 209 timeinfo = localtime (&rawtime);
blazar 1:049d9c16aa35 210 strftime (buffer,80,"%I:%M %p",timeinfo);
blazar 1:049d9c16aa35 211
blazar 1:049d9c16aa35 212 if ((hours*60*60 + minutes*60) < (rawtime % (60*60*24))) {
blazar 1:049d9c16aa35 213 alarmWentOff = true;
blazar 1:049d9c16aa35 214 } else {
blazar 1:049d9c16aa35 215 alarmWentOff = false;
blazar 1:049d9c16aa35 216 }
megnor3 0:ecc736db2e40 217
blazar 1:049d9c16aa35 218 lcd_mutex.lock();
blazar 1:049d9c16aa35 219 uLCD.locate(0,0);
blazar 1:049d9c16aa35 220 uLCD.color(WHITE);
blazar 1:049d9c16aa35 221 uLCD.text_width(2);
blazar 1:049d9c16aa35 222 uLCD.text_height(2);
blazar 1:049d9c16aa35 223 uLCD.printf("%s", buffer);
blazar 1:049d9c16aa35 224 lcd_mutex.unlock();
blazar 1:049d9c16aa35 225 Thread::wait(500);
blazar 1:049d9c16aa35 226
blazar 1:049d9c16aa35 227 if (global_time % (60*60*24) == 0) {
blazar 1:049d9c16aa35 228 alarmWentOff = false;
blazar 1:049d9c16aa35 229 }
blazar 1:049d9c16aa35 230 if ((((int)global_time) % (60*60*24)) >= (hours*60*60 + minutes*60) && alarmSet && !alarmWentOff) {
blazar 1:049d9c16aa35 231 one = !one;
blazar 1:049d9c16aa35 232 lcd_mutex.lock();
blazar 1:049d9c16aa35 233 uLCD.locate(2,6);
blazar 1:049d9c16aa35 234 uLCD.color(RED);
blazar 1:049d9c16aa35 235 uLCD.text_width(2);
blazar 1:049d9c16aa35 236 uLCD.text_height(2);
megnor3 0:ecc736db2e40 237 uLCD.printf("ALARM");
blazar 1:049d9c16aa35 238 lcd_mutex.unlock();
blazar 1:049d9c16aa35 239 alarmWentOff = true;
blazar 1:049d9c16aa35 240 play = true;
blazar 1:049d9c16aa35 241 } else {
blazar 1:049d9c16aa35 242 play = false;
blazar 1:049d9c16aa35 243 lcd_mutex.lock();
blazar 1:049d9c16aa35 244 uLCD.locate(2,6);
blazar 1:049d9c16aa35 245 uLCD.color(BLACK);
blazar 1:049d9c16aa35 246 uLCD.text_width(2);
blazar 1:049d9c16aa35 247 uLCD.text_height(2);
blazar 1:049d9c16aa35 248 uLCD.printf("ALARM");
blazar 1:049d9c16aa35 249 lcd_mutex.unlock();
blazar 1:049d9c16aa35 250 }
megnor3 0:ecc736db2e40 251
blazar 1:049d9c16aa35 252
blazar 1:049d9c16aa35 253
megnor3 0:ecc736db2e40 254 }
megnor3 0:ecc736db2e40 255
megnor3 0:ecc736db2e40 256 }
megnor3 0:ecc736db2e40 257
megnor3 0:ecc736db2e40 258 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
megnor3 0:ecc736db2e40 259 void ESPsetbaudrate()
megnor3 0:ecc736db2e40 260 {
megnor3 0:ecc736db2e40 261 strcpy(snd, "AT+CIOBAUD=115200\r\n"); // change the numeric value to the required baudrate
megnor3 0:ecc736db2e40 262 SendCMD();
megnor3 0:ecc736db2e40 263 }
megnor3 0:ecc736db2e40 264
megnor3 0:ecc736db2e40 265 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
megnor3 0:ecc736db2e40 266 void ESPconfig()
megnor3 0:ecc736db2e40 267 {
megnor3 0:ecc736db2e40 268
megnor3 0:ecc736db2e40 269 wait(5);
megnor3 0:ecc736db2e40 270 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
megnor3 0:ecc736db2e40 271 strcpy(snd,".\r\n.\r\n");
megnor3 0:ecc736db2e40 272 SendCMD();
megnor3 0:ecc736db2e40 273 wait(1);
megnor3 0:ecc736db2e40 274 pc.printf("---------- Reset & get Firmware ----------\r\n");
megnor3 0:ecc736db2e40 275 strcpy(snd,"node.restart()\r\n");
megnor3 0:ecc736db2e40 276 SendCMD();
megnor3 0:ecc736db2e40 277 timeout=5;
megnor3 0:ecc736db2e40 278 getreply();
megnor3 0:ecc736db2e40 279 pc.printf(buf);
megnor3 0:ecc736db2e40 280
megnor3 0:ecc736db2e40 281
megnor3 0:ecc736db2e40 282 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
megnor3 0:ecc736db2e40 283 strcpy(snd, "wifi.setmode(wifi.STATION)\r\n");
megnor3 0:ecc736db2e40 284 SendCMD();
megnor3 0:ecc736db2e40 285 timeout=4;
megnor3 0:ecc736db2e40 286 getreply();
megnor3 0:ecc736db2e40 287 pc.printf(buf);
megnor3 0:ecc736db2e40 288
megnor3 0:ecc736db2e40 289 wait(1);
megnor3 0:ecc736db2e40 290
megnor3 0:ecc736db2e40 291 strcpy(snd, "wifi.sta.config(\"");
megnor3 0:ecc736db2e40 292 strcat(snd, ssid);
megnor3 0:ecc736db2e40 293 strcat(snd, "\",\"");
megnor3 0:ecc736db2e40 294 strcat(snd, pwd);
megnor3 0:ecc736db2e40 295 strcat(snd, "\")\r\n");
megnor3 0:ecc736db2e40 296 SendCMD();
megnor3 0:ecc736db2e40 297 timeout=10;
megnor3 0:ecc736db2e40 298 getreply();
megnor3 0:ecc736db2e40 299 pc.printf(buf);
megnor3 0:ecc736db2e40 300
megnor3 0:ecc736db2e40 301 wait(1);
megnor3 0:ecc736db2e40 302
megnor3 0:ecc736db2e40 303 strcpy(snd, "print(wifi.sta.getip())\r\n");
megnor3 0:ecc736db2e40 304 SendCMD();
megnor3 0:ecc736db2e40 305 timeout=3;
megnor3 0:ecc736db2e40 306 getreply();
megnor3 0:ecc736db2e40 307 pc.printf(buf);
megnor3 0:ecc736db2e40 308
megnor3 0:ecc736db2e40 309 wait(1);
megnor3 0:ecc736db2e40 310
blazar 3:01d4b03ade7c 311
megnor3 0:ecc736db2e40 312 strcpy(snd, "print(wifi.sta.status())\r\n");
megnor3 0:ecc736db2e40 313 SendCMD();
megnor3 0:ecc736db2e40 314 timeout=5;
megnor3 0:ecc736db2e40 315 getreply();
megnor3 0:ecc736db2e40 316
megnor3 0:ecc736db2e40 317 }
megnor3 0:ecc736db2e40 318 void getTime() {
megnor3 0:ecc736db2e40 319 wait(1);
megnor3 0:ecc736db2e40 320 strcpy(snd,"sk=net.createConnection(net.TCP, 0)\r\n");
megnor3 0:ecc736db2e40 321 SendCMD();
megnor3 0:ecc736db2e40 322 timeout=3;
megnor3 0:ecc736db2e40 323 getreply();
megnor3 0:ecc736db2e40 324
megnor3 0:ecc736db2e40 325 strcpy(snd,"sk:on(\"receive\", function(sck, c) print(c) end )\r\n");
megnor3 0:ecc736db2e40 326 SendCMD();
megnor3 0:ecc736db2e40 327 timeout=3;
megnor3 0:ecc736db2e40 328 getreply();
megnor3 0:ecc736db2e40 329
megnor3 0:ecc736db2e40 330 strcpy(snd,"sk:connect(80,\"api.timezonedb.com\")\r\n");
megnor3 0:ecc736db2e40 331 SendCMD();
megnor3 0:ecc736db2e40 332 timeout=3;
megnor3 0:ecc736db2e40 333 getreply();
megnor3 0:ecc736db2e40 334 wait(1);
megnor3 0:ecc736db2e40 335
blazar 2:15ba42aea6c7 336 strcpy(snd, "sk:send(\"GET /v2/get-time-zone?key=[API key here]&format=json&by=zone&zone=America/New_York HTTP/1.1\\r\\nHost: api.timezonedb.com\\r\\nConnection: keep-alive\\r\\nAccept: */*\\r\\n\\r\\n\")\r\n");
megnor3 0:ecc736db2e40 337 SendCMD();
megnor3 0:ecc736db2e40 338 timeout=17;
megnor3 0:ecc736db2e40 339 getreply();
megnor3 0:ecc736db2e40 340
megnor3 0:ecc736db2e40 341 timeReady = true;
megnor3 0:ecc736db2e40 342
megnor3 0:ecc736db2e40 343 }
megnor3 0:ecc736db2e40 344 void SendCMD()
megnor3 0:ecc736db2e40 345 {
megnor3 0:ecc736db2e40 346 esp.printf("%s", snd);
megnor3 0:ecc736db2e40 347 }
megnor3 0:ecc736db2e40 348
megnor3 0:ecc736db2e40 349 void getreply()
megnor3 0:ecc736db2e40 350 {
megnor3 0:ecc736db2e40 351 memset(buf, '\0', sizeof(buf));
megnor3 0:ecc736db2e40 352 t.start();
megnor3 0:ecc736db2e40 353 ended=0;
megnor3 0:ecc736db2e40 354 count=0;
megnor3 0:ecc736db2e40 355 while(!ended) {
megnor3 0:ecc736db2e40 356 if(esp.readable()) {
megnor3 0:ecc736db2e40 357 buf[count] = esp.getc();
megnor3 0:ecc736db2e40 358 count++;
megnor3 0:ecc736db2e40 359 }
megnor3 0:ecc736db2e40 360 if(t.read() > timeout) {
megnor3 0:ecc736db2e40 361 ended = 1;
megnor3 0:ecc736db2e40 362 t.stop();
megnor3 0:ecc736db2e40 363 t.reset();
megnor3 0:ecc736db2e40 364 }
megnor3 0:ecc736db2e40 365 }
megnor3 0:ecc736db2e40 366 }
megnor3 0:ecc736db2e40 367
megnor3 0:ecc736db2e40 368 int timeFromResponse() {
megnor3 0:ecc736db2e40 369 char * timestamp;
megnor3 0:ecc736db2e40 370 timestamp = strstr(buf, "\"timestamp\":");
megnor3 0:ecc736db2e40 371
megnor3 0:ecc736db2e40 372 timestamp = timestamp + 12;
megnor3 0:ecc736db2e40 373 int count = 0;
megnor3 0:ecc736db2e40 374
megnor3 0:ecc736db2e40 375 while(timestamp[count] != ',') {
megnor3 0:ecc736db2e40 376 count++;
megnor3 0:ecc736db2e40 377 }
megnor3 0:ecc736db2e40 378
megnor3 0:ecc736db2e40 379 strncpy(curTime, timestamp, count);
megnor3 0:ecc736db2e40 380 return atoi(curTime);
megnor3 0:ecc736db2e40 381 }