Move set bmc global command to new API

Rewrite set bmc global command to the new API.

Tested:
ipmitool raw 6 0x2e 8
Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x2e rsp=0xcc):
Invalid data field in request

ipmitool mc setenables recv_msg_intr=on system_event_log=on
Enabling Receive Message Queue Interrupt
Enabling System Event Logging

Nothing to change...
Receive Message Queue Interrupt          : enabled
Event Message Buffer Full Interrupt      : disabled
Event Message Buffer                     : disabled
System Event Logging                     : enabled
OEM 0                                    : disabled
OEM 1                                    : disabled
OEM 2                                    : disabled

Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
Change-Id: I79bb6186b880c8f26890cc6a1851ef05650efc5b
diff --git a/systemintfcmds.cpp b/systemintfcmds.cpp
index 0c50c87..9ec65d1 100644
--- a/systemintfcmds.cpp
+++ b/systemintfcmds.cpp
@@ -100,30 +100,23 @@
     return rc;
 }
 
-ipmi_ret_t ipmi_app_set_bmc_global_enables(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
-                                           ipmi_request_t request,
-                                           ipmi_response_t response,
-                                           ipmi_data_len_t data_len,
-                                           ipmi_context_t context)
+ipmi::RspType<> ipmiAppSetBMCGlobalEnable(
+    ipmi::Context::ptr ctx, bool receiveMessageQueueInterruptEnabled,
+    bool eventMessageBufferFullInterruptEnabled, bool eventMessageBufferEnabled,
+    bool systemEventLogEnable, uint1_t reserved, bool OEM0Enabled,
+    bool OEM1Enabled, bool OEM2Enabled)
 {
-    ipmi_ret_t rc = IPMI_CC_OK;
-
-    uint8_t reqMask = *reinterpret_cast<uint8_t*>(request);
-    if (sizeof(reqMask) != *data_len)
-    {
-        *data_len = 0;
-        return IPMI_CC_REQ_DATA_LEN_INVALID;
-    }
-
-    *data_len = 0;
     // Recv Message Queue and SEL are enabled by default.
     // Event Message buffer are disabled by default (not supported).
     // Any request that try to change the mask will be rejected
-    if (reqMask != (selEnable | recvMsgQueueEnable))
+    if (!receiveMessageQueueInterruptEnabled || !systemEventLogEnable ||
+        eventMessageBufferFullInterruptEnabled || eventMessageBufferEnabled ||
+        OEM0Enabled || OEM1Enabled || OEM2Enabled || reserved)
     {
-        return IPMI_CC_INVALID_FIELD_REQUEST;
+        return ipmi::responseInvalidFieldRequest();
     }
-    return rc;
+
+    return ipmi::responseSuccess();
 }
 
 namespace
@@ -143,8 +136,9 @@
                            ipmi_app_read_event, SYSTEM_INTERFACE);
 
     // <Set BMC Global Enables>
-    ipmi_register_callback(NETFUN_APP, IPMI_CMD_SET_BMC_GLOBAL_ENABLES, NULL,
-                           ipmi_app_set_bmc_global_enables, SYSTEM_INTERFACE);
+    ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp,
+                          ipmi::app::cmdSetBmcGlobalEnables,
+                          ipmi::Privilege::Admin, ipmiAppSetBMCGlobalEnable);
 
     // <Get BMC Global Enables>
     ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_BMC_GLOBAL_ENABLES, NULL,