about summary refs log tree commit diff
path: root/src/modem-manager/nm-modem-gsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modem-manager/nm-modem-gsm.c')
-rw-r--r--src/modem-manager/nm-modem-gsm.c99
1 files changed, 55 insertions, 44 deletions
diff --git a/src/modem-manager/nm-modem-gsm.c b/src/modem-manager/nm-modem-gsm.c
index 183b4780..b6d3c857 100644
--- a/src/modem-manager/nm-modem-gsm.c
+++ b/src/modem-manager/nm-modem-gsm.c
@@ -58,8 +58,10 @@ typedef enum {
     MM_MODEM_GSM_ALLOWED_MODE_3G_PREFERRED = 2,
     MM_MODEM_GSM_ALLOWED_MODE_2G_ONLY      = 3,
     MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY      = 4,
+    MM_MODEM_GSM_ALLOWED_MODE_4G_PREFERRED = 5,
+    MM_MODEM_GSM_ALLOWED_MODE_4G_ONLY      = 6,
 
-    MM_MODEM_GSM_ALLOWED_MODE_LAST = MM_MODEM_GSM_ALLOWED_MODE_3G_ONLY
+    MM_MODEM_GSM_ALLOWED_MODE_LAST = MM_MODEM_GSM_ALLOWED_MODE_4G_ONLY
 } MMModemGsmAllowedMode;
 
 typedef enum {
@@ -75,7 +77,7 @@ typedef enum {
     MM_MODEM_GSM_ALLOWED_AUTH_LAST = MM_MODEM_GSM_ALLOWED_AUTH_EAP
 } MMModemGsmAllowedAuth;
 
-G_DEFINE_TYPE (NMModemGsm, nm_modem_gsm, NM_TYPE_MODEM)
+G_DEFINE_TYPE (NMModemGsm, nm_modem_gsm, NM_TYPE_MODEM_GENERIC)
 
 #define NM_MODEM_GSM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_MODEM_GSM, NMModemGsmPrivate))
 
@@ -102,19 +104,20 @@ nm_gsm_error_quark (void)
 
 NMModem *
 nm_modem_gsm_new (const char *path,
-                  const char *device,
                   const char *data_device,
-                  guint32 ip_method)
+                  guint32 ip_method,
+                  NMModemState state)
 {
 	g_return_val_if_fail (path != NULL, NULL);
-	g_return_val_if_fail (device != NULL, NULL);
 	g_return_val_if_fail (data_device != NULL, NULL);
 
 	return (NMModem *) g_object_new (NM_TYPE_MODEM_GSM,
 	                                 NM_MODEM_PATH, path,
-	                                 NM_MODEM_DEVICE, device,
-	                                 NM_MODEM_IFACE, data_device,
+	                                 NM_MODEM_UID, data_device,
+	                                 NM_MODEM_CONTROL_PORT, NULL,
+	                                 NM_MODEM_DATA_PORT, data_device,
 	                                 NM_MODEM_IP_METHOD, ip_method,
+	                                 NM_MODEM_CONNECTED, (state == NM_MODEM_STATE_CONNECTED),
 	                                 NULL);
 }
 
@@ -222,12 +225,12 @@ do_connect (NMModemGsm *self)
 	NMModemGsmPrivate *priv = NM_MODEM_GSM_GET_PRIVATE (self);
 	DBusGProxy *proxy;
 
-	proxy = nm_modem_get_proxy (NM_MODEM (self), MM_DBUS_INTERFACE_MODEM_SIMPLE);
-	dbus_g_proxy_begin_call_with_timeout (proxy,
-	                                      "Connect", stage1_prepare_done,
-	                                      self, NULL, 120000,
-	                                      DBUS_TYPE_G_MAP_OF_VARIANT, priv->connect_properties,
-	                                      G_TYPE_INVALID);
+	proxy = nm_modem_generic_get_proxy (NM_MODEM_GENERIC (self), MM_OLD_DBUS_INTERFACE_MODEM_SIMPLE);
+	priv->call = dbus_g_proxy_begin_call_with_timeout (proxy,
+	                                                   "Connect", stage1_prepare_done,
+	                                                   self, NULL, 120000,
+	                                                   DBUS_TYPE_G_MAP_OF_VARIANT, priv->connect_properties,
+	                                                   G_TYPE_INVALID);
 }
 
 static void stage1_enable_done (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data);
@@ -242,7 +245,7 @@ do_enable (NMModemGsm *self)
 	g_return_val_if_fail (NM_IS_MODEM_GSM (self), FALSE);
 
 	NM_MODEM_GSM_GET_PRIVATE (self)->enable_delay_id = 0;
-	proxy = nm_modem_get_proxy (NM_MODEM (self), MM_DBUS_INTERFACE_MODEM);
+	proxy = nm_modem_generic_get_proxy (NM_MODEM_GENERIC (self), MM_OLD_DBUS_INTERFACE_MODEM);
 	dbus_g_proxy_begin_call_with_timeout (proxy,
 	                                      "Enable", stage1_enable_done,
 	                                      self, NULL, 20000,
@@ -295,7 +298,7 @@ handle_enable_pin_required (NMModemGsm *self)
 
 	/* If we do, send it */
 	if (pin) {
-		proxy = nm_modem_get_proxy (NM_MODEM (self), MM_DBUS_INTERFACE_MODEM_GSM_CARD);
+		proxy = nm_modem_generic_get_proxy (NM_MODEM_GENERIC (self), MM_OLD_DBUS_INTERFACE_MODEM_GSM_CARD);
 		dbus_g_proxy_begin_call_with_timeout (proxy,
 		                                      "SendPin", stage1_pin_done,
 		                                      self, NULL, 10000,
@@ -387,6 +390,14 @@ create_connect_properties (NMConnection *connection)
 		value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_2G_PREFERRED);
 		value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_2G_PREFERRED);
 		break;
+	case NM_SETTING_GSM_NETWORK_TYPE_PREFER_4G:
+		/* deprecated modes not extended for 4G, so no need to set them here */
+		value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_4G_PREFERRED);
+		break;
+	case NM_SETTING_GSM_NETWORK_TYPE_4G:
+		/* deprecated modes not extended for 4G, so no need to set them here */
+		value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_4G_ONLY);
+		break;
 	default:
 		value_hash_add_uint (properties, "network_mode", MM_MODEM_GSM_NETWORK_DEPRECATED_MODE_ANY);
 		value_hash_add_uint (properties, "allowed_mode", MM_MODEM_GSM_ALLOWED_MODE_ANY);
@@ -423,11 +434,11 @@ create_connect_properties (NMConnection *connection)
 }
 
 static NMActStageReturn
-real_act_stage1_prepare (NMModem *modem,
-                         NMActRequest *req,
-                         GPtrArray **out_hints,
-                         const char **out_setting_name,
-                         NMDeviceStateReason *reason)
+act_stage1_prepare (NMModem *modem,
+                    NMActRequest *req,
+                    GPtrArray **out_hints,
+                    const char **out_setting_name,
+                    NMDeviceStateReason *reason)
 {
 	NMModemGsm *self = NM_MODEM_GSM (modem);
 	NMModemGsmPrivate *priv = NM_MODEM_GSM_GET_PRIVATE (self);
@@ -456,9 +467,9 @@ real_act_stage1_prepare (NMModem *modem,
 }
 
 static NMConnection *
-real_get_best_auto_connection (NMModem *modem,
-							   GSList *connections,
-							   char **specific_object)
+get_best_auto_connection (NMModem *modem,
+                          GSList *connections,
+                          char **specific_object)
 {
 	GSList *iter;
 
@@ -481,9 +492,9 @@ real_get_best_auto_connection (NMModem *modem,
 }
 
 static gboolean
-real_check_connection_compatible (NMModem *modem,
-                                  NMConnection *connection,
-                                  GError **error)
+check_connection_compatible (NMModem *modem,
+                             NMConnection *connection,
+                             GError **error)
 {
 	NMSettingConnection *s_con;
 	NMSettingGsm *s_gsm;
@@ -510,10 +521,10 @@ real_check_connection_compatible (NMModem *modem,
 }
 
 static gboolean
-real_complete_connection (NMModem *modem,
-                          NMConnection *connection,
-                          const GSList *existing_connections,
-                          GError **error)
+complete_connection (NMModem *modem,
+                     NMConnection *connection,
+                     const GSList *existing_connections,
+                     GError **error)
 {
 	NMSettingGsm *s_gsm;
 	NMSettingPPP *s_ppp;
@@ -552,10 +563,10 @@ real_complete_connection (NMModem *modem,
 }
 
 static gboolean
-real_get_user_pass (NMModem *modem,
-                    NMConnection *connection,
-                    const char **user,
-                    const char **pass)
+get_user_pass (NMModem *modem,
+               NMConnection *connection,
+               const char **user,
+               const char **pass)
 {
 	NMSettingGsm *s_gsm;
 
@@ -572,20 +583,20 @@ real_get_user_pass (NMModem *modem,
 }
 
 static const char *
-real_get_setting_name (NMModem *modem)
+get_setting_name (NMModem *modem)
 {
 	return NM_SETTING_GSM_SETTING_NAME;
 }
 
 static void
-real_deactivate (NMModem *modem, NMDevice *device)
+deactivate (NMModem *modem, NMDevice *device)
 {
 	NMModemGsmPrivate *priv = NM_MODEM_GSM_GET_PRIVATE (modem);
 
 	if (priv->call) {
 		DBusGProxy *proxy;
 
-		proxy = nm_modem_get_proxy (modem, MM_DBUS_INTERFACE_MODEM_SIMPLE);
+		proxy = nm_modem_generic_get_proxy (NM_MODEM_GENERIC (modem), MM_OLD_DBUS_INTERFACE_MODEM_SIMPLE);
 		dbus_g_proxy_cancel_call (proxy, priv->call);
 		priv->call = NULL;
 	}
@@ -630,13 +641,13 @@ nm_modem_gsm_class_init (NMModemGsmClass *klass)
 
 	/* Virtual methods */
 	object_class->dispose = dispose;
-	modem_class->get_user_pass = real_get_user_pass;
-	modem_class->get_setting_name = real_get_setting_name;
-	modem_class->get_best_auto_connection = real_get_best_auto_connection;
-	modem_class->check_connection_compatible = real_check_connection_compatible;
-	modem_class->complete_connection = real_complete_connection;
-	modem_class->act_stage1_prepare = real_act_stage1_prepare;
-	modem_class->deactivate = real_deactivate;
+	modem_class->get_user_pass = get_user_pass;
+	modem_class->get_setting_name = get_setting_name;
+	modem_class->get_best_auto_connection = get_best_auto_connection;
+	modem_class->check_connection_compatible = check_connection_compatible;
+	modem_class->complete_connection = complete_connection;
+	modem_class->act_stage1_prepare = act_stage1_prepare;
+	modem_class->deactivate = deactivate;
 
 	dbus_g_error_domain_register (NM_GSM_ERROR, NULL, NM_TYPE_GSM_ERROR);
 }