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.
Fork of ESP8266NodeMCUInterface by
ESP8266.h
00001 /* Copyright (C) 2012 mbed.org, MIT License 00002 * 00003 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software 00004 * and associated documentation files (the "Software"), to deal in the Software without restriction, 00005 * including without limitation the rights to use, copy, modify, merge, publish, distribute, 00006 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 00007 * furnished to do so, subject to the following conditions: 00008 * 00009 * The above copyright notice and this permission notice shall be included in all copies or 00010 * substantial portions of the Software. 00011 * 00012 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 00013 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 00014 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 00015 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00016 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 00017 * 00018 * @section DESCRIPTION 00019 * 00020 * ESP8266 serial wifi module 00021 * 00022 * Datasheet: 00023 * 00024 * http://www.electrodragon.com/w/Wi07c 00025 */ 00026 00027 #ifndef ESP8266_H 00028 #define ESP8266_H 00029 00030 #include "mbed.h" 00031 #include "CBuffer.h" 00032 #include "BufferedSerial.h" 00033 00034 #define ESP_TCP_TYPE 1 00035 #define ESP_UDP_TYPE 0 00036 #define ESP_MAX_LINE 62 00037 00038 /** 00039 * The ESP8266 class 00040 */ 00041 class ESP8266 00042 { 00043 00044 public: 00045 /** 00046 * Constructor 00047 * 00048 * @param tx mbed pin to use for tx line of Serial interface 00049 * @param rx mbed pin to use for rx line of Serial interface 00050 * @param reset reset pin of the wifi module () 00051 * @param baud the baudrate of the serial connection 00052 * @param timeout the timeout of the serial connection 00053 */ 00054 ESP8266(PinName tx, PinName rx, PinName reset, int baud = 9600, int timeout = 3000); 00055 00056 /** 00057 * Initialize the wifi hardware 00058 * 00059 * @return true if successful 00060 */ 00061 bool init(); 00062 00063 /** 00064 * Connect the wifi module to the specified ssid. 00065 * 00066 * @param ssid ssid of the network 00067 * @param phrase WEP, WPA or WPA2 key 00068 * @return true if successful 00069 */ 00070 bool connect(const char *ssid, const char *phrase); 00071 00072 /** 00073 * Check connection to the access point 00074 * @return true if successful 00075 */ 00076 bool is_connected(); 00077 00078 /** 00079 * Disconnect the ESP8266 module from the access point 00080 * 00081 * @return true if successful 00082 */ 00083 bool disconnect(); 00084 00085 /* 00086 * Start up a UDP or TCP Connection 00087 * 00088 * @param type 0 for UDP, 1 for TCP 00089 * @param ip A string that contains the IP, no quotes 00090 * @param port Numerical port number to connect to 00091 * @param id number between 0-4, if defined it denotes ID to use in multimode (Default to Single connection mode with -1) 00092 * @return true if sucessful, 0 if fail 00093 */ 00094 bool open(bool type, char* ip, int port, int id = -1); 00095 00096 /** 00097 * Close a connection 00098 * 00099 * @return true if successful 00100 */ 00101 bool close(); 00102 00103 /** 00104 * Read a character or block 00105 * 00106 * @return the character read or -1 on error 00107 */ 00108 int getc(); 00109 00110 /** 00111 * Write a character 00112 * 00113 * @param the character which will be written 00114 * @return -1 on error 00115 */ 00116 int putc(char c); 00117 00118 /** 00119 * Write a string 00120 * 00121 * @param buffer the buffer that will be written 00122 * @param len the length of the buffer 00123 * @return true on success 00124 */ 00125 bool send(const char *buffer, int len); 00126 00127 /** 00128 * Read a string without blocking 00129 * 00130 * @param buffer the buffer that will be written 00131 * @param len the length of the buffer, is replaced by read length 00132 * @return true on success 00133 */ 00134 bool recv(char *buffer, int *len); 00135 00136 /** 00137 * Check if wifi is writable 00138 * 00139 * @return 1 if wifi is writable 00140 */ 00141 int writeable(); 00142 00143 /** 00144 * Check if wifi is readable 00145 * 00146 * @return number of characters available 00147 */ 00148 int readable(); 00149 00150 /** 00151 * Return the IP address 00152 * @return IP address as a string 00153 */ 00154 const char *getIPAddress(); 00155 00156 /** 00157 * Return the IP address from host name 00158 * @return true on success, false on failure 00159 */ 00160 bool getHostByName(const char *host, char *ip); 00161 00162 /** 00163 * Reset the wifi module 00164 */ 00165 bool reset(); 00166 00167 /** 00168 * Obtains the current instance of the ESP8266 00169 */ 00170 static ESP8266 *getInstance() { 00171 return _inst; 00172 }; 00173 00174 /** 00175 * Send part of a command to the wifi module. 00176 * 00177 * @param cmd string to be sent 00178 * @param len optional length of cmd 00179 * @param sanitize flag indicating if cmd is actually payload and needs to be escaped 00180 * @return true if successful 00181 */ 00182 bool command(const char *cmd); 00183 00184 private: 00185 /** 00186 * Read a character with timeout 00187 * 00188 * @return the character read or -1 on timeout 00189 */ 00190 int serialgetc(); 00191 00192 /** 00193 * Write a character 00194 * 00195 * @param the character which will be written 00196 * @return -1 on timeout 00197 */ 00198 int serialputc(char c); 00199 00200 /** 00201 * Discards echoed characters 00202 * 00203 * @return true if successful 00204 */ 00205 bool discardEcho(); 00206 00207 /** 00208 * Flushes to next prompt 00209 * 00210 * @return true if successful 00211 */ 00212 bool flush(); 00213 00214 00215 00216 /** 00217 * Execute the command sent by command 00218 * 00219 * @param resp_buf pointer to buffer to store response from the wifi module 00220 * @param resp_len len of buffer to store response from the wifi module, is replaced by read length 00221 * @return true if successful 00222 */ 00223 bool execute(char *resp_buffer = 0, int *resp_len = 0); 00224 bool execute_full_length(char *resp_buffer = 0, int *resp_len = 0); 00225 00226 protected: 00227 BufferedSerial _serial; 00228 DigitalOut _reset_pin; 00229 00230 static ESP8266 * _inst; 00231 00232 // TODO WISHLIST: ipv6? 00233 // this requires nodemcu support 00234 char _ip[16]; 00235 00236 int _baud; 00237 int _timeout; 00238 }; 00239 00240 #endif
Generated on Thu Jul 14 2022 16:33:07 by
1.7.2
