/** * \brief GSM fecha conexão http * \param * \return 0=erro, 1=ok */ boolean sATCIPCLOSEMulitple(uint8_t mux_id) { #ifdef GSM_CSTT char *data=reqHTTP; //eATCIPSTATUS(); PGM_PRINTLN("CLO"); //debugln(mux_id); esp8266Flush(); #if USE_MUX == 1 SSwifi.print("AT+CIPCLOSE="); SSwifi.print(mux_id); SSwifi.print("\r\n"); #else SSwifi.print("AT+CIPCLOSE\r\n"); #endif //bitSet(ccStatus,CC_DEBUG); #if ESP8266_VERSION_14 == 1 recvString(data,"OK","xx","CLOSE", 10000,true); #else recvString(data,"OK","ERR","UNL", 10000,true); #endif debugln(data); if (data[0]=='O' || data[0]=='U') { return true; } return false; #else return true; #endif }
void cmd_move(void) { recvString(); sendStart(ERR_WAIT); fs_openany(); sendStart(ERR_OK_WRITE); recvStart(); recvString(); sendStart(ERR_WAIT); if(!lastError) fs_move0(); if(!lastError) lastError = ERR_OK_CMD; }
bool ESP8266::sATCWDHCP(uint8_t mode, uint8_t en, uint8_t pattern) { String data; if (!pattern) { return false; } rx_empty(); switch(pattern){ case 1 : m_puart->print(F("AT+CWDHCP_DEF=")); break; case 2: m_puart->print(F("AT+CWDHCP_CUR=")); break; default: m_puart->print(F("AT+CWDHCP=")); } m_puart->print(mode); m_puart->print(F(",")); m_puart->println(en); data = recvString("OK", "ERROR", 2000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn,uint8_t pattern) { String data; if (!pattern) { return false; } rx_empty(); switch(pattern){ case 1 : m_puart->print(F("AT+CWSAP_DEF=\"")); break; case 2: m_puart->print(F("AT+CWSAP_CUR=\"")); break; default: m_puart->print(F("AT+CWSAP=\"")); } m_puart->print(ssid); m_puart->print(F("\",\"")); m_puart->print(pwd); m_puart->print(F("\",")); m_puart->print(chl); m_puart->print(F(",")); m_puart->println(ecn); data = recvString("OK", "ERROR", 5000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::qATCWJAP(String &ssid,uint8_t pattern) { bool ret; if (!pattern) { return false; } rx_empty(); switch(pattern) { case 1 : m_puart->println(F("AT+CWJAP_DEF?")); break; case 2: m_puart->println(F("AT+CWJAP_CUR?")); break; default: m_puart->println(F("AT+CWJAP?")); } ssid = recvString("OK", "No AP"); if (ssid.indexOf("OK") != -1 || ssid.indexOf("No AP") != -1) { return true; } return false; }
bool ESP8266::sATCWMODE(uint8_t mode,uint8_t pattern) { if(!pattern){ return false; } String data; rx_empty(); switch(pattern) { case 1 : m_puart->print(F("AT+CWMODE_DEF=")); break; case 2: m_puart->print(F("AT+CWMODE_CUR=")); break; default: m_puart->print(F("AT+CWMODE=")); } m_puart->println(mode); data = recvString("OK", "no change"); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; }
bool ESP8266::recvFindAndFilter(String target, String begin, String end, String &data, uint32_t timeout) { String data_tmp; data_tmp = recvString(target, timeout); if (data_tmp.indexOf(target) != -1) { int32_t index1 = data_tmp.indexOf(begin); int32_t index2 = data_tmp.indexOf(end); if (index1 != -1 && index2 != -1) { index1 += begin.length(); data = data_tmp.substring(index1, index2); return true; } else if (index2 != -1) { data = data_tmp.substring(0, index2); return true; } index1 = data.indexOf("\r\n\r\nOK"); if (index1 != -1) { data = data_tmp.substring(0, index1); } index1 = data.indexOf("\r\nOK"); if (index1 != -1) { data = data_tmp.substring(0, index1); } } data = data_tmp; return false; }
bool ESP8266::sATCIPSTARTMultiple(uint8_t mux_id, String type, String addr, uint32_t port) { String data; rx_empty(); printAT("CIPSTART="); m_puart->print(mux_id); m_puart->print(",\""); m_puart->print(type); m_puart->print("\",\""); if(strlen(addr.c_str()) != 0 ){ m_puart->print(addr); m_puart->print("\","); m_puart->println(port); }else{ m_puart->print("0\",0,"); m_puart->print(port, DEC); // local port m_puart->print(","); m_puart->println(2, DEC); // mode } data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000); if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) { return true; } return false; }
void cmd_open(void) { uint8_t mode; /* Принимаем режим */ mode = wrecv(); // Принимаем имя файла recvString(); // Режим передачи и подтверждение sendStart(ERR_WAIT); // Открываем/создаем файл/папку if(mode == O_SWAP) { fs_swap(); } else if(mode == O_DELETE) { fs_delete(); } else if(mode == O_OPEN) { fs_open(); } else if(mode < 3) { fs_open0(mode); } else { lastError = ERR_INVALID_COMMAND; } // Ок if(!lastError) lastError = ERR_OK_CMD; }
void ClientThread::run(){ qDebug() << "Thread id=" << QThread::currentThreadId(); u_long flag = 0; ioctlsocket(mSocket, FIONBIO, &flag); // отправл¤ем клиенту приветствие sendString(FTPProtocol::getInstance()->getResponse(220,"FtpServer. Hello")); while(true) { QString s = recvString(); if (s == NULL) break; s = s.trimmed(); if (!s.isEmpty()) { qDebug() << "<<" << s; QByteArray array (s.toStdString().c_str()); analizeCommand(array); } if (mTerminated){ break; } } // закрываем сокет closesocket(mSocket); qDebug() << "Close client"; emit oncloseconnection(mClientAddr); }
boolean recvFind(char *target, uint32_t timeout) { char achou[8]; recvString(achou, target, "busy","link", timeout, false); return !strcmp(target,achou); }
bool ESP8266::recvFind(String target, uint32_t timeout) { String data_tmp; data_tmp = recvString(target, timeout); if (data_tmp.indexOf(target) != -1) { return true; } return false; }
void cmd_exec(void) { // Прием имени файла recvString(); // Режим передачи и подтверждение sendStart(ERR_WAIT); if(lastError) return; // Переполнение строки cmd_boot_exec(); }
bool ESP::sATCIPCLOSEMulitple(uint8_t mux_id) { String data; flush(); this->serial->print(F("AT+CIPCLOSE=")); this->serial->println(mux_id); data = recvString(F("OK"), F("link is not"), 5000); if (data.indexOf(F("OK")) != -1 || data.indexOf(F("link is not")) != -1) { return true; } return false; }
bool ESP::sATCIPMUX(uint8_t mode) { String data; flush(); this->serial->print(F("AT+CIPMUX=")); this->serial->println(mode); data = recvString(F("OK"), F("Link is builded"), COMMAND_TIMEOUT); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP::sATCWMODE(uint8_t mode) { String data; flush(); this->serial->print(F("AT+CWMODE=")); this->serial->println(mode); data = recvString(F("OK"), F("no change"), COMMAND_TIMEOUT); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; }
bool ESP8266::sATCIPCLOSEMulitple(uint8_t mux_id) { String data; rx_empty(); printAT("CIPCLOSE="); m_puart->println(mux_id); data = recvString("OK", "link is not", 5000); if (data.indexOf("OK") != -1 || data.indexOf("link is not") != -1) { return true; } return false; }
bool ESP8266::sATCIPMUX(uint8_t mode) { String data; rx_empty(); printAT("CIPMUX="); m_puart->println(mode); data = recvString("OK", "Link is builded"); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCWMODE(uint8_t mode) { String data; rx_empty(); printAT("CWMODE="); m_puart->println(mode); data = recvString("OK", "no change"); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; }
bool ESP8266::connected() { String data; rx_empty(); sendAT("CWJAP?"); data = recvString("OK", "FAIL", 1000); if (data.indexOf("+CWJAP:") != -1) { return true; } return false; }
bool ESP8266::sATCWJAP(String ssid, String pwd) { String data; rx_empty(); m_puart->print("AT+CWJAP=\""); m_puart->print(ssid); m_puart->print("\",\""); m_puart->print(pwd); m_puart->println("\""); data = recvString("OK", "FAIL", 10000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCIPMODE(uint8_t mode) { String data; if(mode>1||mode<0){ return false; } rx_empty(); m_puart->print(F("AT+CIPMODE=")); m_puart->println(mode); data = recvString("OK", "Link is builded",2000); if (data.indexOf("OK") != -1 ) { return true; } return false; }
bool ESP::sATCWJAP(String ssid, String pwd) { String data; flush(); this->serial->print(F("AT+CWJAP=\"")); this->serial->print(ssid); this->serial->print("\",\""); this->serial->print(pwd); this->serial->println("\""); data = recvString(F("OK"), F("FAIL"), 10000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::eATSAVETRANSLINK(uint8_t mode,String ip,uint32_t port) { String data; rx_empty(); m_puart->print(F("AT+SAVETRANSLINK=")); m_puart->print(mode); m_puart->print(F(",\"")); m_puart->print(ip); m_puart->print(F("\",")); m_puart->println(port); data = recvString("OK", "ERROR",2000); if (data.indexOf("OK") != -1 ) { return true; } return false; }
bool ESP8266::sATCIPSTARTSingle(String type, String addr, uint32_t port) { String data; rx_empty(); printAT("CIPSTART=\""); m_puart->print(type); m_puart->print("\",\""); m_puart->print(addr); m_puart->print("\","); m_puart->println(port); data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000); if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) { return true; } return false; }
void cmd_find(void) { WORD n; FILINFO2 info; // Принимаем путь recvString(); // Принимаем макс кол-во элементов recvBin((uint8_t*)&n, 2); // Режим передачи и подтверждение sendStart(ERR_WAIT); if(lastError) return; // Открываем папку if(buf[0] != ':') { if(fs_opendir()) return; } for(; n; --n) { /* Читаем очереной описатель */ if(fs_readdir()) return; /* Конец */ if(FS_DIRENTRY[0] == 0) { lastError = ERR_OK_CMD; return; } /* Сжимаем ответ для компьютера */ memcpy(info.fname, FS_DIRENTRY+DIR_Name, 12); memcpy(&info.fsize, FS_DIRENTRY+DIR_FileSize, 4); memcpy(&info.ftimedate, FS_DIRENTRY+DIR_WrtTime, 4); //memcpy(memcpy(memcpy(info.fname, FS_DIRENTRY+DIR_Name, 12, FS_DIRENTRY+DIR_FileSize, 4), FS_DIRENTRY+DIR_WrtTime, 4); /* Отправляем */ send(ERR_OK_ENTRY); sendBin((uint8_t*)&info, sizeof(info)); send(ERR_WAIT); } /* Ограничение по размеру */ lastError = ERR_MAX_FILES; /*! Надо опеределать, что бы не было ложных ошибок */ }
bool ESP8266::sATCIPSTARTMultiple(uint8_t mux_id, String type, String addr, uint32_t port) { String data; rx_empty(); m_puart->print(F("AT+CIPSTART=")); m_puart->print(mux_id); m_puart->print(F(",\"")); m_puart->print(type); m_puart->print(F("\",\"")); m_puart->print(addr); m_puart->print(F("\",")); m_puart->println(port); data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000); if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) { return true; } return false; }
bool ESP8266::sATCIPSERVER(uint8_t mode, uint32_t port) { String data; if (mode) { rx_empty(); printAT("CIPSERVER=1,"); m_puart->println(port); data = recvString("OK", "no change"); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; } else { rx_empty(); sendAT("CIPSERVER=0"); return recvFind("\r\r\n"); } }
bool ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn) { String data; rx_empty(); printAT("CWSAP=\""); m_puart->print(ssid); m_puart->print("\",\""); m_puart->print(pwd); m_puart->print("\","); m_puart->print(chl); m_puart->print(","); m_puart->println(ecn); data = recvString("OK", "ERROR", 5000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP::sATCIPSERVER(uint8_t mode, uint32_t port) { String data; if (mode) { flush(); this->serial->print(F("AT+CIPSERVER=1,")); this->serial->println(port); data = recvString(F("OK"), F("no change"), COMMAND_TIMEOUT); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; } else { flush(); this->serial->println(F("AT+CIPSERVER=0")); return recvFind(F("\r\r\n"), COMMAND_TIMEOUT); } }