From a39aaffd9a440a09750887067a9a6a1861951e79 Mon Sep 17 00:00:00 2001 From: englebass Date: Sat, 15 Nov 2008 11:31:01 +0000 Subject: [PATCH] Add callbacks e_nm_device_wireless_callback_access_point_added_set e_nm_device_wireless_callback_access_point_removed_set git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@37658 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/nm/E_Nm.h | 4 +-- src/lib/nm/e_nm.c | 4 +-- src/lib/nm/e_nm_device.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++ src/lib/nm/e_nm_private.h | 3 ++ src/lib/nm/e_nms.c | 2 +- 5 files changed, 79 insertions(+), 5 deletions(-) diff --git a/src/lib/nm/E_Nm.h b/src/lib/nm/E_Nm.h index 7079db7..17dad46 100644 --- a/src/lib/nm/E_Nm.h +++ b/src/lib/nm/E_Nm.h @@ -318,8 +318,8 @@ extern "C" { EAPI void *e_nm_device_data_get(E_NM_Device *device); EAPI void e_nm_device_callback_state_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, E_NM_State new_state, E_NM_State old_state, E_NM_Device_State_Reason reason)); EAPI void e_nm_device_callback_properties_changed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device)); - /* TODO: e_nm_device_wireless_callback_access_point_added_set */ - /* TODO: e_nm_device_wireless_callback_access_point_removed_set */ + EAPI void e_nm_device_wireless_callback_access_point_added_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point)); + EAPI void e_nm_device_wireless_callback_access_point_removed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point)); /* org.freedesktop.NetworkManager.IP4Config api */ EAPI int e_nm_ip4_config_get(E_NM *nm, const char *config, diff --git a/src/lib/nm/e_nm.c b/src/lib/nm/e_nm.c index 4486606..a61e5bd 100644 --- a/src/lib/nm/e_nm.c +++ b/src/lib/nm/e_nm.c @@ -56,7 +56,7 @@ cb_device_added(void *data, DBusMessage *msg) nmi = data; dbus_error_init(&err); - dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID); + dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &device, DBUS_TYPE_INVALID); if (dbus_error_is_set(&err)) { printf("Error: %s - %s\n", err.name, err.message); @@ -77,7 +77,7 @@ cb_device_removed(void *data, DBusMessage *msg) nmi = data; dbus_error_init(&err); - dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID); + dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &device, DBUS_TYPE_INVALID); if (dbus_error_is_set(&err)) { printf("Error: %s - %s\n", err.name, err.message); diff --git a/src/lib/nm/e_nm_device.c b/src/lib/nm/e_nm_device.c index e5f5734..7dab416 100644 --- a/src/lib/nm/e_nm_device.c +++ b/src/lib/nm/e_nm_device.c @@ -93,6 +93,54 @@ cb_wireless_properties_changed(void *data, DBusMessage *msg) } static void +cb_wireless_access_point_added(void *data, DBusMessage *msg) +{ + E_NM_Device_Internal *dev; + DBusError err; + const char *path; + if (!msg || !data) return; + + dev = data; + dbus_error_init(&err); + dbus_message_get_args(msg, &err, + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + if (dbus_error_is_set(&err)) + { + printf("Error: %s - %s\n", err.name, err.message); + return; + } + + + if (dev->access_point_added) + dev->access_point_added(&(dev->dev), path); +} + +static void +cb_wireless_access_point_removed(void *data, DBusMessage *msg) +{ + E_NM_Device_Internal *dev; + DBusError err; + const char *path; + if (!msg || !data) return; + + dev = data; + dbus_error_init(&err); + dbus_message_get_args(msg, &err, + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_INVALID); + if (dbus_error_is_set(&err)) + { + printf("Error: %s - %s\n", err.name, err.message); + return; + } + + + if (dev->access_point_removed) + dev->access_point_removed(&(dev->dev), path); +} + +static void cb_properties_changed(void *data, DBusMessage *msg) { E_NM_Device_Internal *dev; @@ -124,6 +172,8 @@ property_device_type(Property_Data *data, DBusMessageIter *iter) case E_NM_DEVICE_TYPE_WIRELESS: data->property = device_wireless_properties; ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "PropertiesChanged", cb_wireless_properties_changed, dev)); + ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointAdded", cb_wireless_access_point_added, dev)); + ecore_list_append(dev->handlers, e_nm_device_wireless_signal_handler_add(data->nmi->conn, dev->dev.udi, "AccessPointRemoved", cb_wireless_access_point_removed, dev)); e_nm_device_wireless_properties_get(data->nmi->conn, data->object, data->property->name, property, data); break; default: @@ -334,3 +384,24 @@ e_nm_device_callback_properties_changed_set(E_NM_Device *device, int (*cb_func)( dev = (E_NM_Device_Internal *)device; dev->properties_changed = cb_func; } + +EAPI void +e_nm_device_wireless_callback_access_point_added_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point)) +{ + E_NM_Device_Internal *dev; + + if (device->device_type != E_NM_DEVICE_TYPE_WIRELESS) return; + dev = (E_NM_Device_Internal *)device; + dev->access_point_added = cb_func; +} + +EAPI void +e_nm_device_wireless_callback_access_point_removed_set(E_NM_Device *device, int (*cb_func)(E_NM_Device *device, const char *access_point)) +{ + E_NM_Device_Internal *dev; + + if (device->device_type != E_NM_DEVICE_TYPE_WIRELESS) return; + dev = (E_NM_Device_Internal *)device; + dev->access_point_removed = cb_func; +} + diff --git a/src/lib/nm/e_nm_private.h b/src/lib/nm/e_nm_private.h index f569259..5186d75 100644 --- a/src/lib/nm/e_nm_private.h +++ b/src/lib/nm/e_nm_private.h @@ -62,6 +62,9 @@ struct E_NM_Device_Internal int (*state_changed)(E_NM_Device *device, E_NM_State new_state, E_NM_State old_state, E_NM_Device_State_Reason reason); int (*properties_changed)(E_NM_Device *device); + /* TODO: Save some bytes by having internal wired and wireless object */ + int (*access_point_added)(E_NM_Device *device, const char *access_point); + int (*access_point_removed)(E_NM_Device *device, const char *access_point); Ecore_List *handlers; void *data; diff --git a/src/lib/nm/e_nms.c b/src/lib/nm/e_nms.c index b64475e..abd6604 100644 --- a/src/lib/nm/e_nms.c +++ b/src/lib/nm/e_nms.c @@ -124,7 +124,7 @@ new_connection(E_NMS_Context context, void *data, DBusMessage *msg) nmsi = data; dbus_error_init(&err); - dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &conn, DBUS_TYPE_INVALID); + dbus_message_get_args(msg, &err, DBUS_TYPE_OBJECT_PATH, &conn, DBUS_TYPE_INVALID); if (dbus_error_is_set(&err)) { printf("Error: %s - %s\n", err.name, err.message); -- 2.7.4