From dc19edbeb4e0cb46b8eeb919fa34f8232a632b6c Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 29 Sep 2017 11:42:38 -0500 Subject: [PATCH] unit: Add device_caps build test --- Makefile.am | 3 +- unit/test-mbim.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 75da527b..d73d1b18 100644 --- a/Makefile.am +++ b/Makefile.am @@ -927,7 +927,8 @@ unit_test_rilmodem_gprs_LDADD = gdbus/libgdbus-internal.la $(builtin_libadd) \ unit_objects += $(unit_test_rilmodem_gprs_OBJECTS) unit_test_mbim_SOURCES = unit/test-mbim.c \ - drivers/mbimmodem/mbim-message.c + drivers/mbimmodem/mbim-message.c \ + drivers/mbimmodem/mbim.c unit_test_mbim_LDADD = @ELL_LIBS@ unit_objects += $(unit_test_mbim_OBJECTS) diff --git a/unit/test-mbim.c b/unit/test-mbim.c index e85d44a4..fb0b53eb 100644 --- a/unit/test-mbim.c +++ b/unit/test-mbim.c @@ -29,6 +29,7 @@ #include +#include "drivers/mbimmodem/mbim.h" #include "drivers/mbimmodem/mbim-message.h" #include "drivers/mbimmodem/mbim-private.h" @@ -64,7 +65,7 @@ static const unsigned char message_binary_device_caps[] = { }; static const struct message_data message_data_device_caps = { - .tid = 0, + .tid = 2, .binary = message_binary_device_caps, .binary_len = sizeof(message_binary_device_caps), }; @@ -141,6 +142,23 @@ static struct mbim_message *build_message(const struct message_data *msg_data) return msg; } +static bool check_message(struct mbim_message *message, + const struct message_data *msg_data) +{ + size_t len; + void *message_binary = _mbim_message_to_bytearray(message, &len); + bool r = false; + + assert(message_binary); + if (len != msg_data->binary_len) + goto done; + + r = memcmp(message_binary, msg_data->binary, len) == 0; +done: + l_free(message_binary); + return r; +} + static void parse_device_caps(const void *data) { struct mbim_message *msg = build_message(data); @@ -189,6 +207,69 @@ static void parse_device_caps(const void *data) mbim_message_unref(msg); } +static void build_device_caps(const void *data) +{ + const struct message_data *msg_data = data; + bool r; + struct mbim_message *message; + struct mbim_message_builder *builder; + uint32_t device_type = 1; + uint32_t cellular_class = 1; + uint32_t voice_class = 1; + uint32_t sim_class = 2; + uint32_t data_class = 0x3f; + uint32_t sms_caps = 0x3; + uint32_t control_caps = 1; + uint32_t max_sessions = 16; + + message = _mbim_message_new_command_done(mbim_uuid_basic_connect, + 1, 0); + assert(message); + + builder = mbim_message_builder_new(message); + assert(builder); + + assert(mbim_message_builder_append_basic(builder, 'u', &device_type)); + assert(mbim_message_builder_append_basic(builder, 'u', + &cellular_class)); + assert(mbim_message_builder_append_basic(builder, 'u', &voice_class)); + assert(mbim_message_builder_append_basic(builder, 'u', &sim_class)); + assert(mbim_message_builder_append_basic(builder, 'u', &data_class)); + assert(mbim_message_builder_append_basic(builder, 'u', &sms_caps)); + assert(mbim_message_builder_append_basic(builder, 'u', &control_caps)); + assert(mbim_message_builder_append_basic(builder, 'u', &max_sessions)); + + assert(mbim_message_builder_append_basic(builder, 's', NULL)); + assert(mbim_message_builder_append_basic(builder, 's', + "359336050018717")); + assert(mbim_message_builder_append_basic(builder, 's', + "FIH7160_V1.1_MODEM_01.1408.07")); + assert(mbim_message_builder_append_basic(builder, 's', + "XMM7160_V1.1_MBIM_GNSS_NAND_RE")); + + assert(mbim_message_builder_finalize(builder)); + mbim_message_builder_free(builder); + + _mbim_message_set_tid(message, msg_data->tid); + assert(check_message(message, msg_data)); + mbim_message_unref(message); + + /* now try to build the same message using set_arguments */ + message = _mbim_message_new_command_done(mbim_uuid_basic_connect, + 1, 0); + assert(message); + r = mbim_message_set_arguments(message, "uuuuuuuussss", + 1, 1, 1, 2, 0x3f, 0x3, 1, 16, + NULL, "359336050018717", + "FIH7160_V1.1_MODEM_01.1408.07", + "XMM7160_V1.1_MBIM_GNSS_NAND_RE"); + assert(r); + + _mbim_message_set_tid(message, msg_data->tid); + assert(check_message(message, msg_data)); + mbim_message_unref(message); +} + static void parse_subscriber_ready_status(const void *data) { struct mbim_message *msg = build_message(data); @@ -261,6 +342,8 @@ int main(int argc, char *argv[]) l_test_add("Device Caps (parse)", parse_device_caps, &message_data_device_caps); + l_test_add("Device Caps (build)", + build_device_caps, &message_data_device_caps); l_test_add("Subscriber Ready Status (parse)", parse_subscriber_ready_status,