e_nm_{de}activate_connection
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 15 Nov 2008 19:58:09 +0000 (19:58 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 15 Nov 2008 19:58:09 +0000 (19:58 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/e_dbus@37668 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

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

index 77e8344..78067e5 100644 (file)
@@ -157,8 +157,8 @@ cb_nm(void *data, E_NM *reply)
         return 1;
     }
     nm = reply;
-    e_nm_wireless_enabled_set(nm, 1);
     /*
+    e_nm_wireless_enabled_set(nm, 1);
     if (nm->active_connections)
     {
         const char *conn;
@@ -167,8 +167,8 @@ cb_nm(void *data, E_NM *reply)
             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);
     */
+    e_nms_get(nm, cb_nms, nm);
     return 1;
 }
    
index 17dad46..7007fdd 100644 (file)
@@ -181,6 +181,7 @@ struct E_NM
 typedef struct E_NM_Access_Point E_NM_Access_Point;
 struct E_NM_Access_Point
 {
+  char                 *path;
   E_NM_802_11_Ap_Flags  flags;
   E_NM_802_11_Ap_Sec    wpa_flags;
   E_NM_802_11_Ap_Sec    rsn_flags;
@@ -240,11 +241,16 @@ typedef struct E_NMS E_NMS;
 /* No properties */
 
 typedef struct E_NMS_Connection E_NMS_Connection;
-/* No properties */
+struct E_NMS_Connection
+{
+  E_NMS_Context  context;
+  char *path;
+};
 
 typedef struct E_NM_Active_Connection E_NM_Active_Connection;
 struct E_NM_Active_Connection
 {
+  char                         *path;
   char                         *service_name;
   char                         *connection; /* object_path */
   char                         *specific_object; /* object_path */
@@ -283,8 +289,8 @@ 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);
-   /* TODO: e_nm_activate_connection */
-   /* TODO: e_nm_deactivate_connection */
+   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_deactivate_connection(E_NM *nm, E_NM_Active_Connection *connection);
    EAPI int   e_nm_sleep(E_NM *nm, int sleep);
 
    EAPI void  e_nm_data_set(E_NM *nm, void *data);
index bb19213..2ac6938 100644 (file)
@@ -43,6 +43,7 @@ e_nm_access_point_get(E_NM *nm, const char *access_point,
   nmi = (E_NM_Internal *)nm;
   ap = calloc(1, sizeof(E_NM_Access_Point_Internal));
   ap->nmi = nmi;
+  ap->ap.path = strdup(access_point);
   d = calloc(1, sizeof(Property_Data));
   d->nmi = nmi;
   d->cb_func = OBJECT_CB(cb_func);
@@ -64,6 +65,7 @@ e_nm_access_point_free(E_NM_Access_Point *access_point)
 
   if (!access_point) return;
   ap = (E_NM_Access_Point_Internal *)access_point;
+  if (ap->ap.path) free(ap->ap.path);
   if (ap->ap.ssid) ecore_list_destroy(ap->ap.ssid);
   if (ap->ap.hw_address) free(ap->ap.hw_address);
   if (ap->handlers)
index a13cde3..fea6cbb 100644 (file)
@@ -26,6 +26,7 @@ e_nm_active_connection_get(E_NM *nm, const char *connection,
   nmi = (E_NM_Internal *)nm;
   conn = calloc(1, sizeof(E_NM_Active_Connection_Internal));
   conn->nmi = nmi;
+  conn->conn.path = strdup(connection);
   d = calloc(1, sizeof(Property_Data));
   d->nmi = nmi;
   d->cb_func = OBJECT_CB(cb_func);
@@ -41,6 +42,7 @@ EAPI void
 e_nm_active_connection_free(E_NM_Active_Connection *conn)
 {
   if (!conn) return;
+  if (conn->path) free(conn->path);
   if (conn->service_name) free(conn->service_name);
   if (conn->connection) free(conn->connection);
   if (conn->specific_object) free(conn->specific_object);
index 75e3e01..8a912b5 100644 (file)
@@ -99,6 +99,50 @@ 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)
+{
+  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, &device->udi,
+                           DBUS_TYPE_OBJECT_PATH, &specific_object,
+                           DBUS_TYPE_INVALID);
+
+  ret = e_dbus_message_send(nmi->conn, msg, NULL, -1, NULL) ? 1 : 0;
+  dbus_message_unref(msg);
+  return ret;
+}
+
+EAPI int
+e_nm_deactivate_connection(E_NM *nm, E_NM_Active_Connection *conn)
+{
+  DBusMessage *msg;
+  E_NM_Internal *nmi;
+  int ret;
+
+  nmi = (E_NM_Internal *)nm;
+
+  msg = e_nm_call_new("DeactivateConnection");
+  dbus_message_append_args(msg,
+                           DBUS_TYPE_OBJECT_PATH, &conn->path,
+                           DBUS_TYPE_INVALID);
+
+  ret = e_dbus_message_send(nmi->conn, msg, NULL, -1, NULL) ? 1 : 0;
+  dbus_message_unref(msg);
+  return ret;
+}
+
+EAPI int
 e_nm_sleep(E_NM *nm, int sleep)
 {
   DBusMessage *msg;
index 5186d75..f608b86 100644 (file)
@@ -105,9 +105,8 @@ struct E_NMS_Internal
 typedef struct E_NMS_Connection_Internal E_NMS_Connection_Internal;
 struct E_NMS_Connection_Internal
 {
+  E_NMS_Connection conn;
   E_NM_Internal *nmi;
-  char          *path;
-  E_NMS_Context  context;
 
   void *data;
 };
@@ -118,6 +117,7 @@ struct E_NM_Active_Connection_Internal
   E_NM_Active_Connection conn;
 
   E_NM_Internal *nmi;
+  char          *path;
 };
 
 typedef int (*Object_Cb)(void *data, void *reply);
index fd203b6..a2d55df 100644 (file)
@@ -30,29 +30,25 @@ e_nms_connection_get(E_NMS *nms, E_NMS_Context context, const char *connection,
   nmsi = (E_NMS_Internal *)nms;
   conn = calloc(1, sizeof(E_NMS_Connection_Internal));
   conn->nmi = nmsi->nmi;
-  conn->path = strdup(connection);
-  conn->context = context;
+  conn->conn.path = strdup(connection);
+  conn->conn.context = context;
   (*cb_func)(data, (E_NMS_Connection *)conn);
   return 1;
 }
 
 EAPI void
-e_nms_connection_free(E_NMS_Connection *connection)
+e_nms_connection_free(E_NMS_Connection *conn)
 {
-  E_NMS_Connection_Internal *conn;
-  if (!connection) return;
-  conn = (E_NMS_Connection_Internal *)connection;
+  if (!conn) return;
 
   if (conn->path) free(conn->path);
   free(conn);
 }
 
 EAPI void
-e_nms_connection_dump(E_NMS_Connection *connection)
+e_nms_connection_dump(E_NMS_Connection *conn)
 {
-  E_NMS_Connection_Internal *conn;
-  if (!connection) return;
-  conn = (E_NMS_Connection_Internal *)connection;
+  if (!conn) return;
 
   printf("E_NMS_Connection:\n");
   printf("context: ");
@@ -83,7 +79,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->context, conn->path, "GetSettings");
+  msg = e_nms_connection_call_new(conn->conn.context, 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);