aboutsummaryrefslogtreecommitdiff
path: root/tools/gator/daemon/HwmonDriver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/gator/daemon/HwmonDriver.cpp')
-rw-r--r--tools/gator/daemon/HwmonDriver.cpp158
1 files changed, 79 insertions, 79 deletions
diff --git a/tools/gator/daemon/HwmonDriver.cpp b/tools/gator/daemon/HwmonDriver.cpp
index 9d161ae5ac56..d8353b006e63 100644
--- a/tools/gator/daemon/HwmonDriver.cpp
+++ b/tools/gator/daemon/HwmonDriver.cpp
@@ -1,5 +1,5 @@
/**
- * Copyright (C) ARM Limited 2013-2014. All rights reserved.
+ * Copyright (C) ARM Limited 2013-2015. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
@@ -23,7 +23,7 @@ static sensors_subfeature_type getInput(const sensors_feature_type type) {
case SENSORS_FEATURE_CURR: return SENSORS_SUBFEATURE_CURR_INPUT;
case SENSORS_FEATURE_HUMIDITY: return SENSORS_SUBFEATURE_HUMIDITY_INPUT;
default:
- logg->logError(__FILE__, __LINE__, "Unsupported hwmon feature %i", type);
+ logg->logError("Unsupported hwmon feature %i", type);
handleException();
}
};
@@ -33,112 +33,112 @@ public:
HwmonCounter(DriverCounter *next, char *const name, const sensors_chip_name *chip, const sensors_feature *feature);
~HwmonCounter();
- const char *getLabel() const { return label; }
- const char *getTitle() const { return title; }
- bool isDuplicate() const { return duplicate; }
- const char *getDisplay() const { return display; }
- const char *getCounterClass() const { return counter_class; }
- const char *getUnit() const { return unit; }
- int getModifier() const { return modifier; }
+ const char *getLabel() const { return mLabel; }
+ const char *getTitle() const { return mTitle; }
+ bool isDuplicate() const { return mDuplicate; }
+ const char *getDisplay() const { return mDisplay; }
+ const char *getCounterClass() const { return mCounterClass; }
+ const char *getUnit() const { return mUnit; }
+ double getMultiplier() const { return mMultiplier; }
int64_t read();
private:
void init(const sensors_chip_name *chip, const sensors_feature *feature);
- const sensors_chip_name *chip;
- const sensors_feature *feature;
- char *label;
- const char *title;
- const char *display;
- const char *counter_class;
- const char *unit;
- double previous_value;
- int modifier;
- int monotonic: 1,
- duplicate : 1;
+ const sensors_chip_name *mChip;
+ const sensors_feature *mFeature;
+ char *mLabel;
+ const char *mTitle;
+ const char *mDisplay;
+ const char *mCounterClass;
+ const char *mUnit;
+ double mPreviousValue;
+ double mMultiplier;
+ int mMonotonic: 1,
+ mDuplicate : 1;
// Intentionally unimplemented
HwmonCounter(const HwmonCounter &);
HwmonCounter &operator=(const HwmonCounter &);
};
-HwmonCounter::HwmonCounter(DriverCounter *next, char *const name, const sensors_chip_name *chip, const sensors_feature *feature) : DriverCounter(next, name), chip(chip), feature(feature), duplicate(false) {
- label = sensors_get_label(chip, feature);
+HwmonCounter::HwmonCounter(DriverCounter *next, char *const name, const sensors_chip_name *const chip, const sensors_feature *feature) : DriverCounter(next, name), mChip(chip), mFeature(feature), mDuplicate(false) {
+ mLabel = sensors_get_label(mChip, mFeature);
- switch (feature->type) {
+ switch (mFeature->type) {
case SENSORS_FEATURE_IN:
- title = "Voltage";
- display = "maximum";
- counter_class = "absolute";
- unit = "V";
- modifier = 1000;
- monotonic = false;
+ mTitle = "Voltage";
+ mDisplay = "maximum";
+ mCounterClass = "absolute";
+ mUnit = "V";
+ mMultiplier = 0.001;
+ mMonotonic = false;
break;
case SENSORS_FEATURE_FAN:
- title = "Fan";
- display = "average";
- counter_class = "absolute";
- unit = "RPM";
- modifier = 1;
- monotonic = false;
+ mTitle = "Fan";
+ mDisplay = "average";
+ mCounterClass = "absolute";
+ mUnit = "RPM";
+ mMultiplier = 1.0;
+ mMonotonic = false;
break;
case SENSORS_FEATURE_TEMP:
- title = "Temperature";
- display = "maximum";
- counter_class = "absolute";
- unit = "°C";
- modifier = 1000;
- monotonic = false;
+ mTitle = "Temperature";
+ mDisplay = "maximum";
+ mCounterClass = "absolute";
+ mUnit = "°C";
+ mMultiplier = 0.001;
+ mMonotonic = false;
break;
case SENSORS_FEATURE_POWER:
- title = "Power";
- display = "maximum";
- counter_class = "absolute";
- unit = "W";
- modifier = 1000000;
- monotonic = false;
+ mTitle = "Power";
+ mDisplay = "maximum";
+ mCounterClass = "absolute";
+ mUnit = "W";
+ mMultiplier = 0.000001;
+ mMonotonic = false;
break;
case SENSORS_FEATURE_ENERGY:
- title = "Energy";
- display = "accumulate";
- counter_class = "delta";
- unit = "J";
- modifier = 1000000;
- monotonic = true;
+ mTitle = "Energy";
+ mDisplay = "accumulate";
+ mCounterClass = "delta";
+ mUnit = "J";
+ mMultiplier = 0.000001;
+ mMonotonic = true;
break;
case SENSORS_FEATURE_CURR:
- title = "Current";
- display = "maximum";
- counter_class = "absolute";
- unit = "A";
- modifier = 1000;
- monotonic = false;
+ mTitle = "Current";
+ mDisplay = "maximum";
+ mCounterClass = "absolute";
+ mUnit = "A";
+ mMultiplier = 0.001;
+ mMonotonic = false;
break;
case SENSORS_FEATURE_HUMIDITY:
- title = "Humidity";
- display = "average";
- counter_class = "absolute";
- unit = "%";
- modifier = 1000;
- monotonic = false;
+ mTitle = "Humidity";
+ mDisplay = "average";
+ mCounterClass = "absolute";
+ mUnit = "%";
+ mMultiplier = 0.001;
+ mMonotonic = false;
break;
default:
- logg->logError(__FILE__, __LINE__, "Unsupported hwmon feature %i", feature->type);
+ logg->logError("Unsupported hwmon feature %i", mFeature->type);
handleException();
}
for (HwmonCounter * counter = static_cast<HwmonCounter *>(next); counter != NULL; counter = static_cast<HwmonCounter *>(counter->getNext())) {
- if (strcmp(label, counter->getLabel()) == 0 && strcmp(title, counter->getTitle()) == 0) {
- duplicate = true;
- counter->duplicate = true;
+ if (strcmp(mLabel, counter->getLabel()) == 0 && strcmp(mTitle, counter->getTitle()) == 0) {
+ mDuplicate = true;
+ counter->mDuplicate = true;
break;
}
}
}
HwmonCounter::~HwmonCounter() {
- free((void *)label);
+ free((void *)mLabel);
}
int64_t HwmonCounter::read() {
@@ -147,19 +147,19 @@ int64_t HwmonCounter::read() {
const sensors_subfeature *subfeature;
// Keep in sync with the read check in HwmonDriver::readEvents
- subfeature = sensors_get_subfeature(chip, feature, getInput(feature->type));
+ subfeature = sensors_get_subfeature(mChip, mFeature, getInput(mFeature->type));
if (!subfeature) {
- logg->logError(__FILE__, __LINE__, "No input value for hwmon sensor %s", label);
+ logg->logError("No input value for hwmon sensor %s", mLabel);
handleException();
}
- if (sensors_get_value(chip, subfeature->number, &value) != 0) {
- logg->logError(__FILE__, __LINE__, "Can't get input value for hwmon sensor %s", label);
+ if (sensors_get_value(mChip, subfeature->number, &value) != 0) {
+ logg->logError("Can't get input value for hwmon sensor %s", mLabel);
handleException();
}
- result = (monotonic ? value - previous_value : value);
- previous_value = value;
+ result = (mMonotonic ? value - mPreviousValue : value);
+ mPreviousValue = value;
return result;
}
@@ -209,7 +209,7 @@ void HwmonDriver::readEvents(mxml_node_t *const) {
void HwmonDriver::writeEvents(mxml_node_t *root) const {
root = mxmlNewElement(root, "category");
- mxmlElementSetAttr(root, "name", "hwmon");
+ mxmlElementSetAttr(root, "name", "Hardware Monitor");
char buf[1024];
for (HwmonCounter *counter = static_cast<HwmonCounter *>(getCounters()); counter != NULL; counter = static_cast<HwmonCounter *>(counter->getNext())) {
@@ -224,8 +224,8 @@ void HwmonDriver::writeEvents(mxml_node_t *root) const {
mxmlElementSetAttr(node, "display", counter->getDisplay());
mxmlElementSetAttr(node, "class", counter->getCounterClass());
mxmlElementSetAttr(node, "units", counter->getUnit());
- if (counter->getModifier() != 1) {
- mxmlElementSetAttrf(node, "modifier", "%d", counter->getModifier());
+ if (counter->getMultiplier() != 1.0) {
+ mxmlElementSetAttrf(node, "multiplier", "%lf", counter->getMultiplier());
}
if (strcmp(counter->getDisplay(), "average") == 0 || strcmp(counter->getDisplay(), "maximum") == 0) {
mxmlElementSetAttr(node, "average_selection", "yes");