summaryrefslogtreecommitdiff
path: root/libqmi-glib/qmi-utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'libqmi-glib/qmi-utils.c')
-rw-r--r--libqmi-glib/qmi-utils.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/libqmi-glib/qmi-utils.c b/libqmi-glib/qmi-utils.c
index 0e99469..39cf285 100644
--- a/libqmi-glib/qmi-utils.c
+++ b/libqmi-glib/qmi-utils.c
@@ -190,6 +190,26 @@ qmi_utils_read_gint64_from_buffer (guint8 **buffer,
}
void
+qmi_utils_read_sized_guint_from_buffer (guint8 **buffer,
+ guint16 *buffer_size,
+ guint n_bytes,
+ guint64 *out)
+{
+ guint64 tmp = 0;
+
+ g_assert (out != NULL);
+ g_assert (buffer != NULL);
+ g_assert (buffer_size != NULL);
+ g_assert (*buffer_size >= n_bytes);
+
+ memcpy (&tmp, *buffer, n_bytes);
+ *out = GUINT64_FROM_LE (tmp);
+
+ *buffer = &((*buffer)[n_bytes]);
+ *buffer_size = (*buffer_size) - n_bytes;
+}
+
+void
qmi_utils_write_guint8_to_buffer (guint8 **buffer,
guint16 *buffer_size,
guint8 *in)
@@ -318,6 +338,26 @@ qmi_utils_write_gint64_to_buffer (guint8 **buffer,
}
void
+qmi_utils_write_sized_guint_to_buffer (guint8 **buffer,
+ guint16 *buffer_size,
+ guint n_bytes,
+ guint64 *in)
+{
+ guint64 tmp;
+
+ g_assert (in != NULL);
+ g_assert (buffer != NULL);
+ g_assert (buffer_size != NULL);
+ g_assert (*buffer_size >= n_bytes);
+
+ tmp = GUINT64_TO_LE (*in);
+ memcpy (*buffer, &tmp, n_bytes);
+
+ *buffer = &((*buffer)[n_bytes]);
+ *buffer_size = (*buffer_size) - n_bytes;
+}
+
+void
qmi_utils_read_string_from_buffer (guint8 **buffer,
guint16 *buffer_size,
gboolean length_prefix,