mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-24 18:20:07 +01:00
[Based on patch by Helmut Schaa <hschaa@suse.de>]
* libnm-glib/nm-client.h:
* libnm-glib/nm-object.h:
* libnm-glib/nm-vpn-connection.h:
* libnm-glib/nm-settings.h:
* libnm-glib/nm-device.h:
* libnm-glib/nm-ip4-config.h:
* libnm-glib/nm-access-point.h:
* libnm-glib/nm-device-802-3-ethernet.h:
* libnm-util/nm-setting.h:
* libnm-util/nm-connection.h: Add G_BEGIN_DECLS / G_END_DECLS to
* support C++.
* libnm-glib/nm-object.c (nm_object_get_byte_property):
* Implement.
* libnm-glib/nm-access-point.c: Strength has type char.
* gnome/vpn-properties/Makefile.am: Remove
* GNOME_DISABLE_DEPRECTATED for now
to fix build. GnomeDruid is deprecated in recent libgnomeui.
* introspection/nm-access-point.xml: Strength property is char,
* not int.
* src/NetworkManagerAP.c (set_property): Set strength from char.
(get_property): Handle hidden APs (with empty SSID).
Get strength value from char.
(nm_ap_class_init): Strength property has char type.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2659 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
173 lines
4.3 KiB
C
173 lines
4.3 KiB
C
#include "nm-access-point.h"
|
|
#include "NetworkManager.h"
|
|
|
|
#include "nm-access-point-bindings.h"
|
|
|
|
G_DEFINE_TYPE (NMAccessPoint, nm_access_point, NM_TYPE_OBJECT)
|
|
|
|
#define NM_ACCESS_POINT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACCESS_POINT, NMAccessPointPrivate))
|
|
|
|
typedef struct {
|
|
DBusGProxy *ap_proxy;
|
|
gint8 strength;
|
|
} NMAccessPointPrivate;
|
|
|
|
enum {
|
|
STRENGTH_CHANGED,
|
|
|
|
LAST_SIGNAL
|
|
};
|
|
|
|
static guint signals[LAST_SIGNAL] = { 0 };
|
|
|
|
static void strength_changed_proxy (NMAccessPoint *ap, guchar strength);
|
|
|
|
static void
|
|
nm_access_point_init (NMAccessPoint *ap)
|
|
{
|
|
}
|
|
|
|
static GObject*
|
|
constructor (GType type,
|
|
guint n_construct_params,
|
|
GObjectConstructParam *construct_params)
|
|
{
|
|
NMObject *object;
|
|
NMAccessPointPrivate *priv;
|
|
|
|
object = (NMObject *) G_OBJECT_CLASS (nm_access_point_parent_class)->constructor (type,
|
|
n_construct_params,
|
|
construct_params);
|
|
if (!object)
|
|
return NULL;
|
|
|
|
priv = NM_ACCESS_POINT_GET_PRIVATE (object);
|
|
|
|
priv->ap_proxy = dbus_g_proxy_new_for_name (nm_object_get_connection (object),
|
|
NM_DBUS_SERVICE,
|
|
nm_object_get_path (object),
|
|
NM_DBUS_INTERFACE_DEVICE);
|
|
|
|
dbus_g_proxy_add_signal (priv->ap_proxy, "StrengthChanged", G_TYPE_UCHAR, G_TYPE_INVALID);
|
|
dbus_g_proxy_connect_signal (priv->ap_proxy,
|
|
"StrengthChanged",
|
|
G_CALLBACK (strength_changed_proxy),
|
|
NULL,
|
|
NULL);
|
|
return G_OBJECT (object);
|
|
}
|
|
|
|
|
|
static void
|
|
nm_access_point_class_init (NMAccessPointClass *ap_class)
|
|
{
|
|
GObjectClass *object_class = G_OBJECT_CLASS (ap_class);
|
|
|
|
g_type_class_add_private (ap_class, sizeof (NMAccessPointPrivate));
|
|
|
|
/* virtual methods */
|
|
object_class->constructor = constructor;
|
|
|
|
/* signals */
|
|
signals[STRENGTH_CHANGED] =
|
|
g_signal_new ("strength-changed",
|
|
G_OBJECT_CLASS_TYPE (object_class),
|
|
G_SIGNAL_RUN_FIRST,
|
|
G_STRUCT_OFFSET (NMAccessPointClass, strength_changed),
|
|
NULL, NULL,
|
|
g_cclosure_marshal_VOID__UCHAR,
|
|
G_TYPE_NONE, 1,
|
|
G_TYPE_UCHAR);
|
|
|
|
}
|
|
|
|
NMAccessPoint *
|
|
nm_access_point_new (DBusGConnection *connection, const char *path)
|
|
{
|
|
return (NMAccessPoint *) g_object_new (NM_TYPE_ACCESS_POINT,
|
|
NM_OBJECT_CONNECTION, connection,
|
|
NM_OBJECT_PATH, path,
|
|
NULL);
|
|
}
|
|
|
|
static void
|
|
strength_changed_proxy (NMAccessPoint *ap, guchar strength)
|
|
{
|
|
NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
|
|
|
|
if (priv->strength != strength) {
|
|
priv->strength = strength;
|
|
g_signal_emit (ap, signals[STRENGTH_CHANGED], 0, strength);
|
|
}
|
|
}
|
|
|
|
guint32
|
|
nm_access_point_get_capabilities (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
|
|
|
|
return nm_object_get_uint_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Capabilities");
|
|
}
|
|
|
|
gboolean
|
|
nm_access_point_is_encrypted (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), FALSE);
|
|
|
|
return nm_object_get_boolean_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Encrypted");
|
|
}
|
|
|
|
GByteArray *
|
|
nm_access_point_get_ssid (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL);
|
|
|
|
return nm_object_get_byte_array_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Ssid");
|
|
}
|
|
|
|
gdouble
|
|
nm_access_point_get_frequency (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
|
|
|
|
return nm_object_get_double_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Frequency");
|
|
}
|
|
|
|
char *
|
|
nm_access_point_get_hw_address (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), NULL);
|
|
|
|
return nm_object_get_string_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "HwAddress");
|
|
}
|
|
|
|
int
|
|
nm_access_point_get_mode (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
|
|
|
|
return nm_object_get_int_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Mode");
|
|
}
|
|
|
|
guint32
|
|
nm_access_point_get_rate (NMAccessPoint *ap)
|
|
{
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
|
|
|
|
return nm_object_get_uint_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Rate");
|
|
}
|
|
|
|
gint8
|
|
nm_access_point_get_strength (NMAccessPoint *ap)
|
|
{
|
|
NMAccessPointPrivate *priv;
|
|
|
|
g_return_val_if_fail (NM_IS_ACCESS_POINT (ap), 0);
|
|
|
|
priv = NM_ACCESS_POINT_GET_PRIVATE (ap);
|
|
|
|
if (priv->strength == 0)
|
|
priv->strength = nm_object_get_byte_property (NM_OBJECT (ap), NM_DBUS_INTERFACE_ACCESS_POINT, "Strength");
|
|
|
|
return priv->strength;
|
|
}
|