OTA (experimental)
This commit is contained in:
		
							parent
							
								
									414dd02f1d
								
							
						
					
					
						commit
						0667ee5744
					
				
							
								
								
									
										32
									
								
								src/OTA.cpp
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								src/OTA.cpp
									
									
									
									
									
								
							| @ -49,24 +49,25 @@ void start_ota_update() { | ||||
|   ESP_LOGI(TAG, "connected to %s", WIFI_SSID); | ||||
| 
 | ||||
|   checkFirmwareUpdates(); // gets and flashes new firmware and restarts
 | ||||
|   ESP.restart(); // reached only if update was not successful
 | ||||
|   ESP.restart();          // reached only if update was not successful
 | ||||
| 
 | ||||
| } // start_ota_update
 | ||||
| 
 | ||||
| void checkFirmwareUpdates() { | ||||
|   // Fetch the latest firmware version
 | ||||
|   ESP_LOGI(TAG, "Checking latest firmware version..."); | ||||
|   ESP_LOGI(TAG, "OTA mode, checking latest firmware version on server..."); | ||||
|   const String latest = bintray.getLatestVersion(); | ||||
|   if (latest.length() == 0) { | ||||
|     ESP_LOGI(TAG, "Could not load info about the latest firmware, so nothing " | ||||
|                   "to update. Continue ..."); | ||||
|     ESP_LOGI( | ||||
|         TAG, | ||||
|         "Could not load info about the latest firmware. Rebooting to runmode."); | ||||
|     return; | ||||
|   } else if (atoi(latest.c_str()) <= VERSION) { | ||||
|     ESP_LOGI(TAG, "The current firmware is up to date. Continue ..."); | ||||
|     ESP_LOGI(TAG, "Current firmware is up to date. Rebooting to runmode."); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   ESP_LOGI(TAG, "There is a new version of firmware available: v.%s", | ||||
|   ESP_LOGI(TAG, "New firmware version v%s available. Downloading...", | ||||
|            latest.c_str()); | ||||
|   processOTAUpdate(latest); | ||||
| } | ||||
| @ -82,7 +83,7 @@ inline String getHeaderValue(String header, String headerName) { | ||||
| void processOTAUpdate(const String &version) { | ||||
|   String firmwarePath = bintray.getBinaryPath(version); | ||||
|   if (!firmwarePath.endsWith(".bin")) { | ||||
|     ESP_LOGI(TAG, "Unsupported binary format. OTA update cannot be performed!"); | ||||
|     ESP_LOGI(TAG, "Unsupported binary format, OTA update cancelled."); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
| @ -103,8 +104,7 @@ void processOTAUpdate(const String &version) { | ||||
|       client.stop(); | ||||
|       client.setCACert(bintray.getCertificate(currentHost)); | ||||
|       if (!client.connect(currentHost.c_str(), port)) { | ||||
|         ESP_LOGI(TAG, | ||||
|                  "Redirect detected! Cannot connect to %s for some reason!", | ||||
|         ESP_LOGI(TAG, "Redirect detected, but cannot connect to %s", | ||||
|                  currentHost.c_str()); | ||||
|         return; | ||||
|       } | ||||
| @ -120,7 +120,7 @@ void processOTAUpdate(const String &version) { | ||||
|     unsigned long timeout = millis(); | ||||
|     while (client.available() == 0) { | ||||
|       if (millis() - timeout > RESPONSE_TIMEOUT_MS) { | ||||
|         ESP_LOGI(TAG, "Client Timeout !"); | ||||
|         ESP_LOGI(TAG, "Client Timeout."); | ||||
|         client.stop(); | ||||
|         return; | ||||
|       } | ||||
| @ -146,7 +146,7 @@ void processOTAUpdate(const String &version) { | ||||
|                         "new address"); | ||||
|           redirect = true; | ||||
|         } else { | ||||
|           ESP_LOGI(TAG, "Could not get a valid firmware url"); | ||||
|           ESP_LOGI(TAG, "Could not get a valid firmware url."); | ||||
|           // Unexptected HTTP response. Retry or skip update?
 | ||||
|           redirect = false; | ||||
|         } | ||||
| @ -184,20 +184,20 @@ void processOTAUpdate(const String &version) { | ||||
|   // check whether we have everything for OTA update
 | ||||
|   if (contentLength && isValidContentType) { | ||||
|     if (Update.begin(contentLength)) { | ||||
|       ESP_LOGI(TAG, "Starting Over-The-Air update. This may take some time to " | ||||
|                     "complete ..."); | ||||
|       ESP_LOGI(TAG, "Starting OTA update. This will take some time to " | ||||
|                     "complete..."); | ||||
|       size_t written = Update.writeStream(client); | ||||
| 
 | ||||
|       if (written == contentLength) { | ||||
|         ESP_LOGI(TAG, "Written %d successfully", written); | ||||
|         ESP_LOGI(TAG, "Written %d bytes successfully", written); | ||||
|       } else { | ||||
|         ESP_LOGI(TAG, "Written only %d / %d Retry?", written, contentLength); | ||||
|         ESP_LOGI(TAG, "Written only %d of %d bytes, OTA update cancelled.", written, contentLength); | ||||
|         // Retry??
 | ||||
|       } | ||||
| 
 | ||||
|       if (Update.end()) { | ||||
|         if (Update.isFinished()) { | ||||
|           ESP_LOGI(TAG, "OTA update has successfully completed. Rebooting ..."); | ||||
|           ESP_LOGI(TAG, "OTA update completed. Rebooting to runmode."); | ||||
|           ESP.restart(); | ||||
|         } else { | ||||
|           ESP_LOGI(TAG, "Something went wrong! OTA update hasn't been finished " | ||||
|  | ||||
| @ -24,7 +24,6 @@ licenses. Refer to LICENSE.txt file in repository for more details. | ||||
| */ | ||||
| 
 | ||||
| // Basic Config
 | ||||
| #include "globals.h" | ||||
| #include "main.h" | ||||
| 
 | ||||
| configData_t cfg; // struct holds current device configuration
 | ||||
|  | ||||
| @ -1,7 +1,8 @@ | ||||
| #ifndef _MAIN_H | ||||
| #define _MAIN_H | ||||
| 
 | ||||
| //#include "led.h"
 | ||||
| #include "globals.h" | ||||
| #include "led.h" | ||||
| #include "macsniff.h" | ||||
| #include "wifiscan.h" | ||||
| #include "configmanager.h" | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user