summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gatchat/gatutil.c23
-rw-r--r--gatchat/gatutil.h7
2 files changed, 28 insertions, 2 deletions
diff --git a/gatchat/gatutil.c b/gatchat/gatutil.c
index 575019d6..1306c616 100644
--- a/gatchat/gatutil.c
+++ b/gatchat/gatutil.c
@@ -109,6 +109,29 @@ void g_at_util_debug_chat(gboolean in, const char *str, gsize len,
g_free(escaped_str);
}
+void g_at_util_debug_dump(gboolean in, const unsigned char *buf, gsize len,
+ GAtDebugFunc debugf, gpointer user_data)
+{
+ char type = in ? '<' : '>';
+ GString *str;
+ gsize i;
+
+ if (!debugf || !len)
+ return;
+
+ str = g_string_sized_new(1 + (len * 2));
+ if (!str)
+ return;
+
+ g_string_append_c(str, type);
+
+ for (i = 0; i < len; i++)
+ g_string_append_printf(str, " %02x", buf[i]);
+
+ debugf(str->str, user_data);
+ g_string_free(str, TRUE);
+}
+
gboolean g_at_util_setup_io(GIOChannel *io, GIOFlags flags)
{
GIOFlags io_flags;
diff --git a/gatchat/gatutil.h b/gatchat/gatutil.h
index 993db457..1a065af2 100644
--- a/gatchat/gatutil.h
+++ b/gatchat/gatutil.h
@@ -22,15 +22,18 @@
#ifndef __GATUTIL_H
#define __GATUTIL_H
+#include "gat.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "gat.h"
-
void g_at_util_debug_chat(gboolean in, const char *str, gsize len,
GAtDebugFunc debugf, gpointer user_data);
+void g_at_util_debug_dump(gboolean in, const unsigned char *buf, gsize len,
+ GAtDebugFunc debugf, gpointer user_data);
+
gboolean g_at_util_setup_io(GIOChannel *io, GIOFlags flags);
#ifdef __cplusplus