diff --git a/tasmota/settings.h b/tasmota/settings.h index af74422df..8b7fe2822 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -91,7 +91,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t grouptopic_mode : 1; // bit 25 (v7.0.0.1) - SetOption75 - GroupTopic replaces %topic% (0) or fixed topic cmnd/grouptopic (1) uint32_t bootcount_update : 1; // bit 26 (v7.0.0.4) - SetOption76 - Enable incrementing bootcount when deepsleep is enabled uint32_t slider_dimmer_stay_on : 1; // bit 27 (v7.0.0.6) - SetOption77 - Do not power off if slider moved to far left - uint32_t spare28 : 1; + uint32_t compatibility_check : 1; // bit 28 (v7.1.2.6) - SetOption78 - Disable OTA compatibility check uint32_t spare29 : 1; uint32_t shutter_mode : 1; // bit 30 (v6.6.0.14) - SetOption80 - Enable shutter support uint32_t pcf8574_ports_inverted : 1; // bit 31 (v6.6.0.14) - SetOption81 - Invert all ports on PCF8574 devices @@ -428,7 +428,7 @@ struct SYSCFG { unsigned long weight_calibration; // 7C4 unsigned long energy_frequency_calibration; // 7C8 also used by HX711 to save last weight uint16_t web_refresh; // 7CC - char mems[MAX_RULE_MEMS][10]; // 7CE + char mems[MAX_RULE_MEMS][10]; // 7CE - Used by scripter as script_pram char rules[MAX_RULE_SETS][MAX_RULE_SIZE]; // 800 uses 512 bytes in v5.12.0m, 3 x 512 bytes in v5.14.0b diff --git a/tasmota/settings.ino b/tasmota/settings.ino index b572ca645..afbd7b223 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -345,6 +345,10 @@ void SetFlashModeDout(void) uint32_t OtaVersion(void) { + if (Settings.flag3.compatibility_check) { + return 0xFFFFFFFF; + } + eboot_command ebcmd; eboot_command_read(&ebcmd); uint32_t start_address = ebcmd.args[0]; diff --git a/tasmota/xdrv_01_webserver.ino b/tasmota/xdrv_01_webserver.ino index fe10e4cd3..8aece2be8 100644 --- a/tasmota/xdrv_01_webserver.ino +++ b/tasmota/xdrv_01_webserver.ino @@ -511,9 +511,8 @@ const char kUploadErrors[] PROGMEM = D_UPLOAD_ERR_1 "|" D_UPLOAD_ERR_2 "|" D_UPLOAD_ERR_3 "|" D_UPLOAD_ERR_4 "|" D_UPLOAD_ERR_5 "|" D_UPLOAD_ERR_6 "|" D_UPLOAD_ERR_7 "|" D_UPLOAD_ERR_8 "|" D_UPLOAD_ERR_9 #ifdef USE_RF_FLASH "|" D_UPLOAD_ERR_10 "|" D_UPLOAD_ERR_11 "|" D_UPLOAD_ERR_12 "|" D_UPLOAD_ERR_13 -#else - "|" D_UPLOAD_ERR_14 #endif + "|" D_UPLOAD_ERR_14 ; const uint16_t DNS_PORT = 53; @@ -2141,9 +2140,10 @@ void HandleUploadDone(void) if (Web.upload_error) { WSContentSend_P(PSTR("%06x'>" D_FAILED "

"), WebColor(COL_TEXT_WARNING)); #ifdef USE_RF_FLASH - if (Web.upload_error < 14) { + if (Web.upload_error < 15) { #else - if (Web.upload_error < 11) { + if ((Web.upload_error < 10) || (14 == Web.upload_error)) { + if (14 == Web.upload_error) { Web.upload_error = 10; } #endif GetTextIndexed(error, sizeof(error), Web.upload_error -1, kUploadErrors); } else { @@ -2238,7 +2238,7 @@ void HandleUploadLoop(void) Update.end(); // End esp8266 update session Web.upload_file_type = UPL_EFM8BB1; - Web.upload_error = SnfBrUpdateInit(); + Web.upload_error = SnfBrUpdateInit(); // 10, 11 if (Web.upload_error != 0) { return; } } else #endif // USE_RF_FLASH @@ -2246,7 +2246,7 @@ void HandleUploadLoop(void) if ((WEMOS == my_module_type) && (upload.buf[0] == ':')) { // Check if this is a ARDUINO SLAVE hex file Update.end(); // End esp8266 update session Web.upload_file_type = UPL_TASMOTASLAVE; - Web.upload_error = TasmotaSlave_UpdateInit(); + Web.upload_error = TasmotaSlave_UpdateInit(); // 0 if (Web.upload_error != 0) { return; } } else #endif @@ -2281,13 +2281,13 @@ void HandleUploadLoop(void) free(efm8bb1_update); efm8bb1_update = nullptr; if (result != 0) { - Web.upload_error = abs(result); // 2 = Not enough space, 8 = File invalid + Web.upload_error = abs(result); // 2 = Not enough space, 8 = File invalid, 12, 13 return; } } ssize_t result = rf_search_and_write(upload.buf, upload.currentSize); if (result < 0) { - Web.upload_error = abs(result); + Web.upload_error = abs(result); // 8, 12, 13 return; } else if (result > 0) { if ((size_t)result > upload.currentSize) { @@ -2379,7 +2379,7 @@ void HandleUploadLoop(void) } if (OtaVersion() < VERSION_COMPATIBLE) { AbandonOta(); - Web.upload_error = 10; // Not compatible + Web.upload_error = 14; // Not compatible return; } }