Jack Hansdampf / ESP8266WebserverGSOE_F401
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ESP8266Webserver.h Source File

ESP8266Webserver.h

00001 /** My ESP8266Webserver class.
00002  *  Used for Webserver on Microcontroller.
00003  *  Grundeinstellungen und Definitionen: Siehe Einstellungen.h
00004  *
00005  * Example:
00006  * @code
00007  * #include "mbed.h"
00008  * #include "ESP8266Webserver.h"
00009  * #include "LCD.h"
00010 
00011  * lcd myLCD;
00012  * ESP8266Webserver myWebserver;
00013  * AnalogIn poti(PA_0);
00014  * DigitalOut myled(PC_0);
00015  * string getRootPage()
00016  * {
00017  *       string webpage;
00018  *       webpage="<!DOCTYPE html>";
00019  *       //HTML
00020  *       webpage+="<html>";
00021  *       webpage+="<head>";
00022  *       webpage+="<title>STM32 HTTP</title>";
00023  *       webpage+="</head>";
00024  *       webpage+="<body>";
00025  *       webpage+="<h1>WIFI mit STM32 ESP01</h1>\n";
00026  *       webpage+="<p>Poti:"+to_string(poti)+"</p>\n"; 
00027  *       webpage+="<a href=\"ledAn\"><button>ON</button></a>\n";      
00028  *       webpage+="<a href=\"ledAus\"><button>OFF</button></a>\n";
00029  *       webpage+="</body>";
00030  *       webpage+="</html>";
00031  *       return webpage;
00032  * }
00033  * void testfunc()
00034  * {
00035  *     myWebserver.send(200,"text/html",getRootPage());
00036  * }
00037  * void testfunc2()
00038  * {
00039  *     myled=0;
00040  *     myWebserver.send(200,"text/html",getRootPage());
00041  * }
00042  * void testfunc3()
00043  * {
00044  *     myled=1;
00045  *     myWebserver.send(200,"text/html",getRootPage());
00046  * }
00047  * int main() {  
00048  *     myWebserver.on("ledAus",&testfunc2);
00049  *     myWebserver.on("ledAn",&testfunc3);
00050  *     myWebserver.on("/",&testfunc);
00051  *     myWebserver.begin();    
00052  *     myLCD.clear();
00053  *     myLCD.cursorpos(0);
00054  *     myLCD.printf("%s",myWebserver.gibIP());
00055  *     while(1)  {
00056  *          myWebserver.handleClient();
00057  *     }
00058  * }
00059  * @endcode
00060  */
00061 #include "mbed.h"
00062 //#include "string"
00063 #include "Einstellungen.h"
00064 
00065 
00066 class ESP8266Webserver
00067 {   
00068     private:   
00069 
00070     int hs_count=0;
00071     Callback< void()> cbs[10];
00072     char hs[10][20];
00073     char recbuf[1000];
00074     bool beinhaltet(char* suchstring);
00075     int port=80;
00076     bool dbg;
00077     int clientID[10]={0,0,0,0,0,0,0,0,0,0};
00078     int clientIdx=0;
00079     char sendstring[1000];
00080     BufferedSerial *_serial;
00081     char ipadr[100];
00082     ATCmdParser *_parser;
00083 
00084     bool gefunden;
00085     string ipad=ip;
00086     
00087     
00088 
00089     public:
00090     char suchergebnis[20];
00091 /** Aufrufzähler (öffentliches Attribut)
00092 */ 
00093     int Aufrufe=0;
00094     
00095 /** Create Webserver instance
00096 */        
00097     ESP8266Webserver();
00098     
00099 /** Legt die Callback-Operationen fest
00100  *
00101  * @param handlestring Suchtext im Request des Clients
00102  * @param func Callback-Operation falls der handlestring im Request gefunden wurde
00103  * @returns
00104  *   0 on success,
00105  *   -1 on error
00106 */
00107     int on(const char* handlestring,Callback< void()> func);
00108 
00109 /** Startet den Webserver
00110  * @returns
00111  *   0 on success,
00112  *   -1 on error
00113 */
00114     int begin(void);
00115 
00116 /** Prüft in der Endlosschleife zyklisch, ob neue Anfragen (Requests) vorliegen
00117  *
00118  * @returns
00119  *   0 on success,
00120  *   -1 on error
00121 */
00122     int handleClient(void);
00123 
00124 /** Schickt eine Antwort (response) zum Client
00125  *
00126  * @param HTTPStatus Statuscode (200 = alles in Ordnung)
00127  * @param Mimetype z.B. "text/html"
00128  * @param webseite String (const char*) der die Webseite enthält
00129  * @returns
00130  *   0 on success,
00131  *   -1 on error
00132 */
00133     int send(int HTTPStatus,const char* Mimetype, const char* webseite);
00134     int send(int HTTPStatus,const char* Mimetype, const char* webseite,int length);
00135 
00136 /** Schickt eine Antwort (response) zum Client
00137  *
00138  * @param HTTPStatus Statuscode (200 = alles in Ordnung)
00139  * @param Mimetype z.B. "text/html"
00140  * @param webseite String der die Webseite enthält
00141  * @returns
00142  *   0 on success,
00143  *   -1 on error
00144 */
00145     int send(int HTTPStatus,const char* Mimetype, std::string webseite);
00146     
00147 /** Findet einen Wert-String zu dem Suchstring in dem Request
00148  * Damit können Inputs in Formularen (Textfelder, Slider, Textboxen usw.) 
00149  * ausgewertet werden
00150  * @param suchstring nach diesem String wird gesucht
00151  * @returns
00152  *   Wertstring
00153 */
00154     const char* gibWert(const char* suchstring);
00155     
00156 /** Findet einen Wert-String zu dem Suchstring in dem Request
00157  * Damit können Inputs in Formularen (Textfelder, Slider, Textboxen usw.) 
00158  * ausgewertet werden
00159  * @param suchstring nach diesem String wird gesucht
00160  * @returns
00161  *   Wertstring
00162 */
00163     const char* gibWert(std::string suchstring);
00164     void debugOn(bool pD);
00165     void listAPs();
00166     
00167 /** Gibt die IP-Adresse des Servers als String zurück
00168  *
00169  * @returns
00170  *   Wertstring
00171 */
00172     char* gibIP();
00173 
00174 
00175 };