diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-09-18 11:59:54 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-09-21 22:49:19 +0200 |
commit | ae83b736ad576b794aacf4843ef4d4da8c0fa8b2 (patch) | |
tree | c1586aa76a3075316599ad682587463d2a0d5dab | |
parent | 18c5e774b6f949c6a62aec56f7f15a9a06d8d4c5 (diff) | |
download | libmbim-ae83b736ad576b794aacf4843ef4d4da8c0fa8b2.tar.gz |
ms-basic-connect-v2: new 'MS Basic Connect V2" service and 'Register State' message
This service specifies new versions of the messages (API breaks) in
the generic Basic Connect service, and therefore it reuses the same
service UUID and message CID definitions as in the original Basic
Connect service.
Only the 'Register State' message support is implemented at this
stage.
-rw-r--r-- | build-aux/mbim-codegen/Message.py | 60 | ||||
-rw-r--r-- | build-aux/mbim-codegen/ObjectList.py | 7 | ||||
-rw-r--r-- | data/mbim-service-ms-basic-connect-v2.json | 76 | ||||
-rw-r--r-- | docs/reference/libmbim-glib/libmbim-glib-docs.xml | 1 | ||||
-rw-r--r-- | src/libmbim-glib/generated/meson.build | 1 | ||||
-rw-r--r-- | src/libmbim-glib/libmbim-glib.h | 1 |
6 files changed, 120 insertions, 26 deletions
diff --git a/build-aux/mbim-codegen/Message.py b/build-aux/mbim-codegen/Message.py index 92d0d78..8a24f83 100644 --- a/build-aux/mbim-codegen/Message.py +++ b/build-aux/mbim-codegen/Message.py @@ -92,9 +92,11 @@ class Message: """ Constructor """ - def __init__(self, service, dictionary): + def __init__(self, service, mbimex_service, mbimex_version, dictionary): # The message service, e.g. "Basic Connect" self.service = service + self.mbimex_service = mbimex_service + self.mbimex_version = mbimex_version # The name of the specific message, e.g. "Something" self.name = dictionary['name'] @@ -156,8 +158,18 @@ class Message: else: self.fullname = 'MBIM Message ' + self.service + ' ' + self.name + # Build SERVICE enum + if self.mbimex_service: + self.service_enum_name = 'MBIM Service ' + self.mbimex_service + else: + self.service_enum_name = 'MBIM Service ' + self.service + self.service_enum_name = utils.build_underscore_name(self.service_enum_name).upper() + # Build CID enum - self.cid_enum_name = 'MBIM CID ' + self.service + if self.mbimex_service: + self.cid_enum_name = 'MBIM CID ' + self.mbimex_service + else: + self.cid_enum_name = 'MBIM CID ' + self.service if self.name != "": self.cid_enum_name += (' ' + self.name) self.cid_enum_name = utils.build_underscore_name(self.cid_enum_name).upper() @@ -196,14 +208,14 @@ class Message: Emit message creator """ def _emit_message_creator(self, hfile, cfile, message_type, fields, since): - translations = { 'message' : self.name, - 'service' : self.service, - 'since' : since, - 'underscore' : utils.build_underscore_name (self.fullname), - 'message_type' : message_type, - 'message_type_upper' : message_type.upper(), - 'service_underscore_upper' : utils.build_underscore_name (self.service).upper(), - 'cid_enum_name' : self.cid_enum_name } + translations = { 'message' : self.name, + 'service' : self.service, + 'since' : since, + 'underscore' : utils.build_underscore_name (self.fullname), + 'message_type' : message_type, + 'message_type_upper' : message_type.upper(), + 'service_enum_name' : self.service_enum_name, + 'cid_enum_name' : self.cid_enum_name } template = ( '\n' @@ -380,7 +392,7 @@ class Message: ' MbimMessageCommandBuilder *builder;\n' '\n' ' builder = _mbim_message_command_builder_new (0,\n' - ' MBIM_SERVICE_${service_underscore_upper},\n' + ' ${service_enum_name},\n' ' ${cid_enum_name},\n' ' MBIM_MESSAGE_COMMAND_TYPE_${message_type_upper});\n') @@ -461,13 +473,12 @@ class Message: Emit message parser """ def _emit_message_parser(self, hfile, cfile, message_type, fields, since): - translations = { 'message' : self.name, - 'service' : self.service, - 'since' : since, - 'underscore' : utils.build_underscore_name (self.fullname), - 'message_type' : message_type, - 'message_type_upper' : message_type.upper(), - 'service_underscore_upper' : utils.build_underscore_name (self.service).upper() } + translations = { 'message' : self.name, + 'service' : self.service, + 'since' : since, + 'underscore' : utils.build_underscore_name (self.fullname), + 'message_type' : message_type, + 'message_type_upper' : message_type.upper() } template = ( '\n' @@ -1016,13 +1027,12 @@ class Message: Emit message printable """ def _emit_message_printable(self, cfile, message_type, fields): - translations = { 'message' : self.name, - 'underscore' : utils.build_underscore_name(self.name), - 'service' : self.service, - 'underscore' : utils.build_underscore_name (self.fullname), - 'message_type' : message_type, - 'message_type_upper' : message_type.upper(), - 'service_underscore_upper' : utils.build_underscore_name (self.service).upper() } + translations = { 'message' : self.name, + 'underscore' : utils.build_underscore_name(self.name), + 'service' : self.service, + 'underscore' : utils.build_underscore_name (self.fullname), + 'message_type' : message_type, + 'message_type_upper' : message_type.upper() } template = ( '\n' 'static gchar *\n' diff --git a/build-aux/mbim-codegen/ObjectList.py b/build-aux/mbim-codegen/ObjectList.py index bde711b..41512bc 100644 --- a/build-aux/mbim-codegen/ObjectList.py +++ b/build-aux/mbim-codegen/ObjectList.py @@ -40,17 +40,22 @@ class ObjectList: self.command_list = [] self.struct_list = [] self.service = '' + self.mbimex_service = '' + self.mbimex_version = '' # Loop items in the list, creating Message objects for the messages for object_dictionary in objects_dictionary: if object_dictionary['type'] == 'Command': if self.service == '': raise ValueError('Service name not specified before the first command') - self.command_list.append(Message(self.service, object_dictionary)) + self.command_list.append(Message(self.service, self.mbimex_service, self.mbimex_version, object_dictionary)) elif object_dictionary['type'] == 'Struct': self.struct_list.append(Struct(object_dictionary)) elif object_dictionary['type'] == 'Service': self.service = object_dictionary['name'] + if 'mbimex-service' in object_dictionary: + self.mbimex_service = object_dictionary['mbimex-service'] + self.mbimex_version = object_dictionary['mbimex-version'] else: raise ValueError('Cannot handle object type \'%s\'' % object_dictionary['type']) diff --git a/data/mbim-service-ms-basic-connect-v2.json b/data/mbim-service-ms-basic-connect-v2.json new file mode 100644 index 0000000..8d6d130 --- /dev/null +++ b/data/mbim-service-ms-basic-connect-v2.json @@ -0,0 +1,76 @@ + +[ + // ********************************************************************************* + { "type" : "Service", + "name" : "Ms Basic Connect V2", + "mbimex-service" : "Basic Connect", + "mbimex-version" : "2.0" }, + + // ********************************************************************************* + { "name" : "Register State", + "type" : "Command", + "since" : "1.28", + "set" : [ { "name" : "ProviderId", + "format" : "string" }, + { "name" : "RegisterAction", + "format" : "guint32", + "public-format" : "MbimRegisterAction" }, + { "name" : "DataClass", + "format" : "guint32", + "public-format" : "MbimDataClass" } ], + "query" : [], + "response" : [ { "name" : "NwError", + "format" : "guint32", + "public-format" : "MbimNwError" }, + { "name" : "RegisterState", + "format" : "guint32", + "public-format" : "MbimRegisterState" }, + { "name" : "RegisterMode", + "format" : "guint32", + "public-format" : "MbimRegisterMode" }, + { "name" : "AvailableDataClasses", + "format" : "guint32", + "public-format" : "MbimDataClass" }, + { "name" : "CurrentCellularClass", + "format" : "guint32", + "public-format" : "MbimCellularClass" }, + { "name" : "ProviderId", + "format" : "string" }, + { "name" : "ProviderName", + "format" : "string" }, + { "name" : "RoamingText", + "format" : "string" }, + { "name" : "RegistrationFlag", + "format" : "guint32", + "public-format" : "MbimRegistrationFlag" }, + { "name" : "PreferredDataClasses", + "format" : "guint32", + "public-format" : "MbimDataClass" } ], + "notification" : [ { "name" : "NwError", + "format" : "guint32", + "public-format" : "MbimNwError" }, + { "name" : "RegisterState", + "format" : "guint32", + "public-format" : "MbimRegisterState" }, + { "name" : "RegisterMode", + "format" : "guint32", + "public-format" : "MbimRegisterMode" }, + { "name" : "AvailableDataClasses", + "format" : "guint32", + "public-format" : "MbimDataClass" }, + { "name" : "CurrentCellularClass", + "format" : "guint32", + "public-format" : "MbimCellularClass" }, + { "name" : "ProviderId", + "format" : "string" }, + { "name" : "ProviderName", + "format" : "string" }, + { "name" : "RoamingText", + "format" : "string" }, + { "name" : "RegistrationFlag", + "format" : "guint32", + "public-format" : "MbimRegistrationFlag" }, + { "name" : "PreferredDataClasses", + "format" : "guint32", + "public-format" : "MbimDataClass" } ] } +] diff --git a/docs/reference/libmbim-glib/libmbim-glib-docs.xml b/docs/reference/libmbim-glib/libmbim-glib-docs.xml index 92b8226..8f7ff7b 100644 --- a/docs/reference/libmbim-glib/libmbim-glib-docs.xml +++ b/docs/reference/libmbim-glib/libmbim-glib-docs.xml @@ -75,6 +75,7 @@ <chapter> <title>Microsoft-defined services</title> <xi:include href="xml/mbim-ms-basic-connect-extensions.xml"/> + <xi:include href="xml/mbim-ms-basic-connect-v2.xml"/> <xi:include href="xml/mbim-ms-uicc-low-level-access.xml"/> <xi:include href="xml/mbim-ms-firmware-id.xml"/> <xi:include href="xml/mbim-ms-host-shutdown.xml"/> diff --git a/src/libmbim-glib/generated/meson.build b/src/libmbim-glib/generated/meson.build index 13d13ad..885e251 100644 --- a/src/libmbim-glib/generated/meson.build +++ b/src/libmbim-glib/generated/meson.build @@ -95,6 +95,7 @@ services_data = [ ['intel-firmware-update', true], ['ms-basic-connect-extensions', true], ['ms-uicc-low-level-access', true], + ['ms-basic-connect-v2', true], ['ms-firmware-id', true], ['ms-host-shutdown', true], ['ms-sar', true], diff --git a/src/libmbim-glib/libmbim-glib.h b/src/libmbim-glib/libmbim-glib.h index 7fdf8e0..991f197 100644 --- a/src/libmbim-glib/libmbim-glib.h +++ b/src/libmbim-glib/libmbim-glib.h @@ -41,6 +41,7 @@ #include "mbim-intel-firmware-update.h" #include "mbim-ms-basic-connect-extensions.h" #include "mbim-ms-uicc-low-level-access.h" +#include "mbim-ms-basic-connect-v2.h" /* backwards compatibility */ #include "mbim-compat.h" |