static void esp8266RxBufferFlash() { INT8U err; char *str; do { err = usart0Read(&str, ESP8266_FLUSH_TIMEOUT); } while (err == OS_ERR_NONE); }
void serial(void *pdata) { char *str; (void)pdata; while (1) { usart0Read(&str); usart0Print(str); } }
char *esp8266Rx(void) { char *str; while (1) { usart0Read(&str, ESP8266_INFINITE_TIMEOUT); if (*str == '+') { str += 8; while (*str != ':') { str++; } str++; break; } } return str; }
boolean esp8266Cmd(char *cmd, char *response) { INT8U err; char *str; esp8266RxBufferFlash(); usart0Print(cmd); usart0Print("\r\n"); while (1) { err = usart0Read(&str, ESP8266_SHORT_TIMEOUT); if (err == OS_ERR_TIMEOUT) { return FALSE; } else if (strCmp(str, response)) { return TRUE; } } }
boolean esp8266GetIP(char *buf) { INT8U err; char *str; boolean result; result = FALSE; esp8266RxBufferFlash(); usart0Print("AT+CIFSR\r\n"); while (1) { err = usart0Read(&str, ESP8266_SHORT_TIMEOUT); if (err == OS_ERR_TIMEOUT || strCmp(str, "OK")) { break; } else if (*str >= '0' && *str <= '9') { if (!strCmp(str, "192.168.4.1")) { strCpy(str, buf); result = TRUE; } } } return result; }
boolean esp8266ConnectAP(char *name, char *password) { INT8U err; char *str; esp8266RxBufferFlash(); usart0Print("AT+CWJAP=\""); usart0Print(name); usart0Print("\",\""); usart0Print(password); usart0Print("\"\r\n"); while (1) { err = usart0Read(&str, ESP8266_LONG_TIMEOUT); if (err == OS_ERR_TIMEOUT) { return FALSE; } else if (strCmp(str, "OK")) { return TRUE; } else if (strCmp(str, "FAIL")) { return FALSE; } } }