Libreria basica para el manejo del ESP01

Dependents:   Gateway_Cotosys Gateway_Cotosys_os5

Revision:
7:8c6f56470ba7
Parent:
6:54b89962c798
Child:
8:ef9014a530cf
--- a/ESP01.cpp	Sat May 25 18:07:23 2019 +0000
+++ b/ESP01.cpp	Tue Jun 11 00:22:45 2019 +0000
@@ -1,7 +1,8 @@
 #include "ESP01.h"
 
 // Constructor
-ESP01::ESP01(PinName tx, PinName rx, int br) : comm(tx, rx) {
+ESP01::ESP01(PinName tx, PinName rx, int br) : comm(tx, rx)
+{
     comm.baud(br);
 }
 
@@ -9,7 +10,8 @@
 ESP01::~ESP01() { }
 
 // Add <CR> + <LF> at the end of the string
-void ESP01::AddEOL(char * s) {
+void ESP01::AddEOL(char * s)
+{
     char k   = strlen(s); // Finds position of NULL character
     s[k]     = '\r';    // switch NULL for <CR>
     s[k + 1] = '\n';    // Add <LF>
@@ -17,28 +19,32 @@
 }
 
 // Add one ASCII character at the end of the string
-void ESP01::AddChar(char * s, char c) {
+void ESP01::AddChar(char * s, char c)
+{
     char k   = strlen(s);
     s[k]     = c;
     s[k + 1] = '\0';
 }
 
 // Sends command to ESP01. Receives the command string
-void ESP01::SendCMD(char* s) {
+void ESP01::SendCMD(char* s)
+{
     comm.printf("%s%s", s, CMD_END);
 }
 
 // Resets the ESP01
-void ESP01::Reset(void) {
+void ESP01::Reset(void)
+{
     SendCMD("AT+RST");
 }
 
 // Receive reply until no character is received after a given timeout in miliseconds
-bool ESP01::RcvReply(char* r, int to) {
+bool ESP01::RcvReply(char* r, int to)
+{
     Timer t;
     strcpy(r, "");
     t.start();
-    
+
     do {
         if(comm.readable()) {
             AddChar(r, comm.getc());
@@ -51,26 +57,30 @@
 }
 
 // Gets the AP list. Parameter: the string to receive the list
-bool ESP01::GetList(char *l) {
+bool ESP01::GetList(char *l)
+{
     SendCMD("AT+CWLAP");
     return RcvReply(l, 5000); // Needs big timeout because it takes long to start replying
 }
 
 // Joins a Wifi AP. Parameters: SSID and Password (strings)
-void ESP01::Join(char *id, char *pwd) {
+void ESP01::Join(char *id, char *pwd)
+{
     char cmd[255];
     sprintf(cmd, "AT+CWJAP=\"%s\",\"%s\"", id, pwd);
     SendCMD(cmd);
 }
 
 // Gets ESP IP. Parameter: string to contain IP
-bool ESP01::GetIP(char *ip) {
+bool ESP01::GetIP(char *ip)
+{
     SendCMD("AT+CIFSR");
     return RcvReply(ip, 2000);
 }
 
 //Defines wifi mode; Parameter: mode; 1= STA, 2= AP, 3=both
-void ESP01::SetMode(WiFiMode mode) {
+void ESP01::SetMode(WiFiMode mode)
+{
     char cmd[15];
     strcpy(cmd, "AT+CWMODE=");
     AddChar(cmd, mode + '0'); // Completes command string
@@ -78,61 +88,71 @@
 }
 
 // Quits the AP
-void ESP01::Quit(void) {
+void ESP01::Quit(void)
+{
     SendCMD("AT+CWQAP");
 }
 
 // Sets single connection
-void ESP01::SetSingle(void) {
+void ESP01::SetSingle(void)
+{
     SendCMD("AT+CIPMUX=0");
 }
 
 // Sets multiple connection
-void ESP01::SetMultiple(void) {
+void ESP01::SetMultiple(void)
+{
     SendCMD("AT+CIPMUX=1");
 }
 
 // Gets connection status. Parameter: string to contain status
-bool ESP01::GetConnStatus(char * st) {
+bool ESP01::GetConnStatus(char * st)
+{
     SendCMD("AT+CIPSTATUS");
     return RcvReply(st, 2000);
 }
 
 // Starts server mode. Parameter: port to be used
-void ESP01::StartServerMode(int port) {
+void ESP01::StartServerMode(int port)
+{
     char rs[25];
     sprintf(rs, "AT+CIPSERVER=1,%d", port);
     SendCMD(rs);
 }
 
 // Close server mode.
-void ESP01::CloseServerMode(void) {
+void ESP01::CloseServerMode(void)
+{
     SendCMD("AT+CIPSERVER=0");
 }
 
-void ESP01::setTransparent(void){
+void ESP01::setTransparent(void)
+{
     SendCMD("AT+CIPMODE=0");
 }
 
-void ESP01::startTCPConn(char *IP, int port){
+void ESP01::startTCPConn(char *IP, int port)
+{
     char rs[100];
     sprintf(rs, "AT+CIPSTART=0,\"TCP\",\"%s\",%d", IP, port);
     SendCMD(rs);
 }
 
-void ESP01::sendURL(char *URL, char* IP, char *command){
+void ESP01::sendURL(char *URL, char* IP, char *command)
+{
     char snd[20], http_cmd[300];
 
     sprintf(http_cmd, "GET %s HTTP/1.1%sHost: %s%sConnection: close%s%s", URL, CMD_END, IP, CMD_END, CMD_END, CMD_END);
     sprintf(snd,"AT+CIPSEND=0,%d",strlen(http_cmd));
     strcpy(command, http_cmd);
-    
+
     SendCMD(snd);
     wait(1);
     SendCMD(http_cmd);
 }
-    
-void ESP01::deepsleep(size_t ms) {
+
+void ESP01::deepsleep(size_t ms)
+{
     char snd[20];
     sprintf(snd, "AT+GSLP=%d", ms);
     SendCMD(snd);
@@ -140,25 +160,29 @@
 
 //------------------   FUNCIONES QUE YO HE AGREGADO  ------------------//
 // Starts SmartConfig
-void ESP01::StartSmartConfig(void){
-    SendCMD("AT+CWSTARTSMART=1");  
+void ESP01::StartSmartConfig(void)
+{
+    SendCMD("AT+CWSTARTSMART=1");
 }
 
 //Disable Echo
-void ESP01::DisableEcho(void) {
+void ESP01::DisableEcho(void)
+{
     SendCMD("ATE0");
 }
 
 //Enable DHCP
-void ESP01::EnableDHCP(void){
+void ESP01::EnableDHCP(void)
+{
     SendCMD("AT+CWDHCP=1,1");
 }
 
 // Receive reply until no character is received after a given timeout in miliseconds
-void ESP01::RcvSingleReply(char * r) {
+void ESP01::RcvSingleReply(char * r)
+{
     bool ended = 0;
     char c;
-    
+
     strcpy(r, "");
     while(!ended) {
         if(comm.readable()) {
@@ -166,17 +190,42 @@
             AddChar(r, c);
         }
         if(c == 0x0D) {
-                ended = 1;
+            ended = 1;
         }
     }
     //AddChar(r, 0x00);
 }
 
 // Gets connection status code. Parameter: string to contain status
-void ESP01::GetConnStatusCode(char * st) {
+void ESP01::GetConnStatusCode(char * st)
+{
     char cmd[15];
     strcpy(cmd, "AT+CIPSTATUS");
     SendCMD(cmd);
     RcvSingleReply(st);
 }
-    
\ No newline at end of file
+
+// Set the Maximum Connections Allowed by Server. Parameter: maximum number of connections
+void ESP01::SetMaxTCPConn(int maxconn)
+{
+    char rs[50];
+    sprintf(rs, "AT+CIPSERVERMAXCONN=%d", maxconn);
+    SendCMD(rs);
+}
+
+// Returns true if data has been received. Parameter: string to contain data received
+bool ESP01::TCPDataAvailable(char *data)
+{
+    return RcvReply(data, 500);
+}
+
+// Send TCP Data. Parameter:
+void ESP01::SendTCPData(int socket,int len, char *data)
+{
+    char i;
+    char rs[50];
+    sprintf(rs, "AT+CIPSEND=%d,%d",socket,len);
+    SendCMD(rs);
+    wait(1);
+    SendCMD(data);   
+}
\ No newline at end of file