Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ESP8266.cpp
- Revision:
- 0:e58f27687450
- Child:
- 1:399414d48048
diff -r 000000000000 -r e58f27687450 ESP8266.cpp
--- /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