blob: 2e55f97f6ddc2279ab9150b1aac8398317dc00a6 [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
Alex Deymo1b03f9f2015-12-09 00:38:36 -080017#ifndef UPDATE_ENGINE_HARDWARE_ANDROID_H_
18#define UPDATE_ENGINE_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
Alex Deymo39910dc2015-11-09 17:04:30 -080026#include "update_engine/common/hardware.h"
27#include "update_engine/common/hardware_interface.h"
Alex Deymo40d86b22015-09-03 22:27:10 -070028
29namespace chromeos_update_engine {
30
31// Implements the real interface with the hardware in the Android platform.
Kelvin Zhangd7191032020-08-11 10:48:16 -040032class HardwareAndroid : public HardwareInterface {
Alex Deymo40d86b22015-09-03 22:27:10 -070033 public:
34 HardwareAndroid() = default;
35 ~HardwareAndroid() override = default;
36
37 // HardwareInterface methods.
38 bool IsOfficialBuild() const override;
39 bool IsNormalBootMode() const override;
Sen Jiange67bb5b2016-06-20 15:53:56 -070040 bool AreDevFeaturesEnabled() const override;
Alex Deymo46a9aae2016-05-04 20:20:11 -070041 bool IsOOBEEnabled() const override;
Alex Deymo40d86b22015-09-03 22:27:10 -070042 bool IsOOBEComplete(base::Time* out_time_of_oobe) const override;
43 std::string GetHardwareClass() const override;
44 std::string GetFirmwareVersion() const override;
45 std::string GetECVersion() const override;
Matt Ziegelbaumaa8e1a42019-05-09 21:41:58 -040046 std::string GetDeviceRequisition() const override;
Zentaro Kavanaghbaacb982018-02-20 17:48:39 -080047 int GetMinKernelKeyVersion() const override;
Marton Hunyady99ced782018-05-08 12:59:50 +020048 int GetMinFirmwareKeyVersion() const override;
Zentaro Kavanagh8f6f2432018-05-16 13:48:12 -070049 int GetMaxFirmwareKeyRollforward() const override;
50 bool SetMaxFirmwareKeyRollforward(int firmware_max_rollforward) override;
Zentaro Kavanagh5d956152018-05-15 09:40:33 -070051 bool SetMaxKernelKeyRollforward(int kernel_max_rollforward) override;
Alex Deymo40d86b22015-09-03 22:27:10 -070052 int GetPowerwashCount() const override;
Zentaro Kavanagh28def4f2019-01-15 17:15:01 -080053 bool SchedulePowerwash(bool save_rollback_data) override;
Alex Deymofb905d92016-06-03 19:26:58 -070054 bool CancelPowerwash() override;
Alex Deymodd132f32015-09-14 19:12:07 -070055 bool GetNonVolatileDirectory(base::FilePath* path) const override;
56 bool GetPowerwashSafeDirectory(base::FilePath* path) const override;
Sen Jiang5011df62017-06-28 17:13:19 -070057 int64_t GetBuildTimestamp() const override;
Tianjie Xu4ad3af62019-10-30 11:59:45 -070058 bool AllowDowngrade() const override;
Amin Hassani1677e812017-06-21 13:36:36 -070059 bool GetFirstActiveOmahaPingSent() const override;
Amin Hassani80f4d4c2018-05-16 13:34:00 -070060 bool SetFirstActiveOmahaPingSent() override;
Tianjie Xud6aa91f2019-11-14 11:55:10 -080061 void SetWarmReset(bool warm_reset) override;
Kelvin Zhangd7191032020-08-11 10:48:16 -040062 [[nodiscard]] std::string GetVersionForLogging(
63 const std::string& partition_name) const override;
64 [[nodiscard]] bool IsPartitionUpdateValid(
65 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
Alex Deymo1b03f9f2015-12-09 00:38:36 -080074#endif // UPDATE_ENGINE_HARDWARE_ANDROID_H_