/* Some random cgi routines. Used in the LED example and the page that returns the entire flash as a binary. Also handles the hit counter on the main page. */ /* * ---------------------------------------------------------------------------- * "THE BEER-WARE LICENSE" (Revision 42): * Jeroen Domburg wrote this file. As long as you retain * this notice you can do whatever you want with this stuff. If we meet some day, * and you think this stuff is worth it, you can buy me a beer in return. * ---------------------------------------------------------------------------- */ #include #include #include #include #include "cgi.h" #include "io.h" //cause I can't be bothered to write an ioGetLed() static char currLedState=0; //Cgi that turns the LED on or off according to the 'led' param in the POST data int ICACHE_FLASH_ATTR cgiLed(HttpdConnData *connData) { int len; char buff[1024]; if (connData->conn==NULL) { //Connection aborted. Clean up. return HTTPD_CGI_DONE; } len=httpdFindArg(connData->post->buff, "led", buff, sizeof(buff)); if (len!=0) { currLedState=atoi(buff); ioLed(currLedState); } httpdRedirect(connData, "led.tpl"); return HTTPD_CGI_DONE; } //Template code for the led page. int ICACHE_FLASH_ATTR tplLed(HttpdConnData *connData, char *token, void **arg) { char buff[128]; if (token==NULL) return HTTPD_CGI_DONE; strcpy(buff, "Unknown"); if (strcmp(token, "ledstate")==0) { if (currLedState) { strcpy(buff, "on"); } else { strcpy(buff, "off"); } } httpdSend(connData, buff, -1); return HTTPD_CGI_DONE; } static int hitCounter=0; //Template code for the counter on the index page. int ICACHE_FLASH_ATTR tplCounter(HttpdConnData *connData, char *token, void **arg) { char buff[128]; if (token==NULL) return HTTPD_CGI_DONE; if (strcmp(token, "counter")==0) { hitCounter++; sprintf(buff, "%d", hitCounter); } httpdSend(connData, buff, -1); return HTTPD_CGI_DONE; }