Translating ME Health Sensor Platform Events to Redfish Events

Following code implements parsing logic for all ME Health Sensor Platform
Events. It is built in similar manner to existing implementation of
BIOS SEL events parsing and follows the same principles:
- try to parse event, store id and params as Redfish Event on success,
- if event is unparsable - store raw IPMI frame as generic SEL event.

As there exists many events which would share exactly the same parsing
logic, some higher level function (genericMessageHook) and some helper
functions were introduced. Idea of this is that for events which are
easily parsable (like mapping byte to concrete event) should be handled
by metadata-driven algorithm. For more complex events ability to specify
lower-level parser methods was introduced.

In general flow looks like the following:
1) event is recognized as originating from ME, me::messageHook is called
2) event comes from me::HealthSensor, health_event::messageHook is called
3) based on Platform Event offset byte either fw_status or smbus_failure
   event messageHook is called
4a) for smbus_failure : simple function called

.....

4b) for fw_status: map is used, deciding further processing based on
    event.eventData2
5) map[event.eventData2] contains : MessageId and instructions on further
   processing. It might be:
   a) empty - no extra processing,
   b) map - maps eventData3 to string value and adds it to MessageParams,
   b) function - specialized parsing routines for given eventData2.

Testing:
- injected all possible events with busctl call (faking ME)
- tested on actual platform with manually triggered events by actual ME

Signed-off-by: Agnieszka Szlendak <Agnieszka.Szlendak@intel.com>
Change-Id: Ib13e4ace10b6382ea0800d34241e98a73b6626b3
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f484d47..6a7f843 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -102,8 +102,9 @@
              src/firmware-update.cpp src/appcommands.cpp src/smbioshandler.cpp
              src/smbiosmdrv2handler.cpp src/manufacturingcommands.cpp
              src/bmccontrolservices.cpp src/bridgingcommands.cpp
-             src/ipmi_to_redfish_hooks.cpp src/chassiscommands.cpp
-             src/whitelist-filter.cpp include/ipmi-whitelist.hpp)
+             src/ipmi_to_redfish_hooks.cpp src/me_to_redfish_hooks.cpp
+             src/chassiscommands.cpp src/whitelist-filter.cpp
+             include/ipmi-whitelist.hpp)
 set_target_properties (zinteloemcmds PROPERTIES VERSION "0.1.0")
 set_target_properties (zinteloemcmds PROPERTIES SOVERSION "0")
 target_link_libraries (zinteloemcmds stdc++fs)