Add support for Virtual A/B
For Virtual A/B OTA feature, change to
* Fastboot Command snapshot update
* Checks for Flash/Erase of Virtual A/B critical partitions
* Check for Slot change
Change-Id: I54f76a2ff98dde9eac105e147c7ec9f9ab63545c
Signed-off-by: Rahul Shahare <rshaha@codeaurora.org>
diff --git a/app/aboot/recovery.c b/app/aboot/recovery.c
index a79f670..fd6c281 100644
--- a/app/aboot/recovery.c
+++ b/app/aboot/recovery.c
@@ -544,8 +544,11 @@
ptn = partition_get_offset(index);
ptn_size = partition_get_size(index);
-
+#if VIRTUAL_AB_OTA
+ offset = page_offset;
+#else
offset = page_offset * BLOCK_SIZE;
+#endif
aligned_size = ROUND_TO_PAGE(size, (unsigned)BLOCK_SIZE - 1);
if (ptn_size < offset + aligned_size)
{
@@ -619,6 +622,25 @@
static MiscVirtualABMessage *VirtualAbMsg = NULL;
+int SetSnapshotMergeStatus (VirtualAbMergeStatus MergeStatus)
+{
+ int Status = 1;
+ VirtualAbMergeStatus OldMergeStatus;
+
+ if (target_is_emmc_boot())
+ {
+ OldMergeStatus = VirtualAbMsg->MergeStatus;
+ VirtualAbMsg->MergeStatus = MergeStatus;
+
+ Status = write_misc(MISC_VIRTUALAB_OFFSET, &VirtualAbMsg, sizeof(VirtualAbMsg));
+ if (Status != 0) {
+ dprintf(CRITICAL, "Write the VirtualAbMsg failed\n");
+ VirtualAbMsg->MergeStatus = OldMergeStatus;
+ }
+ }
+ return Status;
+}
+
VirtualAbMergeStatus GetSnapshotMergeStatus (void)
{
VirtualAbMergeStatus MergeStatus = NONE_MERGE_STATUS;