While ipc_group_string is not used by libsamsung-ipc (yet),
it's still a good idea to add it as tools and applications using
libsamsung-ipc can then use it to display the group of a command.

It's also a better idea to have it in libsamsung-ipc than in
each tool using it as libsamsung-ipc centralizes the knowledge
about the samsung-ipc protocol, so if new groups appear at some
point, the ipc_group_string function could be updated along the way.

Signed-off-by: Denis 'GNUtoo' Carikli <gnu...@cyberdimension.org>
---
 include/samsung-ipc.h   |  1 +
 samsung-ipc/ipc_utils.c | 50 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 51 insertions(+)

diff --git a/include/samsung-ipc.h b/include/samsung-ipc.h
index fe8413a..25106c6 100644
--- a/include/samsung-ipc.h
+++ b/include/samsung-ipc.h
@@ -137,6 +137,7 @@ int ipc_seq_valid(unsigned char seq);
 const char *ipc_request_type_string(unsigned char type);
 const char *ipc_response_type_string(unsigned char type);
 const char *ipc_command_string(unsigned short command);
+const char *ipc_group_string(unsigned char group);
 
 int ipc_data_dump(struct ipc_client *client, const void *data, size_t size);
 void ipc_client_log_send(struct ipc_client *client, struct ipc_message 
*message,
diff --git a/samsung-ipc/ipc_utils.c b/samsung-ipc/ipc_utils.c
index d8b69b7..9c4ccb8 100644
--- a/samsung-ipc/ipc_utils.c
+++ b/samsung-ipc/ipc_utils.c
@@ -357,6 +357,56 @@ const char *ipc_command_string(unsigned short command)
        }
 }
 
+const char *ipc_group_string(unsigned char group)
+{
+       static char group_string[5] = { 0 };
+
+       switch (group) {
+       case IPC_GROUP_PWR:
+               return "IPC_GROUP_PWR";
+       case IPC_GROUP_CALL:
+               return "IPC_GROUP_CALL";
+       case IPC_GROUP_SMS:
+               return "IPC_GROUP_SMS";
+       case IPC_GROUP_SEC:
+               return "IPC_GROUP_SEC";
+       case IPC_GROUP_PB:
+               return "IPC_GROUP_PB";
+       case IPC_GROUP_DISP:
+               return "IPC_GROUP_DISP";
+       case IPC_GROUP_NET:
+               return "IPC_GROUP_NET";
+       case IPC_GROUP_SND:
+               return "IPC_GROUP_SND";
+       case IPC_GROUP_MISC:
+               return "IPC_GROUP_MISC";
+       case IPC_GROUP_SVC:
+               return "IPC_GROUP_SVC";
+       case IPC_GROUP_SS:
+               return "IPC_GROUP_SS";
+       case IPC_GROUP_GPRS:
+               return "IPC_GROUP_GPRS";
+       case IPC_GROUP_SAT:
+               return "IPC_GROUP_SAT";
+       case IPC_GROUP_CFG:
+               return "IPC_GROUP_CFG";
+       case IPC_GROUP_IMEI:
+               return "IPC_GROUP_IMEI";
+       case IPC_GROUP_GPS:
+               return "IPC_GROUP_GPS";
+       case IPC_GROUP_SAP:
+               return "IPC_GROUP_SAP";
+       case IPC_GROUP_RFS:
+               return "IPC_GROUP_RFS";
+       case IPC_GROUP_GEN:
+               return "IPC_GROUP_GEN";
+       default:
+               snprintf((char *) &group_string, sizeof(group_string), "0x%02x",
+                        (unsigned int)group_string);
+               return group_string;
+       }
+}
+
 int ipc_data_dump(struct ipc_client *client, const void *data, size_t size)
 {
        unsigned int cols = 8;
-- 
2.30.0

_______________________________________________
Replicant mailing list
Replicant@osuosl.org
https://lists.osuosl.org/mailman/listinfo/replicant

Reply via email to