#include "Updater.h" #include #include #include #include #include void handleSetup(void); /** Function to check if the user wants to update the device. * This is signaled by pressing all C Buttons + Start * if so update process is initiated * @param controller pointer to struct containing presed buttons * @return none */ void checkUpdateCombo(ControllerData *controller) { // if button combi is pressed if(controller->CUp && controller->CDown && controller->CLeft && controller->CRight && controller->buttonStart) { handleSetup(); } } // ===== TAKEN FROM ARDUINO, slight modifications ===== const char* host = "n64toique"; WebServer server(80); /* * Login page */ const char* loginIndex = "
" "" "" "" "
" "
" "" "" "" "" "
" "
" "" "" "" "
" "
" "" "" "" "" "
" "
ESP32 Login Page
" "
" "
Username:
Password:
" "
" ""; /* * Server Index Page */ const char* serverIndex = "" "
" "" "" "
" "
progress: 0%
" ""; /* * setup function */ void handleSetup(void) { //Serial.begin(115200); // Connect to WiFi network WiFi.beginSmartConfig(); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } /*use mdns for host name resolution*/ if (!MDNS.begin(host)) { //http://esp32.local Serial.println("Error setting up MDNS responder!"); while (1) { delay(1000); } } Serial.println("mDNS responder started"); /*return index page which is stored in serverIndex */ server.on("/", HTTP_GET, []() { server.sendHeader("Connection", "close"); server.send(200, "text/html", loginIndex); }); server.on("/serverIndex", HTTP_GET, []() { server.sendHeader("Connection", "close"); server.send(200, "text/html", serverIndex); }); /*handling uploading firmware file */ server.on("/update", HTTP_POST, []() { server.sendHeader("Connection", "close"); server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); ESP.restart(); }, []() { HTTPUpload& upload = server.upload(); if (upload.status == UPLOAD_FILE_START) { Serial.printf("Update: %s\n", upload.filename.c_str()); if (!Update.begin(UPDATE_SIZE_UNKNOWN)) { //start with max available size Update.printError(Serial); } } else if (upload.status == UPLOAD_FILE_WRITE) { /* flashing firmware to ESP*/ if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { Update.printError(Serial); } } else if (upload.status == UPLOAD_FILE_END) { if (Update.end(true)) { //true to set the size to the current progress Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize); } else { Update.printError(Serial); } } }); server.begin(); while(true) { delay(50); server.handleClient(); } }