groupext: Use registerHandler instead of ipmi_register_callback

Since ipmi_register_callback declared in api.h has been gradually
deprecated, this submission is to use registerHandler instead of
ipmi_register_callback.

Tested:
```
~# ipmitool raw 0x2c 0x00 0xdc
 dc 00
```

Change-Id: I26a2bfa0a6e54a38b196d97b6e2e80d5af25f3d9
Signed-off-by: George Liu <liuxiwei@ieisystem.com>
diff --git a/groupext.cpp b/groupext.cpp
index d71c6cf..4bc14cc 100644
--- a/groupext.cpp
+++ b/groupext.cpp
@@ -1,31 +1,30 @@
+#include <ipmid/api-types.hpp>
 #include <ipmid/api.hpp>
+#include <phosphor-logging/lg2.hpp>
 
-#include <cstdio>
+namespace group
+{
+constexpr ipmi::Cmd cmdGetGroupExt = 0x0;
+} // namespace group
 
-#define GRPEXT_GET_GROUP_CMD 0
 void registerNetFnGroupExtFunctions() __attribute__((constructor));
 
-ipmi::Cc ipmi_groupext(ipmi_netfn_t, ipmi_cmd_t, ipmi_request_t,
-                       ipmi_response_t response, ipmi_data_len_t data_len,
-                       ipmi_context_t)
+ipmi::RspType<uint8_t> ipmiGroupExt()
 {
+    lg2::info("IPMI GROUP EXTENSIONS");
+
     // Generic return from IPMI commands.
-    ipmi::Cc rc = ipmi::ccSuccess;
-    uint8_t* p = (uint8_t*)response;
+    constexpr uint8_t respData = 0;
 
-    std::printf("IPMI GROUP EXTENSIONS\n");
-
-    *data_len = 1;
-    *p = 0;
-
-    return rc;
+    return ipmi::responseSuccess(respData);
 }
 
 void registerNetFnGroupExtFunctions()
 {
     // <Group Extension Command>
-    ipmi_register_callback(ipmi::netFnGroup, GRPEXT_GET_GROUP_CMD, nullptr,
-                           ipmi_groupext, PRIVILEGE_USER);
+    ipmi::registerGroupHandler(ipmi::prioOpenBmcBase, ipmi::groupDCMI,
+                               group::cmdGetGroupExt, ipmi::Privilege::User,
+                               ipmiGroupExt);
 
     return;
 }