Update the NetworkManager and nm-applet patches.

Update the NetworkManager and nm-applet patches to work with the DBus API reorganization.
This commit is contained in:
Tambet Ingo
2008-08-29 13:13:00 +03:00
parent 424f514b02
commit 3d9fc420d2
2 changed files with 161 additions and 342 deletions

View File

@@ -11,94 +11,43 @@ index b7aa437..b154922 100644
libnm-util/libnm-util.pc libnm-util/libnm-util.pc
libnm-util/Makefile libnm-util/Makefile
diff --git a/introspection/nm-device-cdma.xml b/introspection/nm-device-cdma.xml diff --git a/introspection/nm-device-cdma.xml b/introspection/nm-device-cdma.xml
index 2b43f8f..33e80cb 100644 index 2b43f8f..22a612b 100644
--- a/introspection/nm-device-cdma.xml --- a/introspection/nm-device-cdma.xml
+++ b/introspection/nm-device-cdma.xml +++ b/introspection/nm-device-cdma.xml
@@ -3,12 +3,28 @@ @@ -2,14 +2,5 @@
<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> <node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<interface name="org.freedesktop.NetworkManager.Device.Cdma"> <interface name="org.freedesktop.NetworkManager.Device.Cdma">
-
- <signal name="PropertiesChanged"> - <signal name="PropertiesChanged">
- <arg name="properties" type="a{sv}" tp:type="String_Variant_Map"> - <arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
- <tp:docstring> - <tp:docstring>
- A dictionary mapping property names to variant boxed values - A dictionary mapping property names to variant boxed values
- </tp:docstring> - </tp:docstring>
- </arg> - </arg>
+ <method name="GetSignalQuality"> - </signal>
+ <tp:docstring> -
+ Get the current signal quality.
+ </tp:docstring>
+ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+ <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_cdma_device_get_signal_quality"/>
+ <arg name="quality" type="u" direction="out">
+ <tp:docstring>
+ Signal quality (percent).
+ </tp:docstring>
+ </arg>
+ </method>
+
+ <signal name="SignalQuality">
+ <tp:docstring>
+ The signal quality changed.
+ </tp:docstring>
+ <arg name="quality" type="u">
+ <tp:docstring>
+ The signal quality (percent).
+ </tp:docstring>
+ </arg>
</signal>
</interface> </interface>
</node>
diff --git a/introspection/nm-device-gsm.xml b/introspection/nm-device-gsm.xml diff --git a/introspection/nm-device-gsm.xml b/introspection/nm-device-gsm.xml
index 650d656..753669d 100644 index 650d656..0bf7b08 100644
--- a/introspection/nm-device-gsm.xml --- a/introspection/nm-device-gsm.xml
+++ b/introspection/nm-device-gsm.xml +++ b/introspection/nm-device-gsm.xml
@@ -3,12 +3,39 @@ @@ -2,14 +2,5 @@
<node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> <node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<interface name="org.freedesktop.NetworkManager.Device.Gsm"> <interface name="org.freedesktop.NetworkManager.Device.Gsm">
-
- <signal name="PropertiesChanged"> - <signal name="PropertiesChanged">
- <arg name="properties" type="a{sv}" tp:type="String_Variant_Map"> - <arg name="properties" type="a{sv}" tp:type="String_Variant_Map">
- <tp:docstring> - <tp:docstring>
- A dictionary mapping property names to variant boxed values - A dictionary mapping property names to variant boxed values
- </tp:docstring> - </tp:docstring>
- </arg> - </arg>
+ <method name="GetSignalQuality"> - </signal>
+ <tp:docstring> -
+ Get the current signal quality.
+ </tp:docstring>
+ <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
+ <annotation name="org.freedesktop.DBus.GLib.CSymbol" value="impl_gsm_device_get_signal_quality"/>
+ <arg name="quality" type="u" direction="out">
+ <tp:docstring>
+ Signal quality (percent).
+ </tp:docstring>
+ </arg>
+ </method>
+
+ <signal name="SignalQuality">
+ <tp:docstring>
+ The signal quality changed.
+ </tp:docstring>
+ <arg name="quality" type="u">
+ <tp:docstring>
+ The signal quality (percent).
+ </tp:docstring>
+ </arg>
+ </signal>
+
+ <signal name="NetworkMode">
+ <tp:docstring>
+ The network mode changed.
+ </tp:docstring>
+ <arg name="mode" type="u">
+ <tp:docstring>
+ The new network mode.
+ </tp:docstring>
+ </arg>
</signal>
</interface> </interface>
</node>
diff --git a/src/Makefile.am b/src/Makefile.am diff --git a/src/Makefile.am b/src/Makefile.am
index 3c4ce75..3f24eb5 100644 index 3c4ce75..3f24eb5 100644
--- a/src/Makefile.am --- a/src/Makefile.am
@@ -210,7 +159,7 @@ index c8fa251..432af94 100644
best = dev; best = dev;
diff --git a/src/modem-manager/Makefile.am b/src/modem-manager/Makefile.am diff --git a/src/modem-manager/Makefile.am b/src/modem-manager/Makefile.am
new file mode 100644 new file mode 100644
index 0000000..cc84137 index 0000000..d8730b1
--- /dev/null --- /dev/null
+++ b/src/modem-manager/Makefile.am +++ b/src/modem-manager/Makefile.am
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
@@ -223,10 +172,10 @@ index 0000000..cc84137
+noinst_LTLIBRARIES = libmodem-manager.la +noinst_LTLIBRARIES = libmodem-manager.la
+ +
+libmodem_manager_la_SOURCES = \ +libmodem_manager_la_SOURCES = \
+ nm-cdma-modem-device.c \ + nm-cdma-modem.c \
+ nm-cdma-modem-device.h \ + nm-cdma-modem.h \
+ nm-gsm-modem-device.c \ + nm-gsm-modem.c \
+ nm-gsm-modem-device.h \ + nm-gsm-modem.h \
+ nm-modem-device.c \ + nm-modem-device.c \
+ nm-modem-device.h \ + nm-modem-device.h \
+ nm-modem-manager.h \ + nm-modem-manager.h \
@@ -255,17 +204,17 @@ index 0000000..cc84137
+ nm-serial-device-glue.h + nm-serial-device-glue.h
+ +
+CLEANFILES = $(BUILT_SOURCES) +CLEANFILES = $(BUILT_SOURCES)
diff --git a/src/modem-manager/nm-cdma-modem-device.c b/src/modem-manager/nm-cdma-modem-device.c diff --git a/src/modem-manager/nm-cdma-modem.c b/src/modem-manager/nm-cdma-modem.c
new file mode 100644 new file mode 100644
index 0000000..b674342 index 0000000..fec4540
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-cdma-modem-device.c +++ b/src/modem-manager/nm-cdma-modem.c
@@ -0,0 +1,315 @@ @@ -0,0 +1,248 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#include <string.h> +#include <string.h>
+ +
+#include "nm-cdma-modem-device.h" +#include "nm-cdma-modem.h"
+#include "nm-modem-types.h" +#include "nm-modem-types.h"
+#include "nm-device-interface.h" +#include "nm-device-interface.h"
+#include "nm-device-private.h" +#include "nm-device-private.h"
@@ -274,13 +223,11 @@ index 0000000..b674342
+#include "nm-setting-cdma.h" +#include "nm-setting-cdma.h"
+#include "nm-utils.h" +#include "nm-utils.h"
+ +
+static void impl_cdma_device_get_signal_quality (NMCdmaModemDevice *modem, DBusGMethodInvocation *context);
+
+#include "nm-cdma-device-glue.h" +#include "nm-cdma-device-glue.h"
+ +
+G_DEFINE_TYPE (NMCdmaModemDevice, nm_cdma_modem_device, NM_TYPE_MODEM_DEVICE) +G_DEFINE_TYPE (NMCdmaModem, nm_cdma_modem, NM_TYPE_MODEM_DEVICE)
+ +
+#define NM_CDMA_MODEM_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CDMA_MODEM_DEVICE, NMCdmaModemDevicePrivate)) +#define NM_CDMA_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_CDMA_MODEM, NMCdmaModemPrivate))
+ +
+enum { +enum {
+ MODEM_STATE_BEGIN, + MODEM_STATE_BEGIN,
@@ -289,11 +236,8 @@ index 0000000..b674342
+}; +};
+ +
+typedef struct { +typedef struct {
+ NMDBusManager *dbus_mgr;
+ char *path;
+ DBusGProxy *proxy;
+ int modem_state; + int modem_state;
+} NMCdmaModemDevicePrivate; +} NMCdmaModemPrivate;
+ +
+enum { +enum {
+ SIGNAL_QUALITY, + SIGNAL_QUALITY,
@@ -304,15 +248,15 @@ index 0000000..b674342
+static guint signals[LAST_SIGNAL] = { 0 }; +static guint signals[LAST_SIGNAL] = { 0 };
+ +
+NMDevice * +NMDevice *
+nm_cdma_modem_device_new (const char *path, +nm_cdma_modem_new (const char *path,
+ const char *data_device, + const char *data_device,
+ const char *driver) + const char *driver)
+{ +{
+ g_return_val_if_fail (path != NULL, NULL); + g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (data_device != NULL, NULL); + g_return_val_if_fail (data_device != NULL, NULL);
+ g_return_val_if_fail (driver != NULL, NULL); + g_return_val_if_fail (driver != NULL, NULL);
+ +
+ return (NMDevice *) g_object_new (NM_TYPE_CDMA_MODEM_DEVICE, + return (NMDevice *) g_object_new (NM_TYPE_CDMA_MODEM,
+ NM_DEVICE_INTERFACE_UDI, path, + NM_DEVICE_INTERFACE_UDI, path,
+ NM_DEVICE_INTERFACE_IFACE, data_device, + NM_DEVICE_INTERFACE_IFACE, data_device,
+ NM_DEVICE_INTERFACE_DRIVER, driver, + NM_DEVICE_INTERFACE_DRIVER, driver,
@@ -322,7 +266,7 @@ index 0000000..b674342
+} +}
+ +
+static NMSetting * +static NMSetting *
+get_setting (NMCdmaModemDevice *device, GType setting_type) +get_setting (NMCdmaModem *device, GType setting_type)
+{ +{
+ NMActRequest *req; + NMActRequest *req;
+ NMSetting *setting = NULL; + NMSetting *setting = NULL;
@@ -342,8 +286,8 @@ index 0000000..b674342
+static void +static void
+state_machine (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) +state_machine (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
+{ +{
+ NMCdmaModemDevice *modem = NM_CDMA_MODEM_DEVICE (user_data); + NMCdmaModem *modem = NM_CDMA_MODEM (user_data);
+ NMCdmaModemDevicePrivate *priv = NM_CDMA_MODEM_DEVICE_GET_PRIVATE (modem); + NMCdmaModemPrivate *priv = NM_CDMA_MODEM_GET_PRIVATE (modem);
+ NMSettingCdma *setting; + NMSettingCdma *setting;
+ GError *error = NULL; + GError *error = NULL;
+ +
@@ -353,7 +297,7 @@ index 0000000..b674342
+ dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_INVALID); + dbus_g_proxy_end_call (proxy, call_id, &error, G_TYPE_INVALID);
+ +
+ if (error) { + if (error) {
+ nm_warning ("CDMA device connection failed: %s", error->message); + nm_warning ("CDMA modem connection failed: %s", error->message);
+ nm_device_state_changed (NM_DEVICE (modem), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE); + nm_device_state_changed (NM_DEVICE (modem), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE);
+ return; + return;
+ } + }
@@ -361,7 +305,7 @@ index 0000000..b674342
+ switch (priv->modem_state) { + switch (priv->modem_state) {
+ case MODEM_STATE_BEGIN: + case MODEM_STATE_BEGIN:
+ priv->modem_state = MODEM_STATE_ENABLE; + priv->modem_state = MODEM_STATE_ENABLE;
+ dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem)), + dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem), NULL),
+ "Enable", state_machine, + "Enable", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_BOOLEAN, TRUE, + G_TYPE_BOOLEAN, TRUE,
@@ -369,7 +313,7 @@ index 0000000..b674342
+ break; + break;
+ case MODEM_STATE_ENABLE: + case MODEM_STATE_ENABLE:
+ priv->modem_state = MODEM_STATE_CONNECT; + priv->modem_state = MODEM_STATE_CONNECT;
+ dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem)), + dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem), NULL),
+ "Connect", state_machine, + "Connect", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_STRING, setting->number, + G_TYPE_STRING, setting->number,
@@ -388,10 +332,10 @@ index 0000000..b674342
+static NMActStageReturn +static NMActStageReturn
+real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) +real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
+{ +{
+ NMCdmaModemDevicePrivate *priv = NM_CDMA_MODEM_DEVICE_GET_PRIVATE (device); + NMCdmaModemPrivate *priv = NM_CDMA_MODEM_GET_PRIVATE (device);
+ +
+ priv->modem_state = MODEM_STATE_BEGIN; + priv->modem_state = MODEM_STATE_BEGIN;
+ state_machine (priv->proxy, NULL, device); + state_machine (NULL, NULL, device);
+ +
+ return NM_ACT_STAGE_RETURN_POSTPONE; + return NM_ACT_STAGE_RETURN_POSTPONE;
+} +}
@@ -479,85 +423,23 @@ index 0000000..b674342
+ nm_device_activate_schedule_stage1_device_prepare (dev); + nm_device_activate_schedule_stage1_device_prepare (dev);
+} +}
+ +
+static void
+signal_quality_proxy (DBusGProxy *proxy, guint32 quality, gpointer user_data)
+{
+ g_signal_emit (NM_CDMA_MODEM_DEVICE (user_data), signals[SIGNAL_QUALITY], 0, quality);
+}
+
+static void
+impl_cdma_device_get_signal_quality (NMCdmaModemDevice *modem, DBusGMethodInvocation *context)
+{
+ /* FIXME */
+}
+
+/*****************************************************************************/ +/*****************************************************************************/
+ +
+static void +static void
+nm_cdma_modem_device_init (NMCdmaModemDevice *self) +nm_cdma_modem_init (NMCdmaModem *self)
+{ +{
+ NMCdmaModemDevicePrivate *priv = NM_CDMA_MODEM_DEVICE_GET_PRIVATE (self);
+
+ priv->dbus_mgr = nm_dbus_manager_get ();
+
+ nm_device_set_device_type (NM_DEVICE (self), NM_DEVICE_TYPE_GSM); + nm_device_set_device_type (NM_DEVICE (self), NM_DEVICE_TYPE_GSM);
+} +}
+ +
+static GObject*
+constructor (GType type,
+ guint n_construct_params,
+ GObjectConstructParam *construct_params)
+{
+ GObject *object;
+ NMCdmaModemDevicePrivate *priv;
+
+ object = G_OBJECT_CLASS (nm_cdma_modem_device_parent_class)->constructor (type,
+ n_construct_params,
+ construct_params);
+ if (!object)
+ return NULL;
+
+ priv = NM_CDMA_MODEM_DEVICE_GET_PRIVATE (object);
+
+ priv->proxy = dbus_g_proxy_new_for_name (nm_dbus_manager_get_connection (priv->dbus_mgr),
+ MM_DBUS_SERVICE,
+ nm_device_get_udi (NM_DEVICE (object)),
+ MM_DBUS_INTERFACE_CDMA_MODEM);
+
+ dbus_g_proxy_add_signal (priv->proxy, "SignalQuality", G_TYPE_UINT, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (priv->proxy, "SignalQuality",
+ G_CALLBACK (signal_quality_proxy),
+ object,
+ NULL);
+
+ return object;
+}
+
+static void +static void
+finalize (GObject *object) +nm_cdma_modem_class_init (NMCdmaModemClass *klass)
+{
+ NMCdmaModemDevicePrivate *priv = NM_CDMA_MODEM_DEVICE_GET_PRIVATE (object);
+
+ if (priv->proxy)
+ g_object_unref (priv->proxy);
+
+ g_object_unref (priv->dbus_mgr);
+
+ G_OBJECT_CLASS (nm_cdma_modem_device_parent_class)->finalize (object);
+}
+
+static void
+nm_cdma_modem_device_class_init (NMCdmaModemDeviceClass *klass)
+{ +{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); + NMDeviceClass *device_class = NM_DEVICE_CLASS (klass);
+ +
+ g_type_class_add_private (object_class, sizeof (NMCdmaModemDevicePrivate)); + g_type_class_add_private (object_class, sizeof (NMCdmaModemPrivate));
+ +
+ /* Virtual methods */ + /* Virtual methods */
+ object_class->constructor = constructor;
+ object_class->finalize = finalize;
+
+ device_class->get_best_auto_connection = real_get_best_auto_connection; + device_class->get_best_auto_connection = real_get_best_auto_connection;
+ device_class->connection_secrets_updated = real_connection_secrets_updated; + device_class->connection_secrets_updated = real_connection_secrets_updated;
+ device_class->act_stage1_prepare = real_act_stage1_prepare; + device_class->act_stage1_prepare = real_act_stage1_prepare;
@@ -567,7 +449,7 @@ index 0000000..b674342
+ g_signal_new ("signal-quality", + g_signal_new ("signal-quality",
+ G_OBJECT_CLASS_TYPE (object_class), + G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST, + G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (NMCdmaModemDeviceClass, signal_quality), + G_STRUCT_OFFSET (NMCdmaModemClass, signal_quality),
+ NULL, NULL, + NULL, NULL,
+ g_cclosure_marshal_VOID__UINT, + g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE, 1, + G_TYPE_NONE, 1,
@@ -576,58 +458,58 @@ index 0000000..b674342
+ dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass), + dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+ &dbus_glib_nm_cdma_device_object_info); + &dbus_glib_nm_cdma_device_object_info);
+} +}
diff --git a/src/modem-manager/nm-cdma-modem-device.h b/src/modem-manager/nm-cdma-modem-device.h diff --git a/src/modem-manager/nm-cdma-modem.h b/src/modem-manager/nm-cdma-modem.h
new file mode 100644 new file mode 100644
index 0000000..888d429 index 0000000..5dc3c14
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-cdma-modem-device.h +++ b/src/modem-manager/nm-cdma-modem.h
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#ifndef NM_CDMA_MODEM_DEVICE_H +#ifndef NM_CDMA_MODEM_H
+#define NM_CDMA_MODEM_DEVICE_H +#define NM_CDMA_MODEM_H
+ +
+#include <nm-modem-device.h> +#include <nm-modem-device.h>
+ +
+G_BEGIN_DECLS +G_BEGIN_DECLS
+ +
+#define NM_TYPE_CDMA_MODEM_DEVICE (nm_cdma_modem_device_get_type ()) +#define NM_TYPE_CDMA_MODEM (nm_cdma_modem_get_type ())
+#define NM_CDMA_MODEM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_CDMA_MODEM_DEVICE, NMCdmaModemDevice)) +#define NM_CDMA_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_CDMA_MODEM, NMCdmaModem))
+#define NM_CDMA_MODEM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_CDMA_MODEM_DEVICE, NMCdmaModemDeviceClass)) +#define NM_CDMA_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_CDMA_MODEM, NMCdmaModemClass))
+#define NM_IS_CDMA_MODEM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_CDMA_MODEM_DEVICE)) +#define NM_IS_CDMA_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_CDMA_MODEM))
+#define NM_IS_CDMA_MODEM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_CDMA_MODEM_DEVICE)) +#define NM_IS_CDMA_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_CDMA_MODEM))
+#define NM_CDMA_MODEM_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_CDMA_MODEM_DEVICE, NMCdmaModemDeviceClass)) +#define NM_CDMA_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_CDMA_MODEM, NMCdmaModemClass))
+ +
+typedef struct { +typedef struct {
+ NMModemDevice parent; + NMModemDevice parent;
+} NMCdmaModemDevice; +} NMCdmaModem;
+ +
+typedef struct { +typedef struct {
+ NMModemDeviceClass parent; + NMModemDeviceClass parent;
+ +
+ /* Signals */ + /* Signals */
+ void (*signal_quality) (NMModemDevice *device, guint32 quality); + void (*signal_quality) (NMCdmaModem *modem, guint32 quality);
+} NMCdmaModemDeviceClass; +} NMCdmaModemClass;
+ +
+GType nm_cdma_modem_device_get_type (void); +GType nm_cdma_modem_get_type (void);
+ +
+NMDevice *nm_cdma_modem_device_new (const char *path, +NMDevice *nm_cdma_modem_new (const char *path,
+ const char *data_device, + const char *data_device,
+ const char *driver); + const char *driver);
+ +
+G_END_DECLS +G_END_DECLS
+ +
+#endif /* NM_CDMA_MODEM_DEVICE_H */ +#endif /* NM_CDMA_MODEM_H */
diff --git a/src/modem-manager/nm-gsm-modem-device.c b/src/modem-manager/nm-gsm-modem-device.c diff --git a/src/modem-manager/nm-gsm-modem.c b/src/modem-manager/nm-gsm-modem.c
new file mode 100644 new file mode 100644
index 0000000..eb2c4d6 index 0000000..1069cd7
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-gsm-modem-device.c +++ b/src/modem-manager/nm-gsm-modem.c
@@ -0,0 +1,411 @@ @@ -0,0 +1,329 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#include <string.h> +#include <string.h>
+#include "nm-gsm-modem-device.h" +#include "nm-gsm-modem.h"
+#include "nm-device-private.h" +#include "nm-device-private.h"
+#include "nm-device-interface.h" +#include "nm-device-interface.h"
+#include "nm-dbus-manager.h" +#include "nm-dbus-manager.h"
@@ -639,13 +521,11 @@ index 0000000..eb2c4d6
+#include "nm-modem-types.h" +#include "nm-modem-types.h"
+#include "nm-utils.h" +#include "nm-utils.h"
+ +
+static void impl_gsm_device_get_signal_quality (NMGsmModemDevice *modem, DBusGMethodInvocation *context);
+
+#include "nm-gsm-device-glue.h" +#include "nm-gsm-device-glue.h"
+ +
+G_DEFINE_TYPE (NMGsmModemDevice, nm_gsm_modem_device, NM_TYPE_MODEM_DEVICE) +G_DEFINE_TYPE (NMGsmModem, nm_gsm_modem, NM_TYPE_MODEM_DEVICE)
+ +
+#define NM_GSM_MODEM_DEVICE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_GSM_MODEM_DEVICE, NMGsmModemDevicePrivate)) +#define NM_GSM_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_GSM_MODEM, NMGsmModemPrivate))
+ +
+enum { +enum {
+ MODEM_STATE_BEGIN, + MODEM_STATE_BEGIN,
@@ -659,33 +539,19 @@ index 0000000..eb2c4d6
+}; +};
+ +
+typedef struct { +typedef struct {
+ NMDBusManager *dbus_mgr;
+ char *path;
+ DBusGProxy *proxy;
+ NMPPPManager *ppp_manager;
+ NMIP4Config *pending_ip4_config;
+
+ int modem_state; + int modem_state;
+} NMGsmModemDevicePrivate; +} NMGsmModemPrivate;
+
+enum {
+ SIGNAL_QUALITY,
+
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+ +
+NMDevice * +NMDevice *
+nm_gsm_modem_device_new (const char *path, +nm_gsm_modem_new (const char *path,
+ const char *data_device, + const char *data_device,
+ const char *driver) + const char *driver)
+{ +{
+ g_return_val_if_fail (path != NULL, NULL); + g_return_val_if_fail (path != NULL, NULL);
+ g_return_val_if_fail (data_device != NULL, NULL); + g_return_val_if_fail (data_device != NULL, NULL);
+ g_return_val_if_fail (driver != NULL, NULL); + g_return_val_if_fail (driver != NULL, NULL);
+ +
+ return (NMDevice *) g_object_new (NM_TYPE_GSM_MODEM_DEVICE, + return (NMDevice *) g_object_new (NM_TYPE_GSM_MODEM,
+ NM_DEVICE_INTERFACE_UDI, path, + NM_DEVICE_INTERFACE_UDI, path,
+ NM_DEVICE_INTERFACE_IFACE, data_device, + NM_DEVICE_INTERFACE_IFACE, data_device,
+ NM_DEVICE_INTERFACE_DRIVER, driver, + NM_DEVICE_INTERFACE_DRIVER, driver,
@@ -695,12 +561,12 @@ index 0000000..eb2c4d6
+} +}
+ +
+static NMSetting * +static NMSetting *
+get_setting (NMGsmModemDevice *device, GType setting_type) +get_setting (NMGsmModem *modem, GType setting_type)
+{ +{
+ NMActRequest *req; + NMActRequest *req;
+ NMSetting *setting = NULL; + NMSetting *setting = NULL;
+ +
+ req = nm_device_get_act_request (NM_DEVICE (device)); + req = nm_device_get_act_request (NM_DEVICE (modem));
+ if (req) { + if (req) {
+ NMConnection *connection; + NMConnection *connection;
+ +
@@ -712,11 +578,13 @@ index 0000000..eb2c4d6
+ return setting; + return setting;
+} +}
+ +
+#define get_proxy(dev,iface) (nm_modem_device_get_proxy(NM_MODEM_DEVICE (dev), iface))
+
+static void +static void
+state_machine (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) +state_machine (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data)
+{ +{
+ NMGsmModemDevice *modem = NM_GSM_MODEM_DEVICE (user_data); + NMGsmModem *modem = NM_GSM_MODEM (user_data);
+ NMGsmModemDevicePrivate *priv = NM_GSM_MODEM_DEVICE_GET_PRIVATE (modem); + NMGsmModemPrivate *priv = NM_GSM_MODEM_GET_PRIVATE (modem);
+ NMSettingGsm *setting; + NMSettingGsm *setting;
+ const char *secret = NULL; + const char *secret = NULL;
+ const char *secret_name = NULL; + const char *secret_name = NULL;
@@ -744,7 +612,7 @@ index 0000000..eb2c4d6
+ retry_secret = TRUE; + retry_secret = TRUE;
+ priv->modem_state = MODEM_STATE_SET_PIN; + priv->modem_state = MODEM_STATE_SET_PIN;
+ } else { + } else {
+ nm_warning ("GSM device connection failed: %s", error->message); + nm_warning ("GSM modem connection failed: %s", error->message);
+ nm_device_state_changed (NM_DEVICE (modem), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE); + nm_device_state_changed (NM_DEVICE (modem), NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NONE);
+ return; + return;
+ } + }
@@ -755,7 +623,7 @@ index 0000000..eb2c4d6
+ switch (priv->modem_state) { + switch (priv->modem_state) {
+ case MODEM_STATE_BEGIN: + case MODEM_STATE_BEGIN:
+ priv->modem_state = MODEM_STATE_ENABLE; + priv->modem_state = MODEM_STATE_ENABLE;
+ dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem)), + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM),
+ "Enable", state_machine, + "Enable", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_BOOLEAN, TRUE, + G_TYPE_BOOLEAN, TRUE,
@@ -765,7 +633,8 @@ index 0000000..eb2c4d6
+ case MODEM_STATE_SET_PIN: + case MODEM_STATE_SET_PIN:
+ if (secret) { + if (secret) {
+ priv->modem_state = MODEM_STATE_ENABLE; + priv->modem_state = MODEM_STATE_ENABLE;
+ dbus_g_proxy_begin_call (priv->proxy, "SetPin", state_machine, + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM_GSM_CARD),
+ "SetPin", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_STRING, secret, + G_TYPE_STRING, secret,
+ G_TYPE_INVALID); + G_TYPE_INVALID);
@@ -784,7 +653,8 @@ index 0000000..eb2c4d6
+ case MODEM_STATE_ENABLE: + case MODEM_STATE_ENABLE:
+ priv->modem_state = MODEM_STATE_SET_APN; + priv->modem_state = MODEM_STATE_SET_APN;
+ if (setting->apn) + if (setting->apn)
+ dbus_g_proxy_begin_call (priv->proxy, "SetAPN", state_machine, + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM_GSM_NETWORK),
+ "SetAPN", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_STRING, setting->apn, + G_TYPE_STRING, setting->apn,
+ G_TYPE_INVALID); + G_TYPE_INVALID);
@@ -795,7 +665,8 @@ index 0000000..eb2c4d6
+ case MODEM_STATE_SET_APN: + case MODEM_STATE_SET_APN:
+ priv->modem_state = MODEM_STATE_SET_BAND; + priv->modem_state = MODEM_STATE_SET_BAND;
+ if (setting->band) + if (setting->band)
+ dbus_g_proxy_begin_call (priv->proxy, "SetBand", state_machine, + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM_GSM_NETWORK),
+ "SetBand", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_UINT, (guint32) setting->band, + G_TYPE_UINT, (guint32) setting->band,
+ G_TYPE_INVALID); + G_TYPE_INVALID);
@@ -807,7 +678,8 @@ index 0000000..eb2c4d6
+ case MODEM_STATE_SET_BAND: + case MODEM_STATE_SET_BAND:
+ priv->modem_state = MODEM_STATE_SET_NETWORK_MODE; + priv->modem_state = MODEM_STATE_SET_NETWORK_MODE;
+ if (setting->network_type) + if (setting->network_type)
+ dbus_g_proxy_begin_call (priv->proxy, "SetNetworkMode", state_machine, + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM_GSM_NETWORK),
+ "SetNetworkMode", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_UINT, (guint32) setting->network_type, + G_TYPE_UINT, (guint32) setting->network_type,
+ G_TYPE_INVALID); + G_TYPE_INVALID);
@@ -818,7 +690,8 @@ index 0000000..eb2c4d6
+ +
+ case MODEM_STATE_SET_NETWORK_MODE: + case MODEM_STATE_SET_NETWORK_MODE:
+ priv->modem_state = MODEM_STATE_REGISTER; + priv->modem_state = MODEM_STATE_REGISTER;
+ dbus_g_proxy_begin_call (priv->proxy, "Register", state_machine, + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM_GSM_NETWORK),
+ "Register", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_STRING, setting->network_id ? setting->network_id : "", + G_TYPE_STRING, setting->network_id ? setting->network_id : "",
+ G_TYPE_INVALID); + G_TYPE_INVALID);
@@ -826,7 +699,7 @@ index 0000000..eb2c4d6
+ +
+ case MODEM_STATE_REGISTER: + case MODEM_STATE_REGISTER:
+ priv->modem_state = MODEM_STATE_CONNECT; + priv->modem_state = MODEM_STATE_CONNECT;
+ dbus_g_proxy_begin_call (nm_modem_device_get_proxy (NM_MODEM_DEVICE (modem)), + dbus_g_proxy_begin_call (get_proxy (modem, MM_DBUS_INTERFACE_MODEM),
+ "Connect", state_machine, + "Connect", state_machine,
+ modem, NULL, + modem, NULL,
+ G_TYPE_STRING, setting->number, + G_TYPE_STRING, setting->number,
@@ -847,10 +720,10 @@ index 0000000..eb2c4d6
+static NMActStageReturn +static NMActStageReturn
+real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) +real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason)
+{ +{
+ NMGsmModemDevicePrivate *priv = NM_GSM_MODEM_DEVICE_GET_PRIVATE (device); + NMGsmModemPrivate *priv = NM_GSM_MODEM_GET_PRIVATE (device);
+ +
+ priv->modem_state = MODEM_STATE_BEGIN; + priv->modem_state = MODEM_STATE_BEGIN;
+ state_machine (priv->proxy, NULL, device); + state_machine (NULL, NULL, device);
+ +
+ return NM_ACT_STAGE_RETURN_POSTPONE; + return NM_ACT_STAGE_RETURN_POSTPONE;
+} +}
@@ -938,151 +811,78 @@ index 0000000..eb2c4d6
+ nm_device_activate_schedule_stage1_device_prepare (dev); + nm_device_activate_schedule_stage1_device_prepare (dev);
+} +}
+ +
+static void
+signal_quality_proxy (DBusGProxy *proxy, guint32 quality, gpointer user_data)
+{
+ g_signal_emit (NM_GSM_MODEM_DEVICE (user_data), signals[SIGNAL_QUALITY], 0, quality);
+}
+
+static void
+impl_gsm_device_get_signal_quality (NMGsmModemDevice *modem, DBusGMethodInvocation *context)
+{
+ /* FIXME */
+}
+
+/*****************************************************************************/ +/*****************************************************************************/
+ +
+static void +static void
+nm_gsm_modem_device_init (NMGsmModemDevice *self) +nm_gsm_modem_init (NMGsmModem *self)
+{ +{
+ NMGsmModemDevicePrivate *priv = NM_GSM_MODEM_DEVICE_GET_PRIVATE (self);
+
+ priv->dbus_mgr = nm_dbus_manager_get ();
+
+ nm_device_set_device_type (NM_DEVICE (self), NM_DEVICE_TYPE_GSM); + nm_device_set_device_type (NM_DEVICE (self), NM_DEVICE_TYPE_GSM);
+} +}
+ +
+static GObject*
+constructor (GType type,
+ guint n_construct_params,
+ GObjectConstructParam *construct_params)
+{
+ GObject *object;
+ NMGsmModemDevicePrivate *priv;
+
+ object = G_OBJECT_CLASS (nm_gsm_modem_device_parent_class)->constructor (type,
+ n_construct_params,
+ construct_params);
+ if (!object)
+ return NULL;
+
+ priv = NM_GSM_MODEM_DEVICE_GET_PRIVATE (object);
+
+ priv->proxy = dbus_g_proxy_new_for_name (nm_dbus_manager_get_connection (priv->dbus_mgr),
+ MM_DBUS_SERVICE,
+ nm_device_get_udi (NM_DEVICE (object)),
+ MM_DBUS_INTERFACE_GSM_MODEM);
+
+ dbus_g_proxy_add_signal (priv->proxy, "SignalQuality", G_TYPE_UINT, G_TYPE_INVALID);
+ dbus_g_proxy_connect_signal (priv->proxy, "SignalQuality",
+ G_CALLBACK (signal_quality_proxy),
+ object,
+ NULL);
+
+ return object;
+}
+
+static void +static void
+finalize (GObject *object) +nm_gsm_modem_class_init (NMGsmModemClass *klass)
+{
+ NMGsmModemDevicePrivate *priv = NM_GSM_MODEM_DEVICE_GET_PRIVATE (object);
+
+ if (priv->proxy)
+ g_object_unref (priv->proxy);
+
+ g_object_unref (priv->dbus_mgr);
+
+ G_OBJECT_CLASS (nm_gsm_modem_device_parent_class)->finalize (object);
+}
+
+static void
+nm_gsm_modem_device_class_init (NMGsmModemDeviceClass *klass)
+{ +{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ NMDeviceClass *device_class = NM_DEVICE_CLASS (klass); + NMDeviceClass *device_class = NM_DEVICE_CLASS (klass);
+ +
+ g_type_class_add_private (object_class, sizeof (NMGsmModemDevicePrivate)); + g_type_class_add_private (object_class, sizeof (NMGsmModemPrivate));
+ +
+ /* Virtual methods */ + /* Virtual methods */
+ object_class->constructor = constructor;
+ object_class->finalize = finalize;
+
+ device_class->get_best_auto_connection = real_get_best_auto_connection; + device_class->get_best_auto_connection = real_get_best_auto_connection;
+ device_class->connection_secrets_updated = real_connection_secrets_updated; + device_class->connection_secrets_updated = real_connection_secrets_updated;
+ device_class->act_stage1_prepare = real_act_stage1_prepare; + device_class->act_stage1_prepare = real_act_stage1_prepare;
+ +
+ /* Signals */
+ signals[SIGNAL_QUALITY] =
+ g_signal_new ("signal-quality",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (NMGsmModemDeviceClass, signal_quality),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__UINT,
+ G_TYPE_NONE, 1,
+ G_TYPE_UINT);
+
+ dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass), + dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+ &dbus_glib_nm_gsm_device_object_info); + &dbus_glib_nm_gsm_device_object_info);
+} +}
diff --git a/src/modem-manager/nm-gsm-modem-device.h b/src/modem-manager/nm-gsm-modem-device.h diff --git a/src/modem-manager/nm-gsm-modem.h b/src/modem-manager/nm-gsm-modem.h
new file mode 100644 new file mode 100644
index 0000000..535c0f3 index 0000000..8df8265
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-gsm-modem-device.h +++ b/src/modem-manager/nm-gsm-modem.h
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#ifndef NM_GSM_MODEM_DEVICE_H +#ifndef NM_GSM_MODEM_H
+#define NM_GSM_MODEM_DEVICE_H +#define NM_GSM_MODEM_H
+ +
+#include <nm-modem-device.h> +#include <nm-modem-device.h>
+ +
+G_BEGIN_DECLS +G_BEGIN_DECLS
+ +
+#define NM_TYPE_GSM_MODEM_DEVICE (nm_gsm_modem_device_get_type ()) +#define NM_TYPE_GSM_MODEM (nm_gsm_modem_get_type ())
+#define NM_GSM_MODEM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_GSM_MODEM_DEVICE, NMGsmModemDevice)) +#define NM_GSM_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_GSM_MODEM, NMGsmModem))
+#define NM_GSM_MODEM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_GSM_MODEM_DEVICE, NMGsmModemDeviceClass)) +#define NM_GSM_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_GSM_MODEM, NMGsmModemClass))
+#define NM_IS_GSM_MODEM_DEVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_GSM_MODEM_DEVICE)) +#define NM_IS_GSM_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_GSM_MODEM))
+#define NM_IS_GSM_MODEM_DEVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_GSM_MODEM_DEVICE)) +#define NM_IS_GSM_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_GSM_MODEM))
+#define NM_GSM_MODEM_DEVICE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_GSM_MODEM_DEVICE, NMGsmModemDeviceClass)) +#define NM_GSM_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_GSM_MODEM, NMGsmModemClass))
+ +
+typedef struct { +typedef struct {
+ NMModemDevice parent; + NMModemDevice parent;
+} NMGsmModemDevice; +} NMGsmModem;
+ +
+typedef struct { +typedef struct {
+ NMModemDeviceClass parent; + NMModemDeviceClass parent;
+ +
+ /* Signals */ + /* Signals */
+ void (*signal_quality) (NMModemDevice *device, guint32 quality); + void (*signal_quality) (NMGsmModem *modem, guint32 quality);
+} NMGsmModemDeviceClass; +} NMGsmModemClass;
+ +
+GType nm_gsm_modem_device_get_type (void); +GType nm_gsm_modem_get_type (void);
+ +
+NMDevice *nm_gsm_modem_device_new (const char *path, +NMDevice *nm_gsm_modem_new (const char *path,
+ const char *data_device, + const char *data_device,
+ const char *driver); + const char *driver);
+ +
+G_END_DECLS +G_END_DECLS
+ +
+#endif /* NM_GSM_MODEM_DEVICE_H */ +#endif /* NM_GSM_MODEM_H */
diff --git a/src/modem-manager/nm-modem-device.c b/src/modem-manager/nm-modem-device.c diff --git a/src/modem-manager/nm-modem-device.c b/src/modem-manager/nm-modem-device.c
new file mode 100644 new file mode 100644
index 0000000..1292854 index 0000000..bc3ab47
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-modem-device.c +++ b/src/modem-manager/nm-modem-device.c
@@ -0,0 +1,411 @@ @@ -0,0 +1,427 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#include <string.h> +#include <string.h>
@@ -1142,11 +942,24 @@ index 0000000..1292854
+} +}
+ +
+DBusGProxy * +DBusGProxy *
+nm_modem_device_get_proxy (NMModemDevice *device) +nm_modem_device_get_proxy (NMModemDevice *device,
+ const char *interface)
+{ +{
+
+ NMModemDevicePrivate *priv = NM_MODEM_DEVICE_GET_PRIVATE (device);
+ const char *current_iface;
+
+ g_return_val_if_fail (NM_IS_MODEM_DEVICE (device), NULL); + g_return_val_if_fail (NM_IS_MODEM_DEVICE (device), NULL);
+ +
+ return NM_MODEM_DEVICE_GET_PRIVATE (device)->proxy; + /* Default to the default interface. */
+ if (interface == NULL)
+ interface = MM_DBUS_INTERFACE_MODEM;
+
+ current_iface = dbus_g_proxy_get_interface (priv->proxy);
+ if (!current_iface || strcmp (current_iface, interface))
+ dbus_g_proxy_set_interface (priv->proxy, interface);
+
+ return priv->proxy;
+} +}
+ +
+static void +static void
@@ -1298,7 +1111,8 @@ index 0000000..1292854
+ priv->ppp_manager = NULL; + priv->ppp_manager = NULL;
+ } + }
+ +
+ dbus_g_proxy_call_no_reply (priv->proxy, "Enable", G_TYPE_BOOLEAN, FALSE, G_TYPE_INVALID); + dbus_g_proxy_call_no_reply (nm_modem_device_get_proxy (NM_MODEM_DEVICE (device), NULL),
+ "Enable", G_TYPE_BOOLEAN, FALSE, G_TYPE_INVALID);
+} +}
+ +
+static guint32 +static guint32
@@ -1323,7 +1137,8 @@ index 0000000..1292854
+ NMDeviceStateReason reason, + NMDeviceStateReason reason,
+ gpointer user_data) + gpointer user_data)
+{ +{
+ NMModemDevicePrivate *priv = NM_MODEM_DEVICE_GET_PRIVATE (user_data); + NMModemDevice *self = NM_MODEM_DEVICE (user_data);
+ NMModemDevicePrivate *priv = NM_MODEM_DEVICE_GET_PRIVATE (self);
+ +
+ /* Remove any previous delayed transition to disconnected */ + /* Remove any previous delayed transition to disconnected */
+ if (priv->state_to_disconnected_id) { + if (priv->state_to_disconnected_id) {
@@ -1345,7 +1160,8 @@ index 0000000..1292854
+ case NM_DEVICE_STATE_UNAVAILABLE: + case NM_DEVICE_STATE_UNAVAILABLE:
+ case NM_DEVICE_STATE_FAILED: + case NM_DEVICE_STATE_FAILED:
+ case NM_DEVICE_STATE_DISCONNECTED: + case NM_DEVICE_STATE_DISCONNECTED:
+ dbus_g_proxy_call_no_reply (priv->proxy, "Disconnect", G_TYPE_INVALID); + dbus_g_proxy_call_no_reply (nm_modem_device_get_proxy (self, NULL),
+ "Disconnect", G_TYPE_INVALID);
+ break; + break;
+ default: + default:
+ break; + break;
@@ -1496,10 +1312,10 @@ index 0000000..1292854
+} +}
diff --git a/src/modem-manager/nm-modem-device.h b/src/modem-manager/nm-modem-device.h diff --git a/src/modem-manager/nm-modem-device.h b/src/modem-manager/nm-modem-device.h
new file mode 100644 new file mode 100644
index 0000000..cc15c3a index 0000000..c0977cf
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-modem-device.h +++ b/src/modem-manager/nm-modem-device.h
@@ -0,0 +1,42 @@ @@ -0,0 +1,43 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#ifndef NM_MODEM_DEVICE_H +#ifndef NM_MODEM_DEVICE_H
@@ -1537,14 +1353,15 @@ index 0000000..cc15c3a
+/* Protected */ +/* Protected */
+ +
+NMPPPManager *nm_modem_device_get_ppp_manager (NMModemDevice *device); +NMPPPManager *nm_modem_device_get_ppp_manager (NMModemDevice *device);
+DBusGProxy *nm_modem_device_get_proxy (NMModemDevice *device); +DBusGProxy *nm_modem_device_get_proxy (NMModemDevice *device,
+ const char *interface);
+ +
+G_END_DECLS +G_END_DECLS
+ +
+#endif /* NM_MODEM_DEVICE_H */ +#endif /* NM_MODEM_DEVICE_H */
diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c
new file mode 100644 new file mode 100644
index 0000000..bf81e9e index 0000000..693e130
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-modem-manager.c +++ b/src/modem-manager/nm-modem-manager.c
@@ -0,0 +1,404 @@ @@ -0,0 +1,404 @@
@@ -1553,8 +1370,8 @@ index 0000000..bf81e9e
+#include <string.h> +#include <string.h>
+#include "nm-modem-manager.h" +#include "nm-modem-manager.h"
+#include "nm-modem-device.h" +#include "nm-modem-device.h"
+#include "nm-gsm-modem-device.h" +#include "nm-gsm-modem.h"
+#include "nm-cdma-modem-device.h" +#include "nm-cdma-modem.h"
+#include "nm-dbus-manager.h" +#include "nm-dbus-manager.h"
+#include "nm-utils.h" +#include "nm-utils.h"
+#include "nm-modem-types.h" +#include "nm-modem-types.h"
@@ -1695,13 +1512,13 @@ index 0000000..bf81e9e
+ } + }
+ +
+ if (modem_type == MM_MODEM_TYPE_GSM) + if (modem_type == MM_MODEM_TYPE_GSM)
+ device = nm_gsm_modem_device_new (path, + device = nm_gsm_modem_new (path,
+ data_device, + data_device,
+ driver); + driver);
+ else if (modem_type == MM_MODEM_TYPE_CDMA) + else if (modem_type == MM_MODEM_TYPE_CDMA)
+ device = nm_cdma_modem_device_new (path, + device = nm_cdma_modem_new (path,
+ data_device, + data_device,
+ driver); + driver);
+ else + else
+ g_error ("Invalid modem type"); + g_error ("Invalid modem type");
+ +
@@ -1995,10 +1812,10 @@ index 0000000..ec62f84
+#endif /* NM_MODEM_MANAGER_H */ +#endif /* NM_MODEM_MANAGER_H */
diff --git a/src/modem-manager/nm-modem-types.h b/src/modem-manager/nm-modem-types.h diff --git a/src/modem-manager/nm-modem-types.h b/src/modem-manager/nm-modem-types.h
new file mode 100644 new file mode 100644
index 0000000..ddbea05 index 0000000..83bbbb0
--- /dev/null --- /dev/null
+++ b/src/modem-manager/nm-modem-types.h +++ b/src/modem-manager/nm-modem-types.h
@@ -0,0 +1,22 @@ @@ -0,0 +1,24 @@
+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */ +/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
+ +
+#ifndef NM_MODEM_TYPES_H +#ifndef NM_MODEM_TYPES_H
@@ -2008,8 +1825,10 @@ index 0000000..ddbea05
+#define MM_DBUS_PATH "/org/freedesktop/ModemManager" +#define MM_DBUS_PATH "/org/freedesktop/ModemManager"
+#define MM_DBUS_INTERFACE "org.freedesktop.ModemManager" +#define MM_DBUS_INTERFACE "org.freedesktop.ModemManager"
+#define MM_DBUS_INTERFACE_MODEM "org.freedesktop.ModemManager.Modem" +#define MM_DBUS_INTERFACE_MODEM "org.freedesktop.ModemManager.Modem"
+#define MM_DBUS_INTERFACE_GSM_MODEM "org.freedesktop.ModemManager.Modem.Gsm" +#define MM_DBUS_INTERFACE_MODEM_CDMA "org.freedesktop.ModemManager.Modem.Cdma"
+#define MM_DBUS_INTERFACE_CDMA_MODEM "org.freedesktop.ModemManager.Modem.Cdma" +
+#define MM_DBUS_INTERFACE_MODEM_GSM_CARD "org.freedesktop.ModemManager.Modem.Gsm.Card"
+#define MM_DBUS_INTERFACE_MODEM_GSM_NETWORK "org.freedesktop.ModemManager.Modem.Gsm.Network"
+ +
+#define MM_MODEM_TYPE_UNKNOWN 0 +#define MM_MODEM_TYPE_UNKNOWN 0
+#define MM_MODEM_TYPE_GSM 1 +#define MM_MODEM_TYPE_GSM 1

View File

@@ -148,7 +148,7 @@ index ad125e5..9ae87e1 100644
break; break;
diff --git a/src/mm-types.h b/src/mm-types.h diff --git a/src/mm-types.h b/src/mm-types.h
new file mode 100644 new file mode 100644
index 0000000..4c6e514 index 0000000..a1f9979
--- /dev/null --- /dev/null
+++ b/src/mm-types.h +++ b/src/mm-types.h
@@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
@@ -158,7 +158,7 @@ index 0000000..4c6e514
+#define MM_TYPES_H +#define MM_TYPES_H
+ +
+#define MM_DBUS_SERVICE "org.freedesktop.ModemManager" +#define MM_DBUS_SERVICE "org.freedesktop.ModemManager"
+#define MM_DBUS_INTERFACE_MODEM_GSM "org.freedesktop.ModemManager.Modem.Gsm" +#define MM_DBUS_INTERFACE_MODEM_GSM "org.freedesktop.ModemManager.Modem.Gsm.Network"
+ +
+enum { +enum {
+ MM_GSM_MODEM_REG_STATUS_IDLE = 0, + MM_GSM_MODEM_REG_STATUS_IDLE = 0,