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.
Dependencies: ATParser
Fork of ESP8266 by
Revision 17:8b541b19f391, committed 2016-02-18
- Comitter:
- Christopher Haster
- Date:
- Thu Feb 18 16:08:29 2016 -0600
- Parent:
- 16:f886ef3f2297
- Child:
- 18:11f2f6bd2e97
- Commit message:
- Removed carraige returns
Changed in this revision
| ESP8266.cpp | Show annotated file Show diff for this revision Revisions of this file |
| ESP8266.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/ESP8266.cpp Tue Feb 02 22:21:55 2016 +0000
+++ b/ESP8266.cpp Thu Feb 18 16:08:29 2016 -0600
@@ -1,155 +1,155 @@
-/* ESP8266 Example
- * Copyright (c) 2015 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "ESP8266.h"
-
-ESP8266::ESP8266(PinName tx, PinName rx, uint8_t debug) : serial(tx, rx), atParser(serial)
-{
- serial.baud(115200);
- atParser.debugOn(debug);
-}
-
-bool ESP8266::startup(void)
-{
- return (atParser.send("AT") && atParser.recv("OK"));
-}
-
-bool ESP8266::reset(void)
-{
- return (atParser.send("AT+RST") && atParser.recv("OK\r\nready"));
-}
-
-bool ESP8266::wifiMode(int mode)
-{
- //only 3 valid modes
- if(mode < 1 || mode > 3) {
- return false;
- }
-
- char modestr[1];
- sprintf(modestr,"%d",mode);
- string mode_command = "AT+CWMODE="+string(modestr);
- return (atParser.send(mode_command.c_str()) && atParser.recv("OK"));
-}
-
-bool ESP8266::multipleConnections(bool enabled)
-{
- int on = (int)enabled;
- char enable[1];
- sprintf(enable,"%d",on);
- string mux_command = "AT+CIPMUX="+string(enable);
- return (atParser.send(mux_command.c_str()) && atParser.recv("OK"));
-}
-
-bool ESP8266::dhcp(int mode, bool enabled)
-{
- //only 3 valid modes
- if(mode < 0 || mode > 2) {
- return false;
- }
- int on = (int)enabled;
- char enable[1];
- sprintf(enable,"%d",on);
- char modestr[1];
- sprintf(modestr,"%d",mode);
- string mode_command = "AT+CWDHCP="+string(modestr)+","+string(enable);
- return (atParser.send(mode_command.c_str()) && atParser.recv("OK"));
-}
-
-bool ESP8266::connect(const char *ap, const char *passPhrase)
-{
- string connect_command = "AT+CWJAP=\""+(string)ap+"\",\""+(string)passPhrase+"\"";
- return (atParser.send(connect_command.c_str()) && atParser.recv("OK"));
-}
-
-bool ESP8266::disconnect(void)
-{
- return (atParser.send("AT+CWQAP") && atParser.recv("OK"));
-}
-
-bool ESP8266::getIPAddress(char* ip)
-{
- return (atParser.send("AT+CIPSTA?") && atParser.recv("+CIPSTA:\"%[^\"]\"", ip));
-}
-
-bool ESP8266::isConnected(void)
-{
- char* ip = "";
- return getIPAddress(ip);
-}
-
-bool ESP8266::openSocket(string sockType, int id, int port, const char* addr)
-{
- //IDs only 0-4
- if(id > 4) {
- return false;
- }
- char portstr[5];
- char idstr[2];
- sprintf(idstr,"%d",id);
- sprintf(portstr, "%d", port);
-
- string start_command = "AT+CIPSTART="+(string)idstr+",\""+sockType+"\",\""+(string)addr+"\","+(string)portstr;
- if (!(atParser.send(start_command.c_str()) && atParser.recv("OK"))) {
- return false;//opening socket not succesful
- }
- return true;
-}
-
-bool ESP8266::sendData(int id, const void *data, uint32_t amount)
-{
- char idstr[2];
- sprintf(idstr,"%d",id);
- char lenstr[5];
- sprintf(lenstr,"%d",(int)amount);
-
- string send_command = "AT+CIPSEND="+(string)idstr+","+(string)lenstr;
- if(!atParser.send(send_command.c_str(),">")) {
- return false;
- }
- wait_ms(10);
- atParser.write((char*)data, (int)amount);
- wait_ms(10);
- return true;
-}
-
-uint32_t ESP8266::recv(void *data, uint32_t amount)
-{
- int length;
- int id;
- if (!(atParser.recv("+IPD,%d,%d:", &id, &length) && atParser.read((char*)data, length) && atParser.recv("OK"))) {
- return 0;
- }
- return length;
-}
-
-bool ESP8266::close(int id)
-{
- //IDs only 0-4
- if(id > 4) {
- return false;
- }
- char idstr[2];
- sprintf(idstr,"%d",id);
- string close_command = "AT+CIPCLOSE="+(string)idstr;
-
- return (atParser.send(close_command.c_str()) && atParser.recv("OK"));
-}
-
-void ESP8266::setTimeout(uint32_t timeout_ms)
-{
- atParser.setTimeout(timeout_ms);
+/* ESP8266 Example
+ * Copyright (c) 2015 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "ESP8266.h"
+
+ESP8266::ESP8266(PinName tx, PinName rx, uint8_t debug) : serial(tx, rx), atParser(serial)
+{
+ serial.baud(115200);
+ atParser.debugOn(debug);
+}
+
+bool ESP8266::startup(void)
+{
+ return (atParser.send("AT") && atParser.recv("OK"));
+}
+
+bool ESP8266::reset(void)
+{
+ return (atParser.send("AT+RST") && atParser.recv("OK\r\nready"));
+}
+
+bool ESP8266::wifiMode(int mode)
+{
+ //only 3 valid modes
+ if(mode < 1 || mode > 3) {
+ return false;
+ }
+
+ char modestr[1];
+ sprintf(modestr,"%d",mode);
+ string mode_command = "AT+CWMODE="+string(modestr);
+ return (atParser.send(mode_command.c_str()) && atParser.recv("OK"));
+}
+
+bool ESP8266::multipleConnections(bool enabled)
+{
+ int on = (int)enabled;
+ char enable[1];
+ sprintf(enable,"%d",on);
+ string mux_command = "AT+CIPMUX="+string(enable);
+ return (atParser.send(mux_command.c_str()) && atParser.recv("OK"));
+}
+
+bool ESP8266::dhcp(int mode, bool enabled)
+{
+ //only 3 valid modes
+ if(mode < 0 || mode > 2) {
+ return false;
+ }
+ int on = (int)enabled;
+ char enable[1];
+ sprintf(enable,"%d",on);
+ char modestr[1];
+ sprintf(modestr,"%d",mode);
+ string mode_command = "AT+CWDHCP="+string(modestr)+","+string(enable);
+ return (atParser.send(mode_command.c_str()) && atParser.recv("OK"));
+}
+
+bool ESP8266::connect(const char *ap, const char *passPhrase)
+{
+ string connect_command = "AT+CWJAP=\""+(string)ap+"\",\""+(string)passPhrase+"\"";
+ return (atParser.send(connect_command.c_str()) && atParser.recv("OK"));
+}
+
+bool ESP8266::disconnect(void)
+{
+ return (atParser.send("AT+CWQAP") && atParser.recv("OK"));
+}
+
+bool ESP8266::getIPAddress(char* ip)
+{
+ return (atParser.send("AT+CIPSTA?") && atParser.recv("+CIPSTA:\"%[^\"]\"", ip));
+}
+
+bool ESP8266::isConnected(void)
+{
+ char* ip = "";
+ return getIPAddress(ip);
+}
+
+bool ESP8266::openSocket(string sockType, int id, int port, const char* addr)
+{
+ //IDs only 0-4
+ if(id > 4) {
+ return false;
+ }
+ char portstr[5];
+ char idstr[2];
+ sprintf(idstr,"%d",id);
+ sprintf(portstr, "%d", port);
+
+ string start_command = "AT+CIPSTART="+(string)idstr+",\""+sockType+"\",\""+(string)addr+"\","+(string)portstr;
+ if (!(atParser.send(start_command.c_str()) && atParser.recv("OK"))) {
+ return false;//opening socket not succesful
+ }
+ return true;
+}
+
+bool ESP8266::sendData(int id, const void *data, uint32_t amount)
+{
+ char idstr[2];
+ sprintf(idstr,"%d",id);
+ char lenstr[5];
+ sprintf(lenstr,"%d",(int)amount);
+
+ string send_command = "AT+CIPSEND="+(string)idstr+","+(string)lenstr;
+ if(!atParser.send(send_command.c_str(),">")) {
+ return false;
+ }
+ wait_ms(10);
+ atParser.write((char*)data, (int)amount);
+ wait_ms(10);
+ return true;
+}
+
+uint32_t ESP8266::recv(void *data, uint32_t amount)
+{
+ int length;
+ int id;
+ if (!(atParser.recv("+IPD,%d,%d:", &id, &length) && atParser.read((char*)data, length) && atParser.recv("OK"))) {
+ return 0;
+ }
+ return length;
+}
+
+bool ESP8266::close(int id)
+{
+ //IDs only 0-4
+ if(id > 4) {
+ return false;
+ }
+ char idstr[2];
+ sprintf(idstr,"%d",id);
+ string close_command = "AT+CIPCLOSE="+(string)idstr;
+
+ return (atParser.send(close_command.c_str()) && atParser.recv("OK"));
+}
+
+void ESP8266::setTimeout(uint32_t timeout_ms)
+{
+ atParser.setTimeout(timeout_ms);
}
\ No newline at end of file
--- a/ESP8266.h Tue Feb 02 22:21:55 2016 +0000
+++ b/ESP8266.h Thu Feb 18 16:08:29 2016 -0600
@@ -1,151 +1,151 @@
-/* ESP8266Interface Example
- * Copyright (c) 2015 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ESP8266_H
-#define ESP8266_H
-
-#include "ATParser.h"
-#include <string>
-
-/** ESP8266Interface class.
- This is an interface to a ESP8266 radio.
- */
-class ESP8266
-{
-public:
- ESP8266(PinName tx, PinName rx, uint8_t debug = 0);
-
- /**
- * Test startup of ESP8266
- *
- * @return true only if ESP8266 AT system working correctly
- */
- bool startup(void);
-
- /**
- * Reset ESP8266
- *
- * @return true only if ESP8266 resets successfully
- */
- bool reset(void);
-
- /**
- * Set WiFi mode
- *
- * @param mode mode of WiFi 1-client, 2-host, 3-both
- * @return true only if ESP8266 enables/disables DHCP successfully
- */
- bool wifiMode(int mode);
-
- /**
- * Enable/Disable multiple connections
- *
- * @param enabled multiple connections enabled when true
- * @return true only if ESP8266 enables/disables multiple connections successfully
- */
- bool multipleConnections(bool enabled);
-
- /**
- * Enable/Disable DHCP
- *
- * @param mode mode of DHCP 0-softAP, 1-station, 2-both
- * @param enabled DHCP enabled when true
- * @return true only if ESP8266 enables/disables DHCP successfully
- */
- bool dhcp(int mode, bool enabled);
-
- /**
- * Connect ESP8266 to AP
- *
- * @param ap the name of the AP
- * @param passPhrase the password of AP
- * @return true only if ESP8266 is connected successfully
- */
- bool connect(const char *ap, const char *passPhrase);
-
- /**
- * Disconnect ESP8266 from AP
- *
- * @return true only if ESP8266 is disconnected successfully
- */
- bool disconnect(void);
-
- /**
- * Get the IP address of ESP8266
- *
- * @param ip data placeholder for IP address
- * @return true only if ESP8266 is assigned an IP address
- */
- bool getIPAddress(char* ip);
-
- /**
- * Check if ESP8266 is conenected
- *
- * @return true only if the chip has an IP address
- */
- bool isConnected(void);
-
- /**
- * Open a socketed connection
- *
- * @param sockType the type of socket to open "UDP" or "TCP"
- * @param id id to give the new socket, valid 0-4
- * @param port port to open connection with
- * @param addr the IP address of the destination
- * @return true only if socket opened successfully
- */
- bool openSocket(string sockType, int id, int port, const char* addr);
-
- /**
- * Sends data to an open socket
- *
- * @param id id of socket to send to
- * @param data data to be sent
- * @param amount amount of data to be sent - max 1024
- * @return true only if data sent successfully
- */
- bool sendData(int id, const void *data, uint32_t amount);
-
- /**
- * Receives data from an open socket
- *
- * @param data placeholder for returned information
- * @param amount number of bytes to be received
- * @return the number of bytes actually received
- */
- uint32_t recv(void *data, uint32_t amount);
-
- /**
- * Closes a socket
- *
- * @param id id of socket to close, valid only 0-4
- * @return true only if socket is closed successfully
- */
- bool close(int id);
-
- /**
- * Allows timeout to be changed between commands
- *
- * @param timeout_ms timeout of the connection
- */
- void setTimeout(uint32_t timeout_ms);
-
-private:
- BufferedSerial serial;
- ATParser atParser;
-};
-
-#endif
+/* ESP8266Interface Example
+ * Copyright (c) 2015 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ESP8266_H
+#define ESP8266_H
+
+#include "ATParser.h"
+#include <string>
+
+/** ESP8266Interface class.
+ This is an interface to a ESP8266 radio.
+ */
+class ESP8266
+{
+public:
+ ESP8266(PinName tx, PinName rx, uint8_t debug = 0);
+
+ /**
+ * Test startup of ESP8266
+ *
+ * @return true only if ESP8266 AT system working correctly
+ */
+ bool startup(void);
+
+ /**
+ * Reset ESP8266
+ *
+ * @return true only if ESP8266 resets successfully
+ */
+ bool reset(void);
+
+ /**
+ * Set WiFi mode
+ *
+ * @param mode mode of WiFi 1-client, 2-host, 3-both
+ * @return true only if ESP8266 enables/disables DHCP successfully
+ */
+ bool wifiMode(int mode);
+
+ /**
+ * Enable/Disable multiple connections
+ *
+ * @param enabled multiple connections enabled when true
+ * @return true only if ESP8266 enables/disables multiple connections successfully
+ */
+ bool multipleConnections(bool enabled);
+
+ /**
+ * Enable/Disable DHCP
+ *
+ * @param mode mode of DHCP 0-softAP, 1-station, 2-both
+ * @param enabled DHCP enabled when true
+ * @return true only if ESP8266 enables/disables DHCP successfully
+ */
+ bool dhcp(int mode, bool enabled);
+
+ /**
+ * Connect ESP8266 to AP
+ *
+ * @param ap the name of the AP
+ * @param passPhrase the password of AP
+ * @return true only if ESP8266 is connected successfully
+ */
+ bool connect(const char *ap, const char *passPhrase);
+
+ /**
+ * Disconnect ESP8266 from AP
+ *
+ * @return true only if ESP8266 is disconnected successfully
+ */
+ bool disconnect(void);
+
+ /**
+ * Get the IP address of ESP8266
+ *
+ * @param ip data placeholder for IP address
+ * @return true only if ESP8266 is assigned an IP address
+ */
+ bool getIPAddress(char* ip);
+
+ /**
+ * Check if ESP8266 is conenected
+ *
+ * @return true only if the chip has an IP address
+ */
+ bool isConnected(void);
+
+ /**
+ * Open a socketed connection
+ *
+ * @param sockType the type of socket to open "UDP" or "TCP"
+ * @param id id to give the new socket, valid 0-4
+ * @param port port to open connection with
+ * @param addr the IP address of the destination
+ * @return true only if socket opened successfully
+ */
+ bool openSocket(string sockType, int id, int port, const char* addr);
+
+ /**
+ * Sends data to an open socket
+ *
+ * @param id id of socket to send to
+ * @param data data to be sent
+ * @param amount amount of data to be sent - max 1024
+ * @return true only if data sent successfully
+ */
+ bool sendData(int id, const void *data, uint32_t amount);
+
+ /**
+ * Receives data from an open socket
+ *
+ * @param data placeholder for returned information
+ * @param amount number of bytes to be received
+ * @return the number of bytes actually received
+ */
+ uint32_t recv(void *data, uint32_t amount);
+
+ /**
+ * Closes a socket
+ *
+ * @param id id of socket to close, valid only 0-4
+ * @return true only if socket is closed successfully
+ */
+ bool close(int id);
+
+ /**
+ * Allows timeout to be changed between commands
+ *
+ * @param timeout_ms timeout of the connection
+ */
+ void setTimeout(uint32_t timeout_ms);
+
+private:
+ BufferedSerial serial;
+ ATParser atParser;
+};
+
+#endif
