For test

Dependencies:   mbed

Committer:
shennongmin
Date:
Thu Feb 05 06:48:45 2015 +0000
Revision:
35:90be2bc2a492
Parent:
33:f721a46ef2f2
compile okay and test okay

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shennongmin 10:9d4ec0359a5c 1 #include "ESP8266.h"
shennongmin 10:9d4ec0359a5c 2
shennongmin 10:9d4ec0359a5c 3
shennongmin 29:75185b05d6a4 4 ESP8266::ESP8266(PinName tx, PinName rx, int baud_rate):m_uart(tx, rx) {
shennongmin 29:75185b05d6a4 5 m_uart.begin(baud_rate);
shennongmin 29:75185b05d6a4 6 m_uart.flush();
shennongmin 29:75185b05d6a4 7 m_uart.setTimeout(1000);
shennongmin 10:9d4ec0359a5c 8 }
shennongmin 10:9d4ec0359a5c 9
shennongmin 29:75185b05d6a4 10 int ESP8266::getMuxID(void) {
shennongmin 29:75185b05d6a4 11 return m_mux_id;
shennongmin 10:9d4ec0359a5c 12 }
shennongmin 10:9d4ec0359a5c 13
shennongmin 29:75185b05d6a4 14 bool ESP8266::reset(void)
shennongmin 29:75185b05d6a4 15 {
shennongmin 33:f721a46ef2f2 16 unsigned long start;
shennongmin 33:f721a46ef2f2 17 m_uart.setTimeout(100);
shennongmin 33:f721a46ef2f2 18 m_uart.flush();
shennongmin 29:75185b05d6a4 19 m_uart.println("AT+RST");
shennongmin 33:f721a46ef2f2 20 if (!m_uart.find("OK")) {
shennongmin 33:f721a46ef2f2 21 return false;
shennongmin 33:f721a46ef2f2 22 }
shennongmin 33:f721a46ef2f2 23
shennongmin 33:f721a46ef2f2 24 delay(2000);
shennongmin 33:f721a46ef2f2 25
shennongmin 33:f721a46ef2f2 26 start = millis();
shennongmin 33:f721a46ef2f2 27 while (millis() - start < 3000) {
shennongmin 33:f721a46ef2f2 28 m_uart.flush();
shennongmin 33:f721a46ef2f2 29 m_uart.println("AT");
shennongmin 33:f721a46ef2f2 30 if (m_uart.find("OK")) {
shennongmin 33:f721a46ef2f2 31 delay(500);
shennongmin 33:f721a46ef2f2 32 return true;
shennongmin 33:f721a46ef2f2 33 }
shennongmin 33:f721a46ef2f2 34 delay(100);
shennongmin 33:f721a46ef2f2 35 }
shennongmin 33:f721a46ef2f2 36 return false;
shennongmin 29:75185b05d6a4 37 }
shennongmin 10:9d4ec0359a5c 38
shennongmin 30:46a560b71e61 39 bool ESP8266::setStationMode(String ssid, String pwd)
shennongmin 10:9d4ec0359a5c 40 {
shennongmin 30:46a560b71e61 41 if (!confMode(ESP8266_MODE_STA))
shennongmin 30:46a560b71e61 42 {
shennongmin 30:46a560b71e61 43 return false;
shennongmin 10:9d4ec0359a5c 44 }
shennongmin 30:46a560b71e61 45 return confJAP(ssid, pwd);
shennongmin 30:46a560b71e61 46 }
shennongmin 30:46a560b71e61 47
shennongmin 35:90be2bc2a492 48 bool ESP8266::setSoftAPMode(String sap_ssid, String sap_pwd, int chl, ESP8266Encrypstion ecn)
shennongmin 30:46a560b71e61 49 {
shennongmin 30:46a560b71e61 50 if (!confMode(ESP8266_MODE_SAP))
shennongmin 10:9d4ec0359a5c 51 {
shennongmin 30:46a560b71e61 52 return false;
shennongmin 10:9d4ec0359a5c 53 }
shennongmin 30:46a560b71e61 54 return confSAP(sap_ssid, sap_pwd, chl, ecn);
shennongmin 30:46a560b71e61 55 }
shennongmin 30:46a560b71e61 56
shennongmin 35:90be2bc2a492 57 bool ESP8266::setStationSoftAPMode(String ssid, String pwd, String sap_ssid, String sap_pwd ,
shennongmin 35:90be2bc2a492 58 int chl, ESP8266Encrypstion ecn)
shennongmin 30:46a560b71e61 59 {
shennongmin 30:46a560b71e61 60 if (!confMode(ESP8266_MODE_STA_SAP))
shennongmin 10:9d4ec0359a5c 61 {
shennongmin 30:46a560b71e61 62 return false;
shennongmin 10:9d4ec0359a5c 63 }
shennongmin 30:46a560b71e61 64 if (confJAP(ssid, pwd) && confSAP(sap_ssid, sap_pwd, chl, ecn)) {
shennongmin 30:46a560b71e61 65 return true;
shennongmin 30:46a560b71e61 66 } else {
shennongmin 30:46a560b71e61 67 return false;
shennongmin 30:46a560b71e61 68 }
shennongmin 10:9d4ec0359a5c 69 }
shennongmin 10:9d4ec0359a5c 70
shennongmin 35:90be2bc2a492 71 bool ESP8266::ipConfig(ESP8266CommType type, String addr, int port, ESP8266Mux mux, int id)
shennongmin 10:9d4ec0359a5c 72 {
shennongmin 10:9d4ec0359a5c 73 bool result = false;
shennongmin 35:90be2bc2a492 74 if (mux == ESP8266_MUX_SINGLE)
shennongmin 10:9d4ec0359a5c 75 {
shennongmin 17:c449356787f1 76 confMux(mux);
shennongmin 35:90be2bc2a492 77 delay(5000);
shennongmin 10:9d4ec0359a5c 78 result = newMux(type, addr, port);
shennongmin 10:9d4ec0359a5c 79 }
shennongmin 35:90be2bc2a492 80 else if (mux == ESP8266_MUX_MULTIPLE)
shennongmin 10:9d4ec0359a5c 81 {
shennongmin 17:c449356787f1 82 confMux(mux);
shennongmin 35:90be2bc2a492 83 delay(5000);
shennongmin 10:9d4ec0359a5c 84 result = newMux(id, type, addr, port);
shennongmin 10:9d4ec0359a5c 85 }
shennongmin 10:9d4ec0359a5c 86 return result;
shennongmin 10:9d4ec0359a5c 87 }
shennongmin 10:9d4ec0359a5c 88
shennongmin 23:4cec7b9e3715 89 int ESP8266::recvData(char *buf)
shennongmin 10:9d4ec0359a5c 90 {
shennongmin 10:9d4ec0359a5c 91 String data = "";
shennongmin 29:75185b05d6a4 92 if (m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 93 {
shennongmin 10:9d4ec0359a5c 94
shennongmin 10:9d4ec0359a5c 95 unsigned long start;
shennongmin 10:9d4ec0359a5c 96 start = millis();
shennongmin 29:75185b05d6a4 97 char c0 = m_uart.readChr();
shennongmin 10:9d4ec0359a5c 98 if (c0 == '+')
shennongmin 10:9d4ec0359a5c 99 {
shennongmin 10:9d4ec0359a5c 100
shennongmin 10:9d4ec0359a5c 101 while (millis()-start<5000)
shennongmin 10:9d4ec0359a5c 102 {
shennongmin 29:75185b05d6a4 103 if (m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 104 {
shennongmin 29:75185b05d6a4 105 char c = m_uart.readChr();
shennongmin 10:9d4ec0359a5c 106 data += c;
shennongmin 10:9d4ec0359a5c 107 }
shennongmin 10:9d4ec0359a5c 108 if (data.indexOf("\nOK")!=-1)
shennongmin 10:9d4ec0359a5c 109 {
shennongmin 10:9d4ec0359a5c 110 break;
shennongmin 10:9d4ec0359a5c 111 }
shennongmin 10:9d4ec0359a5c 112 }
shennongmin 28:c25aff31dcc5 113
shennongmin 10:9d4ec0359a5c 114 int sLen = strlen(data.c_str());
shennongmin 10:9d4ec0359a5c 115 int i,j;
shennongmin 10:9d4ec0359a5c 116 for (i = 0; i <= sLen; i++)
shennongmin 10:9d4ec0359a5c 117 {
shennongmin 10:9d4ec0359a5c 118 if (data[i] == ':')
shennongmin 10:9d4ec0359a5c 119 {
shennongmin 10:9d4ec0359a5c 120 break;
shennongmin 10:9d4ec0359a5c 121 }
shennongmin 10:9d4ec0359a5c 122
shennongmin 10:9d4ec0359a5c 123 }
shennongmin 10:9d4ec0359a5c 124 bool found = false;
shennongmin 10:9d4ec0359a5c 125 for (j = 4; j <= i; j++)
shennongmin 10:9d4ec0359a5c 126 {
shennongmin 10:9d4ec0359a5c 127 if (data[j] == ',')
shennongmin 10:9d4ec0359a5c 128 {
shennongmin 10:9d4ec0359a5c 129 found = true;
shennongmin 10:9d4ec0359a5c 130 break;
shennongmin 10:9d4ec0359a5c 131 }
shennongmin 10:9d4ec0359a5c 132
shennongmin 10:9d4ec0359a5c 133 }
shennongmin 10:9d4ec0359a5c 134 int iSize;
shennongmin 10:9d4ec0359a5c 135 if(found ==true)
shennongmin 10:9d4ec0359a5c 136 {
shennongmin 10:9d4ec0359a5c 137 String _id = data.substring(4, j);
shennongmin 29:75185b05d6a4 138 m_mux_id = _id.toInt();
shennongmin 10:9d4ec0359a5c 139 String _size = data.substring(j+1, i);
shennongmin 10:9d4ec0359a5c 140 iSize = _size.toInt();
shennongmin 14:40b1decf03f3 141
shennongmin 10:9d4ec0359a5c 142 String str = data.substring(i+1, i+1+iSize);
shennongmin 10:9d4ec0359a5c 143 strcpy(buf, str.c_str());
shennongmin 14:40b1decf03f3 144
shennongmin 10:9d4ec0359a5c 145
shennongmin 10:9d4ec0359a5c 146 }
shennongmin 10:9d4ec0359a5c 147 else
shennongmin 10:9d4ec0359a5c 148 {
shennongmin 10:9d4ec0359a5c 149 String _size = data.substring(4, i);
shennongmin 10:9d4ec0359a5c 150 iSize = _size.toInt();
shennongmin 14:40b1decf03f3 151
shennongmin 14:40b1decf03f3 152
shennongmin 10:9d4ec0359a5c 153 String str = data.substring(i+1, i+1+iSize);
shennongmin 10:9d4ec0359a5c 154 strcpy(buf, str.c_str());
shennongmin 14:40b1decf03f3 155
shennongmin 10:9d4ec0359a5c 156 }
shennongmin 10:9d4ec0359a5c 157 return iSize;
shennongmin 10:9d4ec0359a5c 158 }
shennongmin 10:9d4ec0359a5c 159 }
shennongmin 10:9d4ec0359a5c 160
shennongmin 10:9d4ec0359a5c 161 return 0;
shennongmin 10:9d4ec0359a5c 162 }
shennongmin 10:9d4ec0359a5c 163
shennongmin 10:9d4ec0359a5c 164 String ESP8266::showMode()
shennongmin 10:9d4ec0359a5c 165 {
shennongmin 10:9d4ec0359a5c 166 String data;
shennongmin 29:75185b05d6a4 167 m_uart.println("AT+CWMODE?");
shennongmin 10:9d4ec0359a5c 168 unsigned long start;
shennongmin 10:9d4ec0359a5c 169 start = millis();
shennongmin 10:9d4ec0359a5c 170 while (millis()-start<2000) {
shennongmin 29:75185b05d6a4 171 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 172 {
shennongmin 29:75185b05d6a4 173 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 174 data=data+a;
shennongmin 10:9d4ec0359a5c 175 }
shennongmin 10:9d4ec0359a5c 176 if (data.indexOf("OK")!=-1)
shennongmin 10:9d4ec0359a5c 177 {
shennongmin 10:9d4ec0359a5c 178 break;
shennongmin 10:9d4ec0359a5c 179 }
shennongmin 10:9d4ec0359a5c 180 }
shennongmin 10:9d4ec0359a5c 181 if(data.indexOf("1")!=-1)
shennongmin 10:9d4ec0359a5c 182 {
shennongmin 10:9d4ec0359a5c 183 return "Station";
shennongmin 10:9d4ec0359a5c 184 }else if(data.indexOf("2")!=-1)
shennongmin 10:9d4ec0359a5c 185 {
shennongmin 10:9d4ec0359a5c 186 return "AP";
shennongmin 10:9d4ec0359a5c 187 }else if(data.indexOf("3")!=-1)
shennongmin 10:9d4ec0359a5c 188 {
shennongmin 10:9d4ec0359a5c 189 return "AP+Station";
shennongmin 10:9d4ec0359a5c 190 }else{
shennongmin 10:9d4ec0359a5c 191 return "Invalid Mode!";
shennongmin 10:9d4ec0359a5c 192 }
shennongmin 10:9d4ec0359a5c 193 }
shennongmin 10:9d4ec0359a5c 194
shennongmin 35:90be2bc2a492 195 bool ESP8266::confMode(ESP8266WorkMode mode)
shennongmin 10:9d4ec0359a5c 196 {
shennongmin 10:9d4ec0359a5c 197 String data;
shennongmin 33:f721a46ef2f2 198 m_uart.flush();
shennongmin 33:f721a46ef2f2 199 m_uart.print("AT+CWMODE=");
shennongmin 33:f721a46ef2f2 200 m_uart.println(String(mode));
shennongmin 33:f721a46ef2f2 201 unsigned long start;
shennongmin 10:9d4ec0359a5c 202 start = millis();
shennongmin 10:9d4ec0359a5c 203 while (millis()-start<2000) {
shennongmin 33:f721a46ef2f2 204 while(m_uart.available()>0) {
shennongmin 33:f721a46ef2f2 205 char c = m_uart.readChr();
shennongmin 33:f721a46ef2f2 206 data += c;
shennongmin 33:f721a46ef2f2 207 }
shennongmin 33:f721a46ef2f2 208 if (data.indexOf("OK")!=-1 || data.indexOf("no change")!=-1)
shennongmin 33:f721a46ef2f2 209 {
shennongmin 33:f721a46ef2f2 210 return true;
shennongmin 33:f721a46ef2f2 211 } else if (data.indexOf("ERROR")!=-1 || data.indexOf("busy")!=-1)
shennongmin 33:f721a46ef2f2 212 {
shennongmin 33:f721a46ef2f2 213 return false;
shennongmin 33:f721a46ef2f2 214 }
shennongmin 33:f721a46ef2f2 215 }
shennongmin 33:f721a46ef2f2 216 return false;
shennongmin 10:9d4ec0359a5c 217 }
shennongmin 10:9d4ec0359a5c 218
shennongmin 10:9d4ec0359a5c 219 String ESP8266::showAP(void)
shennongmin 10:9d4ec0359a5c 220 {
shennongmin 10:9d4ec0359a5c 221 String data;
shennongmin 29:75185b05d6a4 222 m_uart.flush();
shennongmin 29:75185b05d6a4 223 m_uart.print("AT+CWLAP\r\n");
shennongmin 10:9d4ec0359a5c 224 delay(5000);
shennongmin 10:9d4ec0359a5c 225
shennongmin 10:9d4ec0359a5c 226 unsigned long start;
shennongmin 10:9d4ec0359a5c 227 start = millis();
shennongmin 10:9d4ec0359a5c 228 while (millis()-start<8000) {
shennongmin 29:75185b05d6a4 229 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 230 {
shennongmin 29:75185b05d6a4 231 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 232 data=data+a;
shennongmin 10:9d4ec0359a5c 233 }
shennongmin 10:9d4ec0359a5c 234 if (data.indexOf("OK")!=-1 || data.indexOf("ERROR")!=-1 )
shennongmin 10:9d4ec0359a5c 235 {
shennongmin 10:9d4ec0359a5c 236 break;
shennongmin 10:9d4ec0359a5c 237 }
shennongmin 10:9d4ec0359a5c 238 }
shennongmin 10:9d4ec0359a5c 239 if(data.indexOf("ERROR")!=-1)
shennongmin 10:9d4ec0359a5c 240 {
shennongmin 10:9d4ec0359a5c 241 return "ERROR";
shennongmin 10:9d4ec0359a5c 242 }
shennongmin 10:9d4ec0359a5c 243 else{
shennongmin 10:9d4ec0359a5c 244 char head[4] = {0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 245 char tail[7] = {0x0D,0x0A,0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 246 data.replace("AT+CWLAP","");
shennongmin 10:9d4ec0359a5c 247 data.replace("OK","");
shennongmin 10:9d4ec0359a5c 248 data.replace("+CWLAP","ESP8266");
shennongmin 10:9d4ec0359a5c 249 data.replace(tail,"");
shennongmin 10:9d4ec0359a5c 250 data.replace(head,"");
shennongmin 10:9d4ec0359a5c 251
shennongmin 10:9d4ec0359a5c 252 return data;
shennongmin 10:9d4ec0359a5c 253 }
shennongmin 10:9d4ec0359a5c 254 }
shennongmin 10:9d4ec0359a5c 255
shennongmin 10:9d4ec0359a5c 256 String ESP8266::showJAP(void)
shennongmin 10:9d4ec0359a5c 257 {
shennongmin 27:dc7ad070c5b1 258 bool ret = false;
shennongmin 29:75185b05d6a4 259 m_uart.flush();
shennongmin 29:75185b05d6a4 260 m_uart.println("AT+CWJAP?");
shennongmin 27:dc7ad070c5b1 261
shennongmin 27:dc7ad070c5b1 262 String data;
shennongmin 27:dc7ad070c5b1 263 unsigned long start;
shennongmin 10:9d4ec0359a5c 264 start = millis();
shennongmin 27:dc7ad070c5b1 265 while (millis()-start < 3000) {
shennongmin 29:75185b05d6a4 266 while(m_uart.available() > 0) {
shennongmin 29:75185b05d6a4 267 char a = m_uart.readChr();
shennongmin 27:dc7ad070c5b1 268 data += a;
shennongmin 27:dc7ad070c5b1 269 //printf("%c", a);
shennongmin 27:dc7ad070c5b1 270 }
shennongmin 27:dc7ad070c5b1 271 if (data.indexOf("OK") != -1) {
shennongmin 27:dc7ad070c5b1 272 ret = true;
shennongmin 27:dc7ad070c5b1 273 break;
shennongmin 27:dc7ad070c5b1 274 } else if (data.indexOf("ERROR") != -1) {
shennongmin 27:dc7ad070c5b1 275 ret = false;
shennongmin 27:dc7ad070c5b1 276 break;
shennongmin 27:dc7ad070c5b1 277 }
shennongmin 10:9d4ec0359a5c 278 }
shennongmin 27:dc7ad070c5b1 279 if (ret) {
shennongmin 27:dc7ad070c5b1 280 int index1 = data.indexOf(":\"");
shennongmin 27:dc7ad070c5b1 281 int index2 = data.indexOf("\"\r\n");
shennongmin 27:dc7ad070c5b1 282 if (index1 != -1 && index2 != -1) {
shennongmin 27:dc7ad070c5b1 283 return data.substring(index1 + 2, index2);
shennongmin 27:dc7ad070c5b1 284 } else {
shennongmin 27:dc7ad070c5b1 285 return "not found";
shennongmin 27:dc7ad070c5b1 286 }
shennongmin 27:dc7ad070c5b1 287 } else {
shennongmin 27:dc7ad070c5b1 288 return "null";
shennongmin 27:dc7ad070c5b1 289 }
shennongmin 10:9d4ec0359a5c 290 }
shennongmin 10:9d4ec0359a5c 291
shennongmin 10:9d4ec0359a5c 292 bool ESP8266::confJAP(String ssid , String pwd)
shennongmin 10:9d4ec0359a5c 293 {
shennongmin 33:f721a46ef2f2 294 bool ret = false;
shennongmin 33:f721a46ef2f2 295 m_uart.flush();
shennongmin 29:75185b05d6a4 296 m_uart.print("AT+CWJAP=");
shennongmin 29:75185b05d6a4 297 m_uart.print("\""); //"ssid"
shennongmin 29:75185b05d6a4 298 m_uart.print(ssid);
shennongmin 29:75185b05d6a4 299 m_uart.print("\"");
shennongmin 10:9d4ec0359a5c 300
shennongmin 29:75185b05d6a4 301 m_uart.print(",");
shennongmin 10:9d4ec0359a5c 302
shennongmin 29:75185b05d6a4 303 m_uart.print("\""); //"pwd"
shennongmin 29:75185b05d6a4 304 m_uart.print(pwd);
shennongmin 29:75185b05d6a4 305 m_uart.println("\"");
shennongmin 10:9d4ec0359a5c 306
shennongmin 33:f721a46ef2f2 307 String data;
shennongmin 10:9d4ec0359a5c 308 unsigned long start;
shennongmin 10:9d4ec0359a5c 309 start = millis();
shennongmin 33:f721a46ef2f2 310 while (millis() - start < 10000) {
shennongmin 33:f721a46ef2f2 311 while (m_uart.available() > 0) {
shennongmin 33:f721a46ef2f2 312 char c = m_uart.readChr();
shennongmin 33:f721a46ef2f2 313 data += c;
shennongmin 33:f721a46ef2f2 314 }
shennongmin 33:f721a46ef2f2 315 if(data.indexOf("OK") != -1) {
shennongmin 33:f721a46ef2f2 316 ret = true;
shennongmin 33:f721a46ef2f2 317 break;
shennongmin 33:f721a46ef2f2 318 } else if (data.indexOf("ERROR") != -1) {
shennongmin 33:f721a46ef2f2 319 ret = false;
shennongmin 33:f721a46ef2f2 320 break;
shennongmin 10:9d4ec0359a5c 321 }
shennongmin 10:9d4ec0359a5c 322 }
shennongmin 33:f721a46ef2f2 323
shennongmin 33:f721a46ef2f2 324 if (ret) {
shennongmin 33:f721a46ef2f2 325 return true;
shennongmin 33:f721a46ef2f2 326 } else {
shennongmin 33:f721a46ef2f2 327 return false;
shennongmin 33:f721a46ef2f2 328 }
shennongmin 10:9d4ec0359a5c 329 }
shennongmin 10:9d4ec0359a5c 330
shennongmin 10:9d4ec0359a5c 331 bool ESP8266::quitAP(void)
shennongmin 10:9d4ec0359a5c 332 {
shennongmin 29:75185b05d6a4 333 m_uart.println("AT+CWQAP");
shennongmin 10:9d4ec0359a5c 334 unsigned long start;
shennongmin 10:9d4ec0359a5c 335 start = millis();
shennongmin 10:9d4ec0359a5c 336 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 337 if(m_uart.find("OK")==true)
shennongmin 10:9d4ec0359a5c 338 {
shennongmin 10:9d4ec0359a5c 339 return true;
shennongmin 10:9d4ec0359a5c 340
shennongmin 10:9d4ec0359a5c 341 }
shennongmin 10:9d4ec0359a5c 342 }
shennongmin 10:9d4ec0359a5c 343 return false;
shennongmin 10:9d4ec0359a5c 344
shennongmin 10:9d4ec0359a5c 345 }
shennongmin 10:9d4ec0359a5c 346
shennongmin 10:9d4ec0359a5c 347 String ESP8266::showSAP()
shennongmin 10:9d4ec0359a5c 348 {
shennongmin 29:75185b05d6a4 349 m_uart.println("AT+CWSAP?");
shennongmin 10:9d4ec0359a5c 350 String data;
shennongmin 10:9d4ec0359a5c 351 unsigned long start;
shennongmin 10:9d4ec0359a5c 352 start = millis();
shennongmin 10:9d4ec0359a5c 353 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 354 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 355 {
shennongmin 29:75185b05d6a4 356 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 357 data=data+a;
shennongmin 10:9d4ec0359a5c 358 }
shennongmin 10:9d4ec0359a5c 359 if (data.indexOf("OK")!=-1 || data.indexOf("ERROR")!=-1 )
shennongmin 10:9d4ec0359a5c 360 {
shennongmin 10:9d4ec0359a5c 361 break;
shennongmin 10:9d4ec0359a5c 362 }
shennongmin 10:9d4ec0359a5c 363 }
shennongmin 10:9d4ec0359a5c 364 char head[4] = {0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 365 char tail[7] = {0x0D,0x0A,0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 366 data.replace("AT+CWSAP?","");
shennongmin 10:9d4ec0359a5c 367 data.replace("+CWSAP","mySAP");
shennongmin 10:9d4ec0359a5c 368 data.replace("OK","");
shennongmin 10:9d4ec0359a5c 369 data.replace(tail,"");
shennongmin 10:9d4ec0359a5c 370 data.replace(head,"");
shennongmin 10:9d4ec0359a5c 371
shennongmin 10:9d4ec0359a5c 372 return data;
shennongmin 10:9d4ec0359a5c 373 }
shennongmin 10:9d4ec0359a5c 374
shennongmin 35:90be2bc2a492 375 bool ESP8266::confSAP(String ssid , String pwd , int chl , int ecn)
shennongmin 10:9d4ec0359a5c 376 {
shennongmin 29:75185b05d6a4 377 m_uart.print("AT+CWSAP=");
shennongmin 29:75185b05d6a4 378 m_uart.print("\""); //"ssid"
shennongmin 29:75185b05d6a4 379 m_uart.print(ssid);
shennongmin 29:75185b05d6a4 380 m_uart.print("\"");
shennongmin 10:9d4ec0359a5c 381
shennongmin 29:75185b05d6a4 382 m_uart.print(",");
shennongmin 10:9d4ec0359a5c 383
shennongmin 29:75185b05d6a4 384 m_uart.print("\""); //"pwd"
shennongmin 29:75185b05d6a4 385 m_uart.print(pwd);
shennongmin 29:75185b05d6a4 386 m_uart.print("\"");
shennongmin 10:9d4ec0359a5c 387
shennongmin 29:75185b05d6a4 388 m_uart.print(",");
shennongmin 29:75185b05d6a4 389 m_uart.print(String(chl));
shennongmin 10:9d4ec0359a5c 390
shennongmin 29:75185b05d6a4 391 m_uart.print(",");
shennongmin 29:75185b05d6a4 392 m_uart.println(String(ecn));
shennongmin 10:9d4ec0359a5c 393 unsigned long start;
shennongmin 10:9d4ec0359a5c 394 start = millis();
shennongmin 10:9d4ec0359a5c 395 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 396 if(m_uart.find("OK")==true )
shennongmin 10:9d4ec0359a5c 397 {
shennongmin 10:9d4ec0359a5c 398 return true;
shennongmin 10:9d4ec0359a5c 399 }
shennongmin 10:9d4ec0359a5c 400 }
shennongmin 10:9d4ec0359a5c 401
shennongmin 10:9d4ec0359a5c 402 return false;
shennongmin 10:9d4ec0359a5c 403
shennongmin 10:9d4ec0359a5c 404 }
shennongmin 10:9d4ec0359a5c 405
shennongmin 10:9d4ec0359a5c 406
shennongmin 10:9d4ec0359a5c 407 String ESP8266::showStatus(void)
shennongmin 10:9d4ec0359a5c 408 {
shennongmin 29:75185b05d6a4 409 m_uart.println("AT+CIPSTATUS");
shennongmin 10:9d4ec0359a5c 410 String data;
shennongmin 10:9d4ec0359a5c 411 unsigned long start;
shennongmin 10:9d4ec0359a5c 412 start = millis();
shennongmin 10:9d4ec0359a5c 413 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 414 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 415 {
shennongmin 29:75185b05d6a4 416 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 417 data=data+a;
shennongmin 10:9d4ec0359a5c 418 }
shennongmin 10:9d4ec0359a5c 419 if (data.indexOf("OK")!=-1)
shennongmin 10:9d4ec0359a5c 420 {
shennongmin 10:9d4ec0359a5c 421 break;
shennongmin 10:9d4ec0359a5c 422 }
shennongmin 10:9d4ec0359a5c 423 }
shennongmin 10:9d4ec0359a5c 424
shennongmin 10:9d4ec0359a5c 425 char head[4] = {0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 426 char tail[7] = {0x0D,0x0A,0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 427 data.replace("AT+CIPSTATUS","");
shennongmin 10:9d4ec0359a5c 428 data.replace("OK","");
shennongmin 10:9d4ec0359a5c 429 data.replace(tail,"");
shennongmin 10:9d4ec0359a5c 430 data.replace(head,"");
shennongmin 10:9d4ec0359a5c 431
shennongmin 10:9d4ec0359a5c 432 return data;
shennongmin 10:9d4ec0359a5c 433 }
shennongmin 10:9d4ec0359a5c 434
shennongmin 10:9d4ec0359a5c 435 String ESP8266::showMux(void)
shennongmin 10:9d4ec0359a5c 436 {
shennongmin 10:9d4ec0359a5c 437 String data;
shennongmin 29:75185b05d6a4 438 m_uart.println("AT+CIPMUX?");
shennongmin 10:9d4ec0359a5c 439
shennongmin 10:9d4ec0359a5c 440 unsigned long start;
shennongmin 10:9d4ec0359a5c 441 start = millis();
shennongmin 10:9d4ec0359a5c 442 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 443 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 444 {
shennongmin 29:75185b05d6a4 445 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 446 data=data+a;
shennongmin 10:9d4ec0359a5c 447 }
shennongmin 10:9d4ec0359a5c 448 if (data.indexOf("OK")!=-1)
shennongmin 10:9d4ec0359a5c 449 {
shennongmin 10:9d4ec0359a5c 450 break;
shennongmin 10:9d4ec0359a5c 451 }
shennongmin 10:9d4ec0359a5c 452 }
shennongmin 10:9d4ec0359a5c 453 char head[4] = {0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 454 char tail[7] = {0x0D,0x0A,0x0D,0x0A};
shennongmin 10:9d4ec0359a5c 455 data.replace("AT+CIPMUX?","");
shennongmin 10:9d4ec0359a5c 456 data.replace("+CIPMUX","showMux");
shennongmin 10:9d4ec0359a5c 457 data.replace("OK","");
shennongmin 10:9d4ec0359a5c 458 data.replace(tail,"");
shennongmin 10:9d4ec0359a5c 459 data.replace(head,"");
shennongmin 10:9d4ec0359a5c 460
shennongmin 10:9d4ec0359a5c 461 return data;
shennongmin 10:9d4ec0359a5c 462 }
shennongmin 10:9d4ec0359a5c 463
shennongmin 35:90be2bc2a492 464 bool ESP8266::confMux(ESP8266Mux mux)
shennongmin 10:9d4ec0359a5c 465 {
shennongmin 29:75185b05d6a4 466 m_uart.print("AT+CIPMUX=");
shennongmin 29:75185b05d6a4 467 m_uart.println(mux);
shennongmin 10:9d4ec0359a5c 468 unsigned long start;
shennongmin 10:9d4ec0359a5c 469 start = millis();
shennongmin 10:9d4ec0359a5c 470 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 471 if(m_uart.find("OK")==true )
shennongmin 10:9d4ec0359a5c 472 {
shennongmin 10:9d4ec0359a5c 473 return true;
shennongmin 10:9d4ec0359a5c 474 }
shennongmin 10:9d4ec0359a5c 475 }
shennongmin 10:9d4ec0359a5c 476
shennongmin 10:9d4ec0359a5c 477 return false;
shennongmin 10:9d4ec0359a5c 478 }
shennongmin 10:9d4ec0359a5c 479
shennongmin 35:90be2bc2a492 480 bool ESP8266::newMux(ESP8266CommType type, String addr, int port)
shennongmin 10:9d4ec0359a5c 481
shennongmin 10:9d4ec0359a5c 482 {
shennongmin 10:9d4ec0359a5c 483 String data;
shennongmin 29:75185b05d6a4 484 m_uart.flush();
shennongmin 29:75185b05d6a4 485 m_uart.print("AT+CIPSTART=");
shennongmin 28:c25aff31dcc5 486 if(ESP8266_COMM_TCP == type) {
shennongmin 29:75185b05d6a4 487 m_uart.print("\"TCP\"");
shennongmin 28:c25aff31dcc5 488 } else if (ESP8266_COMM_UDP == type) {
shennongmin 29:75185b05d6a4 489 m_uart.print("\"UDP\"");
shennongmin 10:9d4ec0359a5c 490 }
shennongmin 29:75185b05d6a4 491 m_uart.print(",");
shennongmin 29:75185b05d6a4 492 m_uart.print("\"");
shennongmin 29:75185b05d6a4 493 m_uart.print(addr);
shennongmin 29:75185b05d6a4 494 m_uart.print("\"");
shennongmin 29:75185b05d6a4 495 m_uart.print(",");
shennongmin 29:75185b05d6a4 496 m_uart.println(String(port));
shennongmin 10:9d4ec0359a5c 497 unsigned long start;
shennongmin 10:9d4ec0359a5c 498 start = millis();
shennongmin 10:9d4ec0359a5c 499 while (millis()-start<10000) {
shennongmin 29:75185b05d6a4 500 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 501 {
shennongmin 29:75185b05d6a4 502 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 503 data=data+a;
shennongmin 10:9d4ec0359a5c 504 }
shennongmin 10:9d4ec0359a5c 505 if (data.indexOf("OK")!=-1 || data.indexOf("ALREAY CONNECT")!=-1 || data.indexOf("ERROR")!=-1)
shennongmin 10:9d4ec0359a5c 506 {
shennongmin 10:9d4ec0359a5c 507 return true;
shennongmin 10:9d4ec0359a5c 508 }
shennongmin 10:9d4ec0359a5c 509 }
shennongmin 10:9d4ec0359a5c 510 return false;
shennongmin 10:9d4ec0359a5c 511 }
shennongmin 10:9d4ec0359a5c 512
shennongmin 35:90be2bc2a492 513 bool ESP8266::newMux( int id, ESP8266CommType type, String addr, int port)
shennongmin 10:9d4ec0359a5c 514 {
shennongmin 29:75185b05d6a4 515 m_uart.print("AT+CIPSTART=");
shennongmin 29:75185b05d6a4 516 m_uart.print("\"");
shennongmin 29:75185b05d6a4 517 m_uart.print(String(id));
shennongmin 29:75185b05d6a4 518 m_uart.print("\"");
shennongmin 28:c25aff31dcc5 519 if(ESP8266_COMM_TCP == type) {
shennongmin 29:75185b05d6a4 520 m_uart.print("\"TCP\"");
shennongmin 28:c25aff31dcc5 521 } else if (ESP8266_COMM_UDP == type) {
shennongmin 29:75185b05d6a4 522 m_uart.print("\"UDP\"");
shennongmin 10:9d4ec0359a5c 523 }
shennongmin 29:75185b05d6a4 524 m_uart.print(",");
shennongmin 29:75185b05d6a4 525 m_uart.print("\"");
shennongmin 29:75185b05d6a4 526 m_uart.print(addr);
shennongmin 29:75185b05d6a4 527 m_uart.print("\"");
shennongmin 29:75185b05d6a4 528 m_uart.print(",");
shennongmin 29:75185b05d6a4 529 m_uart.println(String(port));
shennongmin 10:9d4ec0359a5c 530 String data;
shennongmin 10:9d4ec0359a5c 531 unsigned long start;
shennongmin 10:9d4ec0359a5c 532 start = millis();
shennongmin 10:9d4ec0359a5c 533 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 534 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 535 {
shennongmin 29:75185b05d6a4 536 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 537 data=data+a;
shennongmin 10:9d4ec0359a5c 538 }
shennongmin 10:9d4ec0359a5c 539 if (data.indexOf("OK")!=-1 || data.indexOf("ALREAY CONNECT")!=-1 )
shennongmin 10:9d4ec0359a5c 540 {
shennongmin 10:9d4ec0359a5c 541 return true;
shennongmin 10:9d4ec0359a5c 542 }
shennongmin 10:9d4ec0359a5c 543 }
shennongmin 10:9d4ec0359a5c 544 return false;
shennongmin 10:9d4ec0359a5c 545
shennongmin 10:9d4ec0359a5c 546
shennongmin 10:9d4ec0359a5c 547 }
shennongmin 10:9d4ec0359a5c 548
shennongmin 23:4cec7b9e3715 549 bool ESP8266::send(String str)
shennongmin 10:9d4ec0359a5c 550 {
shennongmin 29:75185b05d6a4 551 m_uart.flush();
shennongmin 29:75185b05d6a4 552 m_uart.print("AT+CIPSEND=");
shennongmin 29:75185b05d6a4 553 m_uart.println(str.length());
shennongmin 10:9d4ec0359a5c 554 unsigned long start;
shennongmin 10:9d4ec0359a5c 555 start = millis();
shennongmin 10:9d4ec0359a5c 556 bool found = false;
shennongmin 10:9d4ec0359a5c 557 while (millis()-start<5000) {
shennongmin 29:75185b05d6a4 558 if(m_uart.find(">")==true )
shennongmin 10:9d4ec0359a5c 559 {
shennongmin 10:9d4ec0359a5c 560 found = true;
shennongmin 10:9d4ec0359a5c 561 break;
shennongmin 10:9d4ec0359a5c 562 }
shennongmin 10:9d4ec0359a5c 563 }
shennongmin 10:9d4ec0359a5c 564 if(found)
shennongmin 29:75185b05d6a4 565 m_uart.print(str);
shennongmin 10:9d4ec0359a5c 566 else
shennongmin 10:9d4ec0359a5c 567 {
shennongmin 10:9d4ec0359a5c 568 closeMux();
shennongmin 10:9d4ec0359a5c 569 return false;
shennongmin 10:9d4ec0359a5c 570 }
shennongmin 10:9d4ec0359a5c 571
shennongmin 10:9d4ec0359a5c 572
shennongmin 10:9d4ec0359a5c 573 String data;
shennongmin 10:9d4ec0359a5c 574 start = millis();
shennongmin 10:9d4ec0359a5c 575 while (millis()-start<5000) {
shennongmin 29:75185b05d6a4 576 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 577 {
shennongmin 29:75185b05d6a4 578 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 579 data=data+a;
shennongmin 10:9d4ec0359a5c 580 }
shennongmin 10:9d4ec0359a5c 581 if (data.indexOf("SEND OK")!=-1)
shennongmin 10:9d4ec0359a5c 582 {
shennongmin 10:9d4ec0359a5c 583 return true;
shennongmin 10:9d4ec0359a5c 584 }
shennongmin 10:9d4ec0359a5c 585 }
shennongmin 10:9d4ec0359a5c 586 return false;
shennongmin 10:9d4ec0359a5c 587 }
shennongmin 10:9d4ec0359a5c 588
shennongmin 35:90be2bc2a492 589 bool ESP8266::send(int id, String str)
shennongmin 10:9d4ec0359a5c 590 {
shennongmin 29:75185b05d6a4 591 m_uart.print("AT+CIPSEND=");
shennongmin 10:9d4ec0359a5c 592
shennongmin 29:75185b05d6a4 593 m_uart.print(String(id));
shennongmin 29:75185b05d6a4 594 m_uart.print(",");
shennongmin 29:75185b05d6a4 595 m_uart.println(str.length());
shennongmin 10:9d4ec0359a5c 596 unsigned long start;
shennongmin 10:9d4ec0359a5c 597 start = millis();
shennongmin 10:9d4ec0359a5c 598 bool found = false;
shennongmin 10:9d4ec0359a5c 599 while (millis()-start<5000) {
shennongmin 29:75185b05d6a4 600 if(m_uart.find(">")==true )
shennongmin 10:9d4ec0359a5c 601 {
shennongmin 10:9d4ec0359a5c 602 found = true;
shennongmin 10:9d4ec0359a5c 603 break;
shennongmin 10:9d4ec0359a5c 604 }
shennongmin 10:9d4ec0359a5c 605 }
shennongmin 10:9d4ec0359a5c 606 if(found)
shennongmin 29:75185b05d6a4 607 m_uart.print(str);
shennongmin 10:9d4ec0359a5c 608 else
shennongmin 10:9d4ec0359a5c 609 {
shennongmin 10:9d4ec0359a5c 610 closeMux(id);
shennongmin 10:9d4ec0359a5c 611 return false;
shennongmin 10:9d4ec0359a5c 612 }
shennongmin 10:9d4ec0359a5c 613
shennongmin 10:9d4ec0359a5c 614
shennongmin 10:9d4ec0359a5c 615 String data;
shennongmin 10:9d4ec0359a5c 616 start = millis();
shennongmin 10:9d4ec0359a5c 617 while (millis()-start<5000) {
shennongmin 29:75185b05d6a4 618 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 619 {
shennongmin 29:75185b05d6a4 620 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 621 data=data+a;
shennongmin 10:9d4ec0359a5c 622 }
shennongmin 10:9d4ec0359a5c 623 if (data.indexOf("SEND OK")!=-1)
shennongmin 10:9d4ec0359a5c 624 {
shennongmin 10:9d4ec0359a5c 625 return true;
shennongmin 10:9d4ec0359a5c 626 }
shennongmin 10:9d4ec0359a5c 627 }
shennongmin 10:9d4ec0359a5c 628 return false;
shennongmin 10:9d4ec0359a5c 629 }
shennongmin 10:9d4ec0359a5c 630
shennongmin 10:9d4ec0359a5c 631
shennongmin 10:9d4ec0359a5c 632 void ESP8266::closeMux(void)
shennongmin 10:9d4ec0359a5c 633 {
shennongmin 29:75185b05d6a4 634 m_uart.println("AT+CIPCLOSE");
shennongmin 10:9d4ec0359a5c 635
shennongmin 10:9d4ec0359a5c 636 String data;
shennongmin 10:9d4ec0359a5c 637 unsigned long start;
shennongmin 10:9d4ec0359a5c 638 start = millis();
shennongmin 10:9d4ec0359a5c 639 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 640 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 641 {
shennongmin 29:75185b05d6a4 642 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 643 data=data+a;
shennongmin 10:9d4ec0359a5c 644 }
shennongmin 10:9d4ec0359a5c 645 if (data.indexOf("Linked")!=-1 || data.indexOf("ERROR")!=-1 || data.indexOf("we must restart")!=-1)
shennongmin 10:9d4ec0359a5c 646 {
shennongmin 10:9d4ec0359a5c 647 break;
shennongmin 10:9d4ec0359a5c 648 }
shennongmin 10:9d4ec0359a5c 649 }
shennongmin 10:9d4ec0359a5c 650 }
shennongmin 10:9d4ec0359a5c 651
shennongmin 35:90be2bc2a492 652 void ESP8266::closeMux(int id)
shennongmin 10:9d4ec0359a5c 653 {
shennongmin 29:75185b05d6a4 654 m_uart.print("AT+CIPCLOSE=");
shennongmin 29:75185b05d6a4 655 m_uart.println(String(id));
shennongmin 10:9d4ec0359a5c 656 String data;
shennongmin 10:9d4ec0359a5c 657 unsigned long start;
shennongmin 10:9d4ec0359a5c 658 start = millis();
shennongmin 10:9d4ec0359a5c 659 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 660 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 661 {
shennongmin 29:75185b05d6a4 662 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 663 data=data+a;
shennongmin 10:9d4ec0359a5c 664 }
shennongmin 10:9d4ec0359a5c 665 if (data.indexOf("OK")!=-1 || data.indexOf("Link is not")!=-1 || data.indexOf("Cant close")!=-1)
shennongmin 10:9d4ec0359a5c 666 {
shennongmin 10:9d4ec0359a5c 667 break;
shennongmin 10:9d4ec0359a5c 668 }
shennongmin 10:9d4ec0359a5c 669 }
shennongmin 10:9d4ec0359a5c 670
shennongmin 10:9d4ec0359a5c 671 }
shennongmin 10:9d4ec0359a5c 672
shennongmin 10:9d4ec0359a5c 673 String ESP8266::showIP(void)
shennongmin 10:9d4ec0359a5c 674 {
shennongmin 27:dc7ad070c5b1 675 bool ret = false;
shennongmin 29:75185b05d6a4 676 m_uart.flush();
shennongmin 29:75185b05d6a4 677 m_uart.println("AT+CIFSR");
shennongmin 27:dc7ad070c5b1 678
shennongmin 10:9d4ec0359a5c 679 String data;
shennongmin 10:9d4ec0359a5c 680 unsigned long start;
shennongmin 10:9d4ec0359a5c 681 start = millis();
shennongmin 27:dc7ad070c5b1 682 while (millis()-start < 3000) {
shennongmin 29:75185b05d6a4 683 while(m_uart.available() > 0) {
shennongmin 29:75185b05d6a4 684 char a = m_uart.readChr();
shennongmin 27:dc7ad070c5b1 685 data += a;
shennongmin 27:dc7ad070c5b1 686 }
shennongmin 27:dc7ad070c5b1 687 if (data.indexOf("OK") != -1) {
shennongmin 27:dc7ad070c5b1 688 ret = true;
shennongmin 27:dc7ad070c5b1 689 break;
shennongmin 27:dc7ad070c5b1 690 } else if (data.indexOf("ERROR") != -1) {
shennongmin 27:dc7ad070c5b1 691 ret = false;
shennongmin 27:dc7ad070c5b1 692 break;
shennongmin 27:dc7ad070c5b1 693 }
shennongmin 10:9d4ec0359a5c 694 }
shennongmin 33:f721a46ef2f2 695 //printf("data = [%s]\r\n", data.c_str());
shennongmin 27:dc7ad070c5b1 696 if (ret) {
shennongmin 33:f721a46ef2f2 697 int index1 = data.indexOf("AT+CIFSR\r\r\n");
shennongmin 27:dc7ad070c5b1 698 int index2 = data.indexOf("\r\n\r\nOK");
shennongmin 27:dc7ad070c5b1 699 if (index1 != -1 && index2 != -1) {
shennongmin 33:f721a46ef2f2 700 return data.substring(index1 + strlen("AT+CIFSR\r\r\n"), index2);
shennongmin 27:dc7ad070c5b1 701 } else {
shennongmin 27:dc7ad070c5b1 702 return "not found";
shennongmin 27:dc7ad070c5b1 703 }
shennongmin 27:dc7ad070c5b1 704 } else {
shennongmin 27:dc7ad070c5b1 705 return "null";
shennongmin 27:dc7ad070c5b1 706 }
shennongmin 10:9d4ec0359a5c 707 }
shennongmin 10:9d4ec0359a5c 708
shennongmin 35:90be2bc2a492 709 bool ESP8266::confServer(int mode, int port)
shennongmin 10:9d4ec0359a5c 710 {
shennongmin 29:75185b05d6a4 711 m_uart.print("AT+CIPSERVER=");
shennongmin 29:75185b05d6a4 712 m_uart.print(String(mode));
shennongmin 29:75185b05d6a4 713 m_uart.print(",");
shennongmin 29:75185b05d6a4 714 m_uart.println(String(port));
shennongmin 10:9d4ec0359a5c 715
shennongmin 10:9d4ec0359a5c 716 String data;
shennongmin 10:9d4ec0359a5c 717 unsigned long start;
shennongmin 10:9d4ec0359a5c 718 start = millis();
shennongmin 10:9d4ec0359a5c 719 bool found = false;
shennongmin 10:9d4ec0359a5c 720 while (millis()-start<3000) {
shennongmin 29:75185b05d6a4 721 if(m_uart.available()>0)
shennongmin 10:9d4ec0359a5c 722 {
shennongmin 29:75185b05d6a4 723 char a =m_uart.readChr();
shennongmin 10:9d4ec0359a5c 724 data=data+a;
shennongmin 10:9d4ec0359a5c 725 }
shennongmin 10:9d4ec0359a5c 726 if (data.indexOf("OK")!=-1 || data.indexOf("no charge")!=-1)
shennongmin 10:9d4ec0359a5c 727 {
shennongmin 10:9d4ec0359a5c 728 found = true;
shennongmin 10:9d4ec0359a5c 729 break;
shennongmin 10:9d4ec0359a5c 730 }
shennongmin 10:9d4ec0359a5c 731 }
shennongmin 29:75185b05d6a4 732 m_uart.flush();
shennongmin 10:9d4ec0359a5c 733 return found;
shennongmin 10:9d4ec0359a5c 734 }