diff --git a/unit/test-mbim.c b/unit/test-mbim.c index f236f82d..eb8aa8a9 100644 --- a/unit/test-mbim.c +++ b/unit/test-mbim.c @@ -69,6 +69,30 @@ static const struct message_data message_data_device_caps = { .binary_len = sizeof(message_binary_device_caps), }; +static const unsigned char message_binary_subscriber_ready_status[] = { + 0x03, 0x00, 0x00, 0x80, 0xB4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x89, 0xCC, 0x33, + 0xBC, 0xBB, 0x8B, 0x4F, 0xB6, 0xB0, 0x13, 0x3E, 0xC2, 0xAA, 0xE6, 0xDF, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x31, 0x00, 0x30, 0x00, 0x34, 0x00, 0x31, 0x00, 0x30, 0x00, + 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x39, 0x00, 0x32, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x37, 0x00, 0x34, 0x00, 0x00, 0x00, 0x38, 0x00, 0x39, 0x00, + 0x30, 0x00, 0x31, 0x00, 0x34, 0x00, 0x31, 0x00, 0x30, 0x00, 0x34, 0x00, + 0x32, 0x00, 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x37, 0x00, 0x39, 0x00, + 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x37, 0x00, 0x34, 0x00, 0x37, 0x00, + 0x31, 0x00, 0x35, 0x00, 0x31, 0x00, 0x32, 0x00, 0x34, 0x00, 0x33, 0x00, + 0x31, 0x00, 0x30, 0x00, 0x35, 0x00, 0x39, 0x00, 0x36, 0x00, 0x00, 0x00 +}; + +static const struct message_data message_data_subscriber_ready_status = { + .tid = 2, + .binary = message_binary_subscriber_ready_status, + .binary_len = sizeof(message_binary_subscriber_ready_status), +}; + static struct mbim_message *build_message(const struct message_data *msg_data) { static const int frag_size = 64; @@ -147,6 +171,45 @@ static void parse_device_caps(const void *data) mbim_message_unref(msg); } +static void parse_subscriber_ready_status(const void *data) +{ + struct mbim_message *msg = build_message(data); + uint32_t ready_state; + char *imsi; + char *iccid; + uint32_t ready_info; + uint32_t n_phone_numbers; + char *phone_number; + struct mbim_message_iter array; + bool r; + + r = mbim_message_get_arguments(msg, "ussuas", + &ready_state, &imsi, &iccid, + &ready_info, + &n_phone_numbers, &array); + assert(r); + + assert(ready_state == 1); + assert(imsi); + assert(!strcmp(imsi, "310410227923374")); + assert(iccid); + assert(!strcmp(iccid, "89014104212279233747")); + assert(ready_info == 0); + + assert(n_phone_numbers == 1); + assert(mbim_message_iter_next_entry(&array, &phone_number)); + + assert(phone_number); + assert(!strcmp(phone_number, "15124310596")); + l_free(phone_number); + + assert(!mbim_message_iter_next_entry(&array, &phone_number)); + + l_free(imsi); + l_free(iccid); + mbim_message_unref(msg); +} + int main(int argc, char *argv[]) { l_test_init(&argc, &argv); @@ -154,5 +217,9 @@ int main(int argc, char *argv[]) l_test_add("Device Caps (parse)", parse_device_caps, &message_data_device_caps); + l_test_add("Subscriber Ready Status (parse)", + parse_subscriber_ready_status, + &message_data_subscriber_ready_status); + return l_test_run(); }