diff options
author | Tambet Ingo <tambet@gmail.com> | 2008-12-17 13:35:22 +0200 |
---|---|---|
committer | Tambet Ingo <tambet@gmail.com> | 2008-12-17 13:35:22 +0200 |
commit | a1223a9eaf35e7f198b46061ebb7d0ca567886fb (patch) | |
tree | c1d67eb57adff034f962f377dd771cdeea735fc0 /src | |
parent | 614aa0316a4c0801d187949b0ab2e6816c82328e (diff) |
Convert multiple return values to structs.
Python DBus bindings are unable to implement methods that return multiple
values.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-modem-gsm-card.c | 28 | ||||
-rw-r--r-- | src/mm-modem-gsm-network.c | 31 |
2 files changed, 53 insertions, 6 deletions
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 |