summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-09-18 11:59:54 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-09-21 22:49:19 +0200
commitae83b736ad576b794aacf4843ef4d4da8c0fa8b2 (patch)
treec1586aa76a3075316599ad682587463d2a0d5dab
parent18c5e774b6f949c6a62aec56f7f15a9a06d8d4c5 (diff)
downloadlibmbim-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.py60
-rw-r--r--build-aux/mbim-codegen/ObjectList.py7
-rw-r--r--data/mbim-service-ms-basic-connect-v2.json76
-rw-r--r--docs/reference/libmbim-glib/libmbim-glib-docs.xml1
-rw-r--r--src/libmbim-glib/generated/meson.build1
-rw-r--r--src/libmbim-glib/libmbim-glib.h1
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"