Trigger current mode property change events

Each time the current mode property changes, handle the event similarly
to other event signal triggers substituting with a null message. When
the handler receives a null message, the property's value that triggered
the event is retrieved whether from the zone object or from dbus.

Tested:
    Triggered the use of alternative events based on thermal control
mode property state

Change-Id: Ibc663c3721c331393250bd32bda0d45cf0214f12
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/zone.cpp b/control/zone.cpp
index 60d2947..7a5f926 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -642,7 +642,17 @@
     {
         current = ThermalObject::current(value);
         saveCurrentMode();
-        // TODO Trigger event(s) for mode property change
+        // Trigger event(s) for custom mode property change
+        fs::path path{CONTROL_OBJPATH};
+        path /= std::to_string(_zoneNum);
+        auto eData = _objects[path.string()]
+                             ["xyz.openbmc_project.Control.ThermalMode"]
+                             ["Current"];
+        if (eData != nullptr)
+        {
+            sdbusplus::message::message nullMsg{nullptr};
+            handleEvent(nullMsg, eData);
+        }
     }
     return current;
 }