[Pkg-e-commits] [SCM] D-Bus integration for EFL based applications branch, upstream-vcs, updated. de96e02c71c95d629bfde702b223060254b81ef7

raster raster at alioth.debian.org
Sat May 24 16:10:43 UTC 2008


The following commit has been merged in the upstream-vcs branch:
commit 6729b343ef12f0be8961d7fd0a87d5ad7b816153
Author: raster <raster>
Date:   Tue Mar 25 18:22:01 2008 +0000

    stefan's nm patches

diff --git a/src/bin/nm.c b/src/bin/nm.c
index ab41ea1..5ff90ec 100644
--- a/src/bin/nm.c
+++ b/src/bin/nm.c
@@ -1,5 +1,6 @@
 #include <E_Nm.h>
 #include <Ecore_Data.h>
+#include <dbus/dbus.h>
 
 #define E_NM_DEVICE_TYPE_WIRED 1
 #define E_NM_DEVICE_TYPE_WIRELESS 2
@@ -11,162 +12,210 @@ struct NM_Manager
   Ecore_List *devices;
 };
 
-typedef struct NM_Device NM_Device;
-struct NM_Device
-{
-  int type;
-  char *object_path;
-  char *device_name;
-};
-
 void
-cb_manager_get_name(void *data, void *reply, DBusError *err)
+cb_manager_get_udi(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    char *udi;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got name:\n");
-   printf("  %s\n", (char *)reply);
+
+    dbus_message_iter_init(reply, &iter);
+	dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &udi);
+
+    printf("Got udi: %s\n", udi);
 }
 
 void
-cb_manager_get_type(void *data, void *reply, DBusError *err)
+cb_manager_get_interface(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    char *interface;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got type:\n");
-   printf("  %i (0 == unknown, 1 == ethernet, 2 == wireless)\n", (int)(*((dbus_int32_t *)reply)));
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &interface);
+
+    printf("Got interface: %s\n", interface);
 }
 
 void
-cb_manager_get_hal_udi(void *data, void *reply, DBusError *err)
+cb_manager_get_driver(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    char *driver;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got hal udi:\n");
-   printf("  %s\n", (char *)reply);
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &driver);
+
+    printf("Got driver: %s\n", driver);
 }
 
 void
-cb_manager_get_ip4_address(void *data, void *reply, DBusError *err)
+cb_manager_get_capabilities(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    dbus_uint32_t caps;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got ip4_address:\n");
-   printf("  %i.%i.%i.%i\n", 
-	  (int)(((*((dbus_int32_t *)reply))      ) & 0xff),
-	  (int)(((*((dbus_int32_t *)reply)) >> 8 ) & 0xff),
-	  (int)(((*((dbus_int32_t *)reply)) >> 16) & 0xff),
-	  (int)(((*((dbus_int32_t *)reply)) >> 24) & 0xff)
-	  );
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &caps);
+
+    printf("Got capabilities: %i\n", caps);
 }
 
 void
-cb_manager_get_link_active(void *data, void *reply, DBusError *err)
+cb_manager_get_ip4address(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    dbus_int32_t ip;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got active:\n");
-   printf("  %i\n", (int)(*((dbus_bool_t *)reply)));
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &ip);
+
+    printf("Got IPv4 address: %i.%i.%i.%i\n",
+	   (ip       & 0xff),
+	   ((ip >> 8 ) & 0xff),
+	   ((ip >> 16) & 0xff),
+	   ((ip >> 24) & 0xff)
+	   );
 }
 
 void
-cb_manager_wireless_get_strength(void *data, void *reply, DBusError *err)
+cb_manager_get_state(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    dbus_uint32_t state;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got Wireless Strength:\n");
-   printf("  %i\n", (int)(*((dbus_int32_t *)reply)));
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &state);
+
+    printf("Got state: %i\n", state);
 }
 
 void
-cb_manager_wireless_get_active_network(void *data, void *reply, DBusError *err)
+cb_manager_get_ip4config(void *data, void *reply, DBusError *err)
 {
-   if (dbus_error_is_set(err))
+    DBusMessageIter iter, sub;
+    char *ip4config;
+
+    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   printf("Got Wireless Active Network:\n");
-   printf("  %s\n", (char *)reply);
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &ip4config);
+
+    printf("Got IPv4 config path: %s\n", ip4config);
 }
 
 void
-cb_manager_wireless_get_networks(void *data, void *reply, DBusError *err)
+cb_manager_get_carrier(void *data, void *reply, DBusError *err)
 {
-   Ecore_List *networks;
-   const char *net;
-   
+    DBusMessageIter iter, sub;
+    dbus_uint32_t carrier;
+
    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
-   
-   networks = reply;
-   ecore_list_first_goto(networks);
-   printf("Got Wireless Networks:\n");
-   while ((net = ecore_list_next(networks)))
-     {
-	printf("  %s\n", net);
-     }
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &carrier);
+
+    printf("Got carrier: %i\n", carrier);
 }
 
+void
+cb_manager_get_type(void *data, void *reply, DBusError *err)
+{
+    DBusMessageIter iter, sub;
+    dbus_uint32_t type;
 
+    if (dbus_error_is_set(err))
+      {
+	 printf("Error: %s - %s\n" ,err->name, err->message);
+	 return;
+      }
+
+    dbus_message_iter_init(reply, &iter);
+    dbus_message_iter_recurse(&iter, &sub);
+    dbus_message_iter_get_basic(&sub, &type);
+
+    printf("Got type: %i (1 = ethernet, 2 = wireless)\n", type);
+}
 
 void
 cb_manager_get_devices(void *data, void *reply, DBusError *err)
 {
    NM_Manager *app = data;
-   Ecore_List *devices;
    const char *dev;
-   
+
    if (dbus_error_is_set(err))
      {
-	//XXX
 	printf("Error: %s - %s\n" ,err->name, err->message);
 	return;
      }
    
-   devices = reply;
-   ecore_list_first_goto(devices);
+   app->devices = reply;
+   ecore_list_first_goto(app->devices);
    printf("Got devices:\n");
-   while ((dev = ecore_list_next(devices)))
+   while ((dev = ecore_list_next(app->devices)))
      {
-	printf("  %s\n", dev);
-	e_nm_device_get_name(app->ctx, dev, cb_manager_get_name, app);
+	printf("%s\n", dev);
+        e_nm_device_get_udi(app->ctx, dev, cb_manager_get_udi, app);
+	e_nm_device_get_interface(app->ctx, dev, cb_manager_get_interface, app);
+	e_nm_device_get_driver(app->ctx, dev, cb_manager_get_driver, app);
+	e_nm_device_get_capabilities(app->ctx, dev, cb_manager_get_capabilities, app);
+	e_nm_device_get_ip4address(app->ctx, dev, cb_manager_get_ip4address, app);
+	e_nm_device_get_state(app->ctx, dev, cb_manager_get_state, app);
+	/* FIXME: Getting the ip4config needs fixing */
+	//e_nm_device_get_ip4config(app->ctx, dev, cb_manager_get_ip4config, app);
+	e_nm_device_get_carrier(app->ctx, dev, cb_manager_get_carrier, app);
 	e_nm_device_get_type(app->ctx, dev, cb_manager_get_type, app);
-	e_nm_device_get_hal_udi(app->ctx, dev, cb_manager_get_hal_udi, app);
-	e_nm_device_get_ip4_address(app->ctx, dev, cb_manager_get_ip4_address, app);
-	e_nm_device_get_link_active(app->ctx, dev, cb_manager_get_link_active, app);
-	e_nm_device_wireless_get_strength(app->ctx, dev, cb_manager_wireless_get_strength, app);
-	e_nm_device_wireless_get_active_network(app->ctx, dev, cb_manager_wireless_get_active_network, app);
-	e_nm_device_wireless_get_networks(app->ctx, dev, cb_manager_wireless_get_networks, app);
      }
 }
 
diff --git a/src/lib/nm/E_Nm.h b/src/lib/nm/E_Nm.h
index 7f27aa7..7b9bffe 100644
--- a/src/lib/nm/E_Nm.h
+++ b/src/lib/nm/E_Nm.h
@@ -142,28 +142,24 @@ extern "C" {
 
 
 /* org.freedesktop.NetworkManager.Device api */
-   EAPI int e_nm_device_get_name(E_NM_Context *ctx, const char *device,
-                                 E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_udi(E_NM_Context *ctx, const char *device,
+                                E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_interface(E_NM_Context *ctx, const char *device,
+                                      E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_driver(E_NM_Context *ctx, const char *device,
+                                   E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_capabilities(E_NM_Context *ctx, const char *device,
+                                         E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_ip4address(E_NM_Context *ctx, const char *device,
+                                       E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_state(E_NM_Context *ctx, const char *device,
+                                  E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_ip4config(E_NM_Context *ctx, const char *device,
+                                      E_DBus_Callback_Func cb_func, void *data);
+   EAPI int e_nm_device_get_carrier(E_NM_Context *ctx, const char *device,
+                                    E_DBus_Callback_Func cb_func, void *data);
    EAPI int e_nm_device_get_type(E_NM_Context *ctx, const char *device,
                                  E_DBus_Callback_Func cb_func, void *data);
-   EAPI int e_nm_device_get_hal_udi(E_NM_Context *ctx, const char *device,
-                                    E_DBus_Callback_Func cb_func, void *data);
-   EAPI int e_nm_device_get_ip4_address(E_NM_Context *ctx, const char *device,
-                                        E_DBus_Callback_Func cb_func, void *data);
-   EAPI int e_nm_device_get_link_active(E_NM_Context *ctx, const char *device,
-                                        E_DBus_Callback_Func cb_func, void *data);
-   EAPI int e_nm_device_wireless_get_strength(E_NM_Context *ctx,
-                                              const char *device,
-                                              E_DBus_Callback_Func cb_func,
-                                              void *data);
-   EAPI int e_nm_device_wireless_get_active_network(E_NM_Context *ctx,
-                                                    const char *device,
-                                                    E_DBus_Callback_Func cb_func,
-                                                    void *data);
-   EAPI int e_nm_device_wireless_get_networks(E_NM_Context *ctx,
-                                              const char *device,
-                                              E_DBus_Callback_Func cb_func,
-                                              void *data);
 
 /* org.freedesktop.NetworkManager.Devices api */
 /* TODO: EAPI int e_nm_network_get_name() */
@@ -173,11 +169,6 @@ extern "C" {
 /* TODO: EAPI int e_nm_network_get_rate() */
 /* TODO: EAPI int e_nm_network_get_encrypted() */
 
-/* org.freedesktop.NetworkManagerInfo api */
-/* signals */
-/* TODO: EAPI void e_nmi_callback_trusted_network_update() */
-/* TODO: EAPI void e_nmi_callback_preferred_network_update() */
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/lib/nm/e_nm_device.c b/src/lib/nm/e_nm_device.c
index 16b5511..1af65e0 100644
--- a/src/lib/nm/e_nm_device.c
+++ b/src/lib/nm/e_nm_device.c
@@ -1,17 +1,15 @@
 /*
  * This file defines functions that query each of the functions provided by
- * the NetworkManager Device interface.
+ * the org.freedesktop.NetworkManager.Device DBus interface.
  */
 
 #include "E_Nm.h"
 #include "e_nm_private.h"
 #include <Ecore_Data.h>
 
+
 /**
- * Get the system name of a NetworkManager device
- *
- * Returns an Ecore_List of dbus object paths for network devices. This list is
- * of const char *, and is freed automatically after the callback returns.
+ * Get the UDI of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -19,20 +17,33 @@
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_get_name(E_NM_Context *ctx, const char *device,
-                     E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_udi(E_NM_Context *ctx, const char *device,
+                    E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getName",
-                              DBUS_TYPE_STRING);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Udi", cb_func, data);
 }
 
 
 /**
- * Return the type of a an NM device:
+ * Get the interface name of a NetworkManager device
  *
- * 0: unknown
- * 1: wired
- * 2: wireless
+ * @param ctx an e_nm context
+ * @param device a NetworkManager device to communicate with
+ * @param cb a callback, used when the method returns (or an error is received)
+ * @param data user data to pass to the callback function
+ */
+EAPI int
+e_nm_device_get_interface(E_NM_Context *ctx, const char *device,
+                          E_DBus_Callback_Func cb_func, void *data)
+{
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Interface", cb_func, data);
+}
+
+
+/**
+ * Get the driver name of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -40,16 +51,16 @@ e_nm_device_get_name(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_get_type(E_NM_Context *ctx, const char *device, 
-                     E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_driver(E_NM_Context *ctx, const char *device,
+                       E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getType",
-                              DBUS_TYPE_INT32);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Driver", cb_func, data);
 }
 
 
 /**
- * Get the HAL UDI of a NetworkManager device
+ * Get the capabilities of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -57,11 +68,11 @@ e_nm_device_get_type(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_get_hal_udi(E_NM_Context *ctx, const char *device,
-                        E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_capabilities(E_NM_Context *ctx, const char *device,
+                             E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getHalUdi",
-                              DBUS_TYPE_STRING);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Capabilities", cb_func, data);
 }
 
 
@@ -74,16 +85,16 @@ e_nm_device_get_hal_udi(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_get_ip4_address(E_NM_Context *ctx, const char *device,
-                            E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_ip4address(E_NM_Context *ctx, const char *device,
+                           E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getIP4Address",
-                              DBUS_TYPE_UINT32);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Ip4Address", cb_func, data);
 }
 
 
 /**
- * Get the link status of a NetworkManager device
+ * Get the state of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -91,17 +102,16 @@ e_nm_device_get_ip4_address(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_get_link_active(E_NM_Context *ctx, const char *device,
-                            E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_state(E_NM_Context *ctx, const char *device,
+                      E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getLinkActive",
-                              DBUS_TYPE_BOOLEAN);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "State", cb_func, data);
 }
 
 
 /**
- * Get the signal strength of a the wireless network that a NetworkManager 
- * device is connected to.
+ * Get the IPv4 config object path of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -109,16 +119,16 @@ e_nm_device_get_link_active(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_wireless_get_strength(E_NM_Context *ctx, const char *device,
-                            E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_ip4config(E_NM_Context *ctx, const char *device,
+                          E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getStrength",
-                              DBUS_TYPE_INT32);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Ip4Config", cb_func, data);
 }
 
 
 /**
- * Find the NetworkManager device's currently associated wireless network
+ * Get the carrier status of a NetworkManager device
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -126,18 +136,20 @@ e_nm_device_wireless_get_strength(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_wireless_get_active_network(E_NM_Context *ctx, const char *device,
-                                        E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_carrier(E_NM_Context *ctx, const char *device,
+                        E_DBus_Callback_Func cb_func, void *data)
 {
-  return e_nm_get_from_device(ctx, device, cb_func, data, "getActiveNetwork",
-                              DBUS_TYPE_STRING);
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "Carrier", cb_func, data);
 }
 
 
 /**
- * Get the list of available wireless networks
+ * Return the type of a an NM device:
  *
- * Returns an Ecore_List of wireless network names
+ * 0: unknown
+ * 1: wired
+ * 2: wireless
  *
  * @param ctx an e_nm context
  * @param device a NetworkManager device to communicate with
@@ -145,15 +157,9 @@ e_nm_device_wireless_get_active_network(E_NM_Context *ctx, const char *device,
  * @param data user data to pass to the callback function
  */
 EAPI int
-e_nm_device_wireless_get_networks(E_NM_Context *ctx, const char *device, 
-                                  E_DBus_Callback_Func cb_func, void *data)
+e_nm_device_get_type(E_NM_Context *ctx, const char *device, 
+                     E_DBus_Callback_Func cb_func, void *data)
 {
-  DBusMessage *msg;
-  int ret;
-
-  msg = e_nm_device_call_new(device, "getNetworks");
-  ret = e_dbus_method_call_send(ctx->conn, msg, cb_nm_string_list, cb_func, free_nm_string_list, -1, data) ? 1 : 0;
-  dbus_message_unref(msg);
-  return ret;
+  /* FIXME: Decide how to handle the return value for this functions */
+  e_nm_device_properties_get(ctx->conn, device, "DeviceType", cb_func, data);
 }
-
diff --git a/src/lib/nm/e_nm_private.h b/src/lib/nm/e_nm_private.h
index 5f40a28..b7970c9 100644
--- a/src/lib/nm/e_nm_private.h
+++ b/src/lib/nm/e_nm_private.h
@@ -16,6 +16,7 @@
 
 #define e_nm_network_call_new(member) dbus_message_new_method_call(E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, member)
 
+#define e_nm_device_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE, prop, (E_DBus_Method_Return_Cb) cb, data)
 
 struct E_NM_Context
 {

-- 
D-Bus integration for EFL based applications



More information about the Pkg-e-commits mailing list