summaryrefslogtreecommitdiff
path: root/bootctrl/BootControlShared.h
diff options
context:
space:
mode:
authorDavid Anderson <dvander@google.com>2019-09-16 17:20:03 -0700
committerDavid Anderson <dvander@google.com>2019-10-16 17:01:25 -0700
commitb93d670bb9a892c31ee6b1751395af6cc363306c (patch)
treebbd740ce967132fca29207626bc560bf963e87cb /bootctrl/BootControlShared.h
parentc4b7b9f13f9168885650e3f8fb22e73f11f5c597 (diff)
Implement IBootControl 1.1.
Store the new state for IBootControl 1.1 in the misc partition, using the reserved section of bootloader_message_ab. The code to read/write this partition is from the bootloader_message library. We don't embed libboot_control directly because the 1.0 HAL methods are implemented using GPT, not misc. Note that the new 1.1 methods are implemented in a shared file. This is for future implementations of the HAL that may not rely on the legacy GPT library, but will use the same misc storage. Bug: 141131816 Test: vts Change-Id: I455c202cdd6a21261a2ed1f17dec6efd2ae8116e
Diffstat (limited to 'bootctrl/BootControlShared.h')
-rw-r--r--bootctrl/BootControlShared.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/bootctrl/BootControlShared.h b/bootctrl/BootControlShared.h
new file mode 100644
index 0000000..2f7a6a0
--- /dev/null
+++ b/bootctrl/BootControlShared.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <android/hardware/boot/1.1/IBootControl.h>
+#include <hidl/MQDescriptor.h>
+#include <hidl/Status.h>
+
+namespace android {
+namespace hardware {
+namespace boot {
+namespace V1_1 {
+namespace implementation {
+
+using ::android::hardware::Return;
+
+struct BootControlShared : public IBootControl {
+ BootControlShared();
+
+ Return<bool> setSnapshotMergeStatus(MergeStatus status) override;
+ Return<MergeStatus> getSnapshotMergeStatus() override;
+
+ protected:
+ std::string misc_device_;
+};
+
+extern "C" IBootControl *HIDL_FETCH_IBootControl(const char *name);
+
+} // namespace implementation
+} // namespace V1_1
+} // namespace boot
+} // namespace hardware
+} // namespace android