summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build-aux/mbim-codegen/Container.py38
-rw-r--r--build-aux/mbim-codegen/Message.py91
-rw-r--r--cli/mbimcli-basic-connect.c20
-rw-r--r--data/mbim-service-basic-connect.json217
-rw-r--r--libmbim-glib/test/test-message-command-builder.c10
-rw-r--r--libmbim-glib/test/test-message-contents.c2
6 files changed, 176 insertions, 202 deletions
diff --git a/build-aux/mbim-codegen/Container.py b/build-aux/mbim-codegen/Container.py
index 46a77f2..59e03bd 100644
--- a/build-aux/mbim-codegen/Container.py
+++ b/build-aux/mbim-codegen/Container.py
@@ -36,38 +36,18 @@ class Container:
"""
Constructor
"""
- def __init__(self, service, command, message_type, container_type, dictionary):
- self.service = service
- self.command = command
-
- # e.g. "Mbim Message Service Something"
- self.prefix = "Mbim Message " + service + ' ' + command
-
+ def __init__(self, message_type, dictionary):
# We may have 'Query', 'Set' or 'Notify' message types
- if message_type == 'Query' or message_type == 'Set' or message_type == 'Notify':
- self.message_type = message_type
- else:
- raise ValueError('Cannot handle message type \'%s\'' % message_type)
-
- # We may have 'Input' or 'Output' containers
- if container_type == 'Input':
- self.name = 'Request'
+ if message_type == 'query':
self.message_type_enum = 'MBIM_MESSAGE_TYPE_COMMAND'
- elif container_type == 'Output':
- if message_type == 'Notify':
- self.name = 'Indication'
- self.message_type_enum = 'MBIM_MESSAGE_TYPE_INDICATION'
- else:
- self.name = 'Response'
- self.message_type_enum = 'MBIM_MESSAGE_TYPE_COMMAND_DONE'
+ elif message_type == 'set':
+ self.message_type_enum = 'MBIM_MESSAGE_TYPE_COMMAND'
+ elif message_type == 'response':
+ self.message_type_enum = 'MBIM_MESSAGE_TYPE_COMMAND_DONE'
+ elif message_type == 'notification':
+ self.message_type_enum = 'MBIM_MESSAGE_TYPE_INDICATION'
else:
- raise ValueError('Cannot handle container type \'%s\'' % container_type)
-
- # Create the composed full name (prefix + name),
- # e.g. "Mbim Message Service Something Query Response"
- self.fullname = self.prefix + ' ' + self.message_type + ' ' + self.name
-
- self.fields_dictionary = dictionary
+ raise ValueError('Cannot handle message type \'%s\'' % message_type)
self.fields = []
for field in dictionary:
diff --git a/build-aux/mbim-codegen/Message.py b/build-aux/mbim-codegen/Message.py
index b9c1480..943f162 100644
--- a/build-aux/mbim-codegen/Message.py
+++ b/build-aux/mbim-codegen/Message.py
@@ -38,39 +38,33 @@ class Message:
self.name = dictionary['name']
# Gather types of command
- self.can_query = True if 'query' in dictionary else False
- self.can_set = True if 'set' in dictionary else False
- self.can_notify = True if 'notify' in dictionary else False
+ self.query = True if 'query' in dictionary else False
+ self.set = True if 'set' in dictionary else False
+ self.response = True if 'response' in dictionary else False
+ self.notification = True if 'notify' in dictionary else False
# Build Fullname
- self.fullname = 'MBIM Message ' + self.service + ' ' + self.name
+ self.fullname = 'MBIM Message ' + self.name
# Build CID enum
self.cid_enum_name = utils.build_underscore_name('MBIM CID' + self.service + ' ' + self.name).upper()
- # Build Query containers
- self.query_input = None
- self.query_output = None
- if self.can_query:
- if 'input' in dictionary['query']:
- self.query_input = Container(self.service, self.name, 'Query', 'Input', dictionary['query']['input'])
- if 'output' in dictionary['query']:
- self.query_output = Container(self.service, self.name, 'Query', 'Output', dictionary['query']['output'])
-
- # Build Set containers
- self.set_input = None
- self.set_output = None
- if self.can_set:
- if 'input' in dictionary['set']:
- self.set_input = Container(self.service, self.name, 'Set', 'Input', dictionary['set']['input'])
- if 'output' in dictionary['set']:
- self.set_output = Container(self.service, self.name, 'Set', 'Output', dictionary['set']['output'])
-
- # Build Notify containers
- self.notify_output = None
- if self.can_notify:
- if 'output' in dictionary['notify']:
- self.notify_output = Container(self.service, self.name, 'Notify', 'Output', dictionary['notify']['output'])
+ # Build input containers
+ self.query_container = None
+ if self.query:
+ self.query_container = Container('query', dictionary['query'])
+ self.set_container = None
+ if self.set:
+ self.set_container = Container('set', dictionary['set'])
+ self.notify_container = None
+
+ # Build output containers
+ self.response_container = None
+ if self.response:
+ self.response_container = Container('response', dictionary['response'])
+ self.notification_container = None
+ if self.notification:
+ self.notification_container = Container('notification', dictionary['notification'])
"""
@@ -86,7 +80,7 @@ class Message:
'name_underscore_upper' : utils.build_underscore_name (self.name).upper() }
template = (
'\n'
- 'MbimMessage *${underscore}_${message_type}_request_new (\n')
+ 'MbimMessage *${underscore}_${message_type}_new (\n')
if container != None:
for field in container.fields:
@@ -103,7 +97,7 @@ class Message:
template = (
'\n'
'/**\n'
- ' * ${underscore}_${message_type}_request_new:\n')
+ ' * ${underscore}_${message_type}_new:\n')
if container != None:
for field in container.fields:
@@ -122,7 +116,7 @@ class Message:
' * Returns: a newly allocated #MbimMessage, which should be freed with mbim_message_unref().\n'
' */\n'
'MbimMessage *\n'
- '${underscore}_${message_type}_request_new (\n')
+ '${underscore}_${message_type}_new (\n')
if container != None:
for field in container.fields:
@@ -161,18 +155,17 @@ class Message:
"""
Emit message parser
"""
- def _emit_message_parser(self, hfile, cfile, request_or_response, message_type, container):
+ def _emit_message_parser(self, hfile, cfile, message_type, container):
translations = { 'name' : self.name,
'service' : self.service,
'underscore' : utils.build_underscore_name (self.fullname),
- 'request_or_response' : request_or_response,
'message_type' : message_type,
'message_type_upper' : message_type.upper(),
'service_underscore_upper' : utils.build_underscore_name (self.service).upper(),
'name_underscore_upper' : utils.build_underscore_name (self.name).upper() }
template = (
'\n'
- 'gboolean ${underscore}_${message_type}_${request_or_response}_parse (\n'
+ 'gboolean ${underscore}_${message_type}_parse (\n'
' const MbimMessage *message,\n')
if container != None:
@@ -190,7 +183,7 @@ class Message:
template = (
'\n'
'/**\n'
- ' * ${underscore}_${message_type}_${request_or_response}_parse:\n'
+ ' * ${underscore}_${message_type}_parse:\n'
' * @message: the #MbimMessage.\n')
if container != None:
@@ -210,7 +203,7 @@ class Message:
' * Returns: %TRUE if the message was correctly parsed, %FALSE if @error is set.\n'
' */\n'
'gboolean\n'
- '${underscore}_${message_type}_${request_or_response}_parse (\n'
+ '${underscore}_${message_type}_parse (\n'
' const MbimMessage *message,\n')
if container != None:
@@ -288,29 +281,25 @@ class Message:
Emit the message handling implementation
"""
def emit(self, hfile, cfile):
- if self.can_query:
+ if self.query:
utils.add_separator(hfile, 'Message (Query)', self.fullname);
utils.add_separator(cfile, 'Message (Query)', self.fullname);
+ self._emit_message_creator(hfile, cfile, 'query', self.query_container)
- self._emit_message_creator(hfile, cfile, 'query', self.query_input)
- if self.query_input:
- self._emit_message_parser(hfile, cfile, 'request', 'query', self.query_input)
- if self.query_output:
- self._emit_message_parser(hfile, cfile, 'response', 'query', self.query_output)
-
- if self.can_set:
+ if self.set:
utils.add_separator(hfile, 'Message (Set)', self.fullname);
utils.add_separator(cfile, 'Message (Set)', self.fullname);
+ self._emit_message_creator(hfile, cfile, 'set', self.set_container)
- self._emit_message_creator(hfile, cfile, 'set', self.set_input)
- if self.set_input:
- self._emit_message_parser(hfile, cfile, 'request', 'set', self.set_input)
- if self.set_output:
- self._emit_message_parser(hfile, cfile, 'response', 'set', self.set_output)
+ if self.response:
+ utils.add_separator(hfile, 'Message (Response)', self.fullname);
+ utils.add_separator(cfile, 'Message (Response)', self.fullname);
+ self._emit_message_parser(hfile, cfile, 'response', self.response_container)
- if self.can_notify:
- utils.add_separator(hfile, 'Message (Notify)', self.fullname);
- utils.add_separator(cfile, 'Message (Notify)', self.fullname);
+ if self.notification:
+ utils.add_separator(hfile, 'Message (Notification)', self.fullname);
+ utils.add_separator(cfile, 'Message (Notification)', self.fullname);
+ self._emit_message_parser(hfile, cfile, 'notification', self.notification_container)
"""
diff --git a/cli/mbimcli-basic-connect.c b/cli/mbimcli-basic-connect.c
index f72cf54..0f959d2 100644
--- a/cli/mbimcli-basic-connect.c
+++ b/cli/mbimcli-basic-connect.c
@@ -164,7 +164,7 @@ query_device_caps_ready (MbimDevice *device,
return;
}
- if (!mbim_message_basic_connect_device_caps_query_response_parse (
+ if (!mbim_message_device_caps_response_parse (
response,
&device_type,
&cellular_class,
@@ -261,7 +261,7 @@ query_subscriber_ready_status_ready (MbimDevice *device,
return;
}
- if (!mbim_message_basic_connect_subscriber_ready_status_query_response_parse (
+ if (!mbim_message_subscriber_ready_status_response_parse (
response,
&ready_state,
&subscriber_id,
@@ -325,7 +325,7 @@ query_radio_state_ready (MbimDevice *device,
return;
}
- if (!mbim_message_basic_connect_radio_state_query_response_parse (
+ if (!mbim_message_radio_state_response_parse (
response,
&hardware_radio_state,
&software_radio_state,
@@ -371,7 +371,7 @@ query_device_services_ready (MbimDevice *device,
return;
}
- if (!mbim_message_basic_connect_device_services_query_response_parse (
+ if (!mbim_message_device_services_response_parse (
response,
&device_services_count,
&max_dss_sessions,
@@ -461,7 +461,7 @@ pin_ready (MbimDevice *device,
return;
}
- if (!mbim_message_basic_connect_pin_query_response_parse (
+ if (!mbim_message_pin_response_parse (
response,
&pin_type,
&pin_state,
@@ -506,7 +506,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
MbimMessage *request;
g_debug ("Asynchronously querying device capabilities...");
- request = (mbim_message_basic_connect_device_caps_query_request_new (NULL));
+ request = (mbim_message_device_caps_query_new (NULL));
mbim_device_command (ctx->device,
request,
10,
@@ -522,7 +522,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
MbimMessage *request;
g_debug ("Asynchronously querying subscriber ready status...");
- request = (mbim_message_basic_connect_subscriber_ready_status_query_request_new (NULL));
+ request = (mbim_message_subscriber_ready_status_query_new (NULL));
mbim_device_command (ctx->device,
request,
10,
@@ -538,7 +538,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
MbimMessage *request;
g_debug ("Asynchronously querying radio state...");
- request = (mbim_message_basic_connect_radio_state_query_request_new (NULL));
+ request = (mbim_message_radio_state_query_new (NULL));
mbim_device_command (ctx->device,
request,
10,
@@ -554,7 +554,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
MbimMessage *request;
g_debug ("Asynchronously querying device services...");
- request = (mbim_message_basic_connect_device_services_query_request_new (NULL));
+ request = (mbim_message_device_services_query_new (NULL));
mbim_device_command (ctx->device,
request,
10,
@@ -569,7 +569,7 @@ mbimcli_basic_connect_run (MbimDevice *device,
MbimMessage *request;
g_debug ("Asynchronously querying PIN state...");
- request = (mbim_message_basic_connect_pin_query_request_new (NULL));
+ request = (mbim_message_pin_query_new (NULL));
mbim_device_command (ctx->device,
request,
10,
diff --git a/data/mbim-service-basic-connect.json b/data/mbim-service-basic-connect.json
index 669f9c1..b969eba 100644
--- a/data/mbim-service-basic-connect.json
+++ b/data/mbim-service-basic-connect.json
@@ -1,106 +1,111 @@
[
// *********************************************************************************
- { "name" : "Device Caps",
- "service" : "Basic Connect",
- "type" : "Command",
- "query" : { "output" : [ { "name" : "DeviceType",
- "format" : "guint32",
- "public-format" : "MbimDeviceType" },
- { "name" : "CellularClass",
- "format" : "guint32",
- "public-format" : "MbimCellularClass" },
- { "name" : "VoiceClass",
- "format" : "guint32",
- "public-format" : "MbimVoiceClass" },
- { "name" : "SimClass",
- "format" : "guint32",
- "public-format" : "MbimSimClass" },
- { "name" : "DataClass",
- "format" : "guint32",
- "public-format" : "MbimDataClass" },
- { "name" : "SmsCaps",
- "format" : "guint32",
- "public-format" : "MbimSmsCaps" },
- { "name" : "ControlCaps",
- "format" : "guint32",
- "public-format" : "MbimCtrlCaps" },
- { "name" : "MaxSessions",
- "format" : "guint32" },
- { "name" : "CustomDataClass",
- "format" : "string",
- "max-size" : "22" },
- { "name" : "DeviceId",
- "format" : "string",
- "max-size" : "36" },
- { "name" : "FirmwareInfo",
- "format" : "string",
- "max-size" : "60" },
- { "name" : "HardwareInfo",
- "format" : "string",
- "max-size" : "60" } ] } },
+ { "name" : "Device Caps",
+ "service" : "Basic Connect",
+ "type" : "Command",
+ "query" : [],
+ "response" : [ { "name" : "DeviceType",
+ "format" : "guint32",
+ "public-format" : "MbimDeviceType" },
+ { "name" : "CellularClass",
+ "format" : "guint32",
+ "public-format" : "MbimCellularClass" },
+ { "name" : "VoiceClass",
+ "format" : "guint32",
+ "public-format" : "MbimVoiceClass" },
+ { "name" : "SimClass",
+ "format" : "guint32",
+ "public-format" : "MbimSimClass" },
+ { "name" : "DataClass",
+ "format" : "guint32",
+ "public-format" : "MbimDataClass" },
+ { "name" : "SmsCaps",
+ "format" : "guint32",
+ "public-format" : "MbimSmsCaps" },
+ { "name" : "ControlCaps",
+ "format" : "guint32",
+ "public-format" : "MbimCtrlCaps" },
+ { "name" : "MaxSessions",
+ "format" : "guint32" },
+ { "name" : "CustomDataClass",
+ "format" : "string",
+ "max-size" : "22" },
+ { "name" : "DeviceId",
+ "format" : "string",
+ "max-size" : "36" },
+ { "name" : "FirmwareInfo",
+ "format" : "string",
+ "max-size" : "60" },
+ { "name" : "HardwareInfo",
+ "format" : "string",
+ "max-size" : "60" } ] },
// *********************************************************************************
- { "name" : "Subscriber Ready Status",
- "service" : "Basic Connect",
- "type" : "Command",
- "query" : { "output" : [ { "name" : "ReadyState",
- "format" : "guint32",
- "public-format" : "MbimSubscriberReadyState" },
- { "name" : "SubscriberID",
- "format" : "string" },
- { "name" : "SimIccId",
- "format" : "string" },
- { "name" : "ReadyInfo",
- "format" : "guint32",
- "public-format" : "MbimReadyInfoFlag" },
- { "name" : "TelephoneNumbersCount",
- "format" : "guint32" },
- { "name" : "TelephoneNumbers",
- "format" : "string-array",
- "array-size-field" : "TelephoneNumbersCount" } ] } },
+ { "name" : "Subscriber Ready Status",
+ "service" : "Basic Connect",
+ "type" : "Command",
+ "query" : [],
+ "response" : [ { "name" : "ReadyState",
+ "format" : "guint32",
+ "public-format" : "MbimSubscriberReadyState" },
+ { "name" : "SubscriberID",
+ "format" : "string" },
+ { "name" : "SimIccId",
+ "format" : "string" },
+ { "name" : "ReadyInfo",
+ "format" : "guint32",
+ "public-format" : "MbimReadyInfoFlag" },
+ { "name" : "TelephoneNumbersCount",
+ "format" : "guint32" },
+ { "name" : "TelephoneNumbers",
+ "format" : "string-array",
+ "array-size-field" : "TelephoneNumbersCount" } ] },
// *********************************************************************************
- { "name" : "Radio State",
- "service" : "Basic Connect",
- "type" : "Command",
- "query" : { "output" : [ { "name" : "HwRadioState",
- "format" : "guint32",
- "public-format" : "MbimRadioSwitchState" },
- { "name" : "SwRadioState",
- "format" : "guint32",
- "public-format" : "MbimRadioSwitchState" } ] } },
+ { "name" : "Radio State",
+ "service" : "Basic Connect",
+ "type" : "Command",
+ "set" : [ { "name" : "RadioState",
+ "format" : "guint32",
+ "public-format" : "MbimRadioSwitchState" } ],
+ "query" : [],
+ "response" : [ { "name" : "HwRadioState",
+ "format" : "guint32",
+ "public-format" : "MbimRadioSwitchState" },
+ { "name" : "SwRadioState",
+ "format" : "guint32",
+ "public-format" : "MbimRadioSwitchState" } ],
+ "notification" : [ { "name" : "HwRadioState",
+ "format" : "guint32",
+ "public-format" : "MbimRadioSwitchState" },
+ { "name" : "SwRadioState",
+ "format" : "guint32",
+ "public-format" : "MbimRadioSwitchState" } ] },
// *********************************************************************************
- { "name" : "Pin",
- "service" : "Basic Connect",
- "type" : "Command",
- "set" : { "input" : [ { "name" : "PinType",
- "format" : "guint32",
- "public-format" : "MbimPinType" },
- { "name" : "PinOperation",
- "format" : "guint32",
- "public-format" : "MbimPinOperation" },
- { "name" : "Pin",
- "format" : "string" },
- { "name" : "NewPin",
- "format" : "string" } ],
- "output" : [ { "name" : "PinType",
- "format" : "guint32",
- "public-format" : "MbimPinType" },
- { "name" : "PinState",
- "format" : "guint32",
- "public-format" : "MbimPinState" },
- { "name" : "RemainingAttempts",
- "format" : "guint32" } ] },
- "query" : { "output" : [ { "name" : "PinType",
- "format" : "guint32",
- "public-format" : "MbimPinType" },
- { "name" : "PinState",
- "format" : "guint32",
- "public-format" : "MbimPinState" },
- { "name" : "RemainingAttempts",
- "format" : "guint32" } ] } },
+ { "name" : "Pin",
+ "service" : "Basic Connect",
+ "type" : "Command",
+ "set" : [ { "name" : "PinType",
+ "format" : "guint32",
+ "public-format" : "MbimPinType" },
+ { "name" : "PinOperation",
+ "format" : "guint32",
+ "public-format" : "MbimPinOperation" },
+ { "name" : "Pin",
+ "format" : "string" },
+ { "name" : "NewPin",
+ "format" : "string" } ],
+ "query" : [],
+ "response" : [ { "name" : "PinType",
+ "format" : "guint32",
+ "public-format" : "MbimPinType" },
+ { "name" : "PinState",
+ "format" : "guint32",
+ "public-format" : "MbimPinState" },
+ { "name" : "RemainingAttempts",
+ "format" : "guint32" } ] },
// *********************************************************************************
{ "name" : "MbimDeviceServiceElement",
@@ -117,16 +122,16 @@
"format" : "guint32-array",
"array-size-field" : "CidsCount" } ] },
- // *********************************************************************************
- { "name" : "Device Services",
- "service" : "Basic Connect",
- "type" : "Command",
- "query" : { "output" : [ { "name" : "DeviceServicesCount",
- "format" : "guint32" },
- { "name" : "MaxDssSessions",
- "format" : "guint32" },
- { "name" : "DeviceServices",
- "format" : "struct-array",
- "struct-type" : "MbimDeviceServiceElement",
- "array-size-field" : "DeviceServicesCount" } ] } }
+ { "name" : "Device Services",
+ "service" : "Basic Connect",
+ "type" : "Command",
+ "query" : [],
+ "response" : [ { "name" : "DeviceServicesCount",
+ "format" : "guint32" },
+ { "name" : "MaxDssSessions",
+ "format" : "guint32" },
+ { "name" : "DeviceServices",
+ "format" : "struct-array",
+ "struct-type" : "MbimDeviceServiceElement",
+ "array-size-field" : "DeviceServicesCount" } ] }
]
diff --git a/libmbim-glib/test/test-message-command-builder.c b/libmbim-glib/test/test-message-command-builder.c
index 675c831..bd675e3 100644
--- a/libmbim-glib/test/test-message-command-builder.c
+++ b/libmbim-glib/test/test-message-command-builder.c
@@ -160,11 +160,11 @@ test_message_command_builder_set_pin (void)
};
/* PIN set message */
- message = mbim_message_basic_connect_pin_set_request_new (MBIM_PIN_TYPE_PIN1,
- MBIM_PIN_OPERATION_ENTER,
- "1111",
- "",
- &error);
+ message = mbim_message_pin_set_new (MBIM_PIN_TYPE_PIN1,
+ MBIM_PIN_OPERATION_ENTER,
+ "1111",
+ "",
+ &error);
g_assert_no_error (error);
g_assert (message != NULL);
mbim_message_set_transaction_id (message, 1);
diff --git a/libmbim-glib/test/test-message-contents.c b/libmbim-glib/test/test-message-contents.c
index bf34576..cb847db 100644
--- a/libmbim-glib/test/test-message-contents.c
+++ b/libmbim-glib/test/test-message-contents.c
@@ -92,7 +92,7 @@ test_message_contents_basic_connect_device_caps (void)
response = mbim_message_new (buffer, sizeof (buffer));
- g_assert (mbim_message_basic_connect_device_caps_query_response_parse (
+ g_assert (mbim_message_device_caps_response_parse (
response,
&device_type,
&cellular_class,