#include <E_Nm.h>
#include <Ecore_Data.h>
+#include <unistd.h>
+
E_NM *nm = NULL;
E_NMS *nms = NULL;
}
static int
+cb_activate_connection(void *data, E_NM_Device *device)
+{
+ E_NM_Active_Connection *conn;
+
+ conn = data;
+ sleep(1);
+ e_nm_active_connection_dump(conn);
+ e_nm_activate_connection(nm, conn->service_name, conn->path, device, conn->specific_object);
+ return 1;
+}
+
+static int
cb_active_connection(void *data, E_NM_Active_Connection *conn)
{
+ const char *device;
+ e_nm_deactivate_connection(nm, conn);
+ ecore_list_first_goto(conn->devices);
+ while ((device = ecore_list_next(conn->devices)))
+ e_nm_device_get(nm, device, cb_activate_connection, conn);
+ /*
e_nm_active_connection_dump(conn);
e_nm_active_connection_free(conn);
+ */
return 1;
}
nm = reply;
/*
e_nm_wireless_enabled_set(nm, 1);
+ */
if (nm->active_connections)
{
const char *conn;
while ((conn = ecore_list_next(nm->active_connections)))
e_nm_active_connection_get(nm, conn, cb_active_connection, NULL);
}
+ /*
e_nm_get_devices(nm, cb_get_devices, nm);
- */
e_nms_get(nm, cb_nms, nm);
+ */
return 1;
}
E_NM_802_11_DEVICE_CAP_RSN = 0x20
};
-typedef enum E_NMS_Context E_NMS_Context;
-enum E_NMS_Context
-{
- E_NMS_CONTEXT_USER,
- E_NMS_CONTEXT_SYSTEM,
-};
-
typedef enum E_NM_Active_Connection_State E_NM_Active_Connection_State;
enum E_NM_Active_Connection_State
{
typedef struct E_NMS_Connection E_NMS_Connection;
struct E_NMS_Connection
{
- E_NMS_Context context;
+ char *service_name;
char *path;
};
EAPI int e_nm_wireless_enabled_set(E_NM *nm, int enabled);
EAPI int e_nm_get_devices(E_NM *nm, int (*cb_func)(void *data, Ecore_List *list), void *data);
- EAPI int e_nm_activate_connection(E_NM *nm, E_NMS_Connection *connection, E_NM_Device *device, const char *specific_object);
+ EAPI int e_nm_activate_connection(E_NM *nm, const char *service_name, const char *connection, E_NM_Device *device, const char *specific_object);
EAPI int e_nm_deactivate_connection(E_NM *nm, E_NM_Active_Connection *connection);
EAPI int e_nm_sleep(E_NM *nm, int sleep);
int (*cb_func)(void *data, Ecore_List *list),
void *data);
- EAPI void e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, E_NMS_Context context, const char *connection));
+ EAPI void e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, const char *service_name, const char *connection));
/* org.freedesktop.NetworkManagerSettings.Connection(.*) api */
- EAPI int e_nms_connection_get(E_NMS *nms, E_NMS_Context context, const char *connection, int (*cb_func)(void *data, E_NMS_Connection *conn), void *data);
+ EAPI int e_nms_connection_get(E_NMS *nms, const char *service_name, const char *connection, int (*cb_func)(void *data, E_NMS_Connection *conn), void *data);
EAPI void e_nms_connection_free(E_NMS_Connection *conn);
EAPI void e_nms_connection_dump(E_NMS_Connection *conn);
}
EAPI int
-e_nm_activate_connection(E_NM *nm, E_NMS_Connection *conn, E_NM_Device *device, const char *specific_object)
+e_nm_activate_connection(E_NM *nm, const char *service_name, const char *connection, E_NM_Device *device, const char *specific_object)
{
DBusMessage *msg;
E_NM_Internal *nmi;
int ret;
- const char *service_name;
nmi = (E_NM_Internal *)nm;
msg = e_nm_call_new("ActivateConnection");
- if (conn->context == E_NMS_CONTEXT_USER) service_name = _E_NMS_SERVICE_USER;
- else if (conn->context == E_NMS_CONTEXT_SYSTEM) service_name = _E_NMS_SERVICE_SYSTEM;
dbus_message_append_args(msg,
DBUS_TYPE_STRING, &service_name,
- DBUS_TYPE_OBJECT_PATH, &conn->path,
+ DBUS_TYPE_OBJECT_PATH, &connection,
DBUS_TYPE_OBJECT_PATH, &device->udi,
DBUS_TYPE_OBJECT_PATH, &specific_object,
DBUS_TYPE_INVALID);
#define _E_NM_INTERFACE_IP4CONFIG "org.freedesktop.NetworkManager.IP4Config"
#define _E_NM_INTERFACE_CONNECTION_ACTIVE "org.freedesktop.NetworkManager.Connection.Active"
#define _E_NMS_PATH "/org/freedesktop/NetworkManagerSettings"
-#define _E_NMS_SERVICE_SYSTEM "org.freedesktop.NetworkManagerSystemSettings"
-#define _E_NMS_SERVICE_USER "org.freedesktop.NetworkManagerUserSettings"
+#define E_NMS_SERVICE_SYSTEM "org.freedesktop.NetworkManagerSystemSettings"
+#define E_NMS_SERVICE_USER "org.freedesktop.NetworkManagerUserSettings"
#define _E_NMS_INTERFACE "org.freedesktop.NetworkManagerSettings"
#define _E_NMS_INTERFACE_CONNECTION "org.freedesktop.NetworkManagerSettings.Connection"
#define e_nm_call_new(member) dbus_message_new_method_call(_E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, member)
-#define e_nms_call_new(ctxt, member) ctxt == E_NMS_CONTEXT_USER ? dbus_message_new_method_call(_E_NMS_SERVICE_USER, _E_NMS_PATH, _E_NMS_INTERFACE, member) : dbus_message_new_method_call(_E_NMS_SERVICE_SYSTEM, _E_NMS_PATH, _E_NMS_INTERFACE, member);
-#define e_nms_connection_call_new(ctxt, conn, member) ctxt == E_NMS_CONTEXT_USER ? dbus_message_new_method_call(_E_NMS_SERVICE_USER, conn, _E_NMS_INTERFACE_CONNECTION, member) : dbus_message_new_method_call(_E_NMS_SERVICE_SYSTEM, conn, _E_NMS_INTERFACE_CONNECTION, member);
+#define e_nms_call_new(service, member) dbus_message_new_method_call(service, _E_NMS_PATH, _E_NMS_INTERFACE, member)
+#define e_nms_connection_call_new(service, conn, member) dbus_message_new_method_call(service, conn, _E_NMS_INTERFACE_CONNECTION, member)
#define e_nm_properties_get(con, prop, cb, data) e_dbus_properties_get(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, (E_DBus_Method_Return_Cb) cb, data)
#define e_nm_properties_set(con, prop, type, value, cb, data) e_dbus_properties_set(con, _E_NM_SERVICE, E_NM_PATH, _E_NM_INTERFACE, prop, type, value, (E_DBus_Method_Return_Cb) cb, data)
#define e_nm_device_wired_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRED, sig, cb, data)
#define e_nm_device_wireless_signal_handler_add(con, dev, sig, cb, data) e_dbus_signal_handler_add(con, _E_NM_SERVICE, dev, _E_NM_INTERFACE_DEVICE_WIRELESS, sig, cb, data)
-#define e_nms_signal_handler_add(con, ctxt, sig, cb, data) ctxt == E_NMS_CONTEXT_USER ? e_dbus_signal_handler_add(con, _E_NMS_SERVICE_USER, _E_NMS_PATH, _E_NMS_INTERFACE, sig, cb, data) : e_dbus_signal_handler_add(con, _E_NMS_SERVICE_SYSTEM, _E_NMS_PATH, _E_NMS_INTERFACE, sig, cb, data)
+#define e_nms_signal_handler_add(con, service, sig, cb, data) e_dbus_signal_handler_add(con, service, _E_NMS_PATH, _E_NMS_INTERFACE, sig, cb, data)
typedef struct E_NM_Internal E_NM_Internal;
struct E_NM_Internal
{
E_NM_Internal *nmi;
- int (*new_connection)(E_NMS *nms, E_NMS_Context context, const char *connection);
+ int (*new_connection)(E_NMS *nms, const char *service_name, const char *connection);
Ecore_List *handlers;
void *data;
while ((path = ecore_list_first_remove(list)))
{
ecore_list_prepend(list2, (void *)-1);
- e_nms_connection_get(nms, E_NMS_CONTEXT_SYSTEM, path, cb_nms_connection, d);
+ e_nms_connection_get(nms, E_NMS_SERVICE_SYSTEM, path, cb_nms_connection, d);
free(path);
}
ecore_list_destroy(list);
while ((path = ecore_list_next(connections)))
{
ecore_list_prepend(list2, (void *)-1);
- e_nms_connection_get(nms, E_NMS_CONTEXT_USER, path, cb_nms_connection, d);
+ e_nms_connection_get(nms, E_NMS_SERVICE_USER, path, cb_nms_connection, d);
}
ecore_list_first_remove(list2);
while ((conn = ecore_list_next(connections)))
ecore_list_append(list, strdup(conn));
- msg = e_nms_call_new(E_NMS_CONTEXT_USER, "ListConnections");
+ msg = e_nms_call_new(E_NMS_SERVICE_USER, "ListConnections");
e_dbus_method_call_send(nmsi->nmi->conn, msg, cb_nm_object_path_list, cb_nms_user_connections, free_nm_object_path_list, -1, d);
dbus_message_unref(msg);
}
static void
-new_connection(E_NMS_Context context, void *data, DBusMessage *msg)
+new_connection(const char *service_name, void *data, DBusMessage *msg)
{
E_NMS_Internal *nmsi;
const char *conn;
}
if (nmsi->new_connection)
- nmsi->new_connection((E_NMS *)nmsi, context, conn);
+ nmsi->new_connection((E_NMS *)nmsi, service_name, conn);
}
static void
cb_new_system_connection(void *data, DBusMessage *msg)
{
- new_connection(E_NMS_CONTEXT_SYSTEM, data, msg);
+ new_connection(E_NMS_SERVICE_SYSTEM, data, msg);
}
static void
cb_new_user_connection(void *data, DBusMessage *msg)
{
- new_connection(E_NMS_CONTEXT_USER, data, msg);
+ new_connection(E_NMS_SERVICE_USER, data, msg);
}
EAPI int
nmsi = calloc(1, sizeof(E_NMS_Internal));
nmsi->nmi = (E_NM_Internal *)nm;
nmsi->handlers = ecore_list_new();
- ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_CONTEXT_SYSTEM, "NewConnection", cb_new_system_connection, nmsi));
- ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_CONTEXT_USER, "NewConnection", cb_new_user_connection, nmsi));
+ ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_SERVICE_SYSTEM, "NewConnection", cb_new_system_connection, nmsi));
+ ecore_list_append(nmsi->handlers, e_nms_signal_handler_add(nmsi->nmi->conn, E_NMS_SERVICE_USER, "NewConnection", cb_new_user_connection, nmsi));
(*cb_func)(data, (E_NMS *)nmsi);
return 1;
d->data = data;
d->object = nmsi;
- msg = e_nms_call_new(E_NMS_CONTEXT_SYSTEM, "ListConnections");
+ msg = e_nms_call_new(E_NMS_SERVICE_SYSTEM, "ListConnections");
ret = e_dbus_method_call_send(nmsi->nmi->conn, msg, cb_nm_object_path_list, cb_nms_system_connections, free_nm_object_path_list, -1, d) ? 1 : 0;
dbus_message_unref(msg);
}
EAPI void
-e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, E_NMS_Context context, const char *connection))
+e_nms_callback_new_connection_set(E_NMS *nms, int (*cb_func)(E_NMS *nms, const char *service_name, const char *connection))
{
E_NMS_Internal *nmsi;
}
EAPI int
-e_nms_connection_get(E_NMS *nms, E_NMS_Context context, const char *connection, int (*cb_func)(void *data, E_NMS_Connection *conn), void *data)
+e_nms_connection_get(E_NMS *nms, const char *service_name, const char *connection, int (*cb_func)(void *data, E_NMS_Connection *conn), void *data)
{
E_NMS_Internal *nmsi;
E_NMS_Connection_Internal *conn;
conn = calloc(1, sizeof(E_NMS_Connection_Internal));
conn->nmi = nmsi->nmi;
conn->conn.path = strdup(connection);
- conn->conn.context = context;
+ conn->conn.service_name = strdup(service_name);
(*cb_func)(data, (E_NMS_Connection *)conn);
return 1;
}
{
if (!conn) return;
+ if (conn->service_name) free(conn->service_name);
if (conn->path) free(conn->path);
free(conn);
}
if (!conn) return;
printf("E_NMS_Connection:\n");
- printf("context: ");
- switch (conn->context)
- {
- case E_NMS_CONTEXT_SYSTEM:
- printf("E_NMS_CONTEXT_SYSTEM\n");
- break;
- case E_NMS_CONTEXT_USER:
- printf("E_NMS_CONTEXT_USER\n");
- break;
- }
- printf("path : %s\n", conn->path);
+ printf("service_name: %s\n", conn->service_name);
+ printf("path : %s\n", conn->path);
printf("\n");
}
d->cb_func = OBJECT_CB(cb_func);
d->data = data;
- msg = e_nms_connection_call_new(conn->conn.context, conn->conn.path, "GetSettings");
+ msg = e_nms_connection_call_new(conn->conn.service_name, conn->conn.path, "GetSettings");
ret = e_dbus_method_call_send(conn->nmi->conn, msg, cb_nm_settings, cb_nms_settings, free_nm_settings, -1, d) ? 1 : 0;
dbus_message_unref(msg);