summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/Makefile.am15
-rw-r--r--src/common/mbim-common.c61
-rw-r--r--src/common/mbim-common.h31
3 files changed, 107 insertions, 0 deletions
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
new file mode 100644
index 0000000..747d077
--- /dev/null
+++ b/src/common/Makefile.am
@@ -0,0 +1,15 @@
+SUBDIRS = .
+
+# common library, built as a noinst
+noinst_LTLIBRARIES = libmbim-common.la
+
+libmbim_common_la_CPPFLAGS = \
+ $(MBIM_COMMON_CFLAGS) \
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ -I$(top_srcdir)/src/common
+libmbim_common_la_SOURCES = \
+ mbim-common.h \
+ mbim-common.c
+libmbim_common_la_LIBADD = \
+ $(MBIM_COMMON_LIBS)
diff --git a/src/common/mbim-common.c b/src/common/mbim-common.c
new file mode 100644
index 0000000..fd9bc86
--- /dev/null
+++ b/src/common/mbim-common.c
@@ -0,0 +1,61 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2017 Google Inc.
+ */
+
+#include <config.h>
+#include <stdio.h>
+
+#include "mbim-common.h"
+
+/*****************************************************************************/
+
+gchar *
+mbim_common_str_hex (gconstpointer mem,
+ gsize size,
+ gchar delimiter)
+{
+ const guint8 *data = mem;
+ gsize i;
+ gsize j;
+ gsize new_str_length;
+ gchar *new_str;
+
+ /* Get new string length. If input string has N bytes, we need:
+ * - 1 byte for last NUL char
+ * - 2N bytes for hexadecimal char representation of each byte...
+ * - N-1 bytes for the separator ':'
+ * So... a total of (1+2N+N-1) = 3N bytes are needed... */
+ new_str_length = 3 * size;
+
+ /* Allocate memory for new array and initialize contents to NUL */
+ new_str = g_malloc0 (new_str_length);
+
+ /* Print hexadecimal representation of each byte... */
+ for (i = 0, j = 0; i < size; i++, j += 3) {
+ /* Print character in output string... */
+ snprintf (&new_str[j], 3, "%02X", data[i]);
+ /* And if needed, add separator */
+ if (i != (size - 1) )
+ new_str[j + 2] = delimiter;
+ }
+
+ /* Set output string */
+ return new_str;
+}
diff --git a/src/common/mbim-common.h b/src/common/mbim-common.h
new file mode 100644
index 0000000..3b74dcd
--- /dev/null
+++ b/src/common/mbim-common.h
@@ -0,0 +1,31 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2017 Google Inc.
+ */
+
+#ifndef _COMMON_MBIM_COMMON_H_
+#define _COMMON_MBIM_COMMON_H_
+
+#include <glib.h>
+
+gchar *mbim_common_str_hex (gconstpointer mem,
+ gsize size,
+ gchar delimiter);
+
+#endif /* _COMMON_MBIM_COMMON_H_ */