[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