cpu_temperature_diagnostic.cc
Go to the documentation of this file.
1 // BSD License
2 //
3 // Copyright (c) 2021, Ascent Robotics, Inc.
4 // All rights reserved.
5 
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above copyright
12 // notice, this list of conditions and the following disclaimer in the
13 // documentation and/or other materials provided with the distribution.
14 // * Neither the name of Ascent Robotics, Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 // POSSIBILITY OF SUCH DAMAGE.
29 
30 // Author Thomas Kostas/thomas.kostas@ascent.ai
31 
33 
34 #include <string>
35 
37 
39 {
41  : chip_(chip)
42 {
44 
45  auto diagnostic_pub_func =
47  this,
48  std::placeholders::_1);
49 
50  diagnostics_updater_.add("CPU temperature", diagnostic_pub_func);
51 }
52 
55 {
56  auto is_ok = true;
57  auto readings = chip_.get_temperature_readings();
58  for (const auto& read : readings)
59  {
60  if (!read.is_ok_)
61  {
62  is_ok = read.is_ok_;
63  }
64  std::string status_string = read.is_ok_ ? "OK" : "Error";
65  stat.add(read.label_,
66  std::to_string(static_cast<int>(read.temperature_)) + "C " +
67  status_string);
68  }
69  std::string summary =
70  is_ok ? "CPU Temperature is OK" : "CPU Temperature is too hot";
71 
72  is_ok ? stat.summary(diagnostic_msgs::DiagnosticStatus::OK, summary) :
73  stat.summary(diagnostic_msgs::DiagnosticStatus::ERROR, summary);
74 }
75 
77 {
79 }
80 
82 {
83  chip_.critical_temp_override(critical_temp);
84 }
85 
87 {
88  chip_.max_temp_override(max_temp);
89 }
90 
91 } // namespace cpu_temperature_diagnostics
void critical_temp_override(double critical_temp)
Definition: sensor_chip.cc:79
void summary(unsigned char lvl, const std::string s)
void setHardwareID(const std::string &hwid)
std::vector< temperature_info > get_temperature_readings() const
Definition: sensor_chip.cc:61
void max_temp_override(int max_temp)
Overrides the chip read maximum temperature.
void add(const std::string &name, TaskFunction f)
void critical_temp_override(int critical_temp)
Overrides the chip read critical temperature.
void add(const std::string &key, const T &val)
void diagnostics_callback(diagnostic_updater::DiagnosticStatusWrapper &stat) const
void max_temp_override(double max_temp)
Definition: sensor_chip.cc:86


cpu_temperature_diagnostics
Author(s):
autogenerated on Mon Feb 28 2022 22:08:46