ESP8266 library to get and send data.

Fork of ESP8266 by Janhavi Kulkarni

ESP8266.h

Committer:
Wosser1sProductions
Date:
2016-10-21
Revision:
5:5cc7894bb8cb
Parent:
4:c05f7a1b4e47

File content as of revision 5:5cc7894bb8cb:

#ifndef ESP8266_H
#define ESP8266_H

#include <string>
#include "mbed.h"

#define CMD_END     "\r\n"

/**
 *  Info about host to send data.
 *      Owner:      Name of who owns the host
 *      Host:       IP or address
 *      GETstring:  String to fill in sensor ID and data
 */
typedef struct {
    char* Owner;
    char* Host;
    char* GETstring;
} HostInfo;

/**
 *  Info about WiFi networks
 *      Owner:      Name of who owns the network
 *      SSID:       Name of the network
 *      password:   Password of the network
 */
typedef struct {
    char* Owner;
    char* SSID;
    char* password;
} WifiInfo;

typedef enum { STATION = 1, ACCESS_POINT, BOTH} WiFiMode;

class ESP8266 {
    public:
        /**
         *  ESP8266 constructor
         *
         *  @param tx TX pin
         *  @param rx RX pin
         *  @param br Baud Rate
         */
        ESP8266(PinName tx, PinName rx, int br);
        
        /**
         *  ESP8266 destructor
         */
        ~ESP8266();

        void SendCMD(char *s);
        void Reset(void);
        bool RcvReply(char *r, int to);
        bool GetList(char *l);
        void Join(char *id, char *pwd);
        bool GetIP(char *ip);
        void SetMode(WiFiMode mode);
        void Quit(void);
        void SetSingle(void);
        void SetMultiple(void);
        bool GetConnStatus(char *st);
        void StartServerMode(int port);
        void CloseServerMode(void);
        void setTransparent(void);
        void startTCPConn(char *IP, int port);
        void sendURL(char *URL, char *IP, char *command);
        
        void deepsleep(size_t ms);

    private:
        Serial comm;
        void AddEOL(char * s);
        void AddChar(char * s, char c);
};
  
#endif //ESP8266_H
/*
    COMMAND TABLE
    Basic:
    AT: Just to generate "OK" reply
    
    Wifi:
    AT+RST:  restart the module
    AT+CWMODE: define wifi mode; AT+CWMODE=<mode> 1= Sta, 2= AP, 3=both; Inquiry: AT+CWMODE? or AT+CWMODE=?
    AT+CWJAP: join the AP wifi; AT+ CWJAP =<ssid>,< pwd > - ssid = ssid, pwd = wifi password, both between quotes; Inquiry: AT+ CWJAP?
    AT+CWLAP: list the AP wifi
    AT+CWQAP: quit the AP wifi; Inquiry: AT+CWQAP=?  
    * AT+CWSAP: set the parameters of AP; AT+CWSAP= <ssid>,<pwd>,<chl>,<ecn> - ssid, pwd, chl = channel, ecn = encryption; Inquiry: AT+CWJAP?
    
    TCP/IP:
    AT+CIPSTATUS: get the connection status
    * AT+CIPSTART: set up TCP or UDP connection 1)single connection (+CIPMUX=0) AT+CIPSTART= <type>,<addr>,<port>; 2) multiple connection (+CIPMUX=1) AT+CIPSTART= <id><type>,<addr>, <port> - id = 0-4, type = TCP/UDP, addr = IP address, port= port; Inquiry: AT+CIPSTART=?
    * AT+CIPSEND: send data; 1)single connection(+CIPMUX=0) AT+CIPSEND=<length>; 2) multiple connection (+CIPMUX=1) AT+CIPSEND= <id>,<length>; Inquiry: AT+CIPSEND=?
    * AT+CIPCLOSE: close TCP or UDP connection; AT+CIPCLOSE=<id> or AT+CIPCLOSE; Inquiry: AT+CIPCLOSE=?
    AT+CIFSR: Get IP address; Inquiry: AT+ CIFSR=?
    AT+CIPMUX:  set mutiple connection; AT+ CIPMUX=<mode> - 0 for single connection 1 for mutiple connection; Inquiry: AT+CIPMUX?
    AT+CIPSERVER: set as server; AT+ CIPSERVER= <mode>[,<port> ] - mode 0 to close server mode, mode 1 to open; port = port; Inquiry: AT+CIFSR=?
    * +IPD: received data
*/