Project in FIBO

Fork of ESP8266 by Janhavi Kulkarni

Files at this revision

API Documentation at this revision

Comitter:
Pairam
Date:
Tue Dec 12 11:39:55 2017 +0000
Parent:
3:4f24e7e803a1
Commit message:
Project

Changed in this revision

ESP8266.cpp Show annotated file Show diff for this revision Revisions of this file
ESP8266.h Show annotated file Show diff for this revision Revisions of this file
diff -r 4f24e7e803a1 -r 8dfe0574a040 ESP8266.cpp
--- a/ESP8266.cpp	Sat Jun 11 14:05:06 2016 +0000
+++ b/ESP8266.cpp	Tue Dec 12 11:39:55 2017 +0000
@@ -1,10 +1,11 @@
 #include "ESP8266.h"
 #define HTTPCMD "GET "
-#define protocol " HTTP/1.0\n\n"
+#define protocol " HTTP/1.1\n\n"
 
 
 // Constructor
-ESP8266::ESP8266(PinName tx, PinName rx, int br) : comm(tx, rx) {
+ESP8266::ESP8266(PinName tx, PinName rx, int br) : comm(tx, rx)
+{
     comm.baud(br);
 }
 
@@ -12,7 +13,8 @@
 ESP8266::~ESP8266() { }
 
 // Add <CR> + <LF> at the end of the string
-void ESP8266::AddEOL(char * s) {
+void ESP8266::AddEOL(char * s)
+{
     char k;
     k = strlen(s); // Finds position of NULL character
     s[k] = 0x0D; // switch NULL for <CR>
@@ -21,7 +23,8 @@
 }
 
 // Add one ASCII character at the end of the string
-void ESP8266::AddChar(char * s, char c) {
+void ESP8266::AddChar(char * s, char c)
+{
     char k;
     k = strlen(s);
     s[k] = c;
@@ -29,10 +32,11 @@
 }
 
 // Converts integer number to null-terminated string
-void ESP8266::itoa(int n, char * s) {
+void ESP8266::itoa(int n, char * s)
+{
     char k = 0;
     char r[11];
-    
+
     if(n == 0) {
         s[0] = '0';
         s[1] = 0;
@@ -52,24 +56,27 @@
 }
 
 // Sends command to ESP8266. Receives the command string
-void ESP8266::SendCMD(char * s) {
+void ESP8266::SendCMD(char * s)
+{
     AddEOL(s);
     comm.printf("%s", s);
 }
 
 // Resets the ESP8266
-void ESP8266::Reset(void) {
+void ESP8266::Reset(void)
+{
     char rs[10];
     strcpy(rs, "AT+RST");
     SendCMD(rs);
 }
 
 // Receive reply until no character is received after a given timeout in miliseconds
-bool ESP8266::RcvReply(char * r, int to) {
+bool ESP8266::RcvReply(char * r, int to)
+{
     Timer t;
     bool ended = 0;
     char c;
-    
+
     strcpy(r, "");
     t.start();
     while(!ended) {
@@ -79,7 +86,7 @@
             t.start();
         }
         if(t.read_ms() > to) {
-                ended = 1;
+            ended = 1;
         }
     }
     AddChar(r, 0x00);
@@ -87,7 +94,8 @@
 }
 
 // Gets the AP list. Parameter: the string to receive the list
-void ESP8266::GetList(char * l) {
+void ESP8266::GetList(char * l)
+{
     char rs[15];
     strcpy(rs, "AT+CWLAP");
     SendCMD(rs);
@@ -95,7 +103,8 @@
 }
 
 // Joins a Wifi AP. Parameters: SSID and Password (strings)
-void ESP8266::Join(char * id, char * pwd) {
+void ESP8266::Join(char * id, char * pwd)
+{
     char cmd[255];
     strcpy(cmd, "AT+CWJAP=");
     AddChar(cmd, 0x22);
@@ -109,45 +118,79 @@
 }
 
 // Gets ESP IP. Parameter: string to contain IP
-void ESP8266::GetIP(char * ip) {
+void ESP8266::GetIP(char * ip)
+{
     char cmd[15];
     strcpy(cmd, "AT+CIFSR");
     SendCMD(cmd);
     RcvReply(ip, 2000);
 }
 
+void ESP8266::GetCon(char * ipp)
+{
+    char cmd[15];
+    strcpy(cmd, "AT+CWJAP?");
+    SendCMD(cmd);
+    RcvReply(ipp, 2000);
+}
+
 //Defines wifi mode; Parameter: mode; 1= STA, 2= AP, 3=both
-void ESP8266::SetMode(char mode) {
+void ESP8266::SetMode(char mode)
+{
     char cmd[15];
     strcpy(cmd, "AT+CWMODE=");
     mode = mode + 0x30; // Converts number into corresponding ASCII character
     AddChar(cmd, mode); // Completes command string
     SendCMD(cmd);
 }
+void ESP8266::Check(char * i)
+{
+    char cmd[15];
+    if(comm.readable()) {
+        comm.gets(cmd,100);}
+        strcpy(i,cmd);
+        
+}
 
 // Quits the AP
-void ESP8266::Quit(void) {
+void ESP8266::Quit(void)
+{
     char cmd[15];
     strcpy(cmd, "AT+CWQAP");
     SendCMD(cmd);
 }
 
 // Sets single connection
-void ESP8266::SetSingle(void) {
+void ESP8266::SetSingle(void)
+{
     char cmd[15];
     strcpy(cmd, "AT+CIPMUX=0");
     SendCMD(cmd);
 }
 
 // Sets multiple connection
-void ESP8266::SetMultiple(void) {
+void ESP8266::SetMultiple(void)
+{
     char rs[15];
     strcpy(rs, "AT+CIPMUX=1");
     SendCMD(rs);
 }
+void ESP8266::Close(void)
+{
+    char rs[15];
+    strcpy(rs, "AT+CIPCLOSE");
+    SendCMD(rs);
+}
+void ESP8266::Disconnect(void)
+{
+    char rs[15];
+    strcpy(rs, "AT+CWQAP");
+    SendCMD(rs);
+}
 
 // Gets connection status. Parameter: string to contain status
-void ESP8266::GetConnStatus(char * st) {
+void ESP8266::GetConnStatus(char * st)
+{
     char cmd[15];
     strcpy(cmd, "AT+CIPSTATUS");
     SendCMD(cmd);
@@ -155,7 +198,8 @@
 }
 
 // Starts server mode. Parameter: port to be used
-void ESP8266::StartServerMode(int port) {
+void ESP8266::StartServerMode(int port)
+{
     char rs[25];
     char t[4];
     strcpy(rs, "AT+CIPSERVER=1,");
@@ -165,22 +209,27 @@
 }
 
 // Close server mode.
-void ESP8266::CloseServerMode(void) {
+void ESP8266::CloseServerMode(void)
+{
     char rs[20];
     strcpy(rs, "AT+CIPSERVER=0");
     SendCMD(rs);
 }
 
-void ESP8266::setTransparent(void){
+void ESP8266::setTransparent(void)
+{
     char rs[20];
     strcpy(rs, "AT+CIPMODE=0");
     SendCMD(rs);
 }
 
-void ESP8266::startTCPConn(char *IP, int port){
+void ESP8266::startTCPConn(char *IP, int port, char * data )
+{
     char rs[100];
-    sprintf(rs, "AT+CIPSTART=\"TCP\",\"%s\",%d", IP, port);
+    sprintf(rs, "AT+CIPSTART=4,\"TCP\",\"%s\",%d", IP, port);
     SendCMD(rs);
+    RcvReply(data, 5000);
+    
 }
 
 void ESP8266::sendURL(char *URL, char *command){
@@ -189,14 +238,29 @@
     strcpy(http_cmd, HTTPCMD);
     
     strcat(http_cmd, URL);
-    strcat(http_cmd, protocol);
     
     strcpy(url, http_cmd);
-    sprintf(snd,"AT+CIPSENDEX=%d",strlen(url));
+    sprintf(snd,"AT+CIPSEND=4,%d",strlen(url));
     strcpy(command, url);
     SendCMD(snd);
-    wait(3);
     SendCMD(url);
 }
+
+
+void ESP8266::sendURL(char *URL, char *command, char * data)
+{
+    char url[300], snd[300], http_cmd[300];
+
+    strcpy(http_cmd, HTTPCMD);
+    strcat(http_cmd, URL);
+    strcpy(url, http_cmd);
     
-    
\ No newline at end of file
+
+    sprintf(snd,"AT+CIPSEND=4,%d",strlen(url));
+    strcpy(command, url);
+    SendCMD(snd);
+    SendCMD(url);
+    RcvReply(data, 15000);
+}
+
+
diff -r 4f24e7e803a1 -r 8dfe0574a040 ESP8266.h
--- a/ESP8266.h	Sat Jun 11 14:05:06 2016 +0000
+++ b/ESP8266.h	Tue Dec 12 11:39:55 2017 +0000
@@ -27,16 +27,21 @@
 void GetList(char * l);
 void Join(char * id, char * pwd);
 void GetIP(char * ip);
+void Check(char * i);
+void GetCon(char * ipp);
 void SetMode(char mode);
 void Quit(void);
+void Close(void);
+void Disconnect(void);
 void SetSingle(void);
 void SetMultiple(void);
 void GetConnStatus(char * st);
 void StartServerMode(int port);
 void CloseServerMode(void);
 void setTransparent(void);
-void startTCPConn(char * IP, int port);
+void startTCPConn(char *IP, int port, char * data );
 void sendURL(char *URL, char *command);
+void sendURL(char *URL, char *command, char * data);
 
 private:
 Serial comm;