More work on activate/deactivate
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 16 Nov 2008 21:33:28 +0000 (21:33 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 16 Nov 2008 21:33:28 +0000 (21:33 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@37680 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/nm.c
src/lib/nm/E_Nm.h
src/lib/nm/e_nm_manager.c
src/lib/nm/e_nm_private.h
src/lib/nm/e_nms.c
src/lib/nm/e_nms_connection.c

index 78067e5..596b792 100644 (file)
@@ -1,6 +1,8 @@
 #include <E_Nm.h>
 #include <Ecore_Data.h>
 
+#include <unistd.h>
+
 E_NM *nm = NULL;
 E_NMS *nms = NULL;
 
@@ -96,10 +98,29 @@ cb_access_point(void *data, E_NM_Access_Point *ap)
 }
 
 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;
 }
 
@@ -159,6 +180,7 @@ cb_nm(void *data, E_NM *reply)
     nm = reply;
     /*
     e_nm_wireless_enabled_set(nm, 1);
+    */
     if (nm->active_connections)
     {
         const char *conn;
@@ -166,9 +188,10 @@ cb_nm(void *data, E_NM *reply)
         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;
 }
    
index 7007fdd..e2678fe 100644 (file)
@@ -154,13 +154,6 @@ enum E_NM_802_11_Device_Cap
   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
 {
@@ -243,7 +236,7 @@ typedef struct E_NMS E_NMS;
 typedef struct E_NMS_Connection E_NMS_Connection;
 struct E_NMS_Connection
 {
-  E_NMS_Context  context;
+  char *service_name;
   char *path;
 };
 
@@ -289,7 +282,7 @@ extern "C" {
    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);
 
@@ -344,10 +337,10 @@ extern "C" {
                         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);
 
index 8a912b5..211af5c 100644 (file)
@@ -99,21 +99,18 @@ e_nm_get_devices(E_NM *nm, int (*cb_func)(void *data, Ecore_List *list), void *d
 }
 
 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);
index f608b86..539ea14 100644 (file)
 #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)
@@ -35,7 +35,7 @@
 #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
@@ -96,7 +96,7 @@ struct E_NMS_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;
index abd6604..394d016 100644 (file)
@@ -63,7 +63,7 @@ cb_nms_user_connections(void *data, void *reply, DBusError *err)
   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);
@@ -73,7 +73,7 @@ cb_nms_user_connections(void *data, void *reply, DBusError *err)
   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);
 
@@ -108,14 +108,14 @@ cb_nms_system_connections(void *data, void *reply, DBusError *err)
   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;
@@ -132,19 +132,19 @@ new_connection(E_NMS_Context context, void *data, DBusMessage *msg)
   }
 
   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
@@ -155,8 +155,8 @@ e_nms_get(E_NM *nm, int (*cb_func)(void *data, E_NMS *nms), void *data)
   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;
@@ -202,7 +202,7 @@ e_nms_list_connections(E_NMS *nms, int (*cb_func)(void *data, Ecore_List *list),
   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);
@@ -228,7 +228,7 @@ e_nms_data_get(E_NMS *nms)
 }
 
 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;
 
index a2d55df..0463f7c 100644 (file)
@@ -22,7 +22,7 @@ cb_nms_settings(void *data, void *reply, DBusError *err)
 }
 
 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;
@@ -31,7 +31,7 @@ e_nms_connection_get(E_NMS *nms, E_NMS_Context context, const char *connection,
   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;
 }
@@ -41,6 +41,7 @@ e_nms_connection_free(E_NMS_Connection *conn)
 {
   if (!conn) return;
 
+  if (conn->service_name) free(conn->service_name);
   if (conn->path) free(conn->path);
   free(conn);
 }
@@ -51,17 +52,8 @@ e_nms_connection_dump(E_NMS_Connection *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");
 }
 
@@ -79,7 +71,7 @@ e_nms_connection_get_settings(E_NMS_Connection *connection, int (*cb_func)(void
   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);