control: Create parameter trigger

Create a new event trigger that will run actions when a parameter is
either added, removed, or changed.

When the trigger is enabled it is added to the Manager class since that
is where parameters are stored, and then the Manager watches for
parameter changes and runs actions as needed.

The JSON config would look like:
{
    "class": "parameter",
    "parameter": "pcie_floor_index"
}

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I8ff281d49ac780e8ff38f3e8ed02ab95395f1fd3
diff --git a/control/json/triggers/parameter.hpp b/control/json/triggers/parameter.hpp
new file mode 100644
index 0000000..ed7d4fa
--- /dev/null
+++ b/control/json/triggers/parameter.hpp
@@ -0,0 +1,41 @@
+/**
+ * Copyright © 2021 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+
+#include "action.hpp"
+#include "group.hpp"
+#include "trigger_aliases.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <memory>
+#include <vector>
+
+namespace phosphor::fan::control::json::trigger::parameter
+{
+
+/**
+ * @brief Trigger to process an event after a parameter changes
+ *
+ * @param[in] jsonObj - JSON object for the trigger
+ * @param[in] eventName - Name of event associated to the signal
+ * @param[in] actions - Actions associated with the trigger
+ */
+enableTrigger
+    triggerParameter(const json& jsonObj, const std::string& eventName,
+                     std::vector<std::unique_ptr<ActionBase>>& actions);
+
+} // namespace phosphor::fan::control::json::trigger::parameter