summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2015-02-25 13:18:41 +0100
committerAleksander Morgado <aleksander@aleksander.es>2015-02-25 13:19:05 +0100
commit0ad5f9ce6269b73e6bc8d0d5821ed7059f17b2ff (patch)
treed68450a7d29dd90397d42ff4b062a1b06e238db7
parent9d2435448912fe9af86369def253f558c49db272 (diff)
downloadlibmbim-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.c3
-rw-r--r--src/libmbim-glib/test/test-message.c45
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 ();
}