11#if PC_ENABLE_OTA_ROLLBACK
14#include "esp_ota_ops.h"
17pc_ota_action pc_ota_decide(uint8_t img_state,
bool self_test_ok, uint32_t ms_since_boot, uint32_t window_ms)
19 if (img_state != pc_ota_img::PC_OTA_IMG_PENDING_VERIFY)
21 return pc_ota_action::PC_OTA_WAIT;
25 return pc_ota_action::PC_OTA_COMMIT;
27 if (ms_since_boot >= window_ms)
29 return pc_ota_action::PC_OTA_ROLLBACK;
31 return pc_ota_action::PC_OTA_WAIT;
36uint8_t pc_ota_img_state(
void)
38 const esp_partition_t *running = esp_ota_get_running_partition();
39 esp_ota_img_states_t st = ESP_OTA_IMG_UNDEFINED;
40 if (!running || esp_ota_get_state_partition(running, &st) != ESP_OK)
42 return pc_ota_img::PC_OTA_IMG_UNDEFINED;
47void pc_ota_commit(
void)
49 esp_ota_mark_app_valid_cancel_rollback();
52void pc_ota_rollback(
void)
54 esp_ota_mark_app_invalid_rollback_and_reboot();
57pc_ota_action pc_ota_rollback_tick(
bool self_test_ok)
60 if (a == pc_ota_action::PC_OTA_COMMIT)
64 else if (a == pc_ota_action::PC_OTA_ROLLBACK)
73uint8_t pc_ota_img_state(
void)
75 return pc_ota_img::PC_OTA_IMG_UNDEFINED;
77void pc_ota_commit(
void)
80void pc_ota_rollback(
void)
83pc_ota_action pc_ota_rollback_tick(
bool)
85 return pc_ota_action::PC_OTA_WAIT;
Pluggable monotonic clock for all library timing.
uint32_t pc_millis(void)
The library's monotonic time at 1000 Hz (milliseconds).
OTA rollback protection / soft-brick safeguard (PC_ENABLE_OTA_ROLLBACK).
#define PC_OTA_CONFIRM_WINDOW_MS
Confirm window (ms): a pending image not confirmed within this rolls back.