Esempio n. 1
0
//--------------------------------
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;
}
Esempio n. 2
0
//--------------------------------
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;
	}