Provide an easy-to-use way to manipulate ESP8266.

Dependencies:   ArduinoAPI

Dependents:   WeeESP8266_TCPClientMultiple WeeESP8266_TCPClientSingle WeeESP8266_TCPServer WeeESP8266_UDPClientMultiple ... more

Committer:
itead
Date:
Fri Feb 06 12:25:40 2015 +0000
Revision:
6:18eb2d9fb2ac
Parent:
5:5fa655d7212c
Child:
7:d54995c9e1d4
okay

Who changed what in which revision?

UserRevisionLine numberNew contents of line
itead 5:5fa655d7212c 1 /**
itead 5:5fa655d7212c 2 * @file ESP8266.cpp
itead 5:5fa655d7212c 3 * @brief The implementation of class ESP8266.
itead 5:5fa655d7212c 4 * @author Wu Pengfei<pengfei.wu@itead.cc>
itead 5:5fa655d7212c 5 * @date 2015.02
itead 5:5fa655d7212c 6 *
itead 5:5fa655d7212c 7 * @par Copyright:
itead 5:5fa655d7212c 8 * Copyright (c) 2015 ITEAD Intelligent Systems Co., Ltd. \n\n
itead 5:5fa655d7212c 9 * This program is free software; you can redistribute it and/or
itead 5:5fa655d7212c 10 * modify it under the terms of the GNU General Public License as
itead 5:5fa655d7212c 11 * published by the Free Software Foundation; either version 2 of
itead 5:5fa655d7212c 12 * the License, or (at your option) any later version. \n\n
itead 5:5fa655d7212c 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
itead 5:5fa655d7212c 14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
itead 5:5fa655d7212c 15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
itead 5:5fa655d7212c 16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
itead 5:5fa655d7212c 17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
itead 5:5fa655d7212c 18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
itead 5:5fa655d7212c 19 * THE SOFTWARE.
itead 5:5fa655d7212c 20 */
itead 2:fb209f93f3f1 21 #include "ESP8266.h"
itead 5:5fa655d7212c 22 #include "log.h"
itead 0:d3b93948c925 23
itead 5:5fa655d7212c 24 ESP8266::ESP8266(ArduinoSerial &uart): m_puart(&uart)
itead 5:5fa655d7212c 25 {
itead 5:5fa655d7212c 26 m_puart->begin(9600);
itead 5:5fa655d7212c 27 m_puart->flush();
itead 5:5fa655d7212c 28 m_puart->setTimeout(1000);
itead 5:5fa655d7212c 29 logDebug("Create Instance ok");
itead 5:5fa655d7212c 30 }
itead 5:5fa655d7212c 31
itead 5:5fa655d7212c 32
itead 5:5fa655d7212c 33 bool ESP8266::kick(void)
itead 5:5fa655d7212c 34 {
itead 5:5fa655d7212c 35 return eAT();
itead 5:5fa655d7212c 36 }
itead 5:5fa655d7212c 37
itead 5:5fa655d7212c 38 bool ESP8266::restart(void)
itead 5:5fa655d7212c 39 {
itead 5:5fa655d7212c 40 unsigned long start;
itead 5:5fa655d7212c 41 if (eATRST()) {
itead 5:5fa655d7212c 42 delay(2000);
itead 5:5fa655d7212c 43 start = millis();
itead 5:5fa655d7212c 44 while (millis() - start < 3000) {
itead 5:5fa655d7212c 45 if (eAT()) {
itead 5:5fa655d7212c 46 delay(500);
itead 5:5fa655d7212c 47 return true;
itead 5:5fa655d7212c 48 }
itead 5:5fa655d7212c 49 delay(100);
itead 5:5fa655d7212c 50 }
itead 5:5fa655d7212c 51 }
itead 5:5fa655d7212c 52 return false;
itead 5:5fa655d7212c 53 }
itead 5:5fa655d7212c 54
itead 5:5fa655d7212c 55 String ESP8266::getVersion(void)
itead 5:5fa655d7212c 56 {
itead 6:18eb2d9fb2ac 57 String version;
itead 6:18eb2d9fb2ac 58 eATGMR(version);
itead 6:18eb2d9fb2ac 59 return version;
itead 5:5fa655d7212c 60 }
itead 5:5fa655d7212c 61
itead 5:5fa655d7212c 62 bool ESP8266::setOprToStation(void)
itead 5:5fa655d7212c 63 {
itead 5:5fa655d7212c 64 if (sATCWMODE(1) && restart()) {
itead 5:5fa655d7212c 65 return true;
itead 5:5fa655d7212c 66 }
itead 5:5fa655d7212c 67 return false;
itead 5:5fa655d7212c 68 }
itead 5:5fa655d7212c 69
itead 5:5fa655d7212c 70 bool ESP8266::setOprToSoftAP(void)
itead 5:5fa655d7212c 71 {
itead 5:5fa655d7212c 72 if (sATCWMODE(2) && restart()) {
itead 5:5fa655d7212c 73 return true;
itead 5:5fa655d7212c 74 }
itead 5:5fa655d7212c 75 return false;
itead 5:5fa655d7212c 76 }
itead 5:5fa655d7212c 77
itead 5:5fa655d7212c 78 bool ESP8266::setOprToStationSoftAP(void)
itead 5:5fa655d7212c 79 {
itead 5:5fa655d7212c 80 if (sATCWMODE(3) && restart()) {
itead 5:5fa655d7212c 81 return true;
itead 5:5fa655d7212c 82 }
itead 5:5fa655d7212c 83 return false;
itead 5:5fa655d7212c 84 }
itead 5:5fa655d7212c 85
itead 5:5fa655d7212c 86 String ESP8266::getAPList(void)
itead 5:5fa655d7212c 87 {
itead 5:5fa655d7212c 88 return "";
itead 5:5fa655d7212c 89 }
itead 5:5fa655d7212c 90
itead 5:5fa655d7212c 91 bool ESP8266::joinAP(String ssid, String pwd)
itead 5:5fa655d7212c 92 {
itead 5:5fa655d7212c 93 return false;
itead 5:5fa655d7212c 94 }
itead 5:5fa655d7212c 95
itead 5:5fa655d7212c 96 bool ESP8266::leaveAP(void)
itead 5:5fa655d7212c 97 {
itead 5:5fa655d7212c 98 return false;
itead 5:5fa655d7212c 99 }
itead 5:5fa655d7212c 100
itead 5:5fa655d7212c 101 bool ESP8266::setSoftAPParam(String ssid, String pwd, uint8_t chl, uint8_t ecn)
itead 5:5fa655d7212c 102 {
itead 5:5fa655d7212c 103 return false;
itead 5:5fa655d7212c 104 }
itead 5:5fa655d7212c 105
itead 5:5fa655d7212c 106 String ESP8266::getJoinedDeviceIP(void)
itead 5:5fa655d7212c 107 {
itead 5:5fa655d7212c 108 return "";
itead 5:5fa655d7212c 109 }
itead 5:5fa655d7212c 110
itead 5:5fa655d7212c 111 String ESP8266::getIPStatus(void)
itead 5:5fa655d7212c 112 {
itead 5:5fa655d7212c 113 return "";
itead 5:5fa655d7212c 114 }
itead 5:5fa655d7212c 115
itead 5:5fa655d7212c 116 String ESP8266::getLocalIP(void)
itead 5:5fa655d7212c 117 {
itead 5:5fa655d7212c 118 return "";
itead 5:5fa655d7212c 119 }
itead 5:5fa655d7212c 120
itead 5:5fa655d7212c 121 bool ESP8266::enableMUX(void)
itead 5:5fa655d7212c 122 {
itead 5:5fa655d7212c 123 return false;
itead 5:5fa655d7212c 124 }
itead 5:5fa655d7212c 125
itead 5:5fa655d7212c 126 bool ESP8266::disableMUX(void)
itead 5:5fa655d7212c 127 {
itead 5:5fa655d7212c 128 return false;
itead 5:5fa655d7212c 129 }
itead 5:5fa655d7212c 130
itead 5:5fa655d7212c 131 bool ESP8266::createTCP(String addr, uint32_t port)
itead 5:5fa655d7212c 132 {
itead 5:5fa655d7212c 133 return false;
itead 5:5fa655d7212c 134 }
itead 5:5fa655d7212c 135
itead 5:5fa655d7212c 136 bool ESP8266::releaseTCP(void)
itead 5:5fa655d7212c 137 {
itead 5:5fa655d7212c 138 return false;
itead 5:5fa655d7212c 139 }
itead 5:5fa655d7212c 140
itead 5:5fa655d7212c 141 bool ESP8266::registerUDP(String addr, uint32_t port)
itead 5:5fa655d7212c 142 {
itead 5:5fa655d7212c 143 return false;
itead 5:5fa655d7212c 144 }
itead 5:5fa655d7212c 145
itead 5:5fa655d7212c 146 bool ESP8266::unregisterUDP(void)
itead 5:5fa655d7212c 147 {
itead 5:5fa655d7212c 148 return false;
itead 5:5fa655d7212c 149 }
itead 5:5fa655d7212c 150
itead 5:5fa655d7212c 151 bool ESP8266::createTCP(uint8_t mux_id, String addr, uint32_t port)
itead 5:5fa655d7212c 152 {
itead 5:5fa655d7212c 153 return false;
itead 5:5fa655d7212c 154 }
itead 5:5fa655d7212c 155
itead 5:5fa655d7212c 156 bool ESP8266::releaseTCP(uint8_t mux_id)
itead 5:5fa655d7212c 157 {
itead 5:5fa655d7212c 158 return false;
itead 5:5fa655d7212c 159 }
itead 5:5fa655d7212c 160
itead 5:5fa655d7212c 161 bool ESP8266::registerUDP(uint8_t mux_id, String addr, uint32_t port)
itead 5:5fa655d7212c 162 {
itead 5:5fa655d7212c 163 return false;
itead 5:5fa655d7212c 164 }
itead 5:5fa655d7212c 165
itead 5:5fa655d7212c 166 bool ESP8266::unregisterUDP(uint8_t mux_id)
itead 5:5fa655d7212c 167 {
itead 5:5fa655d7212c 168 return false;
itead 5:5fa655d7212c 169 }
itead 5:5fa655d7212c 170
itead 5:5fa655d7212c 171 bool ESP8266::setTCPServerTimeout(uint32_t timeout)
itead 5:5fa655d7212c 172 {
itead 5:5fa655d7212c 173 return false;
itead 5:5fa655d7212c 174 }
itead 5:5fa655d7212c 175
itead 5:5fa655d7212c 176 bool ESP8266::startTCPServer(uint32_t port)
itead 5:5fa655d7212c 177 {
itead 5:5fa655d7212c 178 return false;
itead 5:5fa655d7212c 179 }
itead 5:5fa655d7212c 180
itead 5:5fa655d7212c 181 bool ESP8266::stopTCPServer(void)
itead 5:5fa655d7212c 182 {
itead 5:5fa655d7212c 183 return false;
itead 5:5fa655d7212c 184 }
itead 5:5fa655d7212c 185
itead 5:5fa655d7212c 186 bool ESP8266::send(const uint8_t *buffer, uint32_t len)
itead 5:5fa655d7212c 187 {
itead 5:5fa655d7212c 188 return false;
itead 5:5fa655d7212c 189 }
itead 5:5fa655d7212c 190
itead 5:5fa655d7212c 191 bool ESP8266::send(uint8_t mux_id, const char *buffer, uint32_t len)
itead 5:5fa655d7212c 192 {
itead 5:5fa655d7212c 193 return false;
itead 5:5fa655d7212c 194 }
itead 5:5fa655d7212c 195
itead 5:5fa655d7212c 196 uint32_t ESP8266::recv(uint8_t *buffer, uint32_t len, uint32_t timeout)
itead 5:5fa655d7212c 197 {
itead 5:5fa655d7212c 198 return false;
itead 5:5fa655d7212c 199 }
itead 5:5fa655d7212c 200
itead 5:5fa655d7212c 201 uint32_t ESP8266::recv(uint8_t mux_id, uint8_t *buffer, uint32_t len, uint32_t timeout)
itead 5:5fa655d7212c 202 {
itead 5:5fa655d7212c 203 return false;
itead 5:5fa655d7212c 204 }
itead 5:5fa655d7212c 205
itead 5:5fa655d7212c 206 uint32_t ESP8266::recv(uint8_t *coming_mux_id, uint8_t *buffer, uint32_t len, uint32_t timeout)
itead 5:5fa655d7212c 207 {
itead 5:5fa655d7212c 208 return false;
itead 5:5fa655d7212c 209 }
itead 5:5fa655d7212c 210
itead 5:5fa655d7212c 211
itead 6:18eb2d9fb2ac 212 String ESP8266::recvString(String target, uint32_t timeout)
itead 5:5fa655d7212c 213 {
itead 5:5fa655d7212c 214 String data;
itead 5:5fa655d7212c 215 char a;
itead 5:5fa655d7212c 216 unsigned long start = millis();
itead 5:5fa655d7212c 217 while (millis() - start < timeout) {
itead 5:5fa655d7212c 218 while(m_puart->available() > 0) {
itead 5:5fa655d7212c 219 a = m_puart->readChr();
itead 5:5fa655d7212c 220 data += a;
itead 5:5fa655d7212c 221 }
itead 5:5fa655d7212c 222 if (data.indexOf(target) != -1) {
itead 5:5fa655d7212c 223 break;
itead 5:5fa655d7212c 224 }
itead 5:5fa655d7212c 225 }
itead 5:5fa655d7212c 226 return data;
itead 5:5fa655d7212c 227 }
itead 5:5fa655d7212c 228
itead 6:18eb2d9fb2ac 229 String ESP8266::recvString(String target1, String target2, uint32_t timeout)
itead 5:5fa655d7212c 230 {
itead 5:5fa655d7212c 231 String data;
itead 5:5fa655d7212c 232 char a;
itead 5:5fa655d7212c 233 unsigned long start = millis();
itead 5:5fa655d7212c 234 while (millis() - start < timeout) {
itead 5:5fa655d7212c 235 while(m_puart->available() > 0) {
itead 5:5fa655d7212c 236 a = m_puart->readChr();
itead 5:5fa655d7212c 237 data += a;
itead 5:5fa655d7212c 238 }
itead 5:5fa655d7212c 239 if (data.indexOf(target1) != -1) {
itead 5:5fa655d7212c 240 break;
itead 5:5fa655d7212c 241 } else if (data.indexOf(target2) != -1) {
itead 5:5fa655d7212c 242 break;
itead 5:5fa655d7212c 243 }
itead 5:5fa655d7212c 244 }
itead 5:5fa655d7212c 245 return data;
itead 5:5fa655d7212c 246 }
itead 5:5fa655d7212c 247
itead 6:18eb2d9fb2ac 248 String ESP8266::recvString(String target1, String target2, String target3, uint32_t timeout)
itead 5:5fa655d7212c 249 {
itead 5:5fa655d7212c 250 String data;
itead 5:5fa655d7212c 251 char a;
itead 5:5fa655d7212c 252 unsigned long start = millis();
itead 5:5fa655d7212c 253 while (millis() - start < timeout) {
itead 5:5fa655d7212c 254 while(m_puart->available() > 0) {
itead 5:5fa655d7212c 255 a = m_puart->readChr();
itead 5:5fa655d7212c 256 data += a;
itead 5:5fa655d7212c 257 }
itead 5:5fa655d7212c 258 if (data.indexOf(target1) != -1) {
itead 5:5fa655d7212c 259 break;
itead 5:5fa655d7212c 260 } else if (data.indexOf(target2) != -1) {
itead 5:5fa655d7212c 261 break;
itead 5:5fa655d7212c 262 } else if (data.indexOf(target3) != -1) {
itead 5:5fa655d7212c 263 break;
itead 5:5fa655d7212c 264 }
itead 5:5fa655d7212c 265 }
itead 5:5fa655d7212c 266 return data;
itead 5:5fa655d7212c 267 }
itead 5:5fa655d7212c 268
itead 6:18eb2d9fb2ac 269 bool ESP8266::recvFind(String target, uint32_t timeout)
itead 6:18eb2d9fb2ac 270 {
itead 6:18eb2d9fb2ac 271 String data_tmp;
itead 6:18eb2d9fb2ac 272 data_tmp = recvString(target, timeout);
itead 6:18eb2d9fb2ac 273 if (data_tmp.indexOf(target) != -1) {
itead 6:18eb2d9fb2ac 274 return true;
itead 6:18eb2d9fb2ac 275 }
itead 6:18eb2d9fb2ac 276 return false;
itead 6:18eb2d9fb2ac 277 }
itead 6:18eb2d9fb2ac 278
itead 6:18eb2d9fb2ac 279 bool ESP8266::recvFindAndFilter(String target, String begin, String end, String &data, uint32_t timeout)
itead 6:18eb2d9fb2ac 280 {
itead 6:18eb2d9fb2ac 281 String data_tmp;
itead 6:18eb2d9fb2ac 282 data_tmp = recvString(target, timeout);
itead 6:18eb2d9fb2ac 283 if (data_tmp.indexOf(target) != -1) {
itead 6:18eb2d9fb2ac 284 int32_t index1 = data_tmp.indexOf(begin);
itead 6:18eb2d9fb2ac 285 int32_t index2 = data_tmp.indexOf(end);
itead 6:18eb2d9fb2ac 286 if (index1 != -1 && index2 != -1) {
itead 6:18eb2d9fb2ac 287 index1 += begin.length();
itead 6:18eb2d9fb2ac 288 data = data_tmp.substring(index1, index2);
itead 6:18eb2d9fb2ac 289 return true;
itead 6:18eb2d9fb2ac 290 }
itead 6:18eb2d9fb2ac 291 }
itead 6:18eb2d9fb2ac 292 data = "";
itead 6:18eb2d9fb2ac 293 return false;
itead 6:18eb2d9fb2ac 294 }
itead 5:5fa655d7212c 295
itead 5:5fa655d7212c 296 bool ESP8266::eAT(void)
itead 5:5fa655d7212c 297 {
itead 5:5fa655d7212c 298 m_puart->flush();
itead 5:5fa655d7212c 299 m_puart->println("AT");
itead 6:18eb2d9fb2ac 300 return recvFind("OK");
itead 5:5fa655d7212c 301 }
itead 5:5fa655d7212c 302
itead 5:5fa655d7212c 303 bool ESP8266::eATRST(void)
itead 5:5fa655d7212c 304 {
itead 5:5fa655d7212c 305 m_puart->flush();
itead 5:5fa655d7212c 306 m_puart->println("AT+RST");
itead 6:18eb2d9fb2ac 307 return recvFind("OK");
itead 5:5fa655d7212c 308 }
itead 5:5fa655d7212c 309
itead 6:18eb2d9fb2ac 310 bool ESP8266::eATGMR(String &version)
itead 5:5fa655d7212c 311 {
itead 5:5fa655d7212c 312 m_puart->flush();
itead 5:5fa655d7212c 313 m_puart->println("AT+GMR");
itead 6:18eb2d9fb2ac 314 return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", version);
itead 5:5fa655d7212c 315 }
itead 5:5fa655d7212c 316
itead 5:5fa655d7212c 317
itead 5:5fa655d7212c 318 bool ESP8266::sATCWMODE(uint8_t mode)
itead 5:5fa655d7212c 319 {
itead 5:5fa655d7212c 320 String data;
itead 5:5fa655d7212c 321 m_puart->flush();
itead 5:5fa655d7212c 322 m_puart->print("AT+CWMODE=");
itead 5:5fa655d7212c 323 m_puart->println(mode);
itead 6:18eb2d9fb2ac 324 return recvFind("OK");
itead 6:18eb2d9fb2ac 325 }
itead 6:18eb2d9fb2ac 326
itead 6:18eb2d9fb2ac 327 bool ESP8266::sATCWJAP(String ssid, String pwd)
itead 6:18eb2d9fb2ac 328 {
itead 6:18eb2d9fb2ac 329 String data;
itead 6:18eb2d9fb2ac 330 m_puart->flush();
itead 6:18eb2d9fb2ac 331 m_puart->print("AT+CWJAP=\"");
itead 6:18eb2d9fb2ac 332 m_puart->print(ssid);
itead 6:18eb2d9fb2ac 333 m_puart->print("\",\"");
itead 6:18eb2d9fb2ac 334 m_puart->print(pwd);
itead 6:18eb2d9fb2ac 335 m_puart->println("\"");
itead 6:18eb2d9fb2ac 336
itead 6:18eb2d9fb2ac 337 data = recvString("OK", "FAIL", 10000);
itead 6:18eb2d9fb2ac 338 if (data.indexOf("OK") != -1) {
itead 6:18eb2d9fb2ac 339 return true;
itead 6:18eb2d9fb2ac 340 }
itead 6:18eb2d9fb2ac 341 return false;
itead 6:18eb2d9fb2ac 342 }
itead 6:18eb2d9fb2ac 343
itead 6:18eb2d9fb2ac 344 bool ESP8266::eATCWLAP(String &list)
itead 6:18eb2d9fb2ac 345 {
itead 6:18eb2d9fb2ac 346 String data;
itead 6:18eb2d9fb2ac 347 m_puart->flush();
itead 6:18eb2d9fb2ac 348 m_puart->println("AT+CWLAP");
itead 6:18eb2d9fb2ac 349 return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list, 10000);
itead 6:18eb2d9fb2ac 350 }
itead 6:18eb2d9fb2ac 351
itead 6:18eb2d9fb2ac 352 bool ESP8266::eATCWQAP(void)
itead 6:18eb2d9fb2ac 353 {
itead 6:18eb2d9fb2ac 354 String data;
itead 6:18eb2d9fb2ac 355 m_puart->flush();
itead 6:18eb2d9fb2ac 356 m_puart->println("AT+CWQAP");
itead 6:18eb2d9fb2ac 357 return recvFind("OK");
itead 6:18eb2d9fb2ac 358 }
itead 6:18eb2d9fb2ac 359
itead 6:18eb2d9fb2ac 360 bool ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn)
itead 6:18eb2d9fb2ac 361 {
itead 6:18eb2d9fb2ac 362 String data;
itead 6:18eb2d9fb2ac 363 m_puart->flush();
itead 6:18eb2d9fb2ac 364 m_puart->print("AT+CWSAP=\"");
itead 6:18eb2d9fb2ac 365 m_puart->print(ssid);
itead 6:18eb2d9fb2ac 366 m_puart->print("\",\"");
itead 6:18eb2d9fb2ac 367 m_puart->print(pwd);
itead 6:18eb2d9fb2ac 368 m_puart->print("\",");
itead 6:18eb2d9fb2ac 369 m_puart->print(chl);
itead 6:18eb2d9fb2ac 370 m_puart->print(",");
itead 6:18eb2d9fb2ac 371 m_puart->println(ecn);
itead 6:18eb2d9fb2ac 372
itead 6:18eb2d9fb2ac 373 data = recvString("OK", "ERROR", 5000);
itead 5:5fa655d7212c 374 if (data.indexOf("OK") != -1) {
itead 5:5fa655d7212c 375 return true;
itead 5:5fa655d7212c 376 }
itead 5:5fa655d7212c 377 return false;
itead 5:5fa655d7212c 378 }
itead 5:5fa655d7212c 379
itead 6:18eb2d9fb2ac 380 bool ESP8266::eATCWLIF(String &list)
itead 6:18eb2d9fb2ac 381 {
itead 6:18eb2d9fb2ac 382 String data;
itead 6:18eb2d9fb2ac 383 m_puart->flush();
itead 6:18eb2d9fb2ac 384 m_puart->println("AT+CWLIF");
itead 6:18eb2d9fb2ac 385 return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list);
itead 6:18eb2d9fb2ac 386 }
itead 6:18eb2d9fb2ac 387 bool ESP8266::eATCIPSTATUS(String &list)
itead 6:18eb2d9fb2ac 388 {
itead 6:18eb2d9fb2ac 389 String data;
itead 6:18eb2d9fb2ac 390 m_puart->flush();
itead 6:18eb2d9fb2ac 391 m_puart->println("AT+CIPSTATUS");
itead 6:18eb2d9fb2ac 392 return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list);
itead 6:18eb2d9fb2ac 393 }
itead 6:18eb2d9fb2ac 394 bool ESP8266::sATCIPSTARTSingle(String type, String addr, uint32_t port)
itead 6:18eb2d9fb2ac 395 {
itead 6:18eb2d9fb2ac 396 String data;
itead 6:18eb2d9fb2ac 397 m_puart->flush();
itead 6:18eb2d9fb2ac 398 m_puart->print("AT+CIPSTART=\"");
itead 6:18eb2d9fb2ac 399 m_puart->print(type);
itead 6:18eb2d9fb2ac 400 m_puart->print("\",\"");
itead 6:18eb2d9fb2ac 401 m_puart->print(addr);
itead 6:18eb2d9fb2ac 402 m_puart->print("\",");
itead 6:18eb2d9fb2ac 403 m_puart->println(port);
itead 6:18eb2d9fb2ac 404
itead 6:18eb2d9fb2ac 405 data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000);
itead 6:18eb2d9fb2ac 406 if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) {
itead 6:18eb2d9fb2ac 407 return true;
itead 6:18eb2d9fb2ac 408 }
itead 6:18eb2d9fb2ac 409 return false;
itead 6:18eb2d9fb2ac 410 }
itead 6:18eb2d9fb2ac 411 bool ESP8266::sATCIPSTARTMultiple(uint8_t mux_id, String type, String addr, uint32_t port)
itead 6:18eb2d9fb2ac 412 {
itead 6:18eb2d9fb2ac 413 String data;
itead 6:18eb2d9fb2ac 414 m_puart->flush();
itead 6:18eb2d9fb2ac 415 m_puart->print("AT+CIPSTART=");
itead 6:18eb2d9fb2ac 416 m_puart->print(mux_id);
itead 6:18eb2d9fb2ac 417 m_puart->print(",\"");
itead 6:18eb2d9fb2ac 418 m_puart->print(type);
itead 6:18eb2d9fb2ac 419 m_puart->print("\",\"");
itead 6:18eb2d9fb2ac 420 m_puart->print(addr);
itead 6:18eb2d9fb2ac 421 m_puart->print("\",");
itead 6:18eb2d9fb2ac 422 m_puart->println(port);
itead 6:18eb2d9fb2ac 423
itead 6:18eb2d9fb2ac 424 data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000);
itead 6:18eb2d9fb2ac 425 if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) {
itead 6:18eb2d9fb2ac 426 return true;
itead 6:18eb2d9fb2ac 427 }
itead 6:18eb2d9fb2ac 428 return false;
itead 6:18eb2d9fb2ac 429 }
itead 6:18eb2d9fb2ac 430 bool ESP8266::sATCIPSENDSingle(uint8_t *buffer, uint32_t len)
itead 6:18eb2d9fb2ac 431 {
itead 6:18eb2d9fb2ac 432 return false;
itead 6:18eb2d9fb2ac 433 }
itead 6:18eb2d9fb2ac 434 bool ESP8266::sATCIPSENDMultiple(uint8_t mux_id, uint8_t *buffer, uint32_t len)
itead 6:18eb2d9fb2ac 435 {
itead 6:18eb2d9fb2ac 436 return false;
itead 6:18eb2d9fb2ac 437 }
itead 6:18eb2d9fb2ac 438 bool ESP8266::sATCIPCLOSEMulitple(uint8_t mux_id)
itead 6:18eb2d9fb2ac 439 {
itead 6:18eb2d9fb2ac 440 return false;
itead 6:18eb2d9fb2ac 441 }
itead 6:18eb2d9fb2ac 442 bool ESP8266::eATCIPCLOSESingle(void)
itead 6:18eb2d9fb2ac 443 {
itead 6:18eb2d9fb2ac 444 return false;
itead 6:18eb2d9fb2ac 445 }
itead 6:18eb2d9fb2ac 446 bool ESP8266::eATCIFSR(String &list)
itead 6:18eb2d9fb2ac 447 {
itead 6:18eb2d9fb2ac 448 return false;
itead 6:18eb2d9fb2ac 449 }
itead 6:18eb2d9fb2ac 450 bool ESP8266::sATCIPMUX(uint8_t mode)
itead 6:18eb2d9fb2ac 451 {
itead 6:18eb2d9fb2ac 452 return false;
itead 6:18eb2d9fb2ac 453 }
itead 6:18eb2d9fb2ac 454 bool ESP8266::sATCIPSERVER(uint8_t mode, uint32_t port)
itead 6:18eb2d9fb2ac 455 {
itead 6:18eb2d9fb2ac 456 return false;
itead 6:18eb2d9fb2ac 457 }
itead 6:18eb2d9fb2ac 458 bool ESP8266::sATCIPSTO(uint32_t timeout)
itead 6:18eb2d9fb2ac 459 {
itead 6:18eb2d9fb2ac 460 return false;
itead 6:18eb2d9fb2ac 461 }