Add support for Virtual A/B
For Virtual A/B OTA feature, change to
* add intial support for feature.
* parse misc partition for virtual a/b merge status.
* publish snapshot merge status in fastboot variables.
Change-Id: I454972cc2be673054c50e5de6de5b3abafbdf2fd
Signed-off-by: Rahul Shahare <rshaha@codeaurora.org>
diff --git a/app/aboot/recovery.c b/app/aboot/recovery.c
index 389b91d..a79f670 100644
--- a/app/aboot/recovery.c
+++ b/app/aboot/recovery.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2017,2019 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2010-2017,2019,2021 The Linux Foundation. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -617,6 +617,44 @@
return 0;
}
+static MiscVirtualABMessage *VirtualAbMsg = NULL;
+
+VirtualAbMergeStatus GetSnapshotMergeStatus (void)
+{
+ VirtualAbMergeStatus MergeStatus = NONE_MERGE_STATUS;
+ uint32_t pagesize = get_page_size();
+
+ if (target_is_emmc_boot())
+ {
+ if (VirtualAbMsg == NULL) {
+ if(read_misc(MISC_VIRTUALAB_OFFSET, (void *)&VirtualAbMsg,
+ pagesize))
+ {
+ dprintf(CRITICAL,"Error reading virtualab msg from misc partition\n");
+ return MergeStatus;
+ }
+
+ if (VirtualAbMsg->Magic != MISC_VIRTUAL_AB_MAGIC_HEADER ||
+ VirtualAbMsg->Version != MISC_VIRTUAL_AB_MESSAGE_VERSION) {
+
+ dprintf(CRITICAL,"Error read virtualab msg version:%u magic:%u not valid\n",
+ VirtualAbMsg->Version,VirtualAbMsg->Magic);
+
+ free(VirtualAbMsg);
+ VirtualAbMsg = NULL;
+ }
+ else
+ {
+ dprintf(CRITICAL,"read virtualab MergeStatus:%x\n", VirtualAbMsg->MergeStatus);
+ }
+ }
+
+ if (VirtualAbMsg)
+ MergeStatus = VirtualAbMsg->MergeStatus;
+ }
+ return MergeStatus;
+}
+
int get_ffbm(char *ffbm, unsigned size)
{
const char *ffbm_cmd = "ffbm-";