1*5a923131SAndroid Build Coastguard Worker // 2*5a923131SAndroid Build Coastguard Worker // Copyright (C) 2015 The Android Open Source Project 3*5a923131SAndroid Build Coastguard Worker // 4*5a923131SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 5*5a923131SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 6*5a923131SAndroid Build Coastguard Worker // You may obtain a copy of the License at 7*5a923131SAndroid Build Coastguard Worker // 8*5a923131SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0 9*5a923131SAndroid Build Coastguard Worker // 10*5a923131SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 11*5a923131SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 12*5a923131SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*5a923131SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 14*5a923131SAndroid Build Coastguard Worker // limitations under the License. 15*5a923131SAndroid Build Coastguard Worker // 16*5a923131SAndroid Build Coastguard Worker 17*5a923131SAndroid Build Coastguard Worker #ifndef UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_ 18*5a923131SAndroid Build Coastguard Worker #define UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_ 19*5a923131SAndroid Build Coastguard Worker 20*5a923131SAndroid Build Coastguard Worker #include <string> 21*5a923131SAndroid Build Coastguard Worker 22*5a923131SAndroid Build Coastguard Worker #include <android-base/macros.h> 23*5a923131SAndroid Build Coastguard Worker #include <base/time/time.h> 24*5a923131SAndroid Build Coastguard Worker 25*5a923131SAndroid Build Coastguard Worker #include "update_engine/common/error_code.h" 26*5a923131SAndroid Build Coastguard Worker #include "update_engine/common/hardware_interface.h" 27*5a923131SAndroid Build Coastguard Worker 28*5a923131SAndroid Build Coastguard Worker namespace chromeos_update_engine { 29*5a923131SAndroid Build Coastguard Worker 30*5a923131SAndroid Build Coastguard Worker // Implements the real interface with the hardware in the Android platform. 31*5a923131SAndroid Build Coastguard Worker class HardwareAndroid : public HardwareInterface { 32*5a923131SAndroid Build Coastguard Worker public: 33*5a923131SAndroid Build Coastguard Worker HardwareAndroid() = default; 34*5a923131SAndroid Build Coastguard Worker ~HardwareAndroid() override = default; 35*5a923131SAndroid Build Coastguard Worker 36*5a923131SAndroid Build Coastguard Worker // HardwareInterface methods. 37*5a923131SAndroid Build Coastguard Worker bool IsOfficialBuild() const override; 38*5a923131SAndroid Build Coastguard Worker bool IsNormalBootMode() const override; 39*5a923131SAndroid Build Coastguard Worker bool AreDevFeaturesEnabled() const override; 40*5a923131SAndroid Build Coastguard Worker bool IsOOBEEnabled() const override; 41*5a923131SAndroid Build Coastguard Worker bool IsOOBEComplete(base::Time* out_time_of_oobe) const override; 42*5a923131SAndroid Build Coastguard Worker std::string GetHardwareClass() const override; 43*5a923131SAndroid Build Coastguard Worker std::string GetDeviceRequisition() const override; 44*5a923131SAndroid Build Coastguard Worker int GetMinKernelKeyVersion() const override; 45*5a923131SAndroid Build Coastguard Worker int GetMinFirmwareKeyVersion() const override; 46*5a923131SAndroid Build Coastguard Worker int GetMaxFirmwareKeyRollforward() const override; 47*5a923131SAndroid Build Coastguard Worker bool SetMaxFirmwareKeyRollforward(int firmware_max_rollforward) override; 48*5a923131SAndroid Build Coastguard Worker bool SetMaxKernelKeyRollforward(int kernel_max_rollforward) override; 49*5a923131SAndroid Build Coastguard Worker int GetPowerwashCount() const override; 50*5a923131SAndroid Build Coastguard Worker bool SchedulePowerwash() override; 51*5a923131SAndroid Build Coastguard Worker bool CancelPowerwash() override; 52*5a923131SAndroid Build Coastguard Worker bool GetNonVolatileDirectory(base::FilePath* path) const override; 53*5a923131SAndroid Build Coastguard Worker bool GetPowerwashSafeDirectory(base::FilePath* path) const override; 54*5a923131SAndroid Build Coastguard Worker int64_t GetBuildTimestamp() const override; 55*5a923131SAndroid Build Coastguard Worker bool AllowDowngrade() const override; 56*5a923131SAndroid Build Coastguard Worker bool GetFirstActiveOmahaPingSent() const override; 57*5a923131SAndroid Build Coastguard Worker bool SetFirstActiveOmahaPingSent() override; 58*5a923131SAndroid Build Coastguard Worker void SetWarmReset(bool warm_reset) override; 59*5a923131SAndroid Build Coastguard Worker void SetVbmetaDigestForInactiveSlot(bool reset) override; 60*5a923131SAndroid Build Coastguard Worker [[nodiscard]] std::string GetVersionForLogging( 61*5a923131SAndroid Build Coastguard Worker const std::string& partition_name) const override; 62*5a923131SAndroid Build Coastguard Worker [[nodiscard]] ErrorCode IsPartitionUpdateValid( 63*5a923131SAndroid Build Coastguard Worker const std::string& partition_name, 64*5a923131SAndroid Build Coastguard Worker const std::string& new_version) const override; 65*5a923131SAndroid Build Coastguard Worker [[nodiscard]] const char* GetPartitionMountOptions( 66*5a923131SAndroid Build Coastguard Worker const std::string& partition_name) const override; 67*5a923131SAndroid Build Coastguard Worker 68*5a923131SAndroid Build Coastguard Worker private: 69*5a923131SAndroid Build Coastguard Worker DISALLOW_COPY_AND_ASSIGN(HardwareAndroid); 70*5a923131SAndroid Build Coastguard Worker }; 71*5a923131SAndroid Build Coastguard Worker 72*5a923131SAndroid Build Coastguard Worker } // namespace chromeos_update_engine 73*5a923131SAndroid Build Coastguard Worker 74*5a923131SAndroid Build Coastguard Worker #endif // UPDATE_ENGINE_AOSP_HARDWARE_ANDROID_H_ 75