OtaPalImageState_t otaPal_GetPlatformImageState()

in components/ota_pal/source/ota_pal.c [735:778]


OtaPalImageState_t otaPal_GetPlatformImageState(OtaFileContext_t *const pFileContext)
{
    OtaPalImageState_t eImageState = OtaPalImageStateUnknown;
    uint32_t ota_flags;

    (void)pFileContext;

    LogInfo(("%s", __func__));

    if ((ota_ctx.cur_ota != NULL) && (ota_ctx.data_write_len != 0))
    {
        /* Firmware update is complete or on-going, retrieve its status */
        ota_flags = ota_ctx.valid_image == true ? ESP_OTA_IMG_NEW : ESP_OTA_IMG_INVALID;
    }
    else
    {
        esp_err_t ret = aws_esp_ota_get_boot_flags(&ota_flags, true);

        if (ret != ESP_OK)
        {
            LogError(("Failed to get ota flags %d", ret));
            return eImageState;
        }
    }

    switch (ota_flags)
    {
    case ESP_OTA_IMG_PENDING_VERIFY:
        /* Pending Commit means we're in the Self Test phase. */
        eImageState = OtaPalImageStatePendingCommit;
        break;

    case ESP_OTA_IMG_VALID:
    case ESP_OTA_IMG_NEW:
        eImageState = OtaPalImageStateValid;
        break;

    default:
        eImageState = OtaPalImageStateInvalid;
        break;
    }

    return eImageState;
}