aboutsummaryrefslogtreecommitdiff
path: root/nm-applet-r874-use-modem-manager.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nm-applet-r874-use-modem-manager.patch')
-rw-r--r--nm-applet-r874-use-modem-manager.patch427
1 files changed, 0 insertions, 427 deletions
diff --git a/nm-applet-r874-use-modem-manager.patch b/nm-applet-r874-use-modem-manager.patch
deleted file mode 100644
index 4d965461..00000000
--- a/nm-applet-r874-use-modem-manager.patch
+++ /dev/null
@@ -1,427 +0,0 @@
-diff --git a/src/Makefile.am b/src/Makefile.am
-index de8ccb4..fe60b87 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -49,6 +49,9 @@ nm_applet_SOURCES = \
- applet-device-gsm.c \
- applet-device-cdma.h \
- applet-device-cdma.c \
-+ mm-types.h \
-+ nma-gsm-modem.c \
-+ nma-gsm-modem.h \
- $(NULL)
-
- nm_applet_LDADD = \
-diff --git a/src/applet-device-gsm.c b/src/applet-device-gsm.c
-index 1641661..fd2601d 100644
---- a/src/applet-device-gsm.c
-+++ b/src/applet-device-gsm.c
-@@ -39,6 +39,8 @@
-
- #include "applet.h"
- #include "applet-device-gsm.h"
-+#include "nma-gsm-modem.h"
-+#include "mm-types.h"
- #include "utils.h"
-
- typedef struct {
-@@ -277,16 +279,64 @@ out:
- }
-
- static void
-+signal_quality_changed (NMAGsmModem *modem, guint32 quality, gpointer user_data)
-+{
-+ applet_schedule_update_icon (NM_APPLET (user_data));
-+}
-+
-+static void
- gsm_device_state_changed (NMDevice *device,
- NMDeviceState state,
- NMApplet *applet)
- {
-- if (state == NM_DEVICE_STATE_ACTIVATED) {
-- applet_do_notify (applet, NOTIFY_URGENCY_LOW,
-- _("Connection Established"),
-- _("You are now connected to the GSM network."),
-- "nm-device-wwan", NULL, NULL, NULL, NULL);
-+ NMAGsmModem *modem;
-+ char *oper_code;
-+ char *oper_name;
-+ char *msg;
-+ guint32 reg_status;
-+
-+ if (state != NM_DEVICE_STATE_ACTIVATED)
-+ return;
-+
-+ modem = (NMAGsmModem *) g_object_get_data (G_OBJECT (device), "gsm-modem");
-+ if (!modem) {
-+ DBusGConnection *bus;
-+
-+ bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL);
-+ if (!bus)
-+ return;
-+
-+ modem = nma_gsm_modem_new (bus, nm_device_get_udi (device));
-+ dbus_g_connection_unref (bus);
-+
-+ g_object_set_data_full (G_OBJECT (device), "gsm-modem", modem, g_object_unref);
-+
-+ g_signal_connect (modem, "signal-quality",
-+ G_CALLBACK (signal_quality_changed),
-+ applet);
- }
-+
-+ g_message ("Signal quality: %d", nma_gsm_modem_get_signal_quality (modem));
-+ g_message ("Network mode: %d", nma_gsm_modem_get_network_mode (modem));
-+
-+ oper_code = NULL;
-+ oper_name = NULL;
-+
-+ reg_status = nma_gsm_modem_get_registration_info (modem, &oper_code, &oper_name);
-+
-+ g_message ("Reg status: %d code: %s name: %s", reg_status, oper_code, oper_name);
-+
-+ msg = g_strdup_printf (_("You are now connected to the %s GSM network '%s'."),
-+ reg_status == MM_GSM_MODEM_REG_STATUS_ROAMING ? _("roaming") : _("home"),
-+ oper_name);
-+
-+ applet_do_notify (applet, NOTIFY_URGENCY_LOW,
-+ _("Connection Established"), msg,
-+ "nm-device-wwan", NULL, NULL, NULL, NULL);
-+
-+ g_free (oper_code);
-+ g_free (oper_name);
-+ g_free (msg);
- }
-
- static GdkPixbuf *
-@@ -295,6 +345,7 @@ gsm_get_icon (NMDevice *device,
- char **tip,
- NMApplet *applet)
- {
-+ NMAGsmModem *modem;
- GdkPixbuf *pixbuf = NULL;
- const char *iface;
-
-@@ -311,8 +362,40 @@ gsm_get_icon (NMDevice *device,
- *tip = g_strdup_printf (_("Waiting for user authentication on device '%s'..."), iface);
- break;
- case NM_DEVICE_STATE_ACTIVATED:
-- *tip = g_strdup (_("GSM connection"));
-- pixbuf = applet->wwan_icon;
-+ modem = (NMAGsmModem *) g_object_get_data (G_OBJECT (device), "gsm-modem");
-+ if (modem) {
-+ char *oper_code;
-+ char *oper_name;
-+ guint32 reg_status;
-+ guint32 quality;
-+
-+ quality = nma_gsm_modem_get_signal_quality (modem);
-+ quality = CLAMP (quality, 0, 100);
-+
-+ if (quality > 80)
-+ pixbuf = applet->wireless_100_icon;
-+ else if (quality > 55)
-+ pixbuf = applet->wireless_75_icon;
-+ else if (quality > 30)
-+ pixbuf = applet->wireless_50_icon;
-+ else if (quality > 5)
-+ pixbuf = applet->wireless_25_icon;
-+ else
-+ pixbuf = applet->wireless_00_icon;
-+
-+ reg_status = nma_gsm_modem_get_registration_info (modem, &oper_code, &oper_name);
-+ *tip = g_strdup_printf (_("%s GSM connection '%s' (%d%%)"),
-+ reg_status == MM_GSM_MODEM_REG_STATUS_ROAMING ? _("Roaming") : _("Home"),
-+ oper_name, quality);
-+
-+ g_free (oper_name);
-+ g_free (oper_code);
-+
-+ } else {
-+ pixbuf = applet->wireless_00_icon;
-+ *tip = g_strdup_printf (_("GSM connection"));
-+ }
-+
- break;
- default:
- break;
-diff --git a/src/mm-types.h b/src/mm-types.h
-new file mode 100644
-index 0000000..a1f9979
---- /dev/null
-+++ b/src/mm-types.h
-@@ -0,0 +1,18 @@
-+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
-+
-+#ifndef MM_TYPES_H
-+#define MM_TYPES_H
-+
-+#define MM_DBUS_SERVICE "org.freedesktop.ModemManager"
-+#define MM_DBUS_INTERFACE_MODEM_GSM "org.freedesktop.ModemManager.Modem.Gsm.Network"
-+
-+enum {
-+ MM_GSM_MODEM_REG_STATUS_IDLE = 0,
-+ MM_GSM_MODEM_REG_STATUS_HOME = 1,
-+ MM_GSM_MODEM_REG_STATUS_SEARCHING = 2,
-+ MM_GSM_MODEM_REG_STATUS_DENIED = 3,
-+ MM_GSM_MODEM_REG_STATUS_UNKNOWN = 4,
-+ MM_GSM_MODEM_REG_STATUS_ROAMING = 5
-+};
-+
-+#endif /* MM_TYPES_H */
-diff --git a/src/nma-gsm-modem.c b/src/nma-gsm-modem.c
-new file mode 100644
-index 0000000..584090b
---- /dev/null
-+++ b/src/nma-gsm-modem.c
-@@ -0,0 +1,198 @@
-+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
-+
-+#include "nma-gsm-modem.h"
-+#include "mm-types.h"
-+
-+G_DEFINE_TYPE (NMAGsmModem, nma_gsm_modem, G_TYPE_OBJECT)
-+
-+#define NMA_GSM_MODEM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NMA_TYPE_GSM_MODEM, NMAGsmModemPrivate))
-+
-+typedef struct {
-+ DBusGProxy *proxy;
-+ int signal_quality;
-+
-+ gboolean disposed;
-+} NMAGsmModemPrivate;
-+
-+enum {
-+ SIGNAL_QUALITY,
-+ NETWORK_MODE,
-+
-+ LAST_SIGNAL
-+};
-+
-+static guint signals[LAST_SIGNAL] = { 0 };
-+
-+static void
-+signal_quality_proxy (DBusGProxy *proxy,
-+ guint32 signal_quality,
-+ gpointer user_data)
-+{
-+ NMAGsmModem *modem = NMA_GSM_MODEM (user_data);
-+
-+ NMA_GSM_MODEM_GET_PRIVATE (modem)->signal_quality = signal_quality;
-+
-+ g_signal_emit (modem, signals[SIGNAL_QUALITY], 0, signal_quality);
-+}
-+
-+static void
-+network_mode_proxy (DBusGProxy *proxy,
-+ guint32 network_mode,
-+ gpointer user_data)
-+{
-+ NMAGsmModem *modem = NMA_GSM_MODEM (user_data);
-+
-+ g_signal_emit (modem, signals[NETWORK_MODE], 0, network_mode);
-+}
-+
-+NMAGsmModem *
-+nma_gsm_modem_new (DBusGConnection *bus, const char *object_path)
-+{
-+ NMAGsmModem *modem;
-+ NMAGsmModemPrivate *priv;
-+
-+ g_return_val_if_fail (bus != NULL, NULL);
-+ g_return_val_if_fail (object_path != NULL, NULL);
-+
-+ modem = (NMAGsmModem *) g_object_new (NMA_TYPE_GSM_MODEM, NULL);
-+ if (!modem)
-+ return NULL;
-+
-+ priv = NMA_GSM_MODEM_GET_PRIVATE (modem);
-+ priv->proxy = dbus_g_proxy_new_for_name (bus, MM_DBUS_SERVICE, object_path, MM_DBUS_INTERFACE_MODEM_GSM);
-+
-+ 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),
-+ modem,
-+ NULL);
-+
-+ dbus_g_proxy_add_signal (priv->proxy, "NetworkMode", G_TYPE_UINT, G_TYPE_INVALID);
-+ dbus_g_proxy_connect_signal (priv->proxy, "NetworkMode",
-+ G_CALLBACK (network_mode_proxy),
-+ modem,
-+ NULL);
-+
-+ return modem;
-+}
-+
-+guint32
-+nma_gsm_modem_get_signal_quality (NMAGsmModem *modem)
-+{
-+ NMAGsmModemPrivate *priv = NMA_GSM_MODEM_GET_PRIVATE (modem);
-+ GError *err = NULL;
-+
-+ g_return_val_if_fail (NMA_IS_GSM_MODEM (modem), 0);
-+
-+ if (priv->signal_quality == -1) {
-+ if (dbus_g_proxy_call (priv->proxy, "GetSignalQuality", &err,
-+ G_TYPE_INVALID,
-+ G_TYPE_UINT, &priv->signal_quality,
-+ G_TYPE_INVALID)) {
-+ g_warning ("Error in getting signal quality: %s", err->message);
-+ g_error_free (err);
-+ }
-+ }
-+
-+ return priv->signal_quality;
-+}
-+
-+guint32
-+nma_gsm_modem_get_registration_info (NMAGsmModem *modem,
-+ char **operator_code,
-+ char **operator_name)
-+{
-+ NMAGsmModemPrivate *priv = NMA_GSM_MODEM_GET_PRIVATE (modem);
-+ GError *err = NULL;
-+ guint32 status = MM_GSM_MODEM_REG_STATUS_UNKNOWN;
-+
-+ g_return_val_if_fail (NMA_IS_GSM_MODEM (modem), 0);
-+
-+ if (!dbus_g_proxy_call (priv->proxy, "GetRegistrationInfo", &err,
-+ G_TYPE_INVALID,
-+ G_TYPE_UINT, &status,
-+ G_TYPE_STRING, operator_code,
-+ G_TYPE_STRING, operator_name,
-+ G_TYPE_INVALID)) {
-+ g_warning ("Error in getting network mode: %s", err->message);
-+ g_error_free (err);
-+ }
-+
-+ return status;
-+}
-+
-+guint32
-+nma_gsm_modem_get_network_mode (NMAGsmModem *modem)
-+{
-+ NMAGsmModemPrivate *priv = NMA_GSM_MODEM_GET_PRIVATE (modem);
-+ GError *err = NULL;
-+ guint32 network_mode = 0;
-+
-+ g_return_val_if_fail (NMA_IS_GSM_MODEM (modem), 0);
-+
-+ if (!dbus_g_proxy_call (priv->proxy, "GetNetworkMode", &err,
-+ G_TYPE_INVALID,
-+ G_TYPE_UINT, &network_mode,
-+ G_TYPE_INVALID)) {
-+ g_warning ("Error in getting network mode: %s", err->message);
-+ g_error_free (err);
-+ }
-+
-+ return network_mode;
-+}
-+
-+static void
-+nma_gsm_modem_init (NMAGsmModem *modem)
-+{
-+ NMAGsmModemPrivate *priv = NMA_GSM_MODEM_GET_PRIVATE (modem);
-+
-+ priv->signal_quality = -1;
-+}
-+
-+static void
-+dispose (GObject *object)
-+{
-+ NMAGsmModemPrivate *priv = NMA_GSM_MODEM_GET_PRIVATE (object);
-+
-+ if (priv->disposed)
-+ return;
-+
-+ priv->disposed = TRUE;
-+
-+ if (priv->proxy)
-+ g_object_unref (priv->proxy);
-+
-+ G_OBJECT_CLASS (nma_gsm_modem_parent_class)->dispose (object);
-+}
-+
-+static void
-+nma_gsm_modem_class_init (NMAGsmModemClass *modem_class)
-+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (modem_class);
-+
-+ g_type_class_add_private (modem_class, sizeof (NMAGsmModemPrivate));
-+
-+ /* virtual methods */
-+ object_class->dispose = dispose;
-+
-+ /* Signals */
-+ signals[SIGNAL_QUALITY] =
-+ g_signal_new ("signal-quality",
-+ G_OBJECT_CLASS_TYPE (object_class),
-+ G_SIGNAL_RUN_FIRST,
-+ G_STRUCT_OFFSET (NMAGsmModemClass, signal_quality),
-+ NULL, NULL,
-+ g_cclosure_marshal_VOID__UINT,
-+ G_TYPE_NONE, 1,
-+ G_TYPE_UINT);
-+
-+ signals[NETWORK_MODE] =
-+ g_signal_new ("network-mode",
-+ G_OBJECT_CLASS_TYPE (object_class),
-+ G_SIGNAL_RUN_FIRST,
-+ G_STRUCT_OFFSET (NMAGsmModemClass, network_mode),
-+ NULL, NULL,
-+ g_cclosure_marshal_VOID__UINT,
-+ G_TYPE_NONE, 1,
-+ G_TYPE_UINT);
-+}
-diff --git a/src/nma-gsm-modem.h b/src/nma-gsm-modem.h
-new file mode 100644
-index 0000000..90e7ae0
---- /dev/null
-+++ b/src/nma-gsm-modem.h
-@@ -0,0 +1,45 @@
-+/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
-+
-+#ifndef NMA_GSM_MODEM_H
-+#define NMA_GSM_MODEM_H
-+
-+#include <glib/gtypes.h>
-+#include <glib-object.h>
-+#include <dbus/dbus-glib.h>
-+
-+G_BEGIN_DECLS
-+
-+#define NMA_TYPE_GSM_MODEM (nma_gsm_modem_get_type ())
-+#define NMA_GSM_MODEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NMA_TYPE_GSM_MODEM, NMAGsmModem))
-+#define NMA_GSM_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NMA_TYPE_GSM_MODEM, NMAGsmModemClass))
-+#define NMA_IS_GSM_MODEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NMA_TYPE_GSM_MODEM))
-+#define NMA_IS_GSM_MODEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NMA_TYPE_GSM_MODEM))
-+#define NMA_GSM_MODEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NMA_TYPE_GSM_MODEM, NMAGsmModemClass))
-+
-+typedef struct {
-+ GObject parent;
-+} NMAGsmModem;
-+
-+typedef struct {
-+ GObjectClass parent;
-+
-+ /* Signals */
-+ void (*signal_quality) (NMAGsmModem *modem, guint32 signal_quality);
-+ void (*network_mode) (NMAGsmModem *modem, guint32 network_mode);
-+} NMAGsmModemClass;
-+
-+GType nma_gsm_modem_get_type (void);
-+
-+NMAGsmModem *nma_gsm_modem_new (DBusGConnection *bus,
-+ const char *object_path);
-+
-+guint32 nma_gsm_modem_get_signal_quality (NMAGsmModem *modem);
-+guint32 nma_gsm_modem_get_registration_info (NMAGsmModem *modem,
-+ char **operator_code,
-+ char **operator_name);
-+
-+guint32 nma_gsm_modem_get_network_mode (NMAGsmModem *modem);
-+
-+G_END_DECLS
-+
-+#endif /* NMA_GSM_MODEM_H */