//-------------------------------- bool esp8266::Write(const char* zString) { bool bSuccess = false; bool bFailure = false; int nWaitCount = 2000; char zSize[8]; std::ltoa(strlen(zString), zSize); FillOutputBuffer("AT+CIPSEND=0,"); FillOutputBuffer(zSize); FillOutputBuffer("\r\n"); // TODO: Wait for ready, i.e. '>' SysCtlDelay(SysCtlClockGet() / (1000 / 3)); // FillOutputBuffer(zString); // Wait for response while (!bSuccess && !bFailure && nWaitCount--) { if (RxEndOfLine()) { int nCount = ReadLine(m_zReply, sizeof(m_zReply)); if (nCount) { UARTprintf("%s\r\n", m_zReply); if (!strcmp("SEND OK", m_zReply)) { bSuccess = true; } else if (!strcmp("ERROR", m_zReply)) { bFailure = true; } } } else { SysCtlDelay(SysCtlClockGet() / (1000 / 3)); } } // return bSuccess; }
//-------------------------------- bool esp8266::Invoke(const char* zCommand, const char* zSuccess, const char* zFailure, int nWaitCount) { bool bSuccess = false; bool bFailure = false; FillOutputBuffer(zCommand); FillOutputBuffer("\r\n"); // Wait for response while (!bSuccess && !bFailure && nWaitCount--) { if (RxEndOfLine()) { int nCount = ReadLine(m_zReply, sizeof(m_zReply)); if (nCount) { UARTprintf("%s\r\n", m_zReply); if (zSuccess && !strcmp(zSuccess, m_zReply)) { bSuccess = true; } else if (zFailure && !strcmp(zFailure, m_zReply)) { bFailure = true; } } } else { SysCtlDelay(SysCtlClockGet() / (1000 / 3)); } } // return bSuccess; }
UnicodeChar XMLReader::ReadChar() { if (mOutputStart < mOutputEnd) { return *mOutputStart++; } else { FillOutputBuffer(); if (mOutputStart < mOutputEnd) return *mOutputStart++; else return UnicodeChar(0xFFFF); } }
bool XMLReader::BufferStartsWith(const char * prefix) { ptrdiff_t prefixLen = std::strlen(prefix); if (mOutputEnd - mOutputStart < prefixLen) FillOutputBuffer(); if (mOutputEnd - mOutputStart >= prefixLen) { const char * prefixEnd = prefix + prefixLen; const UnicodeChar * output = mOutputStart; while (prefix < prefixEnd) { if (*output++ != UnicodeChar(*prefix++)) return false; } return true; } else return false; }