| // Copyright 2017 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 THD_SOURCE_ECTOOL_TEMPS_SOURCE_H_ |
| #define THD_SOURCE_ECTOOL_TEMPS_SOURCE_H_ |
| |
| #include "thd/source/source.h" |
| |
| #include <cstdint> |
| #include <string> |
| #include <vector> |
| |
| #include <base/macros.h> |
| |
| namespace thd { |
| |
| // Source to read temperatures through the "ectools temps x" command |
| // |
| // Note on usage: |
| // This source is for testing, debugging, and creating proofs of concept. It's |
| // prone to breaking easily since it just parses the command line output from |
| // ectool. |
| // Should any of the temperatures exposed through this source become actually |
| // necessary for a production configuration of sysfs, please build a proper |
| // exposure mechanism (like a /sys/class/thermal/ zone) for it. |
| class EctoolTempsSource : public Source { |
| public: |
| // |sensor_id| informs what sensors ID to read when calling "ectool temps x". |
| explicit EctoolTempsSource(int sensor_id); |
| ~EctoolTempsSource() override; |
| |
| // Source: |
| bool ReadValue(int64_t* value_out) override; |
| |
| private: |
| // The arguments to use for the command line are stored here on construction, |
| // and used to call "ectool temps x" on each ReadValue call. |
| const std::vector<std::string> cmd_args_; |
| DISALLOW_COPY_AND_ASSIGN(EctoolTempsSource); |
| }; |
| |
| } // namespace thd |
| |
| #endif // THD_SOURCE_ECTOOL_TEMPS_SOURCE_H_ |