summaryrefslogtreecommitdiff
path: root/drivers/mbimmodem
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2017-10-02 19:17:16 -0500
committerDenis Kenzior <denkenz@gmail.com>2017-10-05 11:08:38 -0500
commit1d16d4ac4ee595eac86612c2183b540c338cbc18 (patch)
tree63833200245152ff661e86e0e60b127fc512035b /drivers/mbimmodem
parent0c8199dca5aa4eb2401322992bb7b03d10e2df52 (diff)
downloadofono-1d16d4ac4ee595eac86612c2183b540c338cbc18.tar.gz
mbim: Add header & body accessors for mbim-message
Diffstat (limited to 'drivers/mbimmodem')
-rw-r--r--drivers/mbimmodem/mbim-message.c21
-rw-r--r--drivers/mbimmodem/mbim-private.h3
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/mbimmodem/mbim-message.c b/drivers/mbimmodem/mbim-message.c
index 4db0324f..9d6b99de 100644
--- a/drivers/mbimmodem/mbim-message.c
+++ b/drivers/mbimmodem/mbim-message.c
@@ -1351,3 +1351,24 @@ bool mbim_message_set_arguments(struct mbim_message *message,
return result;
}
+
+void *_mbim_message_get_header(struct mbim_message *message, size_t *out_len)
+{
+ if (out_len)
+ *out_len = HEADER_SIZE;
+
+ return message->header;
+}
+
+struct iovec *_mbim_message_get_body(struct mbim_message *message,
+ size_t *out_n_iov, size_t *out_len)
+{
+ if (out_len)
+ *out_len = message->info_buf_len;
+
+ if (out_n_iov)
+ *out_n_iov = message->info_buf_len ? message->n_frags :
+ message->n_frags - 1;
+
+ return message->frags;
+}
diff --git a/drivers/mbimmodem/mbim-private.h b/drivers/mbimmodem/mbim-private.h
index 72f7a879..e1592355 100644
--- a/drivers/mbimmodem/mbim-private.h
+++ b/drivers/mbimmodem/mbim-private.h
@@ -54,3 +54,6 @@ struct mbim_message *_mbim_message_new_command_done(const uint8_t *uuid,
uint32_t _mbim_information_buffer_offset(uint32_t type);
void _mbim_message_set_tid(struct mbim_message *message, uint32_t tid);
void *_mbim_message_to_bytearray(struct mbim_message *message, size_t *out_len);
+void *_mbim_message_get_header(struct mbim_message *message, size_t *out_len);
+struct iovec *_mbim_message_get_body(struct mbim_message *message,
+ size_t *out_n_iov, size_t *out_len);