summaryrefslogtreecommitdiffstats
path: root/boot_control/libboot_control.cpp
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-10-10 21:31:35 +0200
committerandroid-build-merger <android-build-merger@google.com>2019-10-10 21:31:35 +0200
commit1cde53c252a172c635692d546c63e528b681c473 (patch)
tree83d886d5d8dc845858a8dd07c5c045a20ce9333e /boot_control/libboot_control.cpp
parentMerge "Update OWNERS." (diff)
parentMerge "Add IBootControl 1.1 support to libboot_control." (diff)
downloadandroid_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.cpp21
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;