For test

Dependencies:   mbed

Committer:
shennongmin
Date:
Thu Feb 05 03:38:10 2015 +0000
Revision:
34:65cd9c6eedb8
Parent:
32:91b3f3162c6a
Child:
35:90be2bc2a492
compile okay

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shennongmin 32:91b3f3162c6a 1 /**
shennongmin 32:91b3f3162c6a 2 * @file ESP8266.h
shennongmin 32:91b3f3162c6a 3 */
shennongmin 10:9d4ec0359a5c 4 #ifndef __ESP8266_H__
shennongmin 10:9d4ec0359a5c 5 #define __ESP8266_H__
shennongmin 4:962bf18523f4 6
shennongmin 7:a11e381ce969 7 #include "mbed.h"
shennongmin 10:9d4ec0359a5c 8 #include "time.h"
shennongmin 10:9d4ec0359a5c 9 #include "ArduinoSerial.h"
shennongmin 7:a11e381ce969 10
shennongmin 34:65cd9c6eedb8 11 /**
shennongmin 34:65cd9c6eedb8 12 * The way of SoftAP encrypstion.
shennongmin 34:65cd9c6eedb8 13 *
shennongmin 34:65cd9c6eedb8 14 */
shennongmin 22:f5d148878815 15 typedef enum {
shennongmin 34:65cd9c6eedb8 16 ESP8266_ECN_OPEN = 0, /**< OPEN */
shennongmin 34:65cd9c6eedb8 17 ESP8266_ECN_WEP = 1, /**< WEP */
shennongmin 34:65cd9c6eedb8 18 ESP8266_ECN_WAP_PSK = 2, /**< WAP_PSK */
shennongmin 34:65cd9c6eedb8 19 ESP8266_ECN_WAP2_PSK = 3, /**< WAP2_PSK */
shennongmin 34:65cd9c6eedb8 20 ESP8266_ECN_WAP_WAP2_PSK = 4, /**< WAP_WAP2_PSK */
shennongmin 22:f5d148878815 21 } ESP8266Encrypstion;
shennongmin 4:962bf18523f4 22
shennongmin 34:65cd9c6eedb8 23 /**
shennongmin 34:65cd9c6eedb8 24 * The ip protocol for communication.
shennongmin 34:65cd9c6eedb8 25 *
shennongmin 34:65cd9c6eedb8 26 * Only TCP or UPD supported.
shennongmin 34:65cd9c6eedb8 27 */
shennongmin 22:f5d148878815 28 typedef enum {
shennongmin 34:65cd9c6eedb8 29 ESP8266_COMM_UDP = 0, /**< UPD */
shennongmin 34:65cd9c6eedb8 30 ESP8266_COMM_TCP = 1, /**< TCP */
shennongmin 22:f5d148878815 31 } ESP8266CommMode;
shennongmin 4:962bf18523f4 32
shennongmin 34:65cd9c6eedb8 33 /**
shennongmin 34:65cd9c6eedb8 34 * The work mode.
shennongmin 34:65cd9c6eedb8 35 *
shennongmin 34:65cd9c6eedb8 36 * Station | SoftAP | Station + SoftAP.
shennongmin 34:65cd9c6eedb8 37 */
shennongmin 22:f5d148878815 38 typedef enum {
shennongmin 34:65cd9c6eedb8 39 ESP8266_MODE_STA = 1, /**< Station */
shennongmin 34:65cd9c6eedb8 40 ESP8266_MODE_SAP = 2, /**< SoftAP */
shennongmin 34:65cd9c6eedb8 41 ESP8266_MODE_STA_SAP = 3, /**< Station + SoftAP */
shennongmin 22:f5d148878815 42 } ESP8266WorkMode;
shennongmin 4:962bf18523f4 43
shennongmin 34:65cd9c6eedb8 44 /**
shennongmin 34:65cd9c6eedb8 45 * The channel for SoftAP.
shennongmin 34:65cd9c6eedb8 46 *
shennongmin 34:65cd9c6eedb8 47 * Only 1 - 13 acceptable.
shennongmin 34:65cd9c6eedb8 48 */
shennongmin 28:c25aff31dcc5 49 typedef enum {
shennongmin 28:c25aff31dcc5 50 ESP8266_CHANNEL_1 = 1,
shennongmin 28:c25aff31dcc5 51 ESP8266_CHANNEL_2,
shennongmin 28:c25aff31dcc5 52 ESP8266_CHANNEL_3,
shennongmin 28:c25aff31dcc5 53 ESP8266_CHANNEL_4,
shennongmin 28:c25aff31dcc5 54 ESP8266_CHANNEL_5,
shennongmin 28:c25aff31dcc5 55 ESP8266_CHANNEL_6,
shennongmin 28:c25aff31dcc5 56 ESP8266_CHANNEL_7,
shennongmin 28:c25aff31dcc5 57 ESP8266_CHANNEL_8,
shennongmin 28:c25aff31dcc5 58 ESP8266_CHANNEL_9,
shennongmin 28:c25aff31dcc5 59 ESP8266_CHANNEL_10,
shennongmin 28:c25aff31dcc5 60 ESP8266_CHANNEL_11,
shennongmin 28:c25aff31dcc5 61 ESP8266_CHANNEL_12,
shennongmin 28:c25aff31dcc5 62 ESP8266_CHANNEL_13,
shennongmin 28:c25aff31dcc5 63 } ESP8266Channel;
shennongmin 4:962bf18523f4 64
shennongmin 34:65cd9c6eedb8 65
shennongmin 32:91b3f3162c6a 66 /**
shennongmin 34:65cd9c6eedb8 67 * Provide methods to manipulate ESP8266 for internet access via WiFi.
shennongmin 32:91b3f3162c6a 68 */
shennongmin 9:95a0ce98e12b 69 class ESP8266
shennongmin 4:962bf18523f4 70 {
shennongmin 29:75185b05d6a4 71 public:
shennongmin 29:75185b05d6a4 72
shennongmin 29:75185b05d6a4 73 /**
shennongmin 29:75185b05d6a4 74 * Constructor.
shennongmin 29:75185b05d6a4 75 *
shennongmin 29:75185b05d6a4 76 * Need an serial port for communication between MCU and ESP8266.
shennongmin 29:75185b05d6a4 77 *
shennongmin 29:75185b05d6a4 78 * @param tx - the TX of serial port.
shennongmin 29:75185b05d6a4 79 * @param rx - the RX of serial port.
shennongmin 29:75185b05d6a4 80 * @param baud_rate - the baud rate of communication(default 9600).
shennongmin 29:75185b05d6a4 81 */
shennongmin 29:75185b05d6a4 82 ESP8266(PinName tx, PinName rx, int baud_rate = 9600);
shennongmin 4:962bf18523f4 83
shennongmin 31:ab3e7ca014c1 84 /**
shennongmin 31:ab3e7ca014c1 85 * Set as station mode and join in ssid with pwd.
shennongmin 31:ab3e7ca014c1 86 *
shennongmin 31:ab3e7ca014c1 87 * @param ssid - SSID of AP to join in.
shennongmin 31:ab3e7ca014c1 88 * @param pwd - PASSWORD of AP to join in.
shennongmin 31:ab3e7ca014c1 89 * @return true if success, false for failure.
shennongmin 31:ab3e7ca014c1 90 */
shennongmin 30:46a560b71e61 91 bool setStationMode(String ssid, String pwd);
shennongmin 31:ab3e7ca014c1 92
shennongmin 31:ab3e7ca014c1 93 /**
shennongmin 31:ab3e7ca014c1 94 * Set as softap mode and start softap.
shennongmin 31:ab3e7ca014c1 95 *
shennongmin 31:ab3e7ca014c1 96 * @param sap_ssid - SSID of its self softap.
shennongmin 31:ab3e7ca014c1 97 * @param sap_pwd - PASSWORD of its self softap.
shennongmin 31:ab3e7ca014c1 98 * @param chl - the channel can be 1, 2, 3, ..., 13.
shennongmin 31:ab3e7ca014c1 99 * @param enc - the method of encrypstion.
shennongmin 31:ab3e7ca014c1 100 * @return true if success, false for failure.
shennongmin 31:ab3e7ca014c1 101 */
shennongmin 31:ab3e7ca014c1 102 bool setSoftAPMode(String sap_ssid, String sap_pwd,
shennongmin 30:46a560b71e61 103 ESP8266Channel chl = ESP8266_CHANNEL_7, ESP8266Encrypstion ecn = ESP8266_ECN_WAP_WAP2_PSK);
shennongmin 30:46a560b71e61 104
shennongmin 31:ab3e7ca014c1 105 /**
shennongmin 31:ab3e7ca014c1 106 * Set as softap + station mode and start softap and join in ssid with pwd.
shennongmin 31:ab3e7ca014c1 107 *
shennongmin 31:ab3e7ca014c1 108 * @param ssid - SSID of AP to join in.
shennongmin 31:ab3e7ca014c1 109 * @param pwd - PASSWORD of AP to join in.
shennongmin 31:ab3e7ca014c1 110 * @param sap_ssid - SSID of its self softap.
shennongmin 31:ab3e7ca014c1 111 * @param sap_pwd - PASSWORD of its self softap.
shennongmin 31:ab3e7ca014c1 112 * @param chl - the channel can be 1, 2, 3, ..., 13.
shennongmin 31:ab3e7ca014c1 113 * @param enc - the method of encrypstion.
shennongmin 31:ab3e7ca014c1 114 * @return true if success, false for failure.
shennongmin 31:ab3e7ca014c1 115 */
shennongmin 30:46a560b71e61 116 bool setStationSoftAPMode(String ssid, String pwd, String sap_ssid, String sap_pwd ,
shennongmin 30:46a560b71e61 117 ESP8266Channel chl = ESP8266_CHANNEL_7, ESP8266Encrypstion ecn = ESP8266_ECN_WAP_WAP2_PSK);
shennongmin 7:a11e381ce969 118
shennongmin 34:65cd9c6eedb8 119 /**
shennongmin 34:65cd9c6eedb8 120 * Start a TCP connection to server or init UDP communication.
shennongmin 34:65cd9c6eedb8 121 */
shennongmin 17:c449356787f1 122 bool ipConfig(uint8_t type, String addr, int port, uint8_t mux = 0, uint8_t id = 0);
shennongmin 4:962bf18523f4 123
shennongmin 34:65cd9c6eedb8 124
shennongmin 34:65cd9c6eedb8 125 /**
shennongmin 34:65cd9c6eedb8 126 * Send data in sigle connection mode(mux = 0).
shennongmin 34:65cd9c6eedb8 127 *
shennongmin 34:65cd9c6eedb8 128 */
shennongmin 23:4cec7b9e3715 129 bool send(String str);
shennongmin 7:a11e381ce969 130
shennongmin 34:65cd9c6eedb8 131 /**
shennongmin 34:65cd9c6eedb8 132 * Send data in multiple connection mode(mux = 1).
shennongmin 34:65cd9c6eedb8 133 *
shennongmin 34:65cd9c6eedb8 134 */
shennongmin 23:4cec7b9e3715 135 bool send(uint8_t id, String str);
shennongmin 34:65cd9c6eedb8 136
shennongmin 34:65cd9c6eedb8 137 /**
shennongmin 34:65cd9c6eedb8 138 * Start to receive data from network.
shennongmin 34:65cd9c6eedb8 139 */
shennongmin 23:4cec7b9e3715 140 int recvData(char *buf);
shennongmin 4:962bf18523f4 141
shennongmin 34:65cd9c6eedb8 142 /**
shennongmin 34:65cd9c6eedb8 143 * Get the current id of data received via member method:recvData in multiple connection mode.
shennongmin 34:65cd9c6eedb8 144 */
shennongmin 34:65cd9c6eedb8 145 int getMuxID(void);
shennongmin 34:65cd9c6eedb8 146
shennongmin 34:65cd9c6eedb8 147 /**
shennongmin 34:65cd9c6eedb8 148 * Reset the module.
shennongmin 34:65cd9c6eedb8 149 */
shennongmin 29:75185b05d6a4 150 bool reset(void);
shennongmin 7:a11e381ce969 151
shennongmin 34:65cd9c6eedb8 152
shennongmin 34:65cd9c6eedb8 153 /**
shennongmin 34:65cd9c6eedb8 154 * Set work mode.
shennongmin 34:65cd9c6eedb8 155 *
shennongmin 34:65cd9c6eedb8 156 */
shennongmin 17:c449356787f1 157 bool confMode(uint8_t mode);
shennongmin 7:a11e381ce969 158
shennongmin 34:65cd9c6eedb8 159
shennongmin 34:65cd9c6eedb8 160 /**
shennongmin 34:65cd9c6eedb8 161 * Join in AP.
shennongmin 34:65cd9c6eedb8 162 *
shennongmin 34:65cd9c6eedb8 163 */
shennongmin 7:a11e381ce969 164 bool confJAP(String ssid , String pwd);
shennongmin 7:a11e381ce969 165
shennongmin 34:65cd9c6eedb8 166
shennongmin 34:65cd9c6eedb8 167 /**
shennongmin 34:65cd9c6eedb8 168 * Set SoftAP Parameters.
shennongmin 34:65cd9c6eedb8 169 *
shennongmin 34:65cd9c6eedb8 170 */
shennongmin 10:9d4ec0359a5c 171 bool confSAP(String ssid , String pwd , uint8_t chl , uint8_t ecn);
shennongmin 4:962bf18523f4 172
shennongmin 34:65cd9c6eedb8 173
shennongmin 34:65cd9c6eedb8 174 /**
shennongmin 34:65cd9c6eedb8 175 * Get current work mode.
shennongmin 34:65cd9c6eedb8 176 *
shennongmin 34:65cd9c6eedb8 177 */
shennongmin 7:a11e381ce969 178 String showMode(void);
shennongmin 7:a11e381ce969 179
shennongmin 34:65cd9c6eedb8 180
shennongmin 34:65cd9c6eedb8 181 /**
shennongmin 34:65cd9c6eedb8 182 * Get the list of Access Points available.
shennongmin 34:65cd9c6eedb8 183 *
shennongmin 34:65cd9c6eedb8 184 */
shennongmin 7:a11e381ce969 185 String showAP(void);
shennongmin 7:a11e381ce969 186
shennongmin 34:65cd9c6eedb8 187 /**
shennongmin 34:65cd9c6eedb8 188 * Get the SSID of AP joined already.
shennongmin 34:65cd9c6eedb8 189 */
shennongmin 7:a11e381ce969 190 String showJAP(void);
shennongmin 7:a11e381ce969 191
shennongmin 34:65cd9c6eedb8 192 /**
shennongmin 34:65cd9c6eedb8 193 * Quit the AP joined before.
shennongmin 34:65cd9c6eedb8 194 */
shennongmin 7:a11e381ce969 195 bool quitAP(void);
shennongmin 7:a11e381ce969 196
shennongmin 34:65cd9c6eedb8 197
shennongmin 34:65cd9c6eedb8 198 /**
shennongmin 34:65cd9c6eedb8 199 * Get SoftAP Parameters.
shennongmin 34:65cd9c6eedb8 200 *
shennongmin 34:65cd9c6eedb8 201 */
shennongmin 7:a11e381ce969 202 String showSAP(void);
shennongmin 4:962bf18523f4 203
shennongmin 34:65cd9c6eedb8 204 /**
shennongmin 34:65cd9c6eedb8 205 * Get the status of connection.
shennongmin 34:65cd9c6eedb8 206 *
shennongmin 34:65cd9c6eedb8 207 */
shennongmin 7:a11e381ce969 208 String showStatus(void);
shennongmin 7:a11e381ce969 209
shennongmin 34:65cd9c6eedb8 210 /**
shennongmin 34:65cd9c6eedb8 211 * Get the connection mode(sigle or multiple)
shennongmin 34:65cd9c6eedb8 212 */
shennongmin 7:a11e381ce969 213 String showMux(void);
shennongmin 7:a11e381ce969 214
shennongmin 34:65cd9c6eedb8 215 /**
shennongmin 34:65cd9c6eedb8 216 * Set the connection mode(sigle or multiple)
shennongmin 34:65cd9c6eedb8 217 */
shennongmin 17:c449356787f1 218 bool confMux(int mux);
shennongmin 7:a11e381ce969 219
shennongmin 34:65cd9c6eedb8 220 /**
shennongmin 34:65cd9c6eedb8 221 * Create new tcp or udp connection in sigle connection mode.
shennongmin 34:65cd9c6eedb8 222 */
shennongmin 10:9d4ec0359a5c 223 bool newMux(uint8_t type, String addr, int port);
shennongmin 4:962bf18523f4 224
shennongmin 34:65cd9c6eedb8 225 /**
shennongmin 34:65cd9c6eedb8 226 * Create new tcp or udp connection in multiple connection mode)(id:0-4).
shennongmin 34:65cd9c6eedb8 227 */
shennongmin 10:9d4ec0359a5c 228 bool newMux(uint8_t id, uint8_t type, String addr, int port);
shennongmin 7:a11e381ce969 229
shennongmin 34:65cd9c6eedb8 230 /**
shennongmin 34:65cd9c6eedb8 231 * Close tcp or udp in sigle connection mode.
shennongmin 34:65cd9c6eedb8 232 */
shennongmin 7:a11e381ce969 233 void closeMux(void);
shennongmin 7:a11e381ce969 234
shennongmin 34:65cd9c6eedb8 235 /**
shennongmin 34:65cd9c6eedb8 236 * Close tcp or udp in multiple connection mode.
shennongmin 34:65cd9c6eedb8 237 */
shennongmin 10:9d4ec0359a5c 238 void closeMux(uint8_t id);
shennongmin 7:a11e381ce969 239
shennongmin 34:65cd9c6eedb8 240 /**
shennongmin 34:65cd9c6eedb8 241 * Show the current ip address.
shennongmin 34:65cd9c6eedb8 242 */
shennongmin 7:a11e381ce969 243 String showIP(void);
shennongmin 7:a11e381ce969 244
shennongmin 34:65cd9c6eedb8 245 /**
shennongmin 34:65cd9c6eedb8 246 * Start or stop the TCP server.
shennongmin 34:65cd9c6eedb8 247 */
shennongmin 10:9d4ec0359a5c 248 bool confServer(uint8_t mode, int port);
shennongmin 4:962bf18523f4 249
shennongmin 10:9d4ec0359a5c 250 private:
shennongmin 34:65cd9c6eedb8 251 ArduinoSerial m_uart; /* The UART to communicate with ESP8266 */
shennongmin 29:75185b05d6a4 252 int m_mux_id;
shennongmin 4:962bf18523f4 253 };
shennongmin 9:95a0ce98e12b 254
shennongmin 10:9d4ec0359a5c 255 #endif /* #ifndef __ESP8266_H__ */