diff options
author | David Anderson <dvander@google.com> | 2019-10-10 21:31:35 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-10-10 21:31:35 +0200 |
commit | 1cde53c252a172c635692d546c63e528b681c473 (patch) | |
tree | 83d886d5d8dc845858a8dd07c5c045a20ce9333e /boot_control/libboot_control.cpp | |
parent | Merge "Update OWNERS." (diff) | |
parent | Merge "Add IBootControl 1.1 support to libboot_control." (diff) | |
download | android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar.gz android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar.bz2 android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar.lz android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar.xz android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.tar.zst android_bootable_recovery-1cde53c252a172c635692d546c63e528b681c473.zip |
Diffstat (limited to 'boot_control/libboot_control.cpp')
-rw-r--r-- | boot_control/libboot_control.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/boot_control/libboot_control.cpp b/boot_control/libboot_control.cpp index 89cf8786a..e3bff9ff3 100644 --- a/boot_control/libboot_control.cpp +++ b/boot_control/libboot_control.cpp @@ -34,6 +34,8 @@ namespace android { namespace bootable { +using ::android::hardware::boot::V1_1::MergeStatus; + // The number of boot attempts that should be made from a new slot before // rolling back to the previous slot. constexpr unsigned int kDefaultBootAttempts = 7; @@ -327,6 +329,25 @@ bool BootControl::IsSlotMarkedSuccessful(unsigned int slot) { return bootctrl.slot_info[slot].successful_boot && bootctrl.slot_info[slot].tries_remaining; } +bool BootControl::IsValidSlot(unsigned int slot) { + return slot < kMaxNumSlots && slot < num_slots_; +} + +bool BootControl::SetSnapshotMergeStatus(MergeStatus status) { + bootloader_control bootctrl; + if (!LoadBootloaderControl(misc_device_, &bootctrl)) return false; + + bootctrl.merge_status = (unsigned int)status; + return UpdateAndSaveBootloaderControl(misc_device_, &bootctrl); +} + +MergeStatus BootControl::GetSnapshotMergeStatus() { + bootloader_control bootctrl; + if (!LoadBootloaderControl(misc_device_, &bootctrl)) return MergeStatus::UNKNOWN; + + return (MergeStatus)bootctrl.merge_status; +} + const char* BootControl::GetSuffix(unsigned int slot) { if (slot >= kMaxNumSlots || slot >= num_slots_) { return nullptr; |