Provide an easy-to-use way to manipulate ESP8266.

Dependencies:   ArduinoAPI

Dependents:   WeeESP8266_TCPClientMultiple WeeESP8266_TCPClientSingle WeeESP8266_TCPServer WeeESP8266_UDPClientMultiple ... more

Revision:
1:edc634cad906
Parent:
0:d3b93948c925
--- a/ESP8266AT.h	Thu Feb 05 08:22:09 2015 +0000
+++ b/ESP8266AT.h	Thu Feb 05 10:21:21 2015 +0000
@@ -1,6 +1,140 @@
+/**
+ * @file ESP8266AT.h
+ * @brief The definition of class ESP8266AT. 
+ * @author Wu Pengfei<pengfei.wu@itead.cc> 
+ * @date 2015.02
+ * 
+ * @par Copyright:
+ * Copyright (c) 2015 ITEAD Intelligent Systems Co., Ltd. \n\n
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version. \n\n
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
 #ifndef __ESP8266AT_H__
 #define __ESP8266AT_H__
 
+#include "ArduinoAPI.h"
 
+/**
+ * Provide an easy-to-use way to manipulate ESP8266. 
+ */
+class ESP8266AT {
+ public:
+ 
+    /* Constructors */
+    ESP8266AT(PinName tx, PinName rx, int32_t baud_rate = 9600);
+    
+    /** 
+     * Verify ESP8266 live or not. 
+     *
+     * Actually, this method will send command "AT" to ESP8266 and waiting for "OK". 
+     * 
+     * @retval true - alive.
+     * @retval false - dead.
+     */
+    bool kick(void);
+    
+    /**
+     * Restart ESP8266 by "AT+RST". 
+     *
+     * This method will take 3 seconds or more. 
+     *
+     * @retval true - success.
+     * @retval false - failure.
+     */
+    bool restart(void);
+    
+    /**
+     * Get the version of AT Command Set. 
+     * 
+     * @return the string of version. 
+     */
+    String getVersion(void);
+    
+    /**
+     * Set operation mode to staion. 
+     * 
+     * @retval true - success.
+     * @retval false - failure.
+     */
+    bool setOprToStation(void);
+    
+    /**
+     * Set operation mode to softap. 
+     * 
+     * @retval true - success.
+     * @retval false - failure.
+     */
+    bool setOprToSoftAP(void);
+    
+    /**
+     * Set operation mode to station + softap. 
+     * 
+     * @retval true - success.
+     * @retval false - failure.
+     */
+    bool setOprToStationSoftAP(void);
+    
+    /**
+     * Search available AP list and return it.
+     * 
+     * @return the list of available APs. 
+     * @note This method will occupy a lot of memeory(hundreds of Bytes to a couple of KBytes). 
+     *  Do not call this method unless you must and ensure that your board has enough memery left.
+     */
+    String getAPList(void);
+    
+    /**
+     * Join in AP. 
+     *
+     * @param ssid - SSID of AP to join in. 
+     * @param pwd - Password of AP to join in. 
+     * @retval true - success.
+     * @retval false - failure.
+     * @note This method will take a couple of seconds. 
+     */
+    bool joinAP(String ssid, String pwd);
+    
+    /**
+     * Leave AP joined before. 
+     *
+     * @retval true - success.
+     * @retval false - failure.
+     */
+    bool leaveAP(void);
+    
+    /**
+     * Set SoftAP parameters. 
+     * 
+     * @param ssid - SSID of SoftAP. 
+     * @param pwd - PASSWORD of SoftAP. 
+     * @param chl - the channel (1 - 13, default: 7). 
+     * @param ecn - the way of encrypstion (0 - OPEN, 1 - WEP, 
+     *  2 - WPA_PSK, 3 - WPA2_PSK, 4 - WPA_WPA2_PSK, default: 0). 
+     * @note This method should not be called when station mode. 
+     */
+    bool setSoftAPParam(String ssid, String pwd, uint8_t chl = 7, uint8_t ecn = 0);
+    
+    /**
+     * Get the IP list of devices connected to SoftAP. 
+     * 
+     * @return the list of IP.
+     * @note This method should not be called when station mode. 
+     */
+    String getDeviceIP(void);
+    
+    
+ private:
+    ArduinoSerial m_uart; /* The UART to communicate with ESP8266 */
+ 
+};
 
 #endif /* #ifndef __ESP8266AT_H__ */
\ No newline at end of file