diff --git a/README.md b/README.md index bc98d22b..22802ba7 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Home page :
System Configuration Page:
-Access Point Configuation Page: +Access Point Configuration Page:
Client Configuration Page:
diff --git a/esp8266/command.cpp b/esp8266/command.cpp index 71d0495b..a37f47dd 100644 --- a/esp8266/command.cpp +++ b/esp8266/command.cpp @@ -66,60 +66,93 @@ void COMMAND::execute_command(int cmd,String cmd_params) void COMMAND::check_command(String buffer) { String ESP_Command; - //look for ESP command - //is there a first part ? - int ESPpos = buffer.indexOf("[ESP"); - int Tpos = buffer.indexOf("T:"); - int Xpos = buffer.indexOf("X:"); - int Ypos = buffer.indexOf("Y:"); - int Zpos = buffer.indexOf("Z:"); - int Speedpos = buffer.indexOf("SpeedMultiply:"); - int Flowpos = buffer.indexOf("FlowMultiply:"); - int Errorpos= buffer.indexOf("Error:"); - int Infopos= buffer.indexOf("Info:"); - int Statuspos= buffer.indexOf("Status:"); - if (ESPpos>-1) - {//is there the second part? - int ESPpos2 = buffer.indexOf("]",ESPpos); - if (ESPpos2>-1) - { //Split in command and parameters - String cmd_part1=buffer.substring(ESPpos+4,ESPpos2); - String cmd_part2=""; - //is there space for parameters? - if (ESPpos2-1) + { + Serial.print("Starting"); + start_list=system_get_time(); + bfileslist=true; + web_interface->fileslist.clear(); } - } - //check for temperature - if (Tpos>-1) - { - //look for valid temperature answer - int slashpos = buffer.indexOf(" /",Tpos); - int spacepos = buffer.indexOf(" ",slashpos+1); - //if match mask T:xxx.xx /xxx.xx - if(spacepos-Tpos < 17) + int ESPpos = buffer.indexOf("[ESP"); + int Tpos = buffer.indexOf("T:"); + int Xpos = buffer.indexOf("X:"); + int Ypos = buffer.indexOf("Y:"); + int Zpos = buffer.indexOf("Z:"); + int Speedpos = buffer.indexOf("SpeedMultiply:"); + int Flowpos = buffer.indexOf("FlowMultiply:"); + int Errorpos= buffer.indexOf("Error:"); + int Infopos= buffer.indexOf("Info:"); + int Statuspos= buffer.indexOf("Status:"); + if (ESPpos>-1) + {//is there the second part? + int ESPpos2 = buffer.indexOf("]",ESPpos); + if (ESPpos2>-1) + { //Split in command and parameters + String cmd_part1=buffer.substring(ESPpos+4,ESPpos2); + String cmd_part2=""; + //is there space for parameters? + if (ESPpos2-1) { - web_interface->answer4M105=buffer; //do not interprete just need when requested so store it - web_interface->last_temp=system_get_time(); + //look for valid temperature answer + int slashpos = buffer.indexOf(" /",Tpos); + int spacepos = buffer.indexOf(" ",slashpos+1); + //if match mask T:xxx.xx /xxx.xx + if(spacepos-Tpos < 17) + { + web_interface->answer4M105=buffer; //do not interprete just need when requested so store it + web_interface->last_temp=system_get_time(); + } } + //Position of axis + if (Xpos>-1 && Ypos>-1 && Zpos>-1)web_interface->answer4M114=buffer; + //Speed + if (Speedpos>-1)web_interface->answer4M220=buffer.substring(Speedpos+14); + //Flow + if (Flowpos>-1)web_interface->answer4M221=buffer.substring(Flowpos+13); + //Error + if (Errorpos>-1 && !(buffer.indexOf("Format error")!=-1 || buffer.indexOf("wait")==Errorpos+6) )(web_interface->error_msg).add(buffer.substring(Errorpos+6).c_str()); + //Info + if (Infopos>-1)(web_interface->info_msg).add(buffer.substring(Infopos+5).c_str()); + //Status + if (Statuspos>-1)(web_interface->status_msg).add(buffer.substring(Statuspos+7).c_str()); + } + else + { + if ((system_get_time()-start_list)>30000000) //timeout in case of problem + { + bfileslist=false; + Serial.print("time out"); + } + else + { + if (buffer.indexOf("End file list")>-1) + { + Serial.print("Ending"); + bfileslist=false; + } + else + { + Serial.print(buffer); + web_interface->fileslist.add(buffer); + } + } + } - //Position of axis - if (Xpos>-1 && Ypos>-1 && Zpos>-1)web_interface->answer4M114=buffer; - //Speed - if (Speedpos>-1)web_interface->answer4M220=buffer.substring(Speedpos+14); - //Flow - if (Flowpos>-1)web_interface->answer4M221=buffer.substring(Flowpos+13); - //Error - if (Errorpos>-1 && !(buffer.indexOf("Format error")!=-1 || buffer.indexOf("wait")==Errorpos+6) )(web_interface->error_msg).add(buffer.substring(Errorpos+6).c_str()); - //Info - if (Infopos>-1)(web_interface->info_msg).add(buffer.substring(Infopos+5).c_str()); - //Status - if (Statuspos>-1)(web_interface->status_msg).add(buffer.substring(Statuspos+7).c_str()); } //read a buffer in an array diff --git a/esp8266/webinterface.cpp b/esp8266/webinterface.cpp index 1c1c58d3..a3accca2 100644 --- a/esp8266/webinterface.cpp +++ b/esp8266/webinterface.cpp @@ -2400,6 +2400,20 @@ void handleFileList() { web_interface->WebServer.send(200, "application/json", jsonfile); } +void handleSDFileList() { + String jsonfile = "["; + for (int i=0;ifileslist.size();i++) + { + if (i>0)jsonfile+=","; + jsonfile+="{\"entry\":\""; + jsonfile+=web_interface->fileslist.get(i); + jsonfile+="\"}"; + } + jsonfile+="]"; + web_interface->WebServer.send(200, "application/json", jsonfile); +} + + //do a redirect to avoid to many query //and handle not registred path void handle_not_found() @@ -2627,6 +2641,7 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port) WebServer.on("/CMD",HTTP_ANY, handle_web_command); WebServer.on("/RESTART",HTTP_GET, handle_restart); WebServer.on("/FILES", HTTP_ANY, handleFileList); + WebServer.on("/SDFILES", HTTP_ANY, handleSDFileList); WebServer.onFileUpload(handleFileUpload); //Captive portal Feature #ifdef CAPTIVE_PORTAL_FEATURE @@ -2643,13 +2658,15 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port) answer4M221="100"; last_temp=system_get_time(); restartmodule=false; - //rolling list of 5 entries with a maximum of 50 char for each entry + //rolling list of 4entries with a maximum of 50 char for each entry error_msg.setsize(4); error_msg.setlenght(50); info_msg.setsize(4); info_msg.setlenght(50); status_msg.setsize(4); status_msg.setlenght(50); + fileslist.setlenght(30);//12 for filename + space + size + fileslist.setsize(70); // 70 files to limite to 2K fsUploadFile=(fs::File)0; } //Destructor @@ -2658,6 +2675,7 @@ WEBINTERFACE_CLASS::~WEBINTERFACE_CLASS() info_msg.clear(); error_msg.clear(); status_msg.clear(); + fileslist.clear(); } WEBINTERFACE_CLASS * web_interface; diff --git a/esp8266/webinterface.h b/esp8266/webinterface.h index adf37632..2a6b34a0 100644 --- a/esp8266/webinterface.h +++ b/esp8266/webinterface.h @@ -45,6 +45,7 @@ class WEBINTERFACE_CLASS String answer4M114; String answer4M220; String answer4M221; + STORESTRINGS_CLASS fileslist; uint32_t last_temp; STORESTRINGS_CLASS error_msg; STORESTRINGS_CLASS info_msg;