diff options
-rw-r--r-- | libnm-glib/nm-device-wimax.c | 74 | ||||
-rw-r--r-- | libnm-glib/nm-device-wimax.h | 1 |
2 files changed, 39 insertions, 36 deletions
diff --git a/libnm-glib/nm-device-wimax.c b/libnm-glib/nm-device-wimax.c index 5a9a21df3e..d834fd65e6 100644 --- a/libnm-glib/nm-device-wimax.c +++ b/libnm-glib/nm-device-wimax.c @@ -66,6 +66,7 @@ enum { PROP_CINR, PROP_TX_POWER, PROP_BSID, + PROP_NSPS, LAST_PROP }; @@ -84,7 +85,6 @@ enum { LAST_SIGNAL }; - static guint signals[LAST_SIGNAL] = { 0 }; /** @@ -237,28 +237,6 @@ nm_device_wimax_get_nsp_by_path (NMDeviceWimax *wimax, } static void -nsp_added (NMObject *self, NMObject *nsp) -{ - g_signal_emit (self, signals[NSP_ADDED], 0, nsp); -} - -static void -nsp_removed (NMObject *self_obj, NMObject *nsp_obj) -{ - NMDeviceWimax *self = NM_DEVICE_WIMAX (self_obj); - NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - NMWimaxNsp *nsp = NM_WIMAX_NSP (nsp_obj); - - if (nsp == priv->active_nsp) { - g_object_unref (priv->active_nsp); - priv->active_nsp = NULL; - _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIMAX_ACTIVE_NSP); - } - - g_signal_emit (self, signals[NSP_REMOVED], 0, nsp); -} - -static void clean_up_nsps (NMDeviceWimax *self, gboolean notify) { NMDeviceWimaxPrivate *priv; @@ -473,6 +451,9 @@ get_property (GObject *object, case PROP_BSID: g_value_set_string (value, nm_device_wimax_get_bsid (self)); break; + case PROP_NSPS: + g_value_set_boxed (value, nm_device_wimax_get_nsps (self)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -548,27 +529,32 @@ register_properties (NMDeviceWimax *wimax) { NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (wimax); const NMPropertiesInfo property_info[] = { - { NM_DEVICE_WIMAX_HW_ADDRESS, &priv->hw_address }, - { NM_DEVICE_WIMAX_ACTIVE_NSP, &priv->active_nsp, NULL, NM_TYPE_WIMAX_NSP }, + { NM_DEVICE_WIMAX_HW_ADDRESS, &priv->hw_address }, + { NM_DEVICE_WIMAX_ACTIVE_NSP, &priv->active_nsp, NULL, NM_TYPE_WIMAX_NSP }, { NM_DEVICE_WIMAX_CENTER_FREQUENCY, &priv->center_freq }, - { NM_DEVICE_WIMAX_RSSI, &priv->rssi }, - { NM_DEVICE_WIMAX_CINR, &priv->cinr }, - { NM_DEVICE_WIMAX_TX_POWER, &priv->tx_power }, - { NM_DEVICE_WIMAX_BSID, &priv->bsid }, + { NM_DEVICE_WIMAX_RSSI, &priv->rssi }, + { NM_DEVICE_WIMAX_CINR, &priv->cinr }, + { NM_DEVICE_WIMAX_TX_POWER, &priv->tx_power }, + { NM_DEVICE_WIMAX_BSID, &priv->bsid }, + { NM_DEVICE_WIMAX_NSPS, &priv->nsps, NULL, NM_TYPE_WIMAX_NSP, "nsp" }, { NULL }, }; _nm_object_register_properties (NM_OBJECT (wimax), priv->proxy, property_info); +} - _nm_object_register_pseudo_property (NM_OBJECT (wimax), - priv->proxy, - "NspList", - &priv->nsps, - NM_TYPE_WIMAX_NSP, - nsp_added, - nsp_removed); +static void +nsp_removed (NMDeviceWimax *self, NMWimaxNsp *nsp) +{ + NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); + + if (nsp == priv->active_nsp) { + g_object_unref (priv->active_nsp); + priv->active_nsp = NULL; + _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIMAX_ACTIVE_NSP); + } } static void @@ -622,6 +608,7 @@ nm_device_wimax_class_init (NMDeviceWimaxClass *wimax_class) object_class->dispose = dispose; device_class->connection_compatible = connection_compatible; device_class->get_hw_address = get_hw_address; + wimax_class->nsp_removed = nsp_removed; /* properties */ @@ -726,6 +713,21 @@ nm_device_wimax_class_init (NMDeviceWimaxClass *wimax_class) NULL, G_PARAM_READABLE)); + /** + * NMDeviceWimax:nsps: + * + * List of all WiMAX Network Service Providers the device can see. + * + * Since: 0.9.10 + **/ + g_object_class_install_property + (object_class, PROP_NSPS, + g_param_spec_boxed (NM_DEVICE_WIMAX_NSPS, + "NSPs", + "Network Service Providers", + NM_TYPE_OBJECT_ARRAY, + G_PARAM_READABLE)); + /* signals */ /** diff --git a/libnm-glib/nm-device-wimax.h b/libnm-glib/nm-device-wimax.h index c0550d194e..b2282d4f11 100644 --- a/libnm-glib/nm-device-wimax.h +++ b/libnm-glib/nm-device-wimax.h @@ -62,6 +62,7 @@ GQuark nm_device_wimax_error_quark (void); #define NM_DEVICE_WIMAX_CINR "cinr" #define NM_DEVICE_WIMAX_TX_POWER "tx-power" #define NM_DEVICE_WIMAX_BSID "bsid" +#define NM_DEVICE_WIMAX_NSPS "nsps" typedef struct { NMDevice parent; |