| // Copyright 2015 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef THERMALD_ATH10K_INTERFACE_H_ |
| #define THERMALD_ATH10K_INTERFACE_H_ |
| |
| #include <memory> |
| #include <string> |
| |
| #include "base/macros.h" |
| |
| #include "thermald/cooling_device.h" |
| #include "thermald/network_interface.h" |
| |
| namespace thermald { |
| |
| // Class to interact with an ath10k wireless interface. |
| class Ath10kInterface : public NetworkInterface { |
| public: |
| explicit Ath10kInterface(const std::string &name); |
| |
| // Set the maximum TX duty cycle of the interface. |
| bool SetMaxTxDutyCycle(unsigned int value); |
| |
| // Returns true if the interface has support for reading its temperature |
| // and thermal throttling. |
| bool HasThermalSupport() const; |
| |
| // Returns true if the interface with the given name is an ath10k wireless |
| // interface, false otherwise. |
| static bool IsAth10kInterface(const std::string &name); |
| |
| // Returns true if the interface with the given name is an ath10k wireless |
| // interface with thermal support. |
| static bool HasThermalSupport(const std::string &name); |
| |
| private: |
| void DetermineCoolingDevice(); |
| |
| std::unique_ptr<CoolingDevice> cooling_device_; |
| unsigned int tx_duty_cycle_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Ath10kInterface); |
| }; |
| |
| } // namespace thermald |
| |
| #endif // THERMALD_ATH10K_INTERFACE_H_ |