blob: 19adc8c9866cf4c0537e476b72884e72cbfbeb84 [file] [log] [blame]
// 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_TEMPERATURE_SENSOR_H_
#define THERMALD_ATH10K_TEMPERATURE_SENSOR_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "thermald/ath10k_interface.h"
#include "thermald/hwmon_temperature_sensor.h"
#include "thermald/temperature_sensor_common.h"
namespace thermald {
// Class to interface with the temperature sensor of an ath10k wireless
// interface.
class Ath10kTemperatureSensor : public TemperatureSensorCommon {
public:
// Constructs a temperature sensor corresponding to the sensor of the ath10k
// interface with the given name.
explicit Ath10kTemperatureSensor(const std::string &interface_name);
// Constructs a temperature sensor with a custom name corresponding
// to the sensor of the ath10k interface with the given interface name.
Ath10kTemperatureSensor(const std::string &interface_name,
const std::string &sensor_name);
// Read the temperature from the sensor.
bool ReadTemperature(int *value) override;
// Returns true if the sensor is operational, false otherwise.
// The temperarure sensor of an ath10k interface can only be read when
// the interface is active.
bool IsOperational() override;
private:
bool Initialize();
const std::string interface_name_;
std::unique_ptr<Ath10kInterface> ath10k_interface_;
std::unique_ptr<HwmonTemperatureSensor> hwmon_sensor_;
bool no_thermal_support_;
DISALLOW_COPY_AND_ASSIGN(Ath10kTemperatureSensor);
};
} // namespace thermald
#endif // THERMALD_ATH10K_TEMPERATURE_SENSOR_H_