blob: 78f056e4821265604d77b8c792e206b1352bb845 [file] [log] [blame]
Alex Deymo40d86b22015-09-03 22:27:10 -07001//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
Amin Hassaniec7bc112020-10-29 16:47:58 -070017#ifndef UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_
18#define UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_
Alex Deymo40d86b22015-09-03 22:27:10 -070019
20#include <string>
Kelvin Zhangd7191032020-08-11 10:48:16 -040021#include <string_view>
Alex Deymo40d86b22015-09-03 22:27:10 -070022
23#include <base/macros.h>
24#include <base/time/time.h>
25
Yifan Hong87029332020-09-01 17:20:08 -070026#include "update_engine/common/error_code.h"
Alex Deymo39910dc2015-11-09 17:04:30 -080027#include "update_engine/common/hardware.h"
28#include "update_engine/common/hardware_interface.h"
Alex Deymo40d86b22015-09-03 22:27:10 -070029
30namespace chromeos_update_engine {
31
32// Implements the real interface with the hardware in the Android platform.
Kelvin Zhangd7191032020-08-11 10:48:16 -040033class HardwareAndroid : public HardwareInterface {
Alex Deymo40d86b22015-09-03 22:27:10 -070034 public:
35 HardwareAndroid() = default;
36 ~HardwareAndroid() override = default;
37
38 // HardwareInterface methods.
39 bool IsOfficialBuild() const override;
40 bool IsNormalBootMode() const override;
Sen Jiange67bb5b2016-06-20 15:53:56 -070041 bool AreDevFeaturesEnabled() const override;
Alex Deymo46a9aae2016-05-04 20:20:11 -070042 bool IsOOBEEnabled() const override;
Alex Deymo40d86b22015-09-03 22:27:10 -070043 bool IsOOBEComplete(base::Time* out_time_of_oobe) const override;
44 std::string GetHardwareClass() const override;
Matt Ziegelbaumaa8e1a42019-05-09 21:41:58 -040045 std::string GetDeviceRequisition() const override;
Zentaro Kavanaghbaacb982018-02-20 17:48:39 -080046 int GetMinKernelKeyVersion() const override;
Marton Hunyady99ced782018-05-08 12:59:50 +020047 int GetMinFirmwareKeyVersion() const override;
Zentaro Kavanagh8f6f2432018-05-16 13:48:12 -070048 int GetMaxFirmwareKeyRollforward() const override;
49 bool SetMaxFirmwareKeyRollforward(int firmware_max_rollforward) override;
Zentaro Kavanagh5d956152018-05-15 09:40:33 -070050 bool SetMaxKernelKeyRollforward(int kernel_max_rollforward) override;
Alex Deymo40d86b22015-09-03 22:27:10 -070051 int GetPowerwashCount() const override;
Zentaro Kavanagh28def4f2019-01-15 17:15:01 -080052 bool SchedulePowerwash(bool save_rollback_data) override;
Alex Deymofb905d92016-06-03 19:26:58 -070053 bool CancelPowerwash() override;
Alex Deymodd132f32015-09-14 19:12:07 -070054 bool GetNonVolatileDirectory(base::FilePath* path) const override;
55 bool GetPowerwashSafeDirectory(base::FilePath* path) const override;
Sen Jiang5011df62017-06-28 17:13:19 -070056 int64_t GetBuildTimestamp() const override;
Tianjie Xu4ad3af62019-10-30 11:59:45 -070057 bool AllowDowngrade() const override;
Amin Hassani1677e812017-06-21 13:36:36 -070058 bool GetFirstActiveOmahaPingSent() const override;
Amin Hassani80f4d4c2018-05-16 13:34:00 -070059 bool SetFirstActiveOmahaPingSent() override;
Tianjie Xud6aa91f2019-11-14 11:55:10 -080060 void SetWarmReset(bool warm_reset) override;
Tianjie838793d2021-01-14 22:05:13 -080061 void SetVbmetaDigestForInactiveSlot(bool reset) override;
Kelvin Zhangd7191032020-08-11 10:48:16 -040062 [[nodiscard]] std::string GetVersionForLogging(
63 const std::string& partition_name) const override;
Yifan Hong87029332020-09-01 17:20:08 -070064 [[nodiscard]] ErrorCode IsPartitionUpdateValid(
Kelvin Zhangd7191032020-08-11 10:48:16 -040065 const std::string& partition_name,
66 const std::string& new_version) const override;
Alex Deymo40d86b22015-09-03 22:27:10 -070067
68 private:
69 DISALLOW_COPY_AND_ASSIGN(HardwareAndroid);
70};
71
72} // namespace chromeos_update_engine
73
Amin Hassaniec7bc112020-10-29 16:47:58 -070074#endif // UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_