stm32l432 esp8266,MQ13,MQ7,SSD1306,SD1303,HC04
Dependents: Nucleo_SSD1306_DS1302_ESP8266_AM2320_BME280
Fork of ESP8266 by
Diff: ESP8266.cpp
- Revision:
- 0:e58f27687450
- Child:
- 1:399414d48048
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ESP8266.cpp Tue Dec 16 01:08:47 2014 +0000 @@ -0,0 +1,90 @@ +#include "ESP8266.h" + +// Constructor +ESP8266::ESP8266(PinName tx, PinName rx) : comm(tx, rx) { + comm.baud(115200); +} + +// Destructor +ESP8266::~ESP8266() { } + +// Add <CR> + <LF> at the end of the string +void ESP8266::AddEOL(char * s) { + char k; + k = strlen(s); // Finds position of NULL character + s[k] = 0x0D; // switch NULL for <CR> + s[k + 1] = 0x0A; // Add <LF> + s[k + 2] = 0; // Add NULL at the end +} + +// Add one ASCII character at the end of the string +void ESP8266::AddChar(char * s, char c) { + char k; + k = strlen(s); + s[k] = c; + s[k + 1] = 0; +} + +// Sends command to ESP8266. Receives the command string +void ESP8266::SendCMD(char * s) { + AddEOL(s); + comm.printf("%s", s); +} + +// Resets the ESP8266 +void ESP8266::Reset(void) { + char rs[10]; + strcpy(rs, "AT+RST"); + SendCMD(rs); +} + +// Receive reply until no character is received after a given timeout in miliseconds +void ESP8266::RcvReply(char * r, int to) { + Timer t; + bool ended = 0; + char c; + + strcpy(r, ""); + t.start(); + while(!ended) { + if(comm.readable()) { + c = comm.getc(); + AddChar(r, c); + t.start(); + } + if(t.read_ms() > to) { + ended = 1; + } + } + AddChar(r, 0x00); +} + +// Gets the AP list. Parameter: the string to receive the list +void ESP8266::GetList(char * l) { + char rs[15]; + strcpy(rs, "AT+CWLAP"); + SendCMD(rs); + RcvReply(l, 5000); // Needs big timeout because it takes long to start replying +} + +// Joins a Wifi AP. Parameters: SSID and Password (strings) +void ESP8266::Join(char * id, char * pwd) { + char cmd[255]; + strcpy(cmd, "AT+CWJAP="); + AddChar(cmd, 0x22); + strcat(cmd, id); + AddChar(cmd, 0x22); + AddChar(cmd, 0x2C); + AddChar(cmd, 0x22); + strcat(cmd, pwd); + AddChar(cmd, 0x22); + SendCMD(cmd); +} + +// Gets ESP IP. Parameter: string to contain IP +void ESP8266::GetIP(char * ip) { + char cmd[15]; + strcpy(cmd, "AT+CIFSR"); + SendCMD(cmd); + RcvReply(ip, 2000); +} \ No newline at end of file