@@ -45,7 +45,6 @@ bool streamDebug = false;
4545
4646// Event timeouts
4747static unsigned long wifiRestartTime = 0 ;
48- static unsigned long systemRebootTime = 0 ;
4948static unsigned long apOffTime = 0 ;
5049
5150// Content Types
@@ -64,6 +63,10 @@ void handleConfig(MongooseHttpServerRequest *request);
6463void handleEvseClaims (MongooseHttpServerRequest *request);
6564void handleEventLogs (MongooseHttpServerRequest *request);
6665
66+ void handleUpdateRequest (MongooseHttpServerRequest *request);
67+ size_t handleUpdateUpload (MongooseHttpServerRequest *request, int ev, MongooseString filename, uint64_t index, uint8_t *data, size_t len);
68+ void handleUpdateClose (MongooseHttpServerRequest *request);
69+
6770void dumpRequest (MongooseHttpServerRequest *request)
6871{
6972#ifdef ENABLE_DEBUG_WEB_REQUEST
@@ -849,7 +852,7 @@ handleRst(MongooseHttpServerRequest *request) {
849852 response->print (" 1" );
850853 request->send (response);
851854
852- systemRebootTime = millis () + 1000 ;
855+ restart_system () ;
853856}
854857
855858
@@ -868,7 +871,7 @@ handleRestart(MongooseHttpServerRequest *request) {
868871 response->print (" 1" );
869872 request->send (response);
870873
871- systemRebootTime = millis () + 1000 ;
874+ restart_system () ;
872875}
873876
874877
@@ -886,131 +889,6 @@ void handleDescribe(MongooseHttpServerRequest *request) {
886889 request->send (response);
887890}
888891
889- // -------------------------------------------------------------------
890- // Update firmware
891- // url: /update
892- // -------------------------------------------------------------------
893- void
894- handleUpdateGet (MongooseHttpServerRequest *request) {
895- MongooseHttpServerResponseStream *response;
896- if (false == requestPreProcess (request, response, CONTENT_TYPE_HTML)) {
897- return ;
898- }
899-
900- response->setCode (200 );
901- response->print (
902- F (" <html><form method='POST' action='/update' enctype='multipart/form-data'>"
903- " <input type='file' name='firmware'> "
904- " <input type='submit' value='Update'>"
905- " </form></html>" ));
906- request->send (response);
907- }
908-
909- static MongooseHttpServerResponseStream *upgradeResponse = NULL ;
910-
911- void
912- handleUpdatePost (MongooseHttpServerRequest *request) {
913- if (NULL != upgradeResponse) {
914- request->send (500 , CONTENT_TYPE_TEXT, " Error: Upgrade in progress" );
915- return ;
916- }
917-
918- if (false == requestPreProcess (request, upgradeResponse, CONTENT_TYPE_TEXT)) {
919- return ;
920- }
921-
922- // TODO: Add support for returning 100: Continue
923- }
924-
925- static int lastPercent = -1 ;
926-
927- static void handleUpdateError (MongooseHttpServerRequest *request)
928- {
929- upgradeResponse->setCode (500 );
930- upgradeResponse->printf (" Error: %d" , Update.getError ());
931- request->send (upgradeResponse);
932- upgradeResponse = NULL ;
933-
934- // Anoyingly this uses Stream rather than Print...
935- #ifdef ENABLE_DEBUG
936- Update.printError (DEBUG_PORT);
937- #endif
938- }
939-
940- size_t
941- handleUpdateUpload (MongooseHttpServerRequest *request, int ev, MongooseString filename, uint64_t index, uint8_t *data, size_t len)
942- {
943- if (MG_EV_HTTP_PART_BEGIN == ev)
944- {
945- // dumpRequest(request);
946-
947- DEBUG_PORT.printf (" Update Start: %s\n " , filename.c_str ());
948-
949- lcd.display (F (" Updating WiFi" ), 0 , 0 , 10 * 1000 , LCD_CLEAR_LINE | LCD_DISPLAY_NOW);
950- lcd.display (F (" " ), 0 , 1 , 10 * 1000 , LCD_CLEAR_LINE | LCD_DISPLAY_NOW);
951-
952- if (!Update.begin ()) {
953- handleUpdateError (request);
954- }
955- }
956-
957- if (!Update.hasError ())
958- {
959- DBUGF (" Update Writing %llu" , index);
960-
961- size_t contentLength = request->contentLength ();
962- DBUGVAR (contentLength);
963- if (contentLength > 0 )
964- {
965- int percent = index / (contentLength / 100 );
966- DBUGVAR (percent);
967- DBUGVAR (lastPercent);
968- if (percent != lastPercent) {
969- String text = String (percent) + F (" %" );
970- lcd.display (text, 0 , 1 , 10 * 1000 , LCD_DISPLAY_NOW);
971- DEBUG_PORT.printf (" Update: %d%%\n " , percent);
972- lastPercent = percent;
973- }
974- }
975- if (Update.write (data, len) != len) {
976- handleUpdateError (request);
977- }
978- }
979-
980- if (MG_EV_HTTP_PART_END == ev)
981- {
982- DBUGLN (" Upload finished" );
983- if (Update.end (true )) {
984- DBUGF (" Update Success: %lluB" , index+len);
985- lcd.display (F (" Complete" ), 0 , 1 , 10 * 1000 , LCD_CLEAR_LINE | LCD_DISPLAY_NOW);
986- upgradeResponse->setCode (200 );
987- upgradeResponse->print (" OK" );
988- request->send (upgradeResponse);
989- upgradeResponse = NULL ;
990- } else {
991- DBUGF (" Update failed: %d" , Update.getError ());
992- lcd.display (F (" Error" ), 0 , 1 , 10 * 1000 , LCD_CLEAR_LINE | LCD_DISPLAY_NOW);
993- handleUpdateError (request);
994- }
995- }
996-
997- return len;
998- }
999-
1000- static void handleUpdateClose (MongooseHttpServerRequest *request)
1001- {
1002- DBUGLN (" Update close" );
1003-
1004- if (upgradeResponse) {
1005- delete upgradeResponse;
1006- upgradeResponse = NULL ;
1007- }
1008-
1009- if (Update.isFinished () && !Update.hasError ()) {
1010- systemRebootTime = millis () + 1000 ;
1011- }
1012- }
1013-
1014892String delayTimer = " 0 0 0 0" ;
1015893
1016894void
@@ -1209,13 +1087,7 @@ web_server_setup() {
12091087
12101088 // Simple Firmware Update Form
12111089 server.on (" /update$" )->
1212- onRequest ([](MongooseHttpServerRequest *request) {
1213- if (HTTP_GET == request->method ()) {
1214- handleUpdateGet (request);
1215- } else if (HTTP_POST == request->method ()) {
1216- handleUpdatePost (request);
1217- }
1218- })->
1090+ onRequest (handleUpdateRequest)->
12191091 onUpload (handleUpdateUpload)->
12201092 onClose (handleUpdateClose);
12211093
@@ -1286,13 +1158,6 @@ web_server_loop() {
12861158 net_wifi_turn_off_ap ();
12871159 }
12881160
1289- // Do we need to reboot the system?
1290- if (systemRebootTime > 0 && millis () > systemRebootTime) {
1291- systemRebootTime = 0 ;
1292- net_wifi_disconnect ();
1293- ESPAL.reset ();
1294- }
1295-
12961161 Profile_End (web_server_loop, 5 );
12971162}
12981163
0 commit comments