summaryrefslogtreecommitdiff
path: root/src/libmbim-glib/mbim-tlv-private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmbim-glib/mbim-tlv-private.h')
-rw-r--r--src/libmbim-glib/mbim-tlv-private.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/libmbim-glib/mbim-tlv-private.h b/src/libmbim-glib/mbim-tlv-private.h
new file mode 100644
index 0000000..7dc2d8f
--- /dev/null
+++ b/src/libmbim-glib/mbim-tlv-private.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * libmbim-glib -- GLib/GIO based library to control MBIM devices
+ *
+ * Copyright (C) 2021 Aleksander Morgado <aleksander@aleksander.es>
+ * Copyright (C) 2021 Intel Corporation
+ *
+ * This is a private non-installed header
+ */
+
+#ifndef _LIBMBIM_GLIB_MBIM_TLV_PRIVATE_H_
+#define _LIBMBIM_GLIB_MBIM_TLV_PRIVATE_H_
+
+#if !defined (LIBMBIM_GLIB_COMPILATION)
+#error "This is a private header!!"
+#endif
+
+#include <glib.h>
+
+#include "mbim-tlv.h"
+
+G_BEGIN_DECLS
+
+/*****************************************************************************/
+/* The MbimTlv */
+
+/* Defined in the same way as GByteArray */
+struct _MbimTlv {
+ guint8 *data;
+ guint len;
+};
+
+struct tlv {
+ guint16 type;
+ guint8 reserved;
+ guint8 padding_length;
+ guint32 data_length;
+ guint8 data[];
+} __attribute__((packed));
+
+#define MBIM_TLV_HEADER(self) ((struct tlv *)(((MbimTlv *)self)->data))
+
+#define MBIM_TLV_FIELD_TYPE(self) MBIM_TLV_HEADER (self)->type
+#define MBIM_TLV_FIELD_RESERVED(self) MBIM_TLV_HEADER (self)->reserved
+#define MBIM_TLV_FIELD_PADDING_LENGTH(self) MBIM_TLV_HEADER (self)->padding_length
+#define MBIM_TLV_FIELD_DATA_LENGTH(self) MBIM_TLV_HEADER (self)->data_length
+#define MBIM_TLV_FIELD_DATA(self) MBIM_TLV_HEADER (self)->data
+
+#define MBIM_TLV_GET_TLV_TYPE(self) (MbimTlvType) GUINT16_FROM_LE (MBIM_TLV_FIELD_TYPE (self))
+#define MBIM_TLV_GET_DATA_LENGTH(self) GUINT32_FROM_LE (MBIM_TLV_FIELD_DATA_LENGTH (self))
+
+/*****************************************************************************/
+/* Print support */
+
+gchar *_mbim_tlv_print (const MbimTlv *tlv,
+ const gchar *line_prefix);
+
+/*****************************************************************************/
+/* Parsing support */
+
+MbimTlv *_mbim_tlv_new_from_raw (const guint8 *raw,
+ guint32 raw_length,
+ guint32 *bytes_read,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* _LIBMBIM_GLIB_MBIM_TLV_PRIVATE_H_ */