control: Update JSON action objects to run the action

A change in design direction for the JSON configuration path of fan
control is to have it separate than the YAML configuration
functionality. This means that the JSON based action objects will run
the action function directly instead of returning the action function
which is done for YAML based configurations.

Update the default floor action to reflect this change in direction.

Change-Id: I75ade1c7e2e9698573c5ed2495c2f3b7e9cf52f0
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/json/actions/default_floor.hpp b/control/json/actions/default_floor.hpp
index 804ce18..5aa4182 100644
--- a/control/json/actions/default_floor.hpp
+++ b/control/json/actions/default_floor.hpp
@@ -1,5 +1,5 @@
 /**
- * Copyright © 2020 IBM Corporation
+ * 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.
@@ -17,6 +17,7 @@
 
 #include "action.hpp"
 #include "types.hpp"
+#include "zone.hpp"
 
 #include <nlohmann/json.hpp>
 
@@ -46,9 +47,24 @@
     DefaultFloor& operator=(DefaultFloor&&) = delete;
     ~DefaultFloor() = default;
 
+    /**
+     * @brief Default the fan floor speed
+     *
+     * No JSON configuration parameters required
+     */
     explicit DefaultFloor(const json&);
 
-    const Action getAction() override;
+    /**
+     * @brief Run the action
+     *
+     * Updates the services of the group, then determines if any of the
+     * services hosting the members of the group are not owned on dbus
+     * resulting in the zone's floor being set/held at the default floor.
+     *
+     * @param[in] zone - Zone to run the action on
+     * @param[in] group - Group of dbus objects the action runs against
+     */
+    void run(Zone& zone, const Group& group) override;
 };
 
 } // namespace phosphor::fan::control::json