diff --git a/introspection/mm-modem-gsm-card.xml b/introspection/mm-modem-gsm-card.xml
index 81cc883e..91b0c00e 100644
--- a/introspection/mm-modem-gsm-card.xml
+++ b/introspection/mm-modem-gsm-card.xml
@@ -34,19 +34,9 @@
-
+
- The manufacturer of the card.
-
-
-
-
- The model of the card.
-
-
-
-
- The version (revision) of the card.
+ Structure containing manufacturer, model, and version (revision) of the card.
diff --git a/introspection/mm-modem-gsm-contacts.xml b/introspection/mm-modem-gsm-contacts.xml
index d1b5dc05..60b06ad4 100644
--- a/introspection/mm-modem-gsm-contacts.xml
+++ b/introspection/mm-modem-gsm-contacts.xml
@@ -49,19 +49,9 @@
The index of the contact.
-
+
- The index of the contact (same as the passed index).
-
-
-
-
- The name of the contact.
-
-
-
-
- The number of the contact.
+ The contact structure containing index, name, and number.
diff --git a/introspection/mm-modem-gsm-network.xml b/introspection/mm-modem-gsm-network.xml
index 10215ccf..83a14688 100644
--- a/introspection/mm-modem-gsm-network.xml
+++ b/introspection/mm-modem-gsm-network.xml
@@ -112,19 +112,12 @@
-
+
- The network status.
-
-
-
-
- The current operator code.
-
-
-
-
- The current operator name.
+ The returned information contains:
+ * Network status.
+ * Current operator code.
+ * Current operator name,
diff --git a/introspection/mm-modem-gsm-sms.xml b/introspection/mm-modem-gsm-sms.xml
index 4f7acd0c..e710c166 100644
--- a/introspection/mm-modem-gsm-sms.xml
+++ b/introspection/mm-modem-gsm-sms.xml
@@ -26,24 +26,9 @@
The index of the SMS.
-
+
- The index of the SMS (same as the passed index).
-
-
-
-
- The number the SMS was received from.
-
-
-
-
- The contents of the SMS.
-
-
-
-
- The timestamp.
+ The SMS structure containing index, number, contents and time stamp.
diff --git a/src/mm-modem-gsm-card.c b/src/mm-modem-gsm-card.c
index ffe4f2eb..85385b25 100644
--- a/src/mm-modem-gsm-card.c
+++ b/src/mm-modem-gsm-card.c
@@ -75,8 +75,32 @@ info_call_done (MMModemGsmCard *self,
if (error)
dbus_g_method_return_error (context, error);
- else
- dbus_g_method_return (context, manufacturer, model, version);
+ else {
+ GValueArray *array;
+ GValue value = { 0, };
+
+ array = g_value_array_new (3);
+
+ /* Manufacturer */
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, manufacturer);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ /* Model */
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, model);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ /* Version */
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, version);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ dbus_g_method_return (context, array);
+ }
}
static void
diff --git a/src/mm-modem-gsm-network.c b/src/mm-modem-gsm-network.c
index c49aff4b..c302dead 100644
--- a/src/mm-modem-gsm-network.c
+++ b/src/mm-modem-gsm-network.c
@@ -116,9 +116,30 @@ reg_info_call_done (MMModemGsmNetwork *self,
if (error)
dbus_g_method_return_error (context, error);
else {
- dbus_g_method_return (context, status,
- oper_code ? oper_code : "",
- oper_name ? oper_name : "");
+ GValueArray *array;
+ GValue value = { 0, };
+
+ array = g_value_array_new (3);
+
+ /* Status */
+ g_value_init (&value, G_TYPE_UINT);
+ g_value_set_uint (&value, (guint32) status);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ /* Operator code */
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, oper_code);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ /* Operator name */
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, oper_name);
+ g_value_array_append (array, &value);
+ g_value_unset (&value);
+
+ dbus_g_method_return (context, array);
}
}
@@ -330,7 +351,9 @@ mm_modem_gsm_network_registration_info (MMModemGsmNetwork *self,
{
g_return_if_fail (MM_IS_MODEM_GSM_NETWORK (self));
- g_signal_emit (self, signals[REGISTRATION_INFO], 0, status, oper_code, oper_name);
+ g_signal_emit (self, signals[REGISTRATION_INFO], 0, status,
+ oper_code ? oper_code : "",
+ oper_name ? oper_name : "");
}
void