mbim: Add mbim_message_get_arguments

This commit is contained in:
Denis Kenzior 2017-09-26 13:27:35 -05:00
parent 3ee2343803
commit b9de1d999f
2 changed files with 35 additions and 0 deletions

View File

@ -412,3 +412,35 @@ struct mbim_message *_mbim_message_build(const void *header,
return msg;
}
bool mbim_message_get_arguments(struct mbim_message *message,
const char *signature, ...)
{
struct mbim_message_iter iter;
va_list args;
bool result;
struct mbim_message_header *hdr;
uint32_t type;
size_t begin;
if (unlikely(!message))
return false;
if (unlikely(!message->sealed))
return false;
hdr = (struct mbim_message_header *) message->header;
type = L_LE32_TO_CPU(hdr->type);
begin = _mbim_information_buffer_offset(type);
_iter_init_internal(&iter, CONTAINER_TYPE_STRUCT,
signature, NULL,
message->frags, message->n_frags,
message->info_buf_len, begin, 0, 0);
va_start(args, signature);
result = message_iter_next_entry_valist(&iter, args);
va_end(args);
return result;
}

View File

@ -43,4 +43,7 @@ struct mbim_message *mbim_message_new(const uint8_t *uuid, uint32_t cid);
struct mbim_message *mbim_message_ref(struct mbim_message *msg);
void mbim_message_unref(struct mbim_message *msg);
bool mbim_message_get_arguments(struct mbim_message *message,
const char *signature, ...);
bool mbim_message_iter_next_entry(struct mbim_message_iter *iter, ...);