11#if DETWS_ENABLE_OTA_ROLLBACK
13DetwsOtaAction detws_ota_decide(uint8_t img_state,
bool self_test_ok, uint32_t ms_since_boot, uint32_t window_ms)
15 if (img_state != DetwsOtaImg::DETWS_OTA_IMG_PENDING_VERIFY)
16 return DetwsOtaAction::DETWS_OTA_WAIT;
18 return DetwsOtaAction::DETWS_OTA_COMMIT;
19 if (ms_since_boot >= window_ms)
20 return DetwsOtaAction::DETWS_OTA_ROLLBACK;
21 return DetwsOtaAction::DETWS_OTA_WAIT;
26#include "esp_ota_ops.h"
29uint8_t detws_ota_img_state(
void)
31 const esp_partition_t *running = esp_ota_get_running_partition();
32 esp_ota_img_states_t st = ESP_OTA_IMG_UNDEFINED;
33 if (!running || esp_ota_get_state_partition(running, &st) != ESP_OK)
34 return DetwsOtaImg::DETWS_OTA_IMG_UNDEFINED;
38void detws_ota_commit(
void)
40 esp_ota_mark_app_valid_cancel_rollback();
43void detws_ota_rollback(
void)
45 esp_ota_mark_app_invalid_rollback_and_reboot();
48DetwsOtaAction detws_ota_rollback_tick(
bool self_test_ok)
52 if (a == DetwsOtaAction::DETWS_OTA_COMMIT)
54 else if (a == DetwsOtaAction::DETWS_OTA_ROLLBACK)
61uint8_t detws_ota_img_state(
void)
63 return DetwsOtaImg::DETWS_OTA_IMG_UNDEFINED;
65void detws_ota_commit(
void)
68void detws_ota_rollback(
void)
71DetwsOtaAction detws_ota_rollback_tick(
bool)
73 return DetwsOtaAction::DETWS_OTA_WAIT;
#define DETWS_OTA_CONFIRM_WINDOW_MS
Confirm window (ms): a pending image not confirmed within this rolls back.
Pluggable monotonic clock for all library timing.
uint32_t detws_millis(void)
The library's monotonic time at 1000 Hz (milliseconds).
OTA rollback protection / soft-brick safeguard (DETWS_ENABLE_OTA_ROLLBACK).