summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-25 19:08:53 -0400
committerPatrick Williams <patrick@stwcx.xyz>2017-08-02 20:18:19 +0000
commit11083eca847cf8efa0983deb698a48ee0246e1d3 (patch)
tree36734d36d66a0ce8468ae4b565f95f0c383d875e
parent617495111eae22fe82f1e430ad69697675635595 (diff)
downloadphosphor-fan-presence-11083eca847cf8efa0983deb698a48ee0246e1d3.tar.gz
phosphor-fan-presence-11083eca847cf8efa0983deb698a48ee0246e1d3.zip
presence: Add sensor to redundancy policy api
Include a reference to the sensor changing state when sensor implementations ping the policy object. This allows policy logic based on multiple sensors, simultaneously. Change-Id: I44cf00c7ecd220d0cc99e51ca6093bac6da7343c Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
-rw-r--r--presence/fallback.cpp2
-rw-r--r--presence/fallback.hpp3
-rw-r--r--presence/gpio.cpp2
-rw-r--r--presence/rpolicy.hpp5
-rw-r--r--presence/tach.cpp2
5 files changed, 9 insertions, 5 deletions
diff --git a/presence/fallback.cpp b/presence/fallback.cpp
index 625d74a..7550c34 100644
--- a/presence/fallback.cpp
+++ b/presence/fallback.cpp
@@ -26,7 +26,7 @@ namespace fan
namespace presence
{
-void Fallback::stateChanged(bool present)
+void Fallback::stateChanged(bool present, PresenceSensor& sensor)
{
if (!present)
{
diff --git a/presence/fallback.hpp b/presence/fallback.hpp
index a1a5b29..280ef1c 100644
--- a/presence/fallback.hpp
+++ b/presence/fallback.hpp
@@ -55,8 +55,9 @@ class Fallback : public RedundancyPolicy
*
* @param[in] present - The new presence state according
* to the active sensor.
+ * @param[in] sensor - The sensor that changed state.
*/
- void stateChanged(bool present) override;
+ void stateChanged(bool present, PresenceSensor& sensor) override;
/**
* @brief monitor
diff --git a/presence/gpio.cpp b/presence/gpio.cpp
index dfd72db..28db46e 100644
--- a/presence/gpio.cpp
+++ b/presence/gpio.cpp
@@ -89,7 +89,7 @@ void Gpio::ioCallback(sdevent::source::Source& source)
if (currentState != newState)
{
- getPolicy().stateChanged(newState);
+ getPolicy().stateChanged(newState, *this);
currentState = newState;
}
}
diff --git a/presence/rpolicy.hpp b/presence/rpolicy.hpp
index 34beb77..8f7db3e 100644
--- a/presence/rpolicy.hpp
+++ b/presence/rpolicy.hpp
@@ -9,6 +9,8 @@ namespace fan
namespace presence
{
+class PresenceSensor;
+
/**
* @class RedundancyPolicy
* @brief Redundancy policy interface.
@@ -44,8 +46,9 @@ class RedundancyPolicy
* the inventory and execute their policy logic.
*
* @param[in] present - The new state of the sensor.
+ * @param[in] sensor - The sensor that changed state.
*/
- virtual void stateChanged(bool present) = 0;
+ virtual void stateChanged(bool present, PresenceSensor& sensor) = 0;
/**
* @brief monitor
diff --git a/presence/tach.cpp b/presence/tach.cpp
index deed040..0d96ce5 100644
--- a/presence/tach.cpp
+++ b/presence/tach.cpp
@@ -137,7 +137,7 @@ void Tach::propertiesChanged(
if (currentState != newState)
{
- getPolicy().stateChanged(newState);
+ getPolicy().stateChanged(newState, *this);
currentState = newState;
}
}
OpenPOWER on IntegriCloud