Dependencies:   4DGL-uLCD-SE mbed

Committer:
kchrzanowski
Date:
Wed Nov 02 08:14:26 2016 +0000
Revision:
0:89166b12a9c5

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kchrzanowski 0:89166b12a9c5 1 #include "mbed.h"
kchrzanowski 0:89166b12a9c5 2 #include "uLCD_4DGL.h"
kchrzanowski 0:89166b12a9c5 3
kchrzanowski 0:89166b12a9c5 4 //IR value ranges
kchrzanowski 0:89166b12a9c5 5 float uplimit = .655;
kchrzanowski 0:89166b12a9c5 6 float lowlimit = .467;
kchrzanowski 0:89166b12a9c5 7
kchrzanowski 0:89166b12a9c5 8 Serial pc(USBTX, USBRX);
kchrzanowski 0:89166b12a9c5 9
kchrzanowski 0:89166b12a9c5 10 AnalogIn ainpin(p20); // ir sensor
kchrzanowski 0:89166b12a9c5 11 DigitalOut led1(LED1);
kchrzanowski 0:89166b12a9c5 12 DigitalOut led4(LED4);
kchrzanowski 0:89166b12a9c5 13 Timer t;
kchrzanowski 0:89166b12a9c5 14
kchrzanowski 0:89166b12a9c5 15 //LCD system setup
kchrzanowski 0:89166b12a9c5 16 float sensorval = 0.0;
kchrzanowski 0:89166b12a9c5 17
kchrzanowski 0:89166b12a9c5 18 int count,ended,timeout;
kchrzanowski 0:89166b12a9c5 19 char buf[2024];
kchrzanowski 0:89166b12a9c5 20 char snd[1024];
kchrzanowski 0:89166b12a9c5 21 char cPercent[8];
kchrzanowski 0:89166b12a9c5 22 float percent;
kchrzanowski 0:89166b12a9c5 23
kchrzanowski 0:89166b12a9c5 24
kchrzanowski 0:89166b12a9c5 25 char ssid[32] = "SSID"; // enter WiFi router ssid inside the quotes
kchrzanowski 0:89166b12a9c5 26 char pwd [32] = "password"; // enter WiFi router password inside the quotes
kchrzanowski 0:89166b12a9c5 27
kchrzanowski 0:89166b12a9c5 28 //LCD screen
kchrzanowski 0:89166b12a9c5 29 uLCD_4DGL mylcd(p28,p27,p30);
kchrzanowski 0:89166b12a9c5 30
kchrzanowski 0:89166b12a9c5 31
kchrzanowski 0:89166b12a9c5 32 //Wifi Networking
kchrzanowski 0:89166b12a9c5 33 //wifi chip var
kchrzanowski 0:89166b12a9c5 34 Serial esp(p9, p10); // tx, rx
kchrzanowski 0:89166b12a9c5 35 DigitalOut reset(p11);
kchrzanowski 0:89166b12a9c5 36
kchrzanowski 0:89166b12a9c5 37 //custom functions for calculating pill bottle
kchrzanowski 0:89166b12a9c5 38 int CalcPixValue(float, float, float);
kchrzanowski 0:89166b12a9c5 39 void DrawProgressBar(int, int, int);
kchrzanowski 0:89166b12a9c5 40
kchrzanowski 0:89166b12a9c5 41
kchrzanowski 0:89166b12a9c5 42 void SendCMD(),getreply(),ESPconfig(),ESPsetbaudrate();
kchrzanowski 0:89166b12a9c5 43 void dev_recv()
kchrzanowski 0:89166b12a9c5 44 {
kchrzanowski 0:89166b12a9c5 45 led1 = !led1;
kchrzanowski 0:89166b12a9c5 46 while(esp.readable()) {
kchrzanowski 0:89166b12a9c5 47 pc.putc(esp.getc());
kchrzanowski 0:89166b12a9c5 48 }
kchrzanowski 0:89166b12a9c5 49 }
kchrzanowski 0:89166b12a9c5 50
kchrzanowski 0:89166b12a9c5 51 void pc_recv()
kchrzanowski 0:89166b12a9c5 52 {
kchrzanowski 0:89166b12a9c5 53 led4 = !led4;
kchrzanowski 0:89166b12a9c5 54 while(pc.readable()) {
kchrzanowski 0:89166b12a9c5 55 esp.putc(pc.getc());
kchrzanowski 0:89166b12a9c5 56 }
kchrzanowski 0:89166b12a9c5 57 }
kchrzanowski 0:89166b12a9c5 58
kchrzanowski 0:89166b12a9c5 59
kchrzanowski 0:89166b12a9c5 60 int main()
kchrzanowski 0:89166b12a9c5 61 {
kchrzanowski 0:89166b12a9c5 62 //IR setup
kchrzanowski 0:89166b12a9c5 63 //IR value ranges
kchrzanowski 0:89166b12a9c5 64 float uplimit = .655;
kchrzanowski 0:89166b12a9c5 65 float lowlimit = .647;
kchrzanowski 0:89166b12a9c5 66
kchrzanowski 0:89166b12a9c5 67 //LCD system setup
kchrzanowski 0:89166b12a9c5 68 mylcd.baudrate(3000000);
kchrzanowski 0:89166b12a9c5 69 float sensorval = 0.0;
kchrzanowski 0:89166b12a9c5 70
kchrzanowski 0:89166b12a9c5 71
kchrzanowski 0:89166b12a9c5 72
kchrzanowski 0:89166b12a9c5 73 reset=0; //hardware reset for 8266
kchrzanowski 0:89166b12a9c5 74 pc.baud(9600); // set what you want here depending on your terminal program speed
kchrzanowski 0:89166b12a9c5 75 pc.printf("\f\n\r-------------ESP8266 Hardware Reset-------------\n\r");
kchrzanowski 0:89166b12a9c5 76 wait(0.1);
kchrzanowski 0:89166b12a9c5 77 reset=1;
kchrzanowski 0:89166b12a9c5 78 timeout=2;
kchrzanowski 0:89166b12a9c5 79 getreply();
kchrzanowski 0:89166b12a9c5 80
kchrzanowski 0:89166b12a9c5 81 esp.baud(9600); // change this to the new ESP8266 baudrate if it is changed at any time.
kchrzanowski 0:89166b12a9c5 82 ESPconfig(); //****************** include Config to set the ESP8266 configuration ***********************
kchrzanowski 0:89166b12a9c5 83
kchrzanowski 0:89166b12a9c5 84
kchrzanowski 0:89166b12a9c5 85
kchrzanowski 0:89166b12a9c5 86 pc.attach(&pc_recv, Serial::RxIrq);
kchrzanowski 0:89166b12a9c5 87 esp.attach(&dev_recv, Serial::RxIrq);
kchrzanowski 0:89166b12a9c5 88
kchrzanowski 0:89166b12a9c5 89 // continuosly get AP list and IP
kchrzanowski 0:89166b12a9c5 90 while(1) {
kchrzanowski 0:89166b12a9c5 91 sleep();
kchrzanowski 0:89166b12a9c5 92
kchrzanowski 0:89166b12a9c5 93 //IR sensor
kchrzanowski 0:89166b12a9c5 94 //sensorval = ainpin.read(); //read in voltage and set it to sensor val (between 0-1)
kchrzanowski 0:89166b12a9c5 95 int pix = CalcPixValue(sensorval, uplimit, lowlimit);
kchrzanowski 0:89166b12a9c5 96 //Print progress bar to LCD
kchrzanowski 0:89166b12a9c5 97 //DrawProgressBar(pix, 2, 6);
kchrzanowski 0:89166b12a9c5 98 }
kchrzanowski 0:89166b12a9c5 99
kchrzanowski 0:89166b12a9c5 100 }
kchrzanowski 0:89166b12a9c5 101
kchrzanowski 0:89166b12a9c5 102 //IR sensor commands
kchrzanowski 0:89166b12a9c5 103
kchrzanowski 0:89166b12a9c5 104 //given analog value 0-1 num, returns pixel value at which the fill bar should be drawn
kchrzanowski 0:89166b12a9c5 105 int CalcPixValue(float num, float up, float low)
kchrzanowski 0:89166b12a9c5 106 {
kchrzanowski 0:89166b12a9c5 107 float range = up-low;
kchrzanowski 0:89166b12a9c5 108 float height, sensornorm1, sensornorm;
kchrzanowski 0:89166b12a9c5 109
kchrzanowski 0:89166b12a9c5 110 sensornorm1 = (num - low)/(range);
kchrzanowski 0:89166b12a9c5 111 sensornorm =-1* sensornorm1 + 1;
kchrzanowski 0:89166b12a9c5 112
kchrzanowski 0:89166b12a9c5 113 //correct for small error
kchrzanowski 0:89166b12a9c5 114 if (sensornorm1<0)
kchrzanowski 0:89166b12a9c5 115 sensornorm1 = 0;
kchrzanowski 0:89166b12a9c5 116 else if (sensornorm1 >1.00)
kchrzanowski 0:89166b12a9c5 117 sensornorm1 = 1;
kchrzanowski 0:89166b12a9c5 118 //convert to percent
kchrzanowski 0:89166b12a9c5 119 sensornorm1 = sensornorm1*100.0;
kchrzanowski 0:89166b12a9c5 120
kchrzanowski 0:89166b12a9c5 121 mylcd.cls();
kchrzanowski 0:89166b12a9c5 122 // print out the values
kchrzanowski 0:89166b12a9c5 123 mylcd.printf("\n Percent Full =\n %f2\n\n\n SensorValue=\n %3f", sensornorm1,num);
kchrzanowski 0:89166b12a9c5 124
kchrzanowski 0:89166b12a9c5 125
kchrzanowski 0:89166b12a9c5 126 //restrict the value a scaled value of 127 pixels
kchrzanowski 0:89166b12a9c5 127 height = (sensornorm)*127;
kchrzanowski 0:89166b12a9c5 128
kchrzanowski 0:89166b12a9c5 129 //if outside of range, post to 0% or 100% of bar
kchrzanowski 0:89166b12a9c5 130 if (num > up) {
kchrzanowski 0:89166b12a9c5 131 height = 0;}
kchrzanowski 0:89166b12a9c5 132 else if (num < low) {
kchrzanowski 0:89166b12a9c5 133 height = 127;}
kchrzanowski 0:89166b12a9c5 134 return floor(height);
kchrzanowski 0:89166b12a9c5 135
kchrzanowski 0:89166b12a9c5 136 }
kchrzanowski 0:89166b12a9c5 137
kchrzanowski 0:89166b12a9c5 138 void DrawProgressBar(int pixVal, int startX, int endX)
kchrzanowski 0:89166b12a9c5 139 {
kchrzanowski 0:89166b12a9c5 140 //clears value
kchrzanowski 0:89166b12a9c5 141
kchrzanowski 0:89166b12a9c5 142
kchrzanowski 0:89166b12a9c5 143 int count = 0;
kchrzanowski 0:89166b12a9c5 144
kchrzanowski 0:89166b12a9c5 145 while ( (startX + count) <= endX )
kchrzanowski 0:89166b12a9c5 146 {
kchrzanowski 0:89166b12a9c5 147 mylcd.line(startX + count, 127, startX + count, pixVal, WHITE);
kchrzanowski 0:89166b12a9c5 148 count = count + 1;
kchrzanowski 0:89166b12a9c5 149 }
kchrzanowski 0:89166b12a9c5 150 }
kchrzanowski 0:89166b12a9c5 151
kchrzanowski 0:89166b12a9c5 152
kchrzanowski 0:89166b12a9c5 153
kchrzanowski 0:89166b12a9c5 154 //Wifi Commands
kchrzanowski 0:89166b12a9c5 155
kchrzanowski 0:89166b12a9c5 156 // Sets new ESP8266 baurate, change the esp.baud(xxxxx) to match your new setting once this has been executed
kchrzanowski 0:89166b12a9c5 157 void ESPsetbaudrate()
kchrzanowski 0:89166b12a9c5 158 {
kchrzanowski 0:89166b12a9c5 159 strcpy(snd, "AT+CIOBAUD=9600\r\n"); // change the numeric value to the required baudrate
kchrzanowski 0:89166b12a9c5 160 SendCMD();
kchrzanowski 0:89166b12a9c5 161 }
kchrzanowski 0:89166b12a9c5 162
kchrzanowski 0:89166b12a9c5 163 // +++++++++++++++++++++++++++++++++ This is for ESP8266 config only, run this once to set up the ESP8266 +++++++++++++++
kchrzanowski 0:89166b12a9c5 164 void ESPconfig()
kchrzanowski 0:89166b12a9c5 165 {
kchrzanowski 0:89166b12a9c5 166
kchrzanowski 0:89166b12a9c5 167 wait(1);
kchrzanowski 0:89166b12a9c5 168 pc.printf("\f---------- Starting ESP Config ----------\r\n\n");
kchrzanowski 0:89166b12a9c5 169 strcpy(snd,".\r\n.\r\n");
kchrzanowski 0:89166b12a9c5 170 SendCMD();
kchrzanowski 0:89166b12a9c5 171 wait(1);
kchrzanowski 0:89166b12a9c5 172 pc.printf("---------- Reset & get Firmware ----------\r\n");
kchrzanowski 0:89166b12a9c5 173 strcpy(snd,"node.restart()\r\n");
kchrzanowski 0:89166b12a9c5 174 SendCMD();
kchrzanowski 0:89166b12a9c5 175 timeout=5;
kchrzanowski 0:89166b12a9c5 176 getreply();
kchrzanowski 0:89166b12a9c5 177 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 178
kchrzanowski 0:89166b12a9c5 179 wait(.2);
kchrzanowski 0:89166b12a9c5 180
kchrzanowski 0:89166b12a9c5 181 pc.printf("\n---------- Get Version ----------\r\n");
kchrzanowski 0:89166b12a9c5 182 strcpy(snd,"print(node.info())\r\n");
kchrzanowski 0:89166b12a9c5 183 SendCMD();
kchrzanowski 0:89166b12a9c5 184 timeout=4;
kchrzanowski 0:89166b12a9c5 185 getreply();
kchrzanowski 0:89166b12a9c5 186 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 187
kchrzanowski 0:89166b12a9c5 188 wait(.3);
kchrzanowski 0:89166b12a9c5 189
kchrzanowski 0:89166b12a9c5 190 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
kchrzanowski 0:89166b12a9c5 191 pc.printf("\n---------- Setting Mode ----------\r\n");
kchrzanowski 0:89166b12a9c5 192 strcpy(snd, "wifi.setmode(wifi.STATION)\r\n");
kchrzanowski 0:89166b12a9c5 193 SendCMD();
kchrzanowski 0:89166b12a9c5 194 timeout=4;
kchrzanowski 0:89166b12a9c5 195 getreply();
kchrzanowski 0:89166b12a9c5 196 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 197
kchrzanowski 0:89166b12a9c5 198 wait(.2);
kchrzanowski 0:89166b12a9c5 199
kchrzanowski 0:89166b12a9c5 200
kchrzanowski 0:89166b12a9c5 201
kchrzanowski 0:89166b12a9c5 202 pc.printf("\n---------- Listing Access Points ----------\r\n");
kchrzanowski 0:89166b12a9c5 203 strcpy(snd, "function listap(t)\r\n");
kchrzanowski 0:89166b12a9c5 204 SendCMD();
kchrzanowski 0:89166b12a9c5 205 wait(1);
kchrzanowski 0:89166b12a9c5 206 strcpy(snd, "for k,v in pairs(t) do\r\n");
kchrzanowski 0:89166b12a9c5 207 SendCMD();
kchrzanowski 0:89166b12a9c5 208 wait(1);
kchrzanowski 0:89166b12a9c5 209 strcpy(snd, "print(k..\" : \"..v)\r\n");
kchrzanowski 0:89166b12a9c5 210 SendCMD();
kchrzanowski 0:89166b12a9c5 211 wait(1);
kchrzanowski 0:89166b12a9c5 212 strcpy(snd, "end\r\n");
kchrzanowski 0:89166b12a9c5 213 SendCMD();
kchrzanowski 0:89166b12a9c5 214 wait(1);
kchrzanowski 0:89166b12a9c5 215 strcpy(snd, "end\r\n");
kchrzanowski 0:89166b12a9c5 216 SendCMD();
kchrzanowski 0:89166b12a9c5 217 wait(1);
kchrzanowski 0:89166b12a9c5 218 strcpy(snd, "wifi.sta.getap(listap)\r\n");
kchrzanowski 0:89166b12a9c5 219 SendCMD();
kchrzanowski 0:89166b12a9c5 220 wait(1);
kchrzanowski 0:89166b12a9c5 221 timeout=15;
kchrzanowski 0:89166b12a9c5 222 getreply();
kchrzanowski 0:89166b12a9c5 223 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 224
kchrzanowski 0:89166b12a9c5 225 wait(.2);
kchrzanowski 0:89166b12a9c5 226
kchrzanowski 0:89166b12a9c5 227 pc.printf("\n---------- Connecting to AP ----------\r\n");
kchrzanowski 0:89166b12a9c5 228 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
kchrzanowski 0:89166b12a9c5 229 strcpy(snd, "wifi.sta.config(\"");
kchrzanowski 0:89166b12a9c5 230 strcat(snd, ssid);
kchrzanowski 0:89166b12a9c5 231 strcat(snd, "\",\"");
kchrzanowski 0:89166b12a9c5 232 strcat(snd, pwd);
kchrzanowski 0:89166b12a9c5 233 strcat(snd, "\")\r\n");
kchrzanowski 0:89166b12a9c5 234 SendCMD();
kchrzanowski 0:89166b12a9c5 235 timeout=10;
kchrzanowski 0:89166b12a9c5 236 getreply();
kchrzanowski 0:89166b12a9c5 237 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 238
kchrzanowski 0:89166b12a9c5 239 wait(.5);
kchrzanowski 0:89166b12a9c5 240
kchrzanowski 0:89166b12a9c5 241 pc.printf("\n---------- Get IP's ----------\r\n");
kchrzanowski 0:89166b12a9c5 242 strcpy(snd, "print(wifi.sta.getip())\r\n");
kchrzanowski 0:89166b12a9c5 243 SendCMD();
kchrzanowski 0:89166b12a9c5 244 timeout=3;
kchrzanowski 0:89166b12a9c5 245 getreply();
kchrzanowski 0:89166b12a9c5 246 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 247
kchrzanowski 0:89166b12a9c5 248 wait(1);
kchrzanowski 0:89166b12a9c5 249
kchrzanowski 0:89166b12a9c5 250 pc.printf("\n---------- Get Connection Status ----------\r\n");
kchrzanowski 0:89166b12a9c5 251 strcpy(snd, "print(wifi.sta.status())\r\n");
kchrzanowski 0:89166b12a9c5 252 SendCMD();
kchrzanowski 0:89166b12a9c5 253 timeout=5;
kchrzanowski 0:89166b12a9c5 254 getreply();
kchrzanowski 0:89166b12a9c5 255 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 256
kchrzanowski 0:89166b12a9c5 257 pc.printf("\n\n\n If you get a valid (non zero) IP, ESP8266 has been set up.\r\n");
kchrzanowski 0:89166b12a9c5 258 pc.printf(" Run this if you want to reconfig the ESP8266 at any time.\r\n");
kchrzanowski 0:89166b12a9c5 259 pc.printf(" It saves the SSID and password settings internally\r\n");
kchrzanowski 0:89166b12a9c5 260 wait(.10);
kchrzanowski 0:89166b12a9c5 261
kchrzanowski 0:89166b12a9c5 262
kchrzanowski 0:89166b12a9c5 263 pc.printf("\n---------- Setting up http server ----------\r\n");
kchrzanowski 0:89166b12a9c5 264 strcpy(snd, "srv=net.createServer(net.TCP)\r\n");
kchrzanowski 0:89166b12a9c5 265 SendCMD();
kchrzanowski 0:89166b12a9c5 266 wait(1);
kchrzanowski 0:89166b12a9c5 267 strcpy(snd, "srv:listen(80,function(conn)\r\n");
kchrzanowski 0:89166b12a9c5 268 SendCMD();
kchrzanowski 0:89166b12a9c5 269 wait(1);
kchrzanowski 0:89166b12a9c5 270 strcpy(snd, "conn:on(\"receive\",function(conn,payload)\r\n");
kchrzanowski 0:89166b12a9c5 271 SendCMD();
kchrzanowski 0:89166b12a9c5 272 wait(1);
kchrzanowski 0:89166b12a9c5 273 strcpy(snd, "print(payload)\r\n");
kchrzanowski 0:89166b12a9c5 274 SendCMD();
kchrzanowski 0:89166b12a9c5 275 wait(1);
kchrzanowski 0:89166b12a9c5 276
kchrzanowski 0:89166b12a9c5 277 strcpy(snd, "conn:send(\"<!DOCTYPE html>\")\r\n");
kchrzanowski 0:89166b12a9c5 278 SendCMD();
kchrzanowski 0:89166b12a9c5 279 wait(1);
kchrzanowski 0:89166b12a9c5 280
kchrzanowski 0:89166b12a9c5 281 strcpy(snd, "conn:send(\"<html>\")\r\n");
kchrzanowski 0:89166b12a9c5 282 SendCMD();
kchrzanowski 0:89166b12a9c5 283 wait(1);
kchrzanowski 0:89166b12a9c5 284
kchrzanowski 0:89166b12a9c5 285 strcpy(snd, "conn:send(\"<h1> Welcome to the bottle monitoring system.</h1>\")\r\n");
kchrzanowski 0:89166b12a9c5 286 SendCMD();
kchrzanowski 0:89166b12a9c5 287 wait(1);
kchrzanowski 0:89166b12a9c5 288
kchrzanowski 0:89166b12a9c5 289
kchrzanowski 0:89166b12a9c5 290
kchrzanowski 0:89166b12a9c5 291 strcpy(snd, "conn:send(\"<h2> Last time your bottle was checked for a fill level it contained </h2>\")\r\n");
kchrzanowski 0:89166b12a9c5 292 SendCMD();
kchrzanowski 0:89166b12a9c5 293 wait(1);
kchrzanowski 0:89166b12a9c5 294
kchrzanowski 0:89166b12a9c5 295 //Send most recent IR sensor data to site
kchrzanowski 0:89166b12a9c5 296 //sensorval = ainpin.read(); //read in voltage and set it to sensor val (between 0-1)
kchrzanowski 0:89166b12a9c5 297 int pix = CalcPixValue(sensorval, uplimit, lowlimit);
kchrzanowski 0:89166b12a9c5 298
kchrzanowski 0:89166b12a9c5 299 //reset it
kchrzanowski 0:89166b12a9c5 300 strcpy(snd,"");
kchrzanowski 0:89166b12a9c5 301 sprintf(cPercent, "%f",percent);
kchrzanowski 0:89166b12a9c5 302 strcat(snd,cPercent);
kchrzanowski 0:89166b12a9c5 303 strcat(snd, "conn:send(\"<h2> percent of the pill's original level ");
kchrzanowski 0:89166b12a9c5 304
kchrzanowski 0:89166b12a9c5 305 strcat(snd," </h2>\")\r\n");
kchrzanowski 0:89166b12a9c5 306 //strcat(snd, cPercent + "</h2>\")\r\n" );
kchrzanowski 0:89166b12a9c5 307 SendCMD();
kchrzanowski 0:89166b12a9c5 308 wait(1);
kchrzanowski 0:89166b12a9c5 309
kchrzanowski 0:89166b12a9c5 310 strcpy(snd, "conn:send(\"</html>\")\r\n");
kchrzanowski 0:89166b12a9c5 311 SendCMD();
kchrzanowski 0:89166b12a9c5 312 wait(1);
kchrzanowski 0:89166b12a9c5 313
kchrzanowski 0:89166b12a9c5 314 strcpy(snd, "end)\r\n");
kchrzanowski 0:89166b12a9c5 315 SendCMD();
kchrzanowski 0:89166b12a9c5 316 wait(1);
kchrzanowski 0:89166b12a9c5 317
kchrzanowski 0:89166b12a9c5 318 strcpy(snd, "conn:on(\"sent\",function(conn) conn:close() end)\r\n");
kchrzanowski 0:89166b12a9c5 319 SendCMD();
kchrzanowski 0:89166b12a9c5 320 wait(1);
kchrzanowski 0:89166b12a9c5 321 strcpy(snd, "end)\r\n");
kchrzanowski 0:89166b12a9c5 322 SendCMD();
kchrzanowski 0:89166b12a9c5 323 wait(1);
kchrzanowski 0:89166b12a9c5 324 timeout=17;
kchrzanowski 0:89166b12a9c5 325 getreply();
kchrzanowski 0:89166b12a9c5 326 pc.printf(buf);
kchrzanowski 0:89166b12a9c5 327 pc.printf("\r\nDONE");
kchrzanowski 0:89166b12a9c5 328 }
kchrzanowski 0:89166b12a9c5 329
kchrzanowski 0:89166b12a9c5 330 void SendCMD()
kchrzanowski 0:89166b12a9c5 331 {
kchrzanowski 0:89166b12a9c5 332 esp.printf("%s", snd);
kchrzanowski 0:89166b12a9c5 333 }
kchrzanowski 0:89166b12a9c5 334
kchrzanowski 0:89166b12a9c5 335 void getreply()
kchrzanowski 0:89166b12a9c5 336 {
kchrzanowski 0:89166b12a9c5 337 memset(buf, '\0', sizeof(buf));
kchrzanowski 0:89166b12a9c5 338 t.start();
kchrzanowski 0:89166b12a9c5 339 ended=0;
kchrzanowski 0:89166b12a9c5 340 count=0;
kchrzanowski 0:89166b12a9c5 341 while(!ended) {
kchrzanowski 0:89166b12a9c5 342 if(esp.readable()) {
kchrzanowski 0:89166b12a9c5 343 buf[count] = esp.getc();
kchrzanowski 0:89166b12a9c5 344 count++;
kchrzanowski 0:89166b12a9c5 345 }
kchrzanowski 0:89166b12a9c5 346 if(t.read() > timeout) {
kchrzanowski 0:89166b12a9c5 347 ended = 1;
kchrzanowski 0:89166b12a9c5 348 t.stop();
kchrzanowski 0:89166b12a9c5 349 t.reset();
kchrzanowski 0:89166b12a9c5 350 }
kchrzanowski 0:89166b12a9c5 351
kchrzanowski 0:89166b12a9c5 352 }
kchrzanowski 0:89166b12a9c5 353 }
kchrzanowski 0:89166b12a9c5 354
kchrzanowski 0:89166b12a9c5 355