summaryrefslogtreecommitdiffstats
path: root/types.hpp
diff options
context:
space:
mode:
authorEmily Shaffer <emilyshaffer@google.com>2017-06-14 13:06:26 -0700
committerPatrick Williams <patrick@stwcx.xyz>2017-09-13 21:42:57 +0000
commitcc941e150007d56b2d7f2fc0c8248e6d74dd659d (patch)
treeb1107d9a2c0dbc7eef9d3626b58c5915ee41da50 /types.hpp
parent16fe26d83f06719077da41b054d99d78c065091e (diff)
downloadphosphor-host-ipmid-cc941e150007d56b2d7f2fc0c8248e6d74dd659d.tar.gz
phosphor-host-ipmid-cc941e150007d56b2d7f2fc0c8248e6d74dd659d.zip
sensorhandler: support setting analog sensors
Refactor YAML format to denote mutability of sensors. Sensors which expect different formats for reads and writes should present two entries in the sensor YAML, one with the read interface and one with the write interface. Sensors which share a format for both reads and writes may present only one entry in the YAML with both readable and writable enums specified. If a sensor receives a write which has an interface of Sensor.Value, the "Set" message is sent via DBus to the path provided in the YAML. The previous codepath is maintained. Change-Id: I292f95b6fe936de759fd65ce72c842a1bfe66448 Signed-off-by: Emily Shaffer <emilyshaffer@google.com> Signed-off-by: Patrick Venture <venture@google.com>
Diffstat (limited to 'types.hpp')
-rw-r--r--types.hpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/types.hpp b/types.hpp
index 9c2237f..ae88faa 100644
--- a/types.hpp
+++ b/types.hpp
@@ -32,7 +32,6 @@ namespace sensor
{
using Offset = uint8_t;
-using Value = ipmi::Value;
struct Values
{
@@ -42,10 +41,8 @@ struct Values
using OffsetValueMap = std::map<Offset,Values>;
-using DbusProperty = ipmi::DbusProperty;
using DbusPropertyMap = std::map<DbusProperty,OffsetValueMap>;
-using DbusInterface = ipmi::DbusInterface;
using DbusInterfaceMap = std::map<DbusInterface,DbusPropertyMap>;
using InstancePath = std::string;
@@ -56,6 +53,24 @@ using OffsetB = uint16_t;
using Exponent = uint8_t;
using ScaledOffset = int64_t;
+enum class Mutability
+{
+ Read = 1 << 0,
+ Write = 1 << 1,
+};
+
+inline Mutability operator|(Mutability lhs, Mutability rhs)
+{
+ return static_cast<Mutability>(
+ static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
+}
+
+inline Mutability operator&(Mutability lhs, Mutability rhs)
+{
+ return static_cast<Mutability>(
+ static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs));
+}
+
struct Info
{
Type sensorType;
@@ -67,6 +82,7 @@ struct Info
Exponent exponentB;
ScaledOffset scaledOffset;
std::function<uint8_t(SetSensorReadingReq&, const Info&)> updateFunc;
+ Mutability mutability;
DbusInterfaceMap propertyInterfaces;
};
OpenPOWER on IntegriCloud