2 #include "e_nm_private.h"
6 static Property properties[] = {
7 { .name = "WirelessEnabled", .sig = "b", .offset = offsetof(E_NM, wireless_enabled) },
8 { .name = "WirelessHardwareEnabled", .sig = "b", .offset = offsetof(E_NM, wireless_hardware_enabled) },
9 { .name = "ActiveConnections", .sig = "ao", .offset = offsetof(E_NM, active_connections) },
10 { .name = "State", .sig = "u", .offset = offsetof(E_NM, state) },
15 cb_state_changed(void *data, DBusMessage *msg)
20 if (!msg || !data) return;
23 dbus_error_init(&err);
24 dbus_message_get_args(msg, &err, DBUS_TYPE_UINT32, &state, DBUS_TYPE_INVALID);
25 if (dbus_error_is_set(&err))
27 printf("Error: %s - %s\n", err.name, err.message);
31 nmi->nm.state = state;
32 if (nmi->state_changed)
33 nmi->state_changed(&(nmi->nm), state);
37 cb_properties_changed(void *data, DBusMessage *msg)
40 if (!msg || !data) return;
43 parse_properties(nmi, properties, msg);
45 if (nmi->properties_changed)
46 nmi->properties_changed(&(nmi->nm));
50 cb_device_added(void *data, DBusMessage *msg)
55 if (!msg || !data) return;
58 dbus_error_init(&err);
59 dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
60 if (dbus_error_is_set(&err))
62 printf("Error: %s - %s\n", err.name, err.message);
66 if (nmi->device_added)
67 nmi->device_added(&(nmi->nm), device);
71 cb_device_removed(void *data, DBusMessage *msg)
76 if (!msg || !data) return;
79 dbus_error_init(&err);
80 dbus_message_get_args(msg, &err, DBUS_TYPE_STRING, &device, DBUS_TYPE_INVALID);
81 if (dbus_error_is_set(&err))
83 printf("Error: %s - %s\n", err.name, err.message);
87 if (nmi->device_removed)
88 nmi->device_removed(&(nmi->nm), device);
92 e_nm_get(int (*cb_func)(void *data, E_NM *nm), void *data)
94 E_NM_Internal *nmi = NULL;
95 Property_Data *d = NULL;
97 nmi = calloc(1, sizeof(E_NM_Internal));
99 d = calloc(1, sizeof(Property_Data));
102 d->cb_func = OBJECT_CB(cb_func);
104 d->property = properties;
105 d->object = strdup(E_NM_PATH);
108 nmi->conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
109 if (!nmi->conn) goto error;
110 nmi->handlers = ecore_list_new();
111 ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "StateChanged", cb_state_changed, nmi));
112 ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "PropertiesChanged", cb_properties_changed, nmi));
113 ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "DeviceAdded", cb_device_added, nmi));
114 ecore_list_append(nmi->handlers, e_nm_signal_handler_add(nmi->conn, "DeviceRemoved", cb_device_removed, nmi));
116 return e_nm_device_properties_get(nmi->conn, d->object, d->property->name, property, d) ? 1 : 0;
130 nmi = (E_NM_Internal *)nm;
131 if (nmi->nm.active_connections) ecore_list_destroy(nmi->nm.active_connections);
134 E_DBus_Signal_Handler *sh;
136 while ((sh = ecore_list_first_remove(nmi->handlers)))
137 e_dbus_signal_handler_del(nmi->conn, sh);
138 ecore_list_destroy(nmi->handlers);
140 e_dbus_connection_close(nmi->conn);
151 printf("wireless_enabled : %d\n", nm->wireless_enabled);
152 printf("wireless_hardware_enabled: %d\n", nm->wireless_hardware_enabled);
153 printf("active_connections :\n");
154 if (nm->active_connections)
156 ecore_list_first_goto(nm->active_connections);
157 while ((conn = ecore_list_next(nm->active_connections)))
158 printf(" - %s\n", conn);
163 case E_NM_STATE_UNKNOWN:
164 printf("E_NM_STATE_UNKNOWN\n");
166 case E_NM_STATE_ASLEEP:
167 printf("E_NM_STATE_ASLEEP\n");
169 case E_NM_STATE_CONNECTING:
170 printf("E_NM_STATE_CONNECTING\n");
172 case E_NM_STATE_CONNECTED:
173 printf("E_NM_STATE_CONNECTED\n");
175 case E_NM_STATE_DISCONNECTED:
176 printf("E_NM_STATE_DISCONNECTED\n");
183 e_nm_data_set(E_NM *nm, void *data)
187 nmi = (E_NM_Internal *)nm;
192 e_nm_data_get(E_NM *nm)
196 nmi = (E_NM_Internal *)nm;
201 e_nm_callback_state_changed_set(E_NM *nm, int (*cb_func)(E_NM *nm, E_NM_State state))
205 nmi = (E_NM_Internal *)nm;
206 nmi->state_changed = cb_func;
210 e_nm_callback_properties_changed_set(E_NM *nm, int (*cb_func)(E_NM *nm))
214 nmi = (E_NM_Internal *)nm;
215 nmi->properties_changed = cb_func;
219 e_nm_callback_device_added_set(E_NM *nm, int (*cb_func)(E_NM *nm, const char *device))
223 nmi = (E_NM_Internal *)nm;
224 nmi->device_added = cb_func;
228 e_nm_callback_device_removed_set(E_NM *nm, int (*cb_func)(E_NM *nm, const char *device))
232 nmi = (E_NM_Internal *)nm;
233 nmi->device_removed = cb_func;