blob: d8fbbbe0e9edfb9c511a9949641175c28af26d62 [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
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;
45 std::string GetFirmwareVersion() const override;
46 std::string GetECVersion() const override;
Matt Ziegelbaumaa8e1a42019-05-09 21:41:58 -040047 std::string GetDeviceRequisition() const override;
Zentaro Kavanaghbaacb982018-02-20 17:48:39 -080048 int GetMinKernelKeyVersion() const override;
Marton Hunyady99ced782018-05-08 12:59:50 +020049 int GetMinFirmwareKeyVersion() const override;
Zentaro Kavanagh8f6f2432018-05-16 13:48:12 -070050 int GetMaxFirmwareKeyRollforward() const override;
51 bool SetMaxFirmwareKeyRollforward(int firmware_max_rollforward) override;
Zentaro Kavanagh5d956152018-05-15 09:40:33 -070052 bool SetMaxKernelKeyRollforward(int kernel_max_rollforward) override;
Alex Deymo40d86b22015-09-03 22:27:10 -070053 int GetPowerwashCount() const override;
Zentaro Kavanagh28def4f2019-01-15 17:15:01 -080054 bool SchedulePowerwash(bool save_rollback_data) override;
Alex Deymofb905d92016-06-03 19:26:58 -070055 bool CancelPowerwash() override;
Alex Deymodd132f32015-09-14 19:12:07 -070056 bool GetNonVolatileDirectory(base::FilePath* path) const override;
57 bool GetPowerwashSafeDirectory(base::FilePath* path) const override;
Sen Jiang5011df62017-06-28 17:13:19 -070058 int64_t GetBuildTimestamp() const override;
Tianjie Xu4ad3af62019-10-30 11:59:45 -070059 bool AllowDowngrade() const override;
Amin Hassani1677e812017-06-21 13:36:36 -070060 bool GetFirstActiveOmahaPingSent() const override;
Amin Hassani80f4d4c2018-05-16 13:34:00 -070061 bool SetFirstActiveOmahaPingSent() override;
Tianjie Xud6aa91f2019-11-14 11:55:10 -080062 void SetWarmReset(bool warm_reset) override;
Kelvin Zhangd7191032020-08-11 10:48:16 -040063 [[nodiscard]] std::string GetVersionForLogging(
64 const std::string& partition_name) const override;
Yifan Hong87029332020-09-01 17:20:08 -070065 [[nodiscard]] ErrorCode IsPartitionUpdateValid(
Kelvin Zhangd7191032020-08-11 10:48:16 -040066 const std::string& partition_name,
67 const std::string& new_version) const override;
Alex Deymo40d86b22015-09-03 22:27:10 -070068
69 private:
70 DISALLOW_COPY_AND_ASSIGN(HardwareAndroid);
71};
72
73} // namespace chromeos_update_engine
74
Alex Deymo1b03f9f2015-12-09 00:38:36 -080075#endif // UPDATE_ENGINE_HARDWARE_ANDROID_H_