diff options
Diffstat (limited to 'src/libmbim-glib/test')
-rw-r--r-- | src/libmbim-glib/test/test-message-builder.c | 67 | ||||
-rw-r--r-- | src/libmbim-glib/test/test-message-parser.c | 108 |
2 files changed, 174 insertions, 1 deletions
diff --git a/src/libmbim-glib/test/test-message-builder.c b/src/libmbim-glib/test/test-message-builder.c index ad16abd..bfd51d4 100644 --- a/src/libmbim-glib/test/test-message-builder.c +++ b/src/libmbim-glib/test/test-message-builder.c @@ -2,6 +2,7 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2013 - 2014 Aleksander Morgado <aleksander@aleksander.es> + * Copyright (C) 2023 Intel Corporation */ #include <config.h> @@ -19,6 +20,7 @@ #include "mbim-dss.h" #include "mbim-ms-host-shutdown.h" #include "mbim-ms-basic-connect-extensions.h" +#include "mbim-google.h" static void test_message_trace (const guint8 *computed, @@ -1771,6 +1773,70 @@ test_ms_basic_connect_v3_connect_set (void) mbim_message_unref (message); } +static void +test_google_carrier_lock_set (void) +{ + g_autoptr(GError) error = NULL; + g_autoptr(MbimMessage) message = NULL; + + const guint8 expected_message [] = { + /* header */ + 0x03, 0x00, 0x00, 0x00, /* type */ + 0x40, 0x00, 0x00, 0x00, /* length */ + 0x01, 0x00, 0x00, 0x00, /* transaction id */ + /* fragment header */ + 0x01, 0x00, 0x00, 0x00, /* total */ + 0x00, 0x00, 0x00, 0x00, /* current */ + /* command_message */ + 0x3E, 0x1E, 0x92, 0xCF, /* service id */ + 0xC5, 0x3D, 0x4F, 0x14, + 0x85, 0xD0, 0xA8, 0x6A, + 0xD9, 0xE1, 0x22, 0x45, + 0x01, 0x00, 0x00, 0x00, /* command id */ + 0x01, 0x00, 0x00, 0x00, /* command type */ + 0x10, 0x00, 0x00, 0x00, /* buffer length */ + /* information buffer */ + 0x0A, 0x00, 0x00, 0x00, /* data buffer */ + 0x56, 0x24, 0x46, 0x95, + 0xAB, 0xCD, 0x25, 0x59, + 0x14, 0x35, 0x00, 0x00, + }; + + const guint8 data [] = { + 0x56, 0x24, 0x46, 0x95, + 0xAB, 0xCD, 0x25, 0x59, + 0x14, 0x35, + }; + message = mbim_message_google_carrier_lock_set_new ( + sizeof (data), + data, + &error); + + g_assert_no_error (error); + g_assert (message != NULL); + g_assert (mbim_message_validate (message, &error)); + + mbim_message_set_transaction_id (message, 1); + + test_message_trace ((const guint8 *)((GByteArray *)message)->data, + ((GByteArray *)message)->len, + expected_message, + sizeof (expected_message)); + + g_assert_cmpuint (mbim_message_get_transaction_id (message), ==, 1); + g_assert_cmpuint (mbim_message_get_message_type (message), ==, MBIM_MESSAGE_TYPE_COMMAND); + g_assert_cmpuint (mbim_message_get_message_length (message), ==, sizeof (expected_message)); + + g_assert_cmpuint (mbim_message_command_get_service (message), ==, MBIM_SERVICE_GOOGLE); + g_assert_cmpuint (mbim_message_command_get_cid (message), ==, MBIM_CID_GOOGLE_CARRIER_LOCK); + g_assert_cmpuint (mbim_message_command_get_command_type (message), ==, MBIM_MESSAGE_COMMAND_TYPE_SET); + + g_assert_cmpuint (((GByteArray *)message)->len, ==, sizeof (expected_message)); + g_assert (memcmp (((GByteArray *)message)->data, expected_message, sizeof (expected_message)) == 0); + + test_message_printable (message, 1, 0); +} + int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL); @@ -1798,6 +1864,7 @@ int main (int argc, char **argv) g_test_add_func (PREFIX "/ms-basic-connect-extensions/registration-parameters/set/1-unnamed-tlv", test_ms_basic_connect_extensions_registration_parameters_set_1_unnamed_tlv); g_test_add_func (PREFIX "/ms-basic-connect-extensions/registration-parameters/set/3-unnamed-tlvs", test_ms_basic_connect_extensions_registration_parameters_set_3_unnamed_tlvs); g_test_add_func (PREFIX "/ms-basic-connect-v3/connect/set", test_ms_basic_connect_v3_connect_set); + g_test_add_func (PREFIX "/google/carrier-lock/set", test_google_carrier_lock_set); #undef PREFIX diff --git a/src/libmbim-glib/test/test-message-parser.c b/src/libmbim-glib/test/test-message-parser.c index e13d94f..e30aecd 100644 --- a/src/libmbim-glib/test/test-message-parser.c +++ b/src/libmbim-glib/test/test-message-parser.c @@ -15,6 +15,7 @@ #include "mbim-ms-firmware-id.h" #include "mbim-ms-basic-connect-extensions.h" #include "mbim-ms-uicc-low-level-access.h" +#include "mbim-google.h" #include "mbim-message.h" #include "mbim-tlv.h" #include "mbim-cid.h" @@ -2141,7 +2142,7 @@ test_ms_basic_connect_extensions_base_stations (void) g_autoptr(MbimMessage) response = NULL; gboolean result; MbimDataClass system_type; - g_autoptr(MbimCellInfoServingGsm) gsm_serving_cell = NULL; + g_autoptr(MbimCellInfoServingGsm) gsm_serving_cell = NULL; g_autoptr(MbimCellInfoServingUmts) umts_serving_cell = NULL; g_autoptr(MbimCellInfoServingTdscdma) tdscdma_serving_cell = NULL; g_autoptr(MbimCellInfoServingLte) lte_serving_cell = NULL; @@ -3392,6 +3393,109 @@ test_ms_uicc_low_level_access_application_list (void) g_assert (memcmp (applications[0]->pin_key_references, expected_pin_key_references, sizeof (expected_pin_key_references)) == 0); } +static void +test_google_carrier_lock (void) +{ + g_autoptr(GError) error = NULL; + g_autoptr(MbimMessage) response = NULL; + gboolean result; + MbimCarrierLockStatus carrier_lock_status; + MbimCarrierLockModemState modem_state; + MbimCarrierLockCause carrier_lock_cause; + + const guint8 buffer [] = { + /* header */ + 0x03, 0x00, 0x00, 0x80, /* type */ + 0x3C, 0x00, 0x00, 0x00, /* length */ + 0x03, 0x00, 0x00, 0x00, /* transaction id */ + /* fragment header */ + 0x01, 0x00, 0x00, 0x00, /* total */ + 0x00, 0x00, 0x00, 0x00, /* current */ + /* command_done message */ + 0x3E, 0x1E, 0x92, 0xCF, /* service id */ + 0xC5, 0x3D, 0x4F, 0x14, + 0x85, 0xD0, 0xA8, 0x6A, + 0xD9, 0xE1, 0x22, 0x45, + 0x01, 0x00, 0x00, 0x00, /* command id */ + 0x00, 0x00, 0x00, 0x00, /* status code */ + 0x0C, 0x00, 0x00, 0x00, /* buffer length */ + /* information buffer */ + 0x01, 0x00, 0x00, 0x00, /* carrier lock status*/ + 0x00, 0x00, 0x00, 0x00, /* modem state */ + 0x00, 0x00, 0x00, 0x00, /* carrier lock cause */ + }; + + response = mbim_message_new (buffer, sizeof (buffer)); + g_assert (mbim_message_validate (response, &error)); + g_assert_no_error (error); + + test_message_printable (response, 1, 0); + + result = mbim_message_google_carrier_lock_response_parse ( + response, + &carrier_lock_status, + &modem_state, + &carrier_lock_cause, + &error); + g_assert_no_error (error); + g_assert (result); + + g_assert_cmpuint (carrier_lock_status, ==, MBIM_CARRIER_LOCK_STATUS_APPLIED); + g_assert_cmpuint (modem_state, ==, MBIM_CARRIER_LOCK_MODEM_STATE_DEREGISTERED); + g_assert_cmpuint (carrier_lock_cause, ==, MBIM_CARRIER_LOCK_CAUSE_NOT_APPLICABLE); +} + +static void +test_google_carrier_lock_notification (void) +{ + g_autoptr(GError) error = NULL; + g_autoptr(MbimMessage) response = NULL; + gboolean result; + MbimCarrierLockStatus carrier_lock_status; + MbimCarrierLockModemState modem_state; + MbimCarrierLockCause carrier_lock_cause; + + const guint8 buffer [] = { + /* header */ + 0x07, 0x00, 0x00, 0x80, /* type */ + 0x38, 0x00, 0x00, 0x00, /* length */ + 0x03, 0x00, 0x00, 0x00, /* transaction id */ + /* fragment header */ + 0x01, 0x00, 0x00, 0x00, /* total */ + 0x00, 0x00, 0x00, 0x00, /* current */ + /* command_done message */ + 0x3E, 0x1E, 0x92, 0xCF, /* service id */ + 0xC5, 0x3D, 0x4F, 0x14, + 0x85, 0xD0, 0xA8, 0x6A, + 0xD9, 0xE1, 0x22, 0x45, + 0x01, 0x00, 0x00, 0x00, /* command id */ + 0x0C, 0x00, 0x00, 0x00, /* buffer length */ + /* information buffer */ + 0x01, 0x00, 0x00, 0x00, /* carrier lock status */ + 0x00, 0x00, 0x00, 0x00, /* modem state */ + 0x00, 0x00, 0x00, 0x00, /* carrier lock cause */ + }; + + response = mbim_message_new (buffer, sizeof (buffer)); + g_assert (mbim_message_validate (response, &error)); + g_assert_no_error (error); + + test_message_printable (response, 1, 0); + + result = mbim_message_google_carrier_lock_notification_parse ( + response, + &carrier_lock_status, + &modem_state, + &carrier_lock_cause, + &error); + g_assert_no_error (error); + g_assert (result); + + g_assert_cmpuint (carrier_lock_status, ==, MBIM_CARRIER_LOCK_STATUS_APPLIED); + g_assert_cmpuint (modem_state, ==, MBIM_CARRIER_LOCK_MODEM_STATE_DEREGISTERED); + g_assert_cmpuint (carrier_lock_cause, ==, MBIM_CARRIER_LOCK_CAUSE_NOT_APPLICABLE); +} + int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL); @@ -3434,6 +3538,8 @@ int main (int argc, char **argv) g_test_add_func (PREFIX "/basic-connect-extensions/wake-reason/command/payload", test_ms_basic_connect_extensions_wake_reason_command_payload); g_test_add_func (PREFIX "/basic-connect-extensions/wake-reason/packet", test_ms_basic_connect_extensions_wake_reason_packet); g_test_add_func (PREFIX "/ms-uicc-low-level-access/application-list", test_ms_uicc_low_level_access_application_list); + g_test_add_func (PREFIX "/google/carrier-lock-response", test_google_carrier_lock); + g_test_add_func (PREFIX "/google/carrier-lock-notify", test_google_carrier_lock_notification); #undef PREFIX |