diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2015-02-25 13:18:41 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2015-02-25 13:19:05 +0100 |
commit | 0ad5f9ce6269b73e6bc8d0d5821ed7059f17b2ff (patch) | |
tree | d68450a7d29dd90397d42ff4b062a1b06e238db7 | |
parent | 9d2435448912fe9af86369def253f558c49db272 (diff) | |
download | libmbim-0ad5f9ce6269b73e6bc8d0d5821ed7059f17b2ff.tar.gz |
libmbim-glib,message: allow building messages of custom services
Once a service has been registered, we should allow users of the library to
actually build Command messages with the new service.
https://bugs.freedesktop.org/show_bug.cgi?id=77225
-rw-r--r-- | src/libmbim-glib/mbim-message.c | 3 | ||||
-rw-r--r-- | src/libmbim-glib/test/test-message.c | 45 |
2 files changed, 39 insertions, 9 deletions
diff --git a/src/libmbim-glib/mbim-message.c b/src/libmbim-glib/mbim-message.c index 5ca8ef5..b625ee5 100644 --- a/src/libmbim-glib/mbim-message.c +++ b/src/libmbim-glib/mbim-message.c @@ -1811,9 +1811,8 @@ mbim_message_command_new (guint32 transaction_id, const MbimUuid *service_id; /* Known service required */ - g_return_val_if_fail (service > MBIM_SERVICE_INVALID, FALSE); - g_return_val_if_fail (service <= MBIM_SERVICE_PROXY_CONTROL, FALSE); service_id = mbim_uuid_from_service (service); + g_return_val_if_fail (service_id != NULL, NULL); self = _mbim_message_allocate (MBIM_MESSAGE_TYPE_COMMAND, transaction_id, diff --git a/src/libmbim-glib/test/test-message.c b/src/libmbim-glib/test/test-message.c index 6908eaf..a962db6 100644 --- a/src/libmbim-glib/test/test-message.c +++ b/src/libmbim-glib/test/test-message.c @@ -149,6 +149,36 @@ test_message_command_not_empty (void) } static void +test_message_command_custom_service (void) +{ + static const gchar *nick = "My custom service"; + static const MbimUuid uuid_custom = { + .a = { 0x11, 0x22, 0x33, 0x44 }, + .b = { 0x11, 0x11 }, + .c = { 0x22, 0x22 }, + .d = { 0x33, 0x33 }, + .e = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + }; + guint service; + MbimMessage *message; + + service = mbim_register_custom_service (&uuid_custom, nick); + g_assert (mbim_service_id_is_custom (service)); + + message = mbim_message_command_new (0x01, + service, + 0x11223344, + MBIM_MESSAGE_COMMAND_TYPE_QUERY); + g_assert (message); + g_assert_cmpuint (mbim_message_command_get_service (message), ==, service); + g_assert (mbim_uuid_cmp (mbim_message_command_get_service_id (message), &uuid_custom)); + g_assert_cmpuint (mbim_message_command_get_cid (message), ==, 0x11223344); + g_assert_cmpuint (mbim_message_command_get_command_type (message), ==, MBIM_MESSAGE_COMMAND_TYPE_QUERY); + + mbim_message_unref (message); +} + +static void test_message_command_done (void) { MbimMessage *message; @@ -195,13 +225,14 @@ int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL); - g_test_add_func ("/libmbim-glib/message/open", test_message_open); - g_test_add_func ("/libmbim-glib/message/open-done", test_message_open_done); - g_test_add_func ("/libmbim-glib/message/close", test_message_close); - g_test_add_func ("/libmbim-glib/message/close-done", test_message_close_done); - g_test_add_func ("/libmbim-glib/message/command/empty", test_message_command_empty); - g_test_add_func ("/libmbim-glib/message/command/not-empty", test_message_command_not_empty); - g_test_add_func ("/libmbim-glib/message/command-done", test_message_command_done); + g_test_add_func ("/libmbim-glib/message/open", test_message_open); + g_test_add_func ("/libmbim-glib/message/open-done", test_message_open_done); + g_test_add_func ("/libmbim-glib/message/close", test_message_close); + g_test_add_func ("/libmbim-glib/message/close-done", test_message_close_done); + g_test_add_func ("/libmbim-glib/message/command/empty", test_message_command_empty); + g_test_add_func ("/libmbim-glib/message/command/not-empty", test_message_command_not_empty); + g_test_add_func ("/libmbim-glib/message/command/custom-service", test_message_command_custom_service); + g_test_add_func ("/libmbim-glib/message/command-done", test_message_command_done); return g_test_run (); } |