140d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// 240d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// Copyright (C) 2015 The Android Open Source Project 340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// 440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// Licensed under the Apache License, Version 2.0 (the "License"); 540d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// you may not use this file except in compliance with the License. 640d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// You may obtain a copy of the License at 740d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// 840d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// http://www.apache.org/licenses/LICENSE-2.0 940d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// 1040d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// Unless required by applicable law or agreed to in writing, software 1140d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// distributed under the License is distributed on an "AS IS" BASIS, 1240d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// See the License for the specific language governing permissions and 1440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// limitations under the License. 1540d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// 1640d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 171b03f9f983a22fabb8d53e036abf1b192e7d5811Alex Deymo#ifndef UPDATE_ENGINE_HARDWARE_ANDROID_H_ 181b03f9f983a22fabb8d53e036abf1b192e7d5811Alex Deymo#define UPDATE_ENGINE_HARDWARE_ANDROID_H_ 1940d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 2040d86b22363fd9461e67ad288e0273bed509937bAlex Deymo#include <string> 2140d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 2240d86b22363fd9461e67ad288e0273bed509937bAlex Deymo#include <base/macros.h> 2340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo#include <base/time/time.h> 2440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 2539910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/hardware.h" 2639910dcd1d68987ccee7c3031dc269233a8490bbAlex Deymo#include "update_engine/common/hardware_interface.h" 2740d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 2840d86b22363fd9461e67ad288e0273bed509937bAlex Deymonamespace chromeos_update_engine { 2940d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 3040d86b22363fd9461e67ad288e0273bed509937bAlex Deymo// Implements the real interface with the hardware in the Android platform. 3140d86b22363fd9461e67ad288e0273bed509937bAlex Deymoclass HardwareAndroid final : public HardwareInterface { 3240d86b22363fd9461e67ad288e0273bed509937bAlex Deymo public: 3340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo HardwareAndroid() = default; 3440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo ~HardwareAndroid() override = default; 3540d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 3640d86b22363fd9461e67ad288e0273bed509937bAlex Deymo // HardwareInterface methods. 3740d86b22363fd9461e67ad288e0273bed509937bAlex Deymo bool IsOfficialBuild() const override; 3840d86b22363fd9461e67ad288e0273bed509937bAlex Deymo bool IsNormalBootMode() const override; 39e67bb5b953d4551d6ef51a9900117e3ddd0a32c5Sen Jiang bool AreDevFeaturesEnabled() const override; 4046a9aae85e78179a0acd0d1efd1d99685fb827bbAlex Deymo bool IsOOBEEnabled() const override; 4140d86b22363fd9461e67ad288e0273bed509937bAlex Deymo bool IsOOBEComplete(base::Time* out_time_of_oobe) const override; 4240d86b22363fd9461e67ad288e0273bed509937bAlex Deymo std::string GetHardwareClass() const override; 4340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo std::string GetFirmwareVersion() const override; 4440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo std::string GetECVersion() const override; 4540d86b22363fd9461e67ad288e0273bed509937bAlex Deymo int GetPowerwashCount() const override; 46fb905d9b8d49f8fe41297c7aba2dd0942f1be311Alex Deymo bool SchedulePowerwash() override; 47fb905d9b8d49f8fe41297c7aba2dd0942f1be311Alex Deymo bool CancelPowerwash() override; 48dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetNonVolatileDirectory(base::FilePath* path) const override; 49dd132f39cced9028c01e98895a4f6c5fb9553de1Alex Deymo bool GetPowerwashSafeDirectory(base::FilePath* path) const override; 505011df680621eb477cad8b34f03fba5b542cc2f9Sen Jiang int64_t GetBuildTimestamp() const override; 511677e812f16ce2949238b0ec15d7925ac1035d01Amin Hassani bool GetFirstActiveOmahaPingSent() const override; 521677e812f16ce2949238b0ec15d7925ac1035d01Amin Hassani void SetFirstActiveOmahaPingSent() override; 5340d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 5440d86b22363fd9461e67ad288e0273bed509937bAlex Deymo private: 5540d86b22363fd9461e67ad288e0273bed509937bAlex Deymo DISALLOW_COPY_AND_ASSIGN(HardwareAndroid); 5640d86b22363fd9461e67ad288e0273bed509937bAlex Deymo}; 5740d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 5840d86b22363fd9461e67ad288e0273bed509937bAlex Deymo} // namespace chromeos_update_engine 5940d86b22363fd9461e67ad288e0273bed509937bAlex Deymo 601b03f9f983a22fabb8d53e036abf1b192e7d5811Alex Deymo#endif // UPDATE_ENGINE_HARDWARE_ANDROID_H_ 61