WEB server handles an ESP8266 module to control a LED

Dependencies:   mbed

Fork of WebSwitch_ENC28J60 by Zoltan Hudak

Committer:
stueckler
Date:
Wed Jan 06 14:47:02 2016 +0000
Revision:
5:9b4fd5f07e10
Parent:
4:d34811deedab
WEB Server to control one LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
stueckler 5:9b4fd5f07e10 1 #include <mbed.h>
hudakz 0:68a0003c4cb8 2
stueckler 5:9b4fd5f07e10 3 // WEB Server to control one LED
stueckler 5:9b4fd5f07e10 4 // -----------------------------
hudakz 0:68a0003c4cb8 5
stueckler 5:9b4fd5f07e10 6 Serial pc(USBTX, USBRX);
stueckler 5:9b4fd5f07e10 7 Serial esp(PA_9, PA_10); // tx, rx
stueckler 5:9b4fd5f07e10 8 DigitalOut sw(PA_5); // Change LED to a pin of your choice. However, make sure that it does not collide with any serial pins already used
stueckler 5:9b4fd5f07e10 9
stueckler 5:9b4fd5f07e10 10 Timer t;
hudakz 4:d34811deedab 11
stueckler 5:9b4fd5f07e10 12 int count,ended,timeout;
stueckler 5:9b4fd5f07e10 13 char buf[1024];
stueckler 5:9b4fd5f07e10 14 char snd[255];
hudakz 0:68a0003c4cb8 15
stueckler 5:9b4fd5f07e10 16 const char* PASSWORD = "secret"; // change as you like
stueckler 5:9b4fd5f07e10 17 const char ssid[32] = "ESP8266"; // enter router ssid inside the quotes
stueckler 5:9b4fd5f07e10 18 const char pwd [32] = "ok"; // enter router password inside the quotes
stueckler 5:9b4fd5f07e10 19 char http[1024]; // HTTP content
stueckler 5:9b4fd5f07e10 20 uint8_t port = 80;
stueckler 5:9b4fd5f07e10 21 int id = 1;
hudakz 0:68a0003c4cb8 22
stueckler 5:9b4fd5f07e10 23 void SendCMD(char*),SendData(char*),GetReplyLine(int,char*,int),GetReply(int,char*,int),ESPconfig_Server(),ESPconfig_Client(),ESPsetbaudrate(),page(int);
stueckler 5:9b4fd5f07e10 24 int checksw(char*);
hudakz 0:68a0003c4cb8 25
hudakz 0:68a0003c4cb8 26
stueckler 5:9b4fd5f07e10 27 // USAGE:
stueckler 5:9b4fd5f07e10 28 // IP/password
stueckler 5:9b4fd5f07e10 29 // IP/password/?sw=1
stueckler 5:9b4fd5f07e10 30 // IP/password/?sw=0
hudakz 0:68a0003c4cb8 31
hudakz 0:68a0003c4cb8 32
hudakz 0:68a0003c4cb8 33 int main()
hudakz 0:68a0003c4cb8 34 {
stueckler 5:9b4fd5f07e10 35
stueckler 5:9b4fd5f07e10 36 // Setup
stueckler 5:9b4fd5f07e10 37 esp.baud(115200); // esp speed
stueckler 5:9b4fd5f07e10 38 pc.baud(9600); // change this to the new ESP8266 baudrate if it is changed at any time.
stueckler 5:9b4fd5f07e10 39
stueckler 5:9b4fd5f07e10 40
stueckler 5:9b4fd5f07e10 41 //ESPconfig_Client();
stueckler 5:9b4fd5f07e10 42 ESPconfig_Server();
stueckler 5:9b4fd5f07e10 43
stueckler 5:9b4fd5f07e10 44 for (int i=0; i<8; i++)
stueckler 5:9b4fd5f07e10 45 {
stueckler 5:9b4fd5f07e10 46 sw=!sw;
stueckler 5:9b4fd5f07e10 47 wait(0.3);
stueckler 5:9b4fd5f07e10 48 }
stueckler 5:9b4fd5f07e10 49
stueckler 5:9b4fd5f07e10 50
stueckler 5:9b4fd5f07e10 51 // Loop
hudakz 0:68a0003c4cb8 52 while(1) {
stueckler 5:9b4fd5f07e10 53 timeout=2;
stueckler 5:9b4fd5f07e10 54 if(esp.readable()){
stueckler 5:9b4fd5f07e10 55 GetReply(500,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 56 char* rqstPnt = strstr(buf, "+IPD");
stueckler 5:9b4fd5f07e10 57 if(rqstPnt != NULL)
stueckler 5:9b4fd5f07e10 58 {
stueckler 5:9b4fd5f07e10 59 sscanf(rqstPnt, "+IPD,%d", &id);
stueckler 5:9b4fd5f07e10 60
stueckler 5:9b4fd5f07e10 61 page(checksw(buf));
stueckler 5:9b4fd5f07e10 62
stueckler 5:9b4fd5f07e10 63 // Command TCP/IP Data Tx
stueckler 5:9b4fd5f07e10 64 sprintf(snd,"AT+CIPSEND=%d,%d\r\n", id, strlen(http));
stueckler 5:9b4fd5f07e10 65 SendCMD(snd);
stueckler 5:9b4fd5f07e10 66 GetReply(500,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 67
stueckler 5:9b4fd5f07e10 68 SendData(http);
stueckler 5:9b4fd5f07e10 69
stueckler 5:9b4fd5f07e10 70 bool weberror = true;
stueckler 5:9b4fd5f07e10 71 int cnt = 0;
stueckler 5:9b4fd5f07e10 72 while(weberror && cnt < 100){
stueckler 5:9b4fd5f07e10 73 GetReply(500,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 74 if(strstr(buf, "SEND OK") != NULL)
stueckler 5:9b4fd5f07e10 75 weberror = false;
stueckler 5:9b4fd5f07e10 76
stueckler 5:9b4fd5f07e10 77 cnt++;
hudakz 0:68a0003c4cb8 78 }
stueckler 5:9b4fd5f07e10 79
stueckler 5:9b4fd5f07e10 80 if(weberror)
stueckler 5:9b4fd5f07e10 81 {
stueckler 5:9b4fd5f07e10 82 strcpy(snd,"AT+CIPMUX=1\r\n");
stueckler 5:9b4fd5f07e10 83 SendCMD(snd);
stueckler 5:9b4fd5f07e10 84 GetReply(500,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 85
stueckler 5:9b4fd5f07e10 86 sprintf(snd,"AT+CIPSERVER=1,%d\r\n", port);
stueckler 5:9b4fd5f07e10 87 SendCMD(snd);
stueckler 5:9b4fd5f07e10 88 GetReply(2000,buf,sizeof(buf));
hudakz 0:68a0003c4cb8 89 }
stueckler 5:9b4fd5f07e10 90 else
stueckler 5:9b4fd5f07e10 91 {
stueckler 5:9b4fd5f07e10 92 sprintf(snd,"AT+CIPCLOSE=%d\r\n", id); // Notice id is an int formatted to string
stueckler 5:9b4fd5f07e10 93 SendCMD(snd);
stueckler 5:9b4fd5f07e10 94 GetReply(500,buf,sizeof(buf));
hudakz 0:68a0003c4cb8 95 }
hudakz 0:68a0003c4cb8 96 }
hudakz 0:68a0003c4cb8 97 }
hudakz 0:68a0003c4cb8 98 }
hudakz 0:68a0003c4cb8 99 }
hudakz 0:68a0003c4cb8 100
hudakz 3:0133517ba02d 101
stueckler 5:9b4fd5f07e10 102 void page(int status)
stueckler 5:9b4fd5f07e10 103 {
stueckler 5:9b4fd5f07e10 104 char content_length[5];
stueckler 5:9b4fd5f07e10 105 char info[255];
stueckler 5:9b4fd5f07e10 106
stueckler 5:9b4fd5f07e10 107 strcpy(info,"<h2>Web Switch</h2>\r\n");
stueckler 5:9b4fd5f07e10 108
stueckler 5:9b4fd5f07e10 109 if(status < 0)
stueckler 5:9b4fd5f07e10 110 {
stueckler 5:9b4fd5f07e10 111 strcat(info,"<p>Usage: http://host_or_ip/password</p>\r\n");
stueckler 5:9b4fd5f07e10 112 }
stueckler 5:9b4fd5f07e10 113 else if (status == 1)
stueckler 5:9b4fd5f07e10 114 {
stueckler 5:9b4fd5f07e10 115 strcat(info,"<pre>\r\n <font color=#FF0000>ON</font>");
stueckler 5:9b4fd5f07e10 116 strcat(info," <a href=\"./?sw=0\">[switch off]</a>\r\n");
stueckler 5:9b4fd5f07e10 117 }
stueckler 5:9b4fd5f07e10 118 else
stueckler 5:9b4fd5f07e10 119 {
stueckler 5:9b4fd5f07e10 120 strcat(info,"<pre>\r\n <font color=#00FF00>OFF</font>");
stueckler 5:9b4fd5f07e10 121 strcat(info," <a href=\"./?sw=1\">[switch on]</a>\r\n");
stueckler 5:9b4fd5f07e10 122 }
stueckler 5:9b4fd5f07e10 123
stueckler 5:9b4fd5f07e10 124 strcat(info," <a href=\".\">[refresh status]</a>\r\n");
stueckler 5:9b4fd5f07e10 125 strcat(info,"</pre>\r\n");
stueckler 5:9b4fd5f07e10 126 strcat(info,"<br>\r\n");
stueckler 5:9b4fd5f07e10 127
stueckler 5:9b4fd5f07e10 128 strcpy(http,"HTTP/1.0 200 OK");
stueckler 5:9b4fd5f07e10 129 strcat(http,"\r\nContent-Type: text/html\r\n");
stueckler 5:9b4fd5f07e10 130 strcat(http,"Content-Length: ");
stueckler 5:9b4fd5f07e10 131 sprintf(content_length, "%d", strlen(buf));
stueckler 5:9b4fd5f07e10 132 strcat(http,content_length);
stueckler 5:9b4fd5f07e10 133 strcat(http,"\r\nPragma: no-cache\r\n");
stueckler 5:9b4fd5f07e10 134 strcat(http,"Connection: About to close\r\n\r\n");
stueckler 5:9b4fd5f07e10 135 strcat(http,info);
stueckler 5:9b4fd5f07e10 136 }
stueckler 5:9b4fd5f07e10 137
stueckler 5:9b4fd5f07e10 138
stueckler 5:9b4fd5f07e10 139 int checksw(char *buf)
stueckler 5:9b4fd5f07e10 140 {
stueckler 5:9b4fd5f07e10 141 int ret = 0;
stueckler 5:9b4fd5f07e10 142
stueckler 5:9b4fd5f07e10 143 if(strstr(buf,PASSWORD)== NULL)
stueckler 5:9b4fd5f07e10 144 return -1;
stueckler 5:9b4fd5f07e10 145
stueckler 5:9b4fd5f07e10 146 char* rqstPnt = strstr(buf, "?sw=");
stueckler 5:9b4fd5f07e10 147 if(rqstPnt == NULL)
stueckler 5:9b4fd5f07e10 148 ret = 0;
stueckler 5:9b4fd5f07e10 149 else
stueckler 5:9b4fd5f07e10 150 sscanf(rqstPnt,"?sw=%d", &ret);
stueckler 5:9b4fd5f07e10 151
stueckler 5:9b4fd5f07e10 152 if(ret == 1)
stueckler 5:9b4fd5f07e10 153 sw = 1; // switch on
stueckler 5:9b4fd5f07e10 154 else
stueckler 5:9b4fd5f07e10 155 sw = 0; // switch off
stueckler 5:9b4fd5f07e10 156
stueckler 5:9b4fd5f07e10 157 return ret;
stueckler 5:9b4fd5f07e10 158 }
stueckler 5:9b4fd5f07e10 159
stueckler 5:9b4fd5f07e10 160
stueckler 5:9b4fd5f07e10 161 void ESPconfig_Server()
stueckler 5:9b4fd5f07e10 162 {
stueckler 5:9b4fd5f07e10 163
stueckler 5:9b4fd5f07e10 164 pc.printf("------- Starting ESP Config -------\r\n\n");
stueckler 5:9b4fd5f07e10 165 pc.printf("------- Reset & get Firmware ------\r\n");
stueckler 5:9b4fd5f07e10 166 strcpy(snd,"AT+RST\r\n");
stueckler 5:9b4fd5f07e10 167 SendCMD(snd);
stueckler 5:9b4fd5f07e10 168 GetReply(6000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 169
stueckler 5:9b4fd5f07e10 170
stueckler 5:9b4fd5f07e10 171 pc.printf("\n---------- Get Version ----------\r\n");
stueckler 5:9b4fd5f07e10 172 strcpy(snd,"AT+GMR\r\n");
stueckler 5:9b4fd5f07e10 173 SendCMD(snd);
stueckler 5:9b4fd5f07e10 174 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 175 pc.printf(buf);
stueckler 5:9b4fd5f07e10 176 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 177
stueckler 5:9b4fd5f07e10 178 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
stueckler 5:9b4fd5f07e10 179 pc.printf("\n---------- Setting Mode ----------\r\n");
stueckler 5:9b4fd5f07e10 180 strcpy(snd, "AT+CWMODE=2\r\n");
stueckler 5:9b4fd5f07e10 181 SendCMD(snd);
stueckler 5:9b4fd5f07e10 182 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 183 pc.printf(buf);
stueckler 5:9b4fd5f07e10 184
stueckler 5:9b4fd5f07e10 185 // set CIPMUX to 0=Single,1=Multi
stueckler 5:9b4fd5f07e10 186 pc.printf("\n---- Setting Connection Mode -----\r\n");
stueckler 5:9b4fd5f07e10 187 strcpy(snd, "AT+CIPMUX=1\r\n");
stueckler 5:9b4fd5f07e10 188 SendCMD(snd);
stueckler 5:9b4fd5f07e10 189 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 190
stueckler 5:9b4fd5f07e10 191
stueckler 5:9b4fd5f07e10 192
stueckler 5:9b4fd5f07e10 193 pc.printf("\n------------ AP ------------\r\n");
stueckler 5:9b4fd5f07e10 194 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
stueckler 5:9b4fd5f07e10 195 strcpy(snd, "AT+CWSAP=\"");
stueckler 5:9b4fd5f07e10 196 strcat(snd, ssid);
stueckler 5:9b4fd5f07e10 197 strcat(snd, "\",\"");
stueckler 5:9b4fd5f07e10 198 strcat(snd, pwd);
stueckler 5:9b4fd5f07e10 199 strcat(snd, "\",4,0\r\n");
stueckler 5:9b4fd5f07e10 200 SendCMD(snd);
stueckler 5:9b4fd5f07e10 201 GetReply(8000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 202 pc.printf(buf);
stueckler 5:9b4fd5f07e10 203
stueckler 5:9b4fd5f07e10 204 pc.printf("\n------- Set Server Port ------\r\n");
stueckler 5:9b4fd5f07e10 205 sprintf(snd, "AT+CIPSERVER=1,%d\r\n", port);
stueckler 5:9b4fd5f07e10 206 SendCMD(snd);
stueckler 5:9b4fd5f07e10 207 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 208
stueckler 5:9b4fd5f07e10 209
stueckler 5:9b4fd5f07e10 210 pc.printf("\n----- Set Server Timeout -----\r\n");
stueckler 5:9b4fd5f07e10 211 sprintf(snd,"AT+CIPSTO=%d\r\n", 5);
stueckler 5:9b4fd5f07e10 212 SendCMD(snd);
stueckler 5:9b4fd5f07e10 213 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 214
stueckler 5:9b4fd5f07e10 215
stueckler 5:9b4fd5f07e10 216 pc.printf("\n---------- Get IP's ----------\r\n");
stueckler 5:9b4fd5f07e10 217 strcpy(snd, "AT+CWSAP?\r\n");
stueckler 5:9b4fd5f07e10 218 SendCMD(snd);
stueckler 5:9b4fd5f07e10 219 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 220 pc.printf(buf);
stueckler 5:9b4fd5f07e10 221
stueckler 5:9b4fd5f07e10 222 strcpy(snd, "AT+CIFSR\r\n");
stueckler 5:9b4fd5f07e10 223 SendCMD(snd);
stueckler 5:9b4fd5f07e10 224 GetReply(2000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 225 pc.printf(buf);
stueckler 5:9b4fd5f07e10 226 pc.printf("\n------- Connection Up --------\r\n");
stueckler 5:9b4fd5f07e10 227
stueckler 5:9b4fd5f07e10 228 }
stueckler 5:9b4fd5f07e10 229
stueckler 5:9b4fd5f07e10 230 void ESPconfig_Client()
stueckler 5:9b4fd5f07e10 231 {
stueckler 5:9b4fd5f07e10 232
stueckler 5:9b4fd5f07e10 233 pc.printf("---------- Starting ESP Config -----------\r\n\n");
stueckler 5:9b4fd5f07e10 234 pc.printf("---------- Reset & get Firmware ----------\r\n");
stueckler 5:9b4fd5f07e10 235 strcpy(snd,"AT+RST\r\n");
stueckler 5:9b4fd5f07e10 236 SendCMD(snd);
stueckler 5:9b4fd5f07e10 237 GetReply(6000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 238
stueckler 5:9b4fd5f07e10 239
stueckler 5:9b4fd5f07e10 240 pc.printf("\n---------- Get Version ----------\r\n");
stueckler 5:9b4fd5f07e10 241 strcpy(snd,"AT+GMR\r\n");
stueckler 5:9b4fd5f07e10 242 SendCMD(snd);
stueckler 5:9b4fd5f07e10 243 GetReply(3000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 244 pc.printf(buf);
stueckler 5:9b4fd5f07e10 245
stueckler 5:9b4fd5f07e10 246 // set CWMODE to 1=Station,2=AP,3=BOTH, default mode 1 (Station)
stueckler 5:9b4fd5f07e10 247 pc.printf("\n---------- Setting Mode ----------\r\n");
stueckler 5:9b4fd5f07e10 248 strcpy(snd, "AT+CWMODE=1\r\n");
stueckler 5:9b4fd5f07e10 249 SendCMD(snd);
stueckler 5:9b4fd5f07e10 250 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 251
stueckler 5:9b4fd5f07e10 252
stueckler 5:9b4fd5f07e10 253 // set CIPMUX to 0=Single,1=Multi
stueckler 5:9b4fd5f07e10 254 pc.printf("\n-------- Setting Connection Mode ---------\r\n");
stueckler 5:9b4fd5f07e10 255 strcpy(snd, "AT+CIPMUX=1\r\n");
stueckler 5:9b4fd5f07e10 256 SendCMD(snd);
stueckler 5:9b4fd5f07e10 257 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 258
stueckler 5:9b4fd5f07e10 259
stueckler 5:9b4fd5f07e10 260 pc.printf("\n---------- Listing Acces Points ----------\r\n");
stueckler 5:9b4fd5f07e10 261 strcpy(snd, "AT+CWLAP\r\n");
stueckler 5:9b4fd5f07e10 262 SendCMD(snd);
stueckler 5:9b4fd5f07e10 263 GetReply(3000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 264 pc.printf(buf);
stueckler 5:9b4fd5f07e10 265
stueckler 5:9b4fd5f07e10 266 pc.printf("\n---------- Connecting to AP ----------\r\n");
stueckler 5:9b4fd5f07e10 267 pc.printf("ssid = %s pwd = %s\r\n",ssid,pwd);
stueckler 5:9b4fd5f07e10 268 strcpy(snd, "AT+CWJAP=\"");
stueckler 5:9b4fd5f07e10 269 strcat(snd, ssid);
stueckler 5:9b4fd5f07e10 270 strcat(snd, "\",\"");
stueckler 5:9b4fd5f07e10 271 strcat(snd, pwd);
stueckler 5:9b4fd5f07e10 272 strcat(snd, "\"\r\n");
stueckler 5:9b4fd5f07e10 273 SendCMD(snd);
stueckler 5:9b4fd5f07e10 274 GetReply(8000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 275 pc.printf(buf);
stueckler 5:9b4fd5f07e10 276
stueckler 5:9b4fd5f07e10 277 pc.printf("\n------ Set Server Port -------\r\n");
stueckler 5:9b4fd5f07e10 278 sprintf(snd, "AT+CIPSERVER=1,%d\r\n", port);
stueckler 5:9b4fd5f07e10 279 SendCMD(snd);
stueckler 5:9b4fd5f07e10 280 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 281
stueckler 5:9b4fd5f07e10 282
stueckler 5:9b4fd5f07e10 283 pc.printf("\n----- Set Server Timeout -----\r\n");
stueckler 5:9b4fd5f07e10 284 sprintf(snd,"AT+CIPSTO=%d\r\n", 5);
stueckler 5:9b4fd5f07e10 285 SendCMD(snd);
stueckler 5:9b4fd5f07e10 286 GetReply(1000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 287
stueckler 5:9b4fd5f07e10 288
stueckler 5:9b4fd5f07e10 289 pc.printf("\n---------- Get IP's ----------\r\n");
stueckler 5:9b4fd5f07e10 290 int weberror = true;
stueckler 5:9b4fd5f07e10 291 while(weberror) { // wait for valid IP
stueckler 5:9b4fd5f07e10 292 strcpy(snd, "AT+CIFSR\r\n");
stueckler 5:9b4fd5f07e10 293 SendCMD(snd);
stueckler 5:9b4fd5f07e10 294 GetReply(2000,buf,sizeof(buf));
stueckler 5:9b4fd5f07e10 295 pc.printf(buf);
stueckler 5:9b4fd5f07e10 296 if(strstr(buf, "0.0.0.0") == NULL) {
stueckler 5:9b4fd5f07e10 297 weberror=false;
stueckler 5:9b4fd5f07e10 298 }
stueckler 5:9b4fd5f07e10 299 }
stueckler 5:9b4fd5f07e10 300
stueckler 5:9b4fd5f07e10 301 pc.printf("\n------- Connection Up --------\r\n");
stueckler 5:9b4fd5f07e10 302
stueckler 5:9b4fd5f07e10 303 }
stueckler 5:9b4fd5f07e10 304
stueckler 5:9b4fd5f07e10 305 void SendCMD(char *cmd)
stueckler 5:9b4fd5f07e10 306 {
stueckler 5:9b4fd5f07e10 307 esp.printf("%s", cmd);
stueckler 5:9b4fd5f07e10 308 }
stueckler 5:9b4fd5f07e10 309
stueckler 5:9b4fd5f07e10 310 void SendData(char *dat)
stueckler 5:9b4fd5f07e10 311 {
stueckler 5:9b4fd5f07e10 312 esp.printf("%s", dat);
stueckler 5:9b4fd5f07e10 313 }
stueckler 5:9b4fd5f07e10 314
stueckler 5:9b4fd5f07e10 315 void GetReply(int timeout, char *buf, int size)
stueckler 5:9b4fd5f07e10 316 {
stueckler 5:9b4fd5f07e10 317 char c;
stueckler 5:9b4fd5f07e10 318 ended=0;
stueckler 5:9b4fd5f07e10 319 count=0;
stueckler 5:9b4fd5f07e10 320 t.start();
stueckler 5:9b4fd5f07e10 321 memset(buf, '\0', size);
stueckler 5:9b4fd5f07e10 322 while(!ended) {
stueckler 5:9b4fd5f07e10 323 if(esp.readable()) {
stueckler 5:9b4fd5f07e10 324 c = esp.getc();
stueckler 5:9b4fd5f07e10 325
stueckler 5:9b4fd5f07e10 326 buf[count] = c;
stueckler 5:9b4fd5f07e10 327 count++;
stueckler 5:9b4fd5f07e10 328
stueckler 5:9b4fd5f07e10 329 if (c == '\r' || c == '\n') // OK will end
stueckler 5:9b4fd5f07e10 330 {
stueckler 5:9b4fd5f07e10 331 if (count > 2 && buf[count-3]== 'O' && buf[count-2] == 'K')
stueckler 5:9b4fd5f07e10 332 {
stueckler 5:9b4fd5f07e10 333 buf[count-1] = '\r';
stueckler 5:9b4fd5f07e10 334 buf[count] = '\n';
stueckler 5:9b4fd5f07e10 335 count = size;
stueckler 5:9b4fd5f07e10 336 }
stueckler 5:9b4fd5f07e10 337 }
stueckler 5:9b4fd5f07e10 338 }
stueckler 5:9b4fd5f07e10 339
stueckler 5:9b4fd5f07e10 340 if(t.read_ms() > timeout || count >= size) // Timeout or full
stueckler 5:9b4fd5f07e10 341 {
stueckler 5:9b4fd5f07e10 342 ended = 1;
stueckler 5:9b4fd5f07e10 343 t.stop();
stueckler 5:9b4fd5f07e10 344 t.reset();
stueckler 5:9b4fd5f07e10 345 }
stueckler 5:9b4fd5f07e10 346 }
stueckler 5:9b4fd5f07e10 347 //pc.printf(buf);
stueckler 5:9b4fd5f07e10 348 }
stueckler 5:9b4fd5f07e10 349