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