From 0477becfaee2a24ddf7b93e25b5bc3672179317a Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 3 Jun 2013 11:26:13 +0200 Subject: [PATCH] modem-manager: consolidate capabilities loading Make capabilities loading a method in the NMModem class, and let subclasses implement it. --- src/devices/nm-device-modem.c | 13 ++++++------- src/modem-manager/nm-modem-broadband.c | 11 +++++++---- src/modem-manager/nm-modem-broadband.h | 4 ---- src/modem-manager/nm-modem-old.c | 11 +++++++---- src/modem-manager/nm-modem-old.h | 4 ---- src/modem-manager/nm-modem.c | 12 ++++++++++++ src/modem-manager/nm-modem.h | 8 ++++++++ 7 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/devices/nm-device-modem.c b/src/devices/nm-device-modem.c index ceeb1d5a08..72cef2b390 100644 --- a/src/devices/nm-device-modem.c +++ b/src/devices/nm-device-modem.c @@ -337,22 +337,18 @@ nm_device_modem_new (NMModem *modem, const char *driver) { NMDeviceModemCapabilities caps = NM_DEVICE_MODEM_CAPABILITY_NONE; NMDeviceModemCapabilities current_caps = NM_DEVICE_MODEM_CAPABILITY_NONE; - const gchar *type_desc = NULL; const gchar *ip_iface = NULL; g_return_val_if_fail (NM_IS_MODEM (modem), NULL); g_return_val_if_fail (driver != NULL, NULL); if (NM_IS_MODEM_OLD (modem)) { - nm_modem_old_get_capabilities (NM_MODEM_OLD (modem), &caps, ¤t_caps); - type_desc = "Broadband"; ip_iface = nm_modem_get_data_port (modem); } #if WITH_MODEM_MANAGER_1 else if (NM_IS_MODEM_BROADBAND (modem)) { - nm_modem_broadband_get_capabilities (NM_MODEM_BROADBAND (modem), &caps, ¤t_caps); - type_desc = "Broadband"; - /* data port not yet known in broadband modems */ + /* In ModemManager1 modems, data port is not yet known */ + ip_iface = NULL; } #endif else { @@ -360,12 +356,15 @@ nm_device_modem_new (NMModem *modem, const char *driver) return NULL; } + /* Load capabilities */ + nm_modem_get_capabilities (modem, &caps, ¤t_caps); + return (NMDevice *) g_object_new (NM_TYPE_DEVICE_MODEM, NM_DEVICE_UDI, nm_modem_get_path (modem), NM_DEVICE_IFACE, nm_modem_get_uid (modem), NM_DEVICE_IP_IFACE, ip_iface, NM_DEVICE_DRIVER, driver, - NM_DEVICE_TYPE_DESC, type_desc, + NM_DEVICE_TYPE_DESC, "Broadband", NM_DEVICE_DEVICE_TYPE, NM_DEVICE_TYPE_MODEM, NM_DEVICE_RFKILL_TYPE, RFKILL_TYPE_WWAN, NM_DEVICE_MODEM_MODEM, modem, diff --git a/src/modem-manager/nm-modem-broadband.c b/src/modem-manager/nm-modem-broadband.c index 5488abcfc3..47745c64bf 100644 --- a/src/modem-manager/nm-modem-broadband.c +++ b/src/modem-manager/nm-modem-broadband.c @@ -100,11 +100,13 @@ translate_mm_error (GError *error) /*****************************************************************************/ -void -nm_modem_broadband_get_capabilities (NMModemBroadband *self, - NMDeviceModemCapabilities *modem_caps, - NMDeviceModemCapabilities *current_caps) +static void +get_capabilities (NMModem *_self, + NMDeviceModemCapabilities *modem_caps, + NMDeviceModemCapabilities *current_caps) { + NMModemBroadband *self = NM_MODEM_BROADBAND (_self); + *modem_caps = (NMDeviceModemCapabilities)mm_modem_get_modem_capabilities (self->priv->modem_iface); *current_caps = (NMDeviceModemCapabilities)mm_modem_get_current_capabilities (self->priv->modem_iface); } @@ -945,6 +947,7 @@ nm_modem_broadband_class_init (NMModemBroadbandClass *klass) object_class->get_property = get_property; object_class->set_property = set_property; + modem_class->get_capabilities = get_capabilities; modem_class->static_stage3_ip4_config_start = static_stage3_ip4_config_start; modem_class->disconnect = disconnect; modem_class->deactivate = deactivate; diff --git a/src/modem-manager/nm-modem-broadband.h b/src/modem-manager/nm-modem-broadband.h index 5b54c1c18c..635c619a4f 100644 --- a/src/modem-manager/nm-modem-broadband.h +++ b/src/modem-manager/nm-modem-broadband.h @@ -53,10 +53,6 @@ GType nm_modem_broadband_get_type (void); NMModem *nm_modem_broadband_new (GObject *object); -void nm_modem_broadband_get_capabilities (NMModemBroadband *self, - NMDeviceModemCapabilities *modem_caps, - NMDeviceModemCapabilities *current_caps); - G_END_DECLS #endif /* NM_MODEM_BROADBAND_H */ diff --git a/src/modem-manager/nm-modem-old.c b/src/modem-manager/nm-modem-old.c index dad773214a..e7f672a138 100644 --- a/src/modem-manager/nm-modem-old.c +++ b/src/modem-manager/nm-modem-old.c @@ -958,11 +958,13 @@ get_user_pass (NMModem *modem, /*****************************************************************************/ -void -nm_modem_old_get_capabilities (NMModemOld *self, - NMDeviceModemCapabilities *modem_caps, - NMDeviceModemCapabilities *current_caps) +static void +get_capabilities (NMModem *_self, + NMDeviceModemCapabilities *modem_caps, + NMDeviceModemCapabilities *current_caps) { + NMModemOld *self = NM_MODEM_OLD (_self); + *current_caps = *modem_caps = NM_MODEM_OLD_GET_PRIVATE (self)->caps; } @@ -1138,6 +1140,7 @@ nm_modem_old_class_init (NMModemOldClass *klass) object_class->constructor = constructor; object_class->dispose = dispose; + modem_class->get_capabilities = get_capabilities; modem_class->get_user_pass = get_user_pass; modem_class->complete_connection = complete_connection; modem_class->check_connection_compatible = check_connection_compatible; diff --git a/src/modem-manager/nm-modem-old.h b/src/modem-manager/nm-modem-old.h index aa551c8a78..828da6a6d4 100644 --- a/src/modem-manager/nm-modem-old.h +++ b/src/modem-manager/nm-modem-old.h @@ -48,10 +48,6 @@ GType nm_modem_old_get_type (void); NMModem *nm_modem_old_new (const char *path, GHashTable *properties, GError **error); -void nm_modem_old_get_capabilities (NMModemOld *self, - NMDeviceModemCapabilities *modem_caps, - NMDeviceModemCapabilities *current_caps); - /* Protected */ DBusGProxy *nm_modem_old_get_proxy (NMModemOld *modem, const gchar *interface); diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c index 87cefd7f4a..59f5e535b0 100644 --- a/src/modem-manager/nm-modem.c +++ b/src/modem-manager/nm-modem.c @@ -666,6 +666,18 @@ nm_modem_get_data_port (NMModem *self) /*****************************************************************************/ +void +nm_modem_get_capabilities (NMModem *self, + NMDeviceModemCapabilities *modem_caps, + NMDeviceModemCapabilities *current_caps) +{ + g_return_if_fail (NM_IS_MODEM (self)); + + NM_MODEM_GET_CLASS (self)->get_capabilities (self, modem_caps, current_caps); +} + +/*****************************************************************************/ + static void nm_modem_init (NMModem *self) { diff --git a/src/modem-manager/nm-modem.h b/src/modem-manager/nm-modem.h index be3150444e..8d754eb35c 100644 --- a/src/modem-manager/nm-modem.h +++ b/src/modem-manager/nm-modem.h @@ -76,6 +76,10 @@ typedef struct { typedef struct { GObjectClass parent; + void (*get_capabilities) (NMModem *self, + NMDeviceModemCapabilities *modem_caps, + NMDeviceModemCapabilities *current_caps); + gboolean (*get_user_pass) (NMModem *modem, NMConnection *connection, const char **user, @@ -125,6 +129,10 @@ const char *nm_modem_get_control_port (NMModem *modem); const char *nm_modem_get_data_port (NMModem *modem); const char *nm_modem_get_driver (NMModem *modem); +void nm_modem_get_capabilities (NMModem *self, + NMDeviceModemCapabilities *modem_caps, + NMDeviceModemCapabilities *current_caps); + gboolean nm_modem_check_connection_compatible (NMModem *self, NMConnection *connection, GError **error);