0001-libmbim-glib-message-allow-building-messages-of-cust.patch0000664000175100017510000001045713117466634022037 0ustar uuFrom f7ff85c92d71a0e3443fce8004be897eca2c90d8 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 25 Feb 2015 13:18:41 +0100 Subject: [PATCH 1/4] 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 --- src/libmbim-glib/mbim-message.c | 3 +-- 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 (); } -- 2.7.4 0002-QMI-via-MBIM.patch0000664000175100017510000004765513117466634011735 0ustar uuFrom 839faf6bf203fc700424772839d4d0a41de56673 Mon Sep 17 00:00:00 2001 From: Collin McMillan Date: Mon, 4 Apr 2016 11:33:46 +0200 Subject: [PATCH 3/4] QMI via MBIM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bjørn Mork --- build-aux/mbim-codegen/Message.py | 8 ++++---- build-aux/mbim-codegen/Struct.py | 8 ++++---- data/Makefile.am | 3 ++- src/libmbim-glib/generated/Makefile.am | 18 +++++++++++++++--- src/libmbim-glib/libmbim-glib.h | 1 + src/libmbim-glib/mbim-cid.c | 27 ++++++++++++++++++++++----- src/libmbim-glib/mbim-cid.h | 12 ++++++++++++ src/libmbim-glib/mbim-message-private.h | 2 ++ src/libmbim-glib/mbim-message.c | 25 ++++++++++++++++--------- src/libmbim-glib/mbim-uuid.c | 18 ++++++++++++++++-- src/libmbim-glib/mbim-uuid.h | 11 +++++++++++ 11 files changed, 105 insertions(+), 28 deletions(-) diff --git a/build-aux/mbim-codegen/Message.py b/build-aux/mbim-codegen/Message.py index aa4e7b7..e66335d 100644 --- a/build-aux/mbim-codegen/Message.py +++ b/build-aux/mbim-codegen/Message.py @@ -394,13 +394,13 @@ class Message: inner_template += (' {\n') if field['format'] == 'byte-array': - inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, FALSE, ${field}, ${array_size});\n') + inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, FALSE, TRUE, ${field}, ${array_size});\n') elif field['format'] == 'unsized-byte-array': - inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, FALSE, ${field}, ${field}_size);\n') + inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, FALSE, FALSE, ${field}, ${field}_size);\n') elif field['format'] == 'ref-byte-array': - inner_template += (' _mbim_message_command_builder_append_byte_array (builder, TRUE, TRUE, ${field}, ${field}_size);\n') + inner_template += (' _mbim_message_command_builder_append_byte_array (builder, TRUE, TRUE, TRUE, ${field}, ${field}_size);\n') elif field['format'] == 'ref-byte-array-no-offset': - inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, TRUE, ${field}, ${field}_size);\n') + inner_template += (' _mbim_message_command_builder_append_byte_array (builder, FALSE, TRUE, TRUE, ${field}, ${field}_size);\n') elif field['format'] == 'uuid': inner_template += (' _mbim_message_command_builder_append_uuid (builder, ${field});\n') elif field['format'] == 'guint32': diff --git a/build-aux/mbim-codegen/Struct.py b/build-aux/mbim-codegen/Struct.py index 495e22f..8797f3a 100644 --- a/build-aux/mbim-codegen/Struct.py +++ b/build-aux/mbim-codegen/Struct.py @@ -498,14 +498,14 @@ class Struct: if field['format'] == 'uuid': inner_template = (' _mbim_struct_builder_append_uuid (builder, &(value->${field}));\n') elif field['format'] == 'byte-array': - inner_template = (' _mbim_struct_builder_append_byte_array (builder, FALSE, FALSE, value->${field}, ${array_size});\n') + inner_template = (' _mbim_struct_builder_append_byte_array (builder, FALSE, FALSE, TRUE, value->${field}, ${array_size});\n') elif field['format'] == 'unsized-byte-array': - inner_template = (' _mbim_struct_builder_append_byte_array (builder, FALSE, FALSE, value->${field}, value->${field}_size);\n') + inner_template = (' _mbim_struct_builder_append_byte_array (builder, FALSE, FALSE, FALSE, value->${field}, value->${field}_size);\n') elif field['format'] == 'ref-byte-array': if 'array-size-field' in field: - inner_template = (' _mbim_struct_builder_append_byte_array (builder, TRUE, FALSE, value->${field}, value->${array_size_field});\n') + inner_template = (' _mbim_struct_builder_append_byte_array (builder, TRUE, FALSE, TRUE, value->${field}, value->${array_size_field});\n') else: - inner_template = (' _mbim_struct_builder_append_byte_array (builder, TRUE, TRUE, value->${field}, value->${field}_size);\n') + inner_template = (' _mbim_struct_builder_append_byte_array (builder, TRUE, TRUE, TRUE, value->${field}, value->${field}_size);\n') elif field['format'] == 'guint32': inner_template = (' _mbim_struct_builder_append_guint32 (builder, value->${field});\n') elif field['format'] == 'guint32-array': diff --git a/data/Makefile.am b/data/Makefile.am index 111e028..8c8891a 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -10,4 +10,5 @@ EXTRA_DIST = \ mbim-service-dss.json \ mbim-service-ms-firmware-id.json \ mbim-service-ms-host-shutdown.json \ - mbim-service-proxy-control.json + mbim-service-proxy-control.json \ + mbim-service-qmi.json diff --git a/src/libmbim-glib/generated/Makefile.am b/src/libmbim-glib/generated/Makefile.am index ce81a71..c8b153a 100644 --- a/src/libmbim-glib/generated/Makefile.am +++ b/src/libmbim-glib/generated/Makefile.am @@ -12,7 +12,8 @@ GENERATED_H = \ mbim-dss.h \ mbim-ms-firmware-id.h \ mbim-ms-host-shutdown.h \ - mbim-proxy-control.h + mbim-proxy-control.h \ + mbim-qmi.h GENERATED_C = \ mbim-error-types.c \ @@ -27,7 +28,8 @@ GENERATED_C = \ mbim-dss.c \ mbim-ms-firmware-id.c \ mbim-ms-host-shutdown.c \ - mbim-proxy-control.c + mbim-proxy-control.c \ + mbim-qmi.c GENERATED_SECTIONS = \ mbim-basic-connect.sections \ @@ -39,7 +41,8 @@ GENERATED_SECTIONS = \ mbim-dss.sections \ mbim-ms-firmware-id.sections \ mbim-ms-host-shutdown.sections \ - mbim-proxy-control.sections + mbim-proxy-control.sections \ + mbim-qmi.sections # Error types mbim-error-types.h: $(top_srcdir)/src/libmbim-glib/mbim-errors.h $(top_srcdir)/build-aux/templates/mbim-error-types-template.h @@ -170,6 +173,15 @@ mbim-proxy-control.h mbim-proxy-control.c mbim-proxy-control.sections: $(top_src --input $(top_srcdir)/data/mbim-service-proxy-control.json \ --output mbim-proxy-control +# QMI-over-MBIM service +mbim-qmi.h mbim-qmi.c mbim-qmi.sections: $(top_srcdir)/data/mbim-service-qmi.json $(top_srcdir)/build-aux/mbim-codegen/*.py $(top_srcdir)/build-aux/mbim-codegen/mbim-codegen + $(AM_V_GEN) \ + rm -f mbim-qmi.h && \ + rm -f mbim-qmi.c && \ + $(top_srcdir)/build-aux/mbim-codegen/mbim-codegen \ + --input $(top_srcdir)/data/mbim-service-qmi.json \ + --output mbim-qmi + BUILT_SOURCES = $(GENERATED_H) $(GENERATED_C) nodist_libmbim_glib_generated_la_SOURCES = \ diff --git a/src/libmbim-glib/libmbim-glib.h b/src/libmbim-glib/libmbim-glib.h index b41122b..88d0be8 100644 --- a/src/libmbim-glib/libmbim-glib.h +++ b/src/libmbim-glib/libmbim-glib.h @@ -48,6 +48,7 @@ #include "mbim-dss.h" #include "mbim-ms-firmware-id.h" #include "mbim-ms-host-shutdown.h" +#include "mbim-qmi.h" /* backwards compatibility */ #include "mbim-compat.h" diff --git a/src/libmbim-glib/mbim-cid.c b/src/libmbim-glib/mbim-cid.c index 5592ff1..f522323 100644 --- a/src/libmbim-glib/mbim-cid.c +++ b/src/libmbim-glib/mbim-cid.c @@ -38,6 +38,9 @@ typedef struct { gboolean notify; } CidConfig; +/* Note: MBIM_SERVICE_LAST from mbim-uuid.c should probably be visible + * here somehow, since MBIM_SERVICE_QMI must be used in the error checks */ + /* Note: index of the array is CID-1 */ #define MBIM_CID_BASIC_CONNECT_LAST MBIM_CID_BASIC_CONNECT_MULTICARRIER_PROVIDERS static const CidConfig cid_basic_connect_config [MBIM_CID_BASIC_CONNECT_LAST] = { @@ -132,6 +135,12 @@ static const CidConfig cid_proxy_control_config [MBIM_CID_PROXY_CONTROL_LAST] = { TRUE, FALSE, FALSE }, /* MBIM_CID_PROXY_CONTROL_CONFIGURATION */ }; +/* Note: index of the array is CID-1 */ +#define MBIM_CID_QMI_LAST MBIM_CID_QMI_MSG +static const CidConfig cid_qmi_config [MBIM_CID_QMI_LAST] = { + { TRUE, FALSE, FALSE }, /* MBIM_CID_QMI_MSG */ +}; + /** * mbim_cid_can_set: * @service: a #MbimService. @@ -149,7 +158,7 @@ mbim_cid_can_set (MbimService service, g_return_val_if_fail (cid > 0, FALSE); /* Known service required */ g_return_val_if_fail (service > MBIM_SERVICE_INVALID, FALSE); - g_return_val_if_fail (service <= MBIM_SERVICE_PROXY_CONTROL, FALSE); + g_return_val_if_fail (service <= MBIM_SERVICE_QMI, FALSE); switch (service) { case MBIM_SERVICE_BASIC_CONNECT: @@ -172,6 +181,8 @@ mbim_cid_can_set (MbimService service, return cid_ms_host_shutdown_config[cid - 1].set; case MBIM_SERVICE_PROXY_CONTROL: return cid_proxy_control_config[cid - 1].set; + case MBIM_SERVICE_QMI: + return cid_qmi_config[cid - 1].set; default: g_assert_not_reached (); return FALSE; @@ -195,7 +206,7 @@ mbim_cid_can_query (MbimService service, g_return_val_if_fail (cid > 0, FALSE); /* Known service required */ g_return_val_if_fail (service > MBIM_SERVICE_INVALID, FALSE); - g_return_val_if_fail (service <= MBIM_SERVICE_PROXY_CONTROL, FALSE); + g_return_val_if_fail (service <= MBIM_SERVICE_QMI, FALSE); switch (service) { case MBIM_SERVICE_BASIC_CONNECT: @@ -218,6 +229,8 @@ mbim_cid_can_query (MbimService service, return cid_ms_host_shutdown_config[cid - 1].query; case MBIM_SERVICE_PROXY_CONTROL: return cid_proxy_control_config[cid - 1].query; + case MBIM_SERVICE_QMI: + return cid_qmi_config[cid - 1].query; default: g_assert_not_reached (); return FALSE; @@ -241,7 +254,7 @@ mbim_cid_can_notify (MbimService service, g_return_val_if_fail (cid > 0, FALSE); /* Known service required */ g_return_val_if_fail (service > MBIM_SERVICE_INVALID, FALSE); - g_return_val_if_fail (service <= MBIM_SERVICE_PROXY_CONTROL, FALSE); + g_return_val_if_fail (service <= MBIM_SERVICE_QMI, FALSE); switch (service) { case MBIM_SERVICE_BASIC_CONNECT: @@ -264,6 +277,8 @@ mbim_cid_can_notify (MbimService service, return cid_ms_host_shutdown_config[cid - 1].notify; case MBIM_SERVICE_PROXY_CONTROL: return cid_proxy_control_config[cid - 1].notify; + case MBIM_SERVICE_QMI: + return cid_qmi_config[cid - 1].notify; default: g_assert_not_reached (); return FALSE; @@ -287,8 +302,8 @@ mbim_cid_get_printable (MbimService service, /* CID = 0 is never a valid command */ g_return_val_if_fail (cid > 0, NULL); /* Known service required */ - g_return_val_if_fail (service >= MBIM_SERVICE_INVALID, NULL); - g_return_val_if_fail (service <= MBIM_SERVICE_PROXY_CONTROL, NULL); + g_return_val_if_fail (service > MBIM_SERVICE_INVALID, NULL); + g_return_val_if_fail (service <= MBIM_SERVICE_QMI, NULL); switch (service) { case MBIM_SERVICE_INVALID: @@ -313,6 +328,8 @@ mbim_cid_get_printable (MbimService service, return mbim_cid_ms_host_shutdown_get_string (cid); case MBIM_SERVICE_PROXY_CONTROL: return mbim_cid_proxy_control_get_string (cid); + case MBIM_SERVICE_QMI: + return mbim_cid_qmi_get_string (cid); default: g_assert_not_reached (); return FALSE; diff --git a/src/libmbim-glib/mbim-cid.h b/src/libmbim-glib/mbim-cid.h index 3315340..da837a4 100644 --- a/src/libmbim-glib/mbim-cid.h +++ b/src/libmbim-glib/mbim-cid.h @@ -219,6 +219,18 @@ typedef enum { MBIM_CID_PROXY_CONTROL_CONFIGURATION = 1 } MbimCidProxyControl; +/** + * MbimCidQmi: + * @MBIM_CID_QMI_UNKNOWN: Unknown command. + * @MBIM_CID_QMI_MSG: Configuration. + * + * MBIM commands in the %MBIM_SERVICE_QMI service. + */ +typedef enum { + MBIM_CID_QMI_UNKNOWN = 0, + MBIM_CID_QMI_MSG = 1 +} MbimCidQmi; + /* Command helpers */ gboolean mbim_cid_can_set (MbimService service, diff --git a/src/libmbim-glib/mbim-message-private.h b/src/libmbim-glib/mbim-message-private.h index b5606e0..0082026 100644 --- a/src/libmbim-glib/mbim-message-private.h +++ b/src/libmbim-glib/mbim-message-private.h @@ -177,6 +177,7 @@ GByteArray *_mbim_struct_builder_complete (MbimStructBuilder void _mbim_struct_builder_append_byte_array (MbimStructBuilder *builder, gboolean with_offset, gboolean with_length, + gboolean permit_padding, const guint8 *buffer, guint32 buffer_len); void _mbim_struct_builder_append_uuid (MbimStructBuilder *builder, @@ -225,6 +226,7 @@ MbimMessage *_mbim_message_command_builder_complete (M void _mbim_message_command_builder_append_byte_array (MbimMessageCommandBuilder *builder, gboolean with_offset, gboolean with_length, + gboolean permit_padding, const guint8 *buffer, guint32 buffer_len); void _mbim_message_command_builder_append_uuid (MbimMessageCommandBuilder *builder, diff --git a/src/libmbim-glib/mbim-message.c b/src/libmbim-glib/mbim-message.c index b625ee5..ad67059 100644 --- a/src/libmbim-glib/mbim-message.c +++ b/src/libmbim-glib/mbim-message.c @@ -492,6 +492,7 @@ void _mbim_struct_builder_append_byte_array (MbimStructBuilder *builder, gboolean with_offset, gboolean with_length, + gboolean permit_padding, const guint8 *buffer, guint32 buffer_len) { @@ -501,11 +502,13 @@ _mbim_struct_builder_append_byte_array (MbimStructBuilder *builder, */ if (!with_offset && !with_length) { g_byte_array_append (builder->fixed_buffer, buffer, buffer_len); - while (buffer_len % 4 != 0) { - const guint8 padding = 0; + if(permit_padding) { + while (buffer_len % 4 != 0) { + const guint8 padding = 0; - g_byte_array_append (builder->fixed_buffer, &padding, 1); - buffer_len++; + g_byte_array_append (builder->fixed_buffer, &padding, 1); + buffer_len++; + } } return; } @@ -550,11 +553,14 @@ _mbim_struct_builder_append_byte_array (MbimStructBuilder *builder, if (buffer_len) { g_byte_array_append (builder->variable_buffer, (const guint8 *)buffer, (guint)buffer_len); - while (buffer_len % 4 != 0) { - const guint8 padding = 0; + /* Note: adding zero padding causes trouble for QMI service */ + if(permit_padding) { + while (buffer_len % 4 != 0) { + const guint8 padding = 0; - g_byte_array_append (builder->variable_buffer, &padding, 1); - buffer_len++; + g_byte_array_append (builder->variable_buffer, &padding, 1); + buffer_len++; + } } } } @@ -824,10 +830,11 @@ void _mbim_message_command_builder_append_byte_array (MbimMessageCommandBuilder *builder, gboolean with_offset, gboolean with_length, + gboolean permit_padding, const guint8 *buffer, guint32 buffer_len) { - _mbim_struct_builder_append_byte_array (builder->contents_builder, with_offset, with_length, buffer, buffer_len); + _mbim_struct_builder_append_byte_array (builder->contents_builder, with_offset, with_length, permit_padding, buffer, buffer_len); } void diff --git a/src/libmbim-glib/mbim-uuid.c b/src/libmbim-glib/mbim-uuid.c index 81f6f7a..1dbd2cc 100644 --- a/src/libmbim-glib/mbim-uuid.c +++ b/src/libmbim-glib/mbim-uuid.c @@ -38,7 +38,7 @@ * This section defines the data type for unique identifiers. */ -#define MBIM_SERVICE_LAST MBIM_SERVICE_PROXY_CONTROL +#define MBIM_SERVICE_LAST MBIM_SERVICE_QMI /*****************************************************************************/ @@ -229,6 +229,15 @@ static const MbimUuid uuid_proxy_control = { .e = { 0xd7, 0x1d , 0xbe, 0xfb, 0xb3, 0x9b } }; +/* Note: this UUID is likely to work only for Sierra modems */ +static const MbimUuid uuid_qmi = { + .a = { 0xd1, 0xa3, 0x0b, 0xc2 }, + .b = { 0xf9, 0x7a }, + .c = { 0x6e, 0x43 }, + .d = { 0xbf, 0x65 }, + .e = { 0xc7, 0xe2 , 0x4f, 0xb0, 0xf0, 0xd3 } +}; + static GList *mbim_custom_service_list = NULL; typedef struct { @@ -364,7 +373,7 @@ mbim_uuid_from_service (MbimService service) GList *l; g_return_val_if_fail (service >= MBIM_SERVICE_INVALID && - (service <= MBIM_SERVICE_PROXY_CONTROL || + (service <= MBIM_SERVICE_LAST || mbim_service_id_is_custom (service)), &uuid_invalid); @@ -391,6 +400,8 @@ mbim_uuid_from_service (MbimService service) return &uuid_ms_host_shutdown; case MBIM_SERVICE_PROXY_CONTROL: return &uuid_proxy_control; + case MBIM_SERVICE_QMI: + return &uuid_qmi; default: for (l = mbim_custom_service_list; l != NULL; l = l->next) { if (service == ((MbimCustomService *)l->data)->service_id) @@ -443,6 +454,9 @@ mbim_uuid_to_service (const MbimUuid *uuid) if (mbim_uuid_cmp (uuid, &uuid_proxy_control)) return MBIM_SERVICE_PROXY_CONTROL; + if (mbim_uuid_cmp (uuid, &uuid_qmi)) + return MBIM_SERVICE_QMI; + for (l = mbim_custom_service_list; l != NULL; l = l->next) { if (mbim_uuid_cmp (&((MbimCustomService *)l->data)->uuid, uuid)) return ((MbimCustomService *)l->data)->service_id; diff --git a/src/libmbim-glib/mbim-uuid.h b/src/libmbim-glib/mbim-uuid.h index 91def98..d42a256 100644 --- a/src/libmbim-glib/mbim-uuid.h +++ b/src/libmbim-glib/mbim-uuid.h @@ -71,6 +71,7 @@ gboolean mbim_uuid_from_printable (const gchar *str, * @MBIM_SERVICE_MS_FIRMWARE_ID: Microsoft Firmware ID service. * @MBIM_SERVICE_MS_HOST_SHUTDOWN: Microsoft Host Shutdown service. * @MBIM_SERVICE_PROXY_CONTROL: Proxy Control service. + * @MBIM_SERVICE_QMI: QMI-over-MBIM service. * * Enumeration of the generic MBIM services. */ @@ -86,6 +87,7 @@ typedef enum { MBIM_SERVICE_MS_FIRMWARE_ID = 8, MBIM_SERVICE_MS_HOST_SHUTDOWN = 9, MBIM_SERVICE_PROXY_CONTROL = 10, + MBIM_SERVICE_QMI = 11 /* Note: update MBIM_SERVICE_LAST when a new value is added */ } MbimService; @@ -188,6 +190,15 @@ typedef enum { */ #define MBIM_UUID_PROXY_CONTROL mbim_uuid_from_service (MBIM_SERVICE_PROXY_CONTROL) +/** + * MBIM_UUID_QMI: + * + * Get the UUID of the %MBIM_SERVICE_QMI service. + * + * Returns: (transfer none): a #MbimUuid. + */ +#define MBIM_UUID_QMI mbim_uuid_from_service (MBIM_SERVICE_QMI) + const gchar *mbim_service_lookup_name (guint service); guint mbim_register_custom_service (const MbimUuid *uuid, -- 2.7.4 0003-Added-json-file-lost-in-original-qmi-over-mbim-patch.patch0000664000175100017510000000211613117466634021616 0ustar uuFrom d87a99d026ad44099da270fe8250982a01166fdd Mon Sep 17 00:00:00 2001 From: Emil Ljungdahl Date: Wed, 6 Apr 2016 19:16:47 +0200 Subject: [PATCH 4/4] Added json file lost in original qmi-over-mbim patch --- data/mbim-service-qmi.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 data/mbim-service-qmi.json diff --git a/data/mbim-service-qmi.json b/data/mbim-service-qmi.json new file mode 100644 index 0000000..b764d01 --- /dev/null +++ b/data/mbim-service-qmi.json @@ -0,0 +1,15 @@ + +[ + // ********************************************************************************* + { "type" : "Service", + "name" : "QMI" }, + + // ********************************************************************************* + { "name" : "msg", + "service" : "QMI", + "type" : "Command", + "set" : [ { "name" : "QmiMsg", + "format" : "unsized-byte-array" } ], + "response" : [ { "name" : "QMUX", + "format" : "unsized-byte-array" } ] } +] -- 2.7.4