<!-- Generator: GNU source-highlight 2.4
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>#
#
# add_dir "packages/efl1/edbus"
#
# add_file "packages/efl1/edbus/e_nm-big-hack.patch"
# content [b3e8f3966add9b809412377d0644944a6927b419]
#
# patch "packages/efl1/edbus_cvs.bb"
# from [ecd6cb444aeac48cd019c31f15055fb2cca6157a]
# to [d82002b6ed9027913c726863ac1b51c43ca64969]
#
============================================================
<font color="#FF6600">--- packages/efl1/edbus/e_nm-big-hack.patch        b3e8f3966add9b809412377d0644944a6927b419</font>
<font color="#009900">+++ packages/efl1/edbus/e_nm-big-hack.patch        b3e8f3966add9b809412377d0644944a6927b419</font>
<font color="#0000FF">@@ -0,0 +1,1923 @@</font>
<font color="#009900">+Index: e_dbus/src/bin/nm.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/bin/nm.c        2008-03-25 19:22:01.000000000 +0100</font>
<font color="#009900">++++ e_dbus/src/bin/nm.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -5,241 +5,154 @@</font>
<font color="#009900">+ #define E_NM_DEVICE_TYPE_WIRED 1</font>
<font color="#009900">+ #define E_NM_DEVICE_TYPE_WIRELESS 2</font>
<font color="#009900">+ </font>
<font color="#009900">+-typedef struct NM_Manager NM_Manager;</font>
<font color="#009900">+ struct NM_Manager</font>
<font color="#009900">+ {</font>
<font color="#009900">+ E_NM_Context *ctx;</font>
<font color="#009900">+ Ecore_List *devices;</font>
<font color="#009900">+-};</font>
<font color="#009900">+-</font>
<font color="#009900">+-void</font>
<font color="#009900">+-cb_manager_get_udi(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+-{</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- char *udi;</font>
<font color="#009900">+-</font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">+- }</font>
<font color="#009900">+-</font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+-        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &udi);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got udi: %s\n", udi);</font>
<font color="#009900">+-}</font>
<font color="#009900">+-</font>
<font color="#009900">+-void</font>
<font color="#009900">+-cb_manager_get_interface(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+-{</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- char *interface;</font>
<font color="#009900">+-</font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">+- }</font>
<font color="#009900">++ Ecore_List *aps;</font>
<font color="#009900">+ </font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+- dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &interface);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got interface: %s\n", interface);</font>
<font color="#009900">+-}</font>
<font color="#009900">++ E_DBus_Callback_Func cb_devices;</font>
<font color="#009900">++ E_DBus_Callback_Func cb_aps;</font>
<font color="#009900">++};</font>
<font color="#009900">+ </font>
<font color="#009900">+ void</font>
<font color="#009900">+-cb_manager_get_driver(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++cb_manager_get_wireless(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+ {</font>
<font color="#009900">+ DBusMessageIter iter, sub;</font>
<font color="#009900">+- char *driver;</font>
<font color="#009900">++ int wireless;</font>
<font color="#009900">+ </font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">+ {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &driver);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &wireless);</font>
<font color="#009900">+ </font>
<font color="#009900">+- printf("Got driver: %s\n", driver);</font>
<font color="#009900">++ printf("Wireless enabled: %i\n", wireless);</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ void</font>
<font color="#009900">+-cb_manager_get_capabilities(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++cb_manager_get_hw_wireless(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+ {</font>
<font color="#009900">+ DBusMessageIter iter, sub;</font>
<font color="#009900">+- dbus_uint32_t caps;</font>
<font color="#009900">++ int hw_wireless;</font>
<font color="#009900">+ </font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">+ {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &caps);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &hw_wireless);</font>
<font color="#009900">+ </font>
<font color="#009900">+- printf("Got capabilities: %i\n", caps);</font>
<font color="#009900">++ printf("Wireless hardware enabled: %i\n", hw_wireless);</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ void</font>
<font color="#009900">+-cb_manager_get_ip4address(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++cb_manager_manager_get_state(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+ {</font>
<font color="#009900">+ DBusMessageIter iter, sub;</font>
<font color="#009900">+- dbus_int32_t ip;</font>
<font color="#009900">++ uint state;</font>
<font color="#009900">+ </font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">+ {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">+- }</font>
<font color="#009900">+-</font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+- dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &ip);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got IPv4 address: %i.%i.%i.%i\n",</font>
<font color="#009900">+-         (ip & 0xff),</font>
<font color="#009900">+-         ((ip >> 8 ) & 0xff),</font>
<font color="#009900">+-         ((ip >> 16) & 0xff),</font>
<font color="#009900">+-         ((ip >> 24) & 0xff)</font>
<font color="#009900">+-         );</font>
<font color="#009900">+-}</font>
<font color="#009900">+-</font>
<font color="#009900">+-void</font>
<font color="#009900">+-cb_manager_get_state(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+-{</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- dbus_uint32_t state;</font>
<font color="#009900">+-</font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+ dbus_message_iter_get_basic(&sub, &state);</font>
<font color="#009900">+ </font>
<font color="#009900">+- printf("Got state: %i\n", state);</font>
<font color="#009900">++ printf("State: %i\n", state);</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+-void</font>
<font color="#009900">+-cb_manager_get_ip4config(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+-{</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- char *ip4config;</font>
<font color="#009900">+-</font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">+- }</font>
<font color="#009900">+-</font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+- dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &ip4config);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got IPv4 config path: %s\n", ip4config);</font>
<font color="#009900">+-}</font>
<font color="#009900">+ </font>
<font color="#009900">+ void</font>
<font color="#009900">+-cb_manager_get_carrier(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++cb_manager_wifi_aps(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+ {</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- dbus_uint32_t carrier;</font>
<font color="#009900">++ NM_Manager *app = data;</font>
<font color="#009900">++ E_NM_Access_Point *ap;</font>
<font color="#009900">++ const char *ap_path;</font>
<font color="#009900">+ </font>
<font color="#009900">+ if (dbus_error_is_set(err))</font>
<font color="#009900">+ {</font>
<font color="#009900">+         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+         return;</font>
<font color="#009900">+ }</font>
<font color="#009900">++ //app->devices = ecore_list_new();</font>
<font color="#009900">++ //ecore_list_init(app->devices);</font>
<font color="#009900">+ </font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+- dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &carrier);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got carrier: %i\n", carrier);</font>
<font color="#009900">++ ecore_list_first_goto(reply);</font>
<font color="#009900">++ printf("Got APs:\n");</font>
<font color="#009900">++ while ((ap_path = ecore_list_next(reply)))</font>
<font color="#009900">++ {</font>
<font color="#009900">++                printf("%s\n", ap_path);</font>
<font color="#009900">++         }</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ void</font>
<font color="#009900">+-cb_manager_get_type(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++cb_manager_get_devices(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+ {</font>
<font color="#009900">+- DBusMessageIter iter, sub;</font>
<font color="#009900">+- dbus_uint32_t type;</font>
<font color="#009900">+-</font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-         return;</font>
<font color="#009900">+- }</font>
<font color="#009900">+-</font>
<font color="#009900">+- dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">+- dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">+- dbus_message_iter_get_basic(&sub, &type);</font>
<font color="#009900">+-</font>
<font color="#009900">+- printf("Got type: %i (1 = ethernet, 2 = wireless)\n", type);</font>
<font color="#009900">++ NM_Manager *app = data;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+-void</font>
<font color="#009900">+-cb_manager_get_devices(void *data, void *reply, DBusError *err)</font>
<font color="#009900">+-{</font>
<font color="#009900">+- NM_Manager *app = data;</font>
<font color="#009900">+- const char *dev;</font>
<font color="#009900">++#if 0</font>
<font color="#009900">++int</font>
<font color="#009900">++dump2_device_info(void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("-- Informations from %s --\n", dev->interface);</font>
<font color="#009900">++ printf("Got udi: %s\n", dev->udi);</font>
<font color="#009900">++ printf("Got interface: %s\n", dev->interface);</font>
<font color="#009900">++ printf("Got driver: %s\n", dev->driver);</font>
<font color="#009900">++ printf("Got capabilities: %i\n", dev->capabilities);</font>
<font color="#009900">++ printf("Got IPv4 address: %i.%i.%i.%i\n",</font>
<font color="#009900">++         (dev->ip4address & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 8 ) & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 16) & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 24) & 0xff)</font>
<font color="#009900">++         );</font>
<font color="#009900">++ printf("Got state: %i\n", dev->state);</font>
<font color="#009900">++ //printf("Got IPv4 config path: %s\n", dev->ip4config);</font>
<font color="#009900">++ printf("Got carrier: %i\n", dev->carrier);</font>
<font color="#009900">++ printf("Got type: %i (1 = ethernet, 2 = wireless)\n", dev->type);</font>
<font color="#009900">+ </font>
<font color="#009900">+- if (dbus_error_is_set(err))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">+-        return;</font>
<font color="#009900">+- }</font>
<font color="#009900">+- </font>
<font color="#009900">+- app->devices = reply;</font>
<font color="#009900">+- ecore_list_first_goto(app->devices);</font>
<font color="#009900">+- printf("Got devices:\n");</font>
<font color="#009900">+- while ((dev = ecore_list_next(app->devices)))</font>
<font color="#009900">+- {</font>
<font color="#009900">+-        printf("%s\n", dev);</font>
<font color="#009900">+- e_nm_device_get_udi(app->ctx, dev, cb_manager_get_udi, app);</font>
<font color="#009900">+-        e_nm_device_get_interface(app->ctx, dev, cb_manager_get_interface, app);</font>
<font color="#009900">+-        e_nm_device_get_driver(app->ctx, dev, cb_manager_get_driver, app);</font>
<font color="#009900">+-        e_nm_device_get_capabilities(app->ctx, dev, cb_manager_get_capabilities, app);</font>
<font color="#009900">+-        e_nm_device_get_ip4address(app->ctx, dev, cb_manager_get_ip4address, app);</font>
<font color="#009900">+-        e_nm_device_get_state(app->ctx, dev, cb_manager_get_state, app);</font>
<font color="#009900">+-        /* FIXME: Getting the ip4config needs fixing */</font>
<font color="#009900">+-        //e_nm_device_get_ip4config(app->ctx, dev, cb_manager_get_ip4config, app);</font>
<font color="#009900">+-        e_nm_device_get_carrier(app->ctx, dev, cb_manager_get_carrier, app);</font>
<font color="#009900">+-        e_nm_device_get_type(app->ctx, dev, cb_manager_get_type, app);</font>
<font color="#009900">+- }</font>
<font color="#009900">+ }</font>
<font color="#009900">++#endif</font>
<font color="#009900">+ </font>
<font color="#009900">+-int </font>
<font color="#009900">++int</font>
<font color="#009900">+ main(int argc, char **argv)</font>
<font color="#009900">+ {</font>
<font color="#009900">+ NM_Manager *app;</font>
<font color="#009900">++</font>
<font color="#009900">+ ecore_init();</font>
<font color="#009900">+ ecore_string_init();</font>
<font color="#009900">+ e_dbus_init();</font>
<font color="#009900">+- </font>
<font color="#009900">++</font>
<font color="#009900">+ app = calloc(1, sizeof(NM_Manager));</font>
<font color="#009900">+- </font>
<font color="#009900">++</font>
<font color="#009900">+ app->ctx = e_nm_new();</font>
<font color="#009900">+ if (!app->ctx)</font>
<font color="#009900">+ {</font>
<font color="#009900">+         printf("Error connecting to system bus. Is it running?\n");</font>
<font color="#009900">+         return 1;</font>
<font color="#009900">+ }</font>
<font color="#009900">+- </font>
<font color="#009900">++</font>
<font color="#009900">++ e_nm_manager_get_wireless_enabled(app->ctx, cb_manager_get_wireless, app);</font>
<font color="#009900">++ e_nm_manager_get_wireless_hw_enabled(app->ctx, cb_manager_get_hw_wireless, app);</font>
<font color="#009900">++ e_nm_manager_get_state(app->ctx, cb_manager_manager_get_state, app);</font>
<font color="#009900">++</font>
<font color="#009900">+ e_nm_get_devices(app->ctx, cb_manager_get_devices, app);</font>
<font color="#009900">+- </font>
<font color="#009900">++</font>
<font color="#009900">+ ecore_main_loop_begin();</font>
<font color="#009900">+- </font>
<font color="#009900">++</font>
<font color="#009900">+ e_nm_free(app->ctx);</font>
<font color="#009900">+ free(app);</font>
<font color="#009900">+ e_dbus_shutdown();</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_access_point.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- /dev/null        1970-01-01 00:00:00.000000000 +0000</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_access_point.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,475 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * This file defines functions that query each of the functions provided by</font>
<font color="#009900">++ * the org.freedesktop.NetworkManager.AccessPoint DBus interface.</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++#include "E_Nm.h"</font>
<font color="#009900">++#include "e_nm_private.h"</font>
<font color="#009900">++#include <Ecore_Data.h></font>
<font color="#009900">++#include <string.h></font>
<font color="#009900">++</font>
<font color="#009900">++#define AP_PROPS 9</font>
<font color="#009900">++</font>
<font color="#009900">++int ap_prop_counter = 0;</font>
<font color="#009900">++</font>
<font color="#009900">++NM_Manager *app_priv;</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the flags of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_flags(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Flags", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the WPA flags of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_wpa_flags(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "WpaFlags", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the RSN flags of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_rsn_flags(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "RsnFlags", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the Ssid of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_ssid(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Ssid", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the Frequency of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_frequency(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Frequency", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the hw address of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_hw_address(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "HwAddress", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the mode of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_mode(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Mode", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the rate of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_rate(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Rate", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the strength of a NetworkManager access point</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param ap a NetworkManager access point to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_access_point_get_strength(E_NM_Context *ctx, const char *ap,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ap_properties_get(ctx->conn, ap, "Strength", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_flags(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_uint32_t flags;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &flags);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->flags = flags;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_wpa_flags(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_uint32_t wpaflags;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &wpaflags);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->wpaflags = wpaflags;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_rsn_flags(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_uint32_t rsnflags;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &rsnflags);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->rsnflags = rsnflags;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_ssid(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub, subsub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ char byte;</font>
<font color="#009900">++        char ssid[200] = "0";</font>
<font color="#009900">++        int len, i;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_recurse(&sub, &subsub);</font>
<font color="#009900">++        len = dbus_message_iter_get_array_len(&subsub);</font>
<font color="#009900">++        for (i = 0; i < len; i++)</font>
<font color="#009900">++         {</font>
<font color="#009900">++         dbus_message_iter_get_basic(&subsub, &byte);</font>
<font color="#009900">++                //printf("Byte value: %c\n", byte);</font>
<font color="#009900">++                ssid[i] = byte;</font>
<font color="#009900">++                dbus_message_iter_next(&subsub);</font>
<font color="#009900">++         }</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->ssid = strdup(ssid);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_frequency(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_uint32_t frequency;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &frequency);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->frequency = frequency;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_hw_address(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ char *hwaddress;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &hwaddress);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->hwaddress = hwaddress;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_mode(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_int32_t mode;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &mode);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->mode = mode;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_rate(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ dbus_uint32_t rate;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &rate);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->rate = rate;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_strength(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++ char strength;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &strength);</font>
<font color="#009900">++</font>
<font color="#009900">++ ap->strength = strength;</font>
<font color="#009900">++</font>
<font color="#009900">++ ap_prop_counter++;</font>
<font color="#009900">++ if (ap_prop_counter == AP_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_ap_properties(data);</font>
<font color="#009900">++         ap_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++fill_ap_properties(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME Store app info in private as workaround */</font>
<font color="#009900">++ app_priv = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ E_NM_Access_Point *ap;</font>
<font color="#009900">++ const char *ap_path;</font>
<font color="#009900">++</font>
<font color="#009900">++ if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++ printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++ return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ app_priv->aps = ecore_list_new();</font>
<font color="#009900">++ ecore_list_init(app_priv->aps);</font>
<font color="#009900">++</font>
<font color="#009900">++ ecore_list_first_goto(reply);</font>
<font color="#009900">++ while ((ap_path = ecore_list_next(reply)))</font>
<font color="#009900">++ {</font>
<font color="#009900">++ ap = calloc(1, sizeof(E_NM_Access_Point));</font>
<font color="#009900">++ ecore_list_append(app_priv->aps, ap);</font>
<font color="#009900">++                e_nm_access_point_get_flags(app_priv->ctx, ap_path, cb_manager_get_flags, ap);</font>
<font color="#009900">++                e_nm_access_point_get_wpa_flags(app_priv->ctx, ap_path, cb_manager_get_wpa_flags, ap);</font>
<font color="#009900">++                e_nm_access_point_get_rsn_flags(app_priv->ctx, ap_path, cb_manager_get_rsn_flags, ap);</font>
<font color="#009900">++                e_nm_access_point_get_ssid(app_priv->ctx, ap_path, cb_manager_get_ssid, ap);</font>
<font color="#009900">++                e_nm_access_point_get_frequency(app_priv->ctx, ap_path, cb_manager_get_frequency, ap);</font>
<font color="#009900">++                e_nm_access_point_get_hw_address(app_priv->ctx, ap_path, cb_manager_get_hw_address, ap);</font>
<font color="#009900">++                e_nm_access_point_get_mode(app_priv->ctx, ap_path, cb_manager_get_mode, ap);</font>
<font color="#009900">++                e_nm_access_point_get_rate(app_priv->ctx, ap_path, cb_manager_get_rate, ap);</font>
<font color="#009900">++                e_nm_access_point_get_strength(app_priv->ctx, ap_path, cb_manager_get_strength, ap);</font>
<font color="#009900">++         }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++int</font>
<font color="#009900">++dump_ap_properties(void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ E_NM_Access_Point *ap = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("-- Informations from %s --\n", ap->ssid);</font>
<font color="#009900">++ printf("Got flags: %i\n", ap->flags);</font>
<font color="#009900">++ printf("Got WPA flags: %i\n", ap->wpaflags);</font>
<font color="#009900">++ printf("Got RSN flags: %i\n", ap->rsnflags);</font>
<font color="#009900">++ printf("Got SSID: %s\n", ap->ssid);</font>
<font color="#009900">++ printf("Got frequency: %i\n", ap->frequency);</font>
<font color="#009900">++ printf("Got hw address: %s\n", ap->hwaddress);</font>
<font color="#009900">++ printf("Got mode: %i\n", ap->mode);</font>
<font color="#009900">++ printf("Got rate: %i\n", ap->rate);</font>
<font color="#009900">++ printf("Got strength: %i\n", ap->strength);</font>
<font color="#009900">++</font>
<font color="#009900">++ app_priv->cb_aps(app_priv, ap, NULL);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_device.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/lib/nm/e_nm_device.c        2008-03-25 19:22:01.000000000 +0100</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_device.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -7,6 +7,13 @@</font>
<font color="#009900">+ #include "e_nm_private.h"</font>
<font color="#009900">+ #include <Ecore_Data.h></font>
<font color="#009900">+ </font>
<font color="#009900">++#define DEVICE_PROPS 8</font>
<font color="#009900">++#define E_NM_DEVICE_TYPE_WIRED 1</font>
<font color="#009900">++#define E_NM_DEVICE_TYPE_WIRELESS 2</font>
<font color="#009900">++</font>
<font color="#009900">++int dev_prop_counter = 0;</font>
<font color="#009900">++</font>
<font color="#009900">++NM_Manager *app_priv;</font>
<font color="#009900">+ </font>
<font color="#009900">+ /**</font>
<font color="#009900">+ * Get the UDI of a NetworkManager device</font>
<font color="#009900">+@@ -163,3 +170,342 @@</font>
<font color="#009900">+ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">+ e_nm_device_properties_get(ctx->conn, device, "DeviceType", cb_func, data);</font>
<font color="#009900">+ }</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_udi(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *udi;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &udi);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->udi = udi;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_device_info(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_interface(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *interface;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &interface);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->interface = interface;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_driver(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *driver;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &driver);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->driver = driver;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_capabilities(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t caps;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &caps);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->capabilities = caps;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_ip4address(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_int32_t ip;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &ip);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->ip4address = ip;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_state(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t state;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &state);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->state = state;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_ip4config(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *ip4config;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &ip4config);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->ip4config = ip4config;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_carrier(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t carrier;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &carrier);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->carrier = carrier;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_get_type(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t type;</font>
<font color="#009900">++</font>
<font color="#009900">++ if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++ dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &type);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->type = type;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_prop_counter++;</font>
<font color="#009900">++ if (dev_prop_counter == DEVICE_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++fill_dev_properties(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ NM_Manager *app = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ E_NM_Device *dev;</font>
<font color="#009900">++ const char *dev_path;</font>
<font color="#009900">++</font>
<font color="#009900">++ /* FIXME Store app info in private as workaround */</font>
<font color="#009900">++ app_priv = app;</font>
<font color="#009900">++</font>
<font color="#009900">++ if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++ printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++ return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ app->devices = ecore_list_new();</font>
<font color="#009900">++ ecore_list_init(app->devices);</font>
<font color="#009900">++</font>
<font color="#009900">++ ecore_list_first_goto(reply);</font>
<font color="#009900">++ while ((dev_path = ecore_list_next(reply)))</font>
<font color="#009900">++ {</font>
<font color="#009900">++ dev = calloc(1, sizeof(E_NM_Device));</font>
<font color="#009900">++ ecore_list_append(app->devices, dev);</font>
<font color="#009900">++ e_nm_device_get_udi(app->ctx, dev_path, cb_manager_get_udi, dev);</font>
<font color="#009900">++ e_nm_device_get_interface(app->ctx, dev_path, cb_manager_get_interface, dev);</font>
<font color="#009900">++ e_nm_device_get_driver(app->ctx, dev_path, cb_manager_get_driver, dev);</font>
<font color="#009900">++ e_nm_device_get_capabilities(app->ctx, dev_path, cb_manager_get_capabilities, dev);</font>
<font color="#009900">++ e_nm_device_get_ip4address(app->ctx, dev_path, cb_manager_get_ip4address, dev);</font>
<font color="#009900">++ e_nm_device_get_state(app->ctx, dev_path, cb_manager_get_state, dev);</font>
<font color="#009900">++ /* FIXME: We get no reply from NM for this. Broken in used version (3202)? */</font>
<font color="#009900">++ //e_nm_device_get_ip4config(app->ctx, dev_path, cb_manager_get_ip4config, dev);</font>
<font color="#009900">++ e_nm_device_get_carrier(app->ctx, dev_path, cb_manager_get_carrier, dev);</font>
<font color="#009900">++ e_nm_device_get_type(app->ctx, dev_path, cb_manager_get_type, dev);</font>
<font color="#009900">++         }</font>
<font color="#009900">++</font>
<font color="#009900">++ app->cb_devices(app, app->devices, err);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++fill_dev_special_properties(void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ if (dev->type == E_NM_DEVICE_TYPE_WIRELESS)</font>
<font color="#009900">++ {</font>
<font color="#009900">++ e_nm_device_wifi_get_hw_address(app_priv->ctx, dev->udi, cb_manager_wifi_get_hw_address, dev);</font>
<font color="#009900">++ e_nm_device_wifi_get_mode(app_priv->ctx, dev->udi, cb_manager_wifi_get_mode, dev);</font>
<font color="#009900">++ e_nm_device_wifi_get_bitrate(app_priv->ctx, dev->udi, cb_manager_wifi_get_bitrate, dev);</font>
<font color="#009900">++ e_nm_device_wifi_get_active_ap(app_priv->ctx, dev->udi, cb_manager_wifi_get_active_ap, dev);</font>
<font color="#009900">++ e_nm_device_wifi_get_wireless_caps(app_priv->ctx, dev->udi, cb_manager_wifi_get_wireless_caps, dev);</font>
<font color="#009900">++ e_nm_device_wifi_get_access_points(app_priv->ctx, dev->udi, cb_manager_wifi_aps, app_priv);</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++#if 0</font>
<font color="#009900">++ else if (dev->type == E_NM_DEVICE_TYPE_WIRED)</font>
<font color="#009900">++ {</font>
<font color="#009900">++ e_nm_device_wired_get_hw_address(app_priv->ctx, dev->udi, cb_manager_wired_get_hw_address, dev);</font>
<font color="#009900">++ /* FIXME: Why does the second call crash? Function does not matter */</font>
<font color="#009900">++        //e_nm_device_wired_get_speed(app_priv->ctx, dev->udi, cb_manager_wired_get_speed, dev);</font>
<font color="#009900">++ }</font>
<font color="#009900">++#endif</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++int</font>
<font color="#009900">++dump_device_info(void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("-- Informations from %s --\n", dev->interface);</font>
<font color="#009900">++ printf("Got udi: %s\n", dev->udi);</font>
<font color="#009900">++ printf("Got interface: %s\n", dev->interface);</font>
<font color="#009900">++ printf("Got driver: %s\n", dev->driver);</font>
<font color="#009900">++ printf("Got capabilities: %i\n", dev->capabilities);</font>
<font color="#009900">++ printf("Got IPv4 address: %i.%i.%i.%i\n",</font>
<font color="#009900">++         (dev->ip4address & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 8 ) & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 16) & 0xff),</font>
<font color="#009900">++         ((dev->ip4address >> 24) & 0xff)</font>
<font color="#009900">++         );</font>
<font color="#009900">++ printf("Got state: %i\n", dev->state);</font>
<font color="#009900">++ //printf("Got IPv4 config path: %s\n", dev->ip4config);</font>
<font color="#009900">++ printf("Got carrier: %i\n", dev->carrier);</font>
<font color="#009900">++ printf("Got type: %i (1 = ethernet, 2 = wireless)\n", dev->type);</font>
<font color="#009900">++ if (dev->type == E_NM_DEVICE_TYPE_WIRELESS)</font>
<font color="#009900">++ {</font>
<font color="#009900">++ }</font>
<font color="#009900">++ else if (dev->type == E_NM_DEVICE_TYPE_WIRED)</font>
<font color="#009900">++ {</font>
<font color="#009900">++ printf("Got wired hw address %s\n", dev->sub_device.wired.hwaddress);</font>
<font color="#009900">++ printf("Got wired speed %i\n", dev->sub_device.wired.speed);</font>
<font color="#009900">++ }</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_device_wifi.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- /dev/null        1970-01-01 00:00:00.000000000 +0000</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_device_wifi.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,234 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * This file defines functions that query each of the functions provided by</font>
<font color="#009900">++ * the org.freedesktop.NetworkManager.Device.Wireless DBus interface.</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++#include "E_Nm.h"</font>
<font color="#009900">++#include "e_nm_private.h"</font>
<font color="#009900">++#include <Ecore_Data.h></font>
<font color="#009900">++</font>
<font color="#009900">++#define DEVICE_WIFI_PROPS 6</font>
<font color="#009900">++</font>
<font color="#009900">++int dev_wifi_prop_counter = 0;</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get all access points seen on this devices.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * Returns an Ecore_List of dbus object paths for access points. This list is</font>
<font color="#009900">++ * of const char *, and is freed automatically after the callback returns.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ **/</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_access_points(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessage *msg;</font>
<font color="#009900">++ int ret;</font>
<font color="#009900">++ NM_Manager *app = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ app->cb_aps = cb_func;</font>
<font color="#009900">++</font>
<font color="#009900">++ msg = e_nm_device_wifi_call_new(device, "GetAccessPoints");</font>
<font color="#009900">++</font>
<font color="#009900">++ ret = e_dbus_method_call_send(ctx->conn, msg, cb_nm_string_list, fill_ap_properties, free_nm_string_list, -1, data) ? 1 : 0;</font>
<font color="#009900">++ dbus_message_unref(msg);</font>
<font color="#009900">++ return ret;</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the hw address of a NetworkManager wireless device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_hw_address(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wifi_properties_get(ctx->conn, device, "HwAddress", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the mode of a NetworkManager wireless device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_mode(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wifi_properties_get(ctx->conn, device, "Mode", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the bitrate of a NetworkManager wireless device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_bitrate(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wifi_properties_get(ctx->conn, device, "Bitrate", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the active ap of a NetworkManager wireless device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_active_ap(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wifi_properties_get(ctx->conn, device, "ActiveAccessPoint", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the wireless capabilities of a NetworkManager wireless device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wifi_get_wireless_caps(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wifi_properties_get(ctx->conn, device, "WirelessCapabilities", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wifi_get_hw_address(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *hw_address;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &hw_address);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wifi hw address: %s\n", hw_address);</font>
<font color="#009900">++#if 1</font>
<font color="#009900">++ dev->sub_device.wireless.hwaddress = hw_address;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_wifi_prop_counter++;</font>
<font color="#009900">++ if (dev_wifi_prop_counter == DEVICE_WIFI_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ fill_dev_special_properties(data);</font>
<font color="#009900">++         dev_wifi_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++#endif</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wifi_get_mode(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t mode;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &mode);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wifi mode: %i\n", mode);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wifi_get_bitrate(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t bitrate;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &bitrate);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wifi bitrate: %i\n", bitrate);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wifi_get_active_ap(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *active_ap;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &active_ap);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wifi active AP: %s\n", active_ap);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wifi_get_wireless_caps(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_uint32_t wifi_caps;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &wifi_caps);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wifi capabilities: %i\n", wifi_caps);</font>
<font color="#009900">++}</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_device_wired.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- /dev/null        1970-01-01 00:00:00.000000000 +0000</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_device_wired.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,104 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * This file defines functions that query each of the functions provided by</font>
<font color="#009900">++ * the org.freedesktop.NetworkManager.Device.Wired DBus interface.</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++#include "E_Nm.h"</font>
<font color="#009900">++#include "e_nm_private.h"</font>
<font color="#009900">++#include <Ecore_Data.h></font>
<font color="#009900">++</font>
<font color="#009900">++#define DEVICE_WIRED_PROPS 2</font>
<font color="#009900">++</font>
<font color="#009900">++int dev_wired_prop_counter = 0;</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the hw address of a NetworkManager wired device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wired_get_hw_address(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wired_properties_get(ctx->conn, device, "HwAddress", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the speed of a NetworkManager wired device.</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param device a NetworkManagr device to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_device_wired_get_speed(E_NM_Context *ctx, const char *device,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_device_wired_properties_get(ctx->conn, device, "Speed", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wired_get_hw_address(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ char *hw_address;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &hw_address);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wired hw address: %s\n", hw_address);</font>
<font color="#009900">++</font>
<font color="#009900">++ dev->sub_device.wired.hwaddress = hw_address;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_wired_prop_counter++;</font>
<font color="#009900">++ if (dev_wired_prop_counter == DEVICE_WIRED_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_device_info(dev);</font>
<font color="#009900">++         dev_wired_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++ dump_device_info(dev);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++void</font>
<font color="#009900">++cb_manager_wired_get_speed(void *data, void *reply, DBusError *err)</font>
<font color="#009900">++{</font>
<font color="#009900">++ DBusMessageIter iter, sub;</font>
<font color="#009900">++ E_NM_Device *dev = data;</font>
<font color="#009900">++ dbus_int32_t speed;</font>
<font color="#009900">++</font>
<font color="#009900">++        if (dbus_error_is_set(err))</font>
<font color="#009900">++ {</font>
<font color="#009900">++         printf("Error: %s - %s\n" ,err->name, err->message);</font>
<font color="#009900">++         return;</font>
<font color="#009900">++ }</font>
<font color="#009900">++</font>
<font color="#009900">++ dbus_message_iter_init(reply, &iter);</font>
<font color="#009900">++        dbus_message_iter_recurse(&iter, &sub);</font>
<font color="#009900">++ dbus_message_iter_get_basic(&sub, &speed);</font>
<font color="#009900">++</font>
<font color="#009900">++ printf("Wired speed: %i\n", speed);</font>
<font color="#009900">++</font>
<font color="#009900">++        dev->sub_device.wired.speed = speed;</font>
<font color="#009900">++</font>
<font color="#009900">++ dev_wired_prop_counter++;</font>
<font color="#009900">++ if (dev_wired_prop_counter == DEVICE_WIRED_PROPS)</font>
<font color="#009900">++        {</font>
<font color="#009900">++ dump_device_info(dev);</font>
<font color="#009900">++         dev_wired_prop_counter = 0;</font>
<font color="#009900">++        }</font>
<font color="#009900">++}</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/E_Nm.h</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/lib/nm/E_Nm.h        2008-05-04 05:44:07.000000000 +0200</font>
<font color="#009900">++++ e_dbus/src/lib/nm/E_Nm.h        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -26,25 +26,12 @@</font>
<font color="#009900">+ #endif</font>
<font color="#009900">+ </font>
<font color="#009900">+ typedef struct E_NM_Context E_NM_Context;</font>
<font color="#009900">++typedef struct NM_Manager NM_Manager;</font>
<font color="#009900">+ </font>
<font color="#009900">+ /**</font>
<font color="#009900">+ * Matching structs for the new "object" based DBus API</font>
<font color="#009900">+ * VPN is missing as this was still missing the redesign for the new 0.7 API</font>
<font color="#009900">+ */</font>
<font color="#009900">+-typedef struct E_NM_Device E_NM_Device;</font>
<font color="#009900">+-struct E_NM_Device</font>
<font color="#009900">+-{</font>
<font color="#009900">+- char *udi; /* object_path */</font>
<font color="#009900">+- char *interface;</font>
<font color="#009900">+- char *driver;</font>
<font color="#009900">+- uint capabilities;</font>
<font color="#009900">+- int ip4address;</font>
<font color="#009900">+- uint state;</font>
<font color="#009900">+- char *ip4config; /* object_path */</font>
<font color="#009900">+- int carrier;</font>
<font color="#009900">+- uint type;</font>
<font color="#009900">+-};</font>
<font color="#009900">+-</font>
<font color="#009900">+ typedef struct E_NM_Device_Wireless E_NM_Device_Wireless;</font>
<font color="#009900">+ struct E_NM_Device_Wireless</font>
<font color="#009900">+ {</font>
<font color="#009900">+@@ -62,6 +49,25 @@</font>
<font color="#009900">+ uint speed;</font>
<font color="#009900">+ };</font>
<font color="#009900">+ </font>
<font color="#009900">++typedef struct E_NM_Device E_NM_Device;</font>
<font color="#009900">++struct E_NM_Device</font>
<font color="#009900">++{</font>
<font color="#009900">++ char *udi; /* object_path */</font>
<font color="#009900">++ char *interface;</font>
<font color="#009900">++ char *driver;</font>
<font color="#009900">++ uint capabilities;</font>
<font color="#009900">++ int ip4address;</font>
<font color="#009900">++ uint state;</font>
<font color="#009900">++ char *ip4config; /* object_path */</font>
<font color="#009900">++ int carrier;</font>
<font color="#009900">++ uint type;</font>
<font color="#009900">++ union</font>
<font color="#009900">++ {</font>
<font color="#009900">++ E_NM_Device_Wired wired;</font>
<font color="#009900">++ E_NM_Device_Wireless wireless;</font>
<font color="#009900">++ } sub_device;</font>
<font color="#009900">++};</font>
<font color="#009900">++</font>
<font color="#009900">+ typedef struct E_NM_Access_Point E_NM_Access_Point;</font>
<font color="#009900">+ struct E_NM_Access_Point</font>
<font color="#009900">+ {</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_ip4config.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- /dev/null        1970-01-01 00:00:00.000000000 +0000</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_ip4config.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -0,0 +1,161 @@</font>
<font color="#009900">++/*</font>
<font color="#009900">++ * This file defines functions that query each of the functions provided by</font>
<font color="#009900">++ * the org.freedesktop.NetworkManager.IP4Config DBus interface.</font>
<font color="#009900">++ */</font>
<font color="#009900">++</font>
<font color="#009900">++#include "E_Nm.h"</font>
<font color="#009900">++#include "e_nm_private.h"</font>
<font color="#009900">++#include <Ecore_Data.h></font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the address of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_address(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Address", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the gateway of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_gateway(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Gateway", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the netmask of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_netmask(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Netmask", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the broadcast of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_Broadcast(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Broadcast", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the hostname of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_hostname(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Hostname", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the nameservers of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_nameservers(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Nameservers", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the domains of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_domains(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "Domains", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the NIS domain of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_nisdomains(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "NisDomain", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Get the NIS servers of a NetworkManager IP4Config</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param config a NetworkManager config to communicate with</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_ip4config_get_nisservers(E_NM_Context *ctx, const char *config,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_ip4config_properties_get(ctx->conn, config, "NisServers", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_manager.c</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/lib/nm/e_nm_manager.c        2008-03-09 17:08:42.000000000 +0100</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_manager.c        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -17,60 +17,77 @@</font>
<font color="#009900">+ {</font>
<font color="#009900">+ DBusMessage *msg;</font>
<font color="#009900">+ int ret;</font>
<font color="#009900">++ NM_Manager *app = data;</font>
<font color="#009900">++</font>
<font color="#009900">++ app->cb_devices = cb_func;</font>
<font color="#009900">+ </font>
<font color="#009900">+ msg = e_nm_manager_call_new("GetDevices");</font>
<font color="#009900">+ </font>
<font color="#009900">+- ret = e_dbus_method_call_send(ctx->conn, msg, cb_nm_string_list, cb_func, free_nm_string_list, -1, data) ? 1 : 0;</font>
<font color="#009900">++ ret = e_dbus_method_call_send(ctx->conn, msg, cb_nm_string_list, fill_dev_properties, free_nm_string_list, -1, data) ? 1 : 0;</font>
<font color="#009900">+ dbus_message_unref(msg);</font>
<font color="#009900">+ return ret;</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ </font>
<font color="#009900">+ /**</font>
<font color="#009900">+- * Find the active device that NM has chosen</font>
<font color="#009900">+- * </font>
<font color="#009900">+- * Returns a single string containing the dbus path to the active device</font>
<font color="#009900">++ * Check if wireless is enabled in NetworkManager</font>
<font color="#009900">+ *</font>
<font color="#009900">+ * @param ctx an e_nm context</font>
<font color="#009900">+ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">+ * @param data user data to pass to the callback function</font>
<font color="#009900">+- **/</font>
<font color="#009900">++ */</font>
<font color="#009900">+ EAPI int</font>
<font color="#009900">+-e_nm_get_active_device(E_NM_Context *ctx, E_DBus_Callback_Func cb_func,</font>
<font color="#009900">+- void *data)</font>
<font color="#009900">++e_nm_manager_get_wireless_enabled(E_NM_Context *ctx,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">+ {</font>
<font color="#009900">+- return e_nm_get_from_nm(ctx, cb_func, data,</font>
<font color="#009900">+- "getActiveDevice", DBUS_TYPE_STRING);</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_manager_properties_get(ctx->conn, "WirelessEnabled", cb_func, data);</font>
<font color="#009900">+ }</font>
<font color="#009900">+ </font>
<font color="#009900">+ </font>
<font color="#009900">+ /**</font>
<font color="#009900">+- * Query the current state of the network</font>
<font color="#009900">+- * </font>
<font color="#009900">+- * Returns a single string containing the status:</font>
<font color="#009900">+- *</font>
<font color="#009900">+- * "connecting": there is a pending network connection (waiting for a DHCP</font>
<font color="#009900">+- * request to complete, waiting for an encryption</font>
<font color="#009900">+- * key/passphrase, waiting for a wireless network, etc)</font>
<font color="#009900">+- *</font>
<font color="#009900">+- * "connected": there is an active network connection</font>
<font color="#009900">+- *</font>
<font color="#009900">+- * "scanning": there is no active network connection, but NetworkManager</font>
<font color="#009900">+- * is looking for an access point to associate with</font>
<font color="#009900">+- *</font>
<font color="#009900">+- * "disconnected": there is no network connection</font>
<font color="#009900">+- * </font>
<font color="#009900">++ * Disable wireless in NetworkManager</font>
<font color="#009900">+ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_manager_set_wireless_enabled(E_NM_Context *ctx,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ //e_nm_manager_properties_get(ctx->conn, "WirelessEnabled", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">++</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * Check if wireless is hardware enabled in NetworkManager</font>
<font color="#009900">+ *</font>
<font color="#009900">+ * @param ctx an e_nm context</font>
<font color="#009900">+ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">+ * @param data user data to pass to the callback function</font>
<font color="#009900">+- **/</font>
<font color="#009900">++ */</font>
<font color="#009900">+ EAPI int</font>
<font color="#009900">+-e_nm_status(E_NM_Context *ctx, E_DBus_Callback_Func cb_func,</font>
<font color="#009900">+- void *data)</font>
<font color="#009900">++e_nm_manager_get_wireless_hw_enabled(E_NM_Context *ctx,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">+ {</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_manager_properties_get(ctx->conn, "WirelessHardwareEnabled", cb_func, data);</font>
<font color="#009900">++}</font>
<font color="#009900">+ </font>
<font color="#009900">+- return e_nm_get_from_nm(ctx, cb_func, data,</font>
<font color="#009900">+- "status", DBUS_TYPE_STRING);</font>
<font color="#009900">++</font>
<font color="#009900">++/**</font>
<font color="#009900">++ * State of NetworkManager</font>
<font color="#009900">++ *</font>
<font color="#009900">++ * @param ctx an e_nm context</font>
<font color="#009900">++ * @param cb a callback, used when the method returns (or an error is received)</font>
<font color="#009900">++ * @param data user data to pass to the callback function</font>
<font color="#009900">++ */</font>
<font color="#009900">++EAPI int</font>
<font color="#009900">++e_nm_manager_get_state(E_NM_Context *ctx,</font>
<font color="#009900">++ E_DBus_Callback_Func cb_func, void *data)</font>
<font color="#009900">++{</font>
<font color="#009900">++ /* FIXME: Decide how to handle the return value for this functions */</font>
<font color="#009900">++ e_nm_manager_properties_get(ctx->conn, "State", cb_func, data);</font>
<font color="#009900">+ }</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/e_nm_private.h</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/lib/nm/e_nm_private.h        2008-03-25 19:22:01.000000000 +0100</font>
<font color="#009900">++++ e_dbus/src/lib/nm/e_nm_private.h        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -14,10 +14,22 @@</font>
<font color="#009900">+ </font>
<font color="#009900">+ #define e_nm_device_call_new(path, member) dbus_message_new_method_call(E_NM_SERVICE, path, E_NM_INTERFACE_DEVICE, member)</font>
<font color="#009900">+ </font>
<font color="#009900">++#define e_nm_device_wifi_call_new(path, member) dbus_message_new_method_call(E_NM_SERVICE, path, E_NM_INTERFACE_DEVICE_WIRELESS, member)</font>
<font color="#009900">++</font>
<font color="#009900">+ #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)</font>
<font color="#009900">+ </font>
<font color="#009900">+ #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)</font>
<font color="#009900">+ </font>
<font color="#009900">++#define e_nm_device_wifi_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE_WIRELESS, prop, (E_DBus_Method_Return_Cb) cb, data)</font>
<font color="#009900">++</font>
<font color="#009900">++#define e_nm_device_wired_properties_get(con, dev, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, dev, E_NM_INTERFACE_DEVICE_WIRED, prop, (E_DBus_Method_Return_Cb) cb, data)</font>
<font color="#009900">++</font>
<font color="#009900">++#define e_nm_manager_properties_get(con, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, E_NM_PATH_NETWORK_MANAGER, E_NM_INTERFACE_NETWORK_MANAGER, prop, (E_DBus_Method_Return_Cb) cb, data)</font>
<font color="#009900">++</font>
<font color="#009900">++#define e_nm_ip4config_properties_get(con, config, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, config, E_NM_INTERFACE_IP4CONFIG, prop, (E_DBus_Method_Return_Cb) cb, data)</font>
<font color="#009900">++</font>
<font color="#009900">++#define e_nm_ap_properties_get(con, ap, prop, cb, data) e_dbus_properties_get(con, E_NM_SERVICE, ap, E_NM_INTERFACE_ACCESSPOINT, prop, (E_DBus_Method_Return_Cb) cb, data)</font>
<font color="#009900">++</font>
<font color="#009900">+ struct E_NM_Context</font>
<font color="#009900">+ {</font>
<font color="#009900">+ E_DBus_Connection *conn;</font>
<font color="#009900">+@@ -32,6 +44,16 @@</font>
<font color="#009900">+ void *data_manager_device_removed;</font>
<font color="#009900">+ };</font>
<font color="#009900">+ </font>
<font color="#009900">++struct NM_Manager</font>
<font color="#009900">++{</font>
<font color="#009900">++ E_NM_Context *ctx;</font>
<font color="#009900">++ Ecore_List *devices;</font>
<font color="#009900">++ Ecore_List *aps;</font>
<font color="#009900">++</font>
<font color="#009900">++ E_DBus_Callback_Func cb_devices;</font>
<font color="#009900">++ E_DBus_Callback_Func cb_aps;</font>
<font color="#009900">++};</font>
<font color="#009900">++</font>
<font color="#009900">+ </font>
<font color="#009900">+ int e_nm_get_from_nm(E_NM_Context *ctx, E_DBus_Callback_Func cb_func, void *data,</font>
<font color="#009900">+ const char *method, int rettype);</font>
<font color="#009900">+@@ -39,6 +61,8 @@</font>
<font color="#009900">+ E_DBus_Callback_Func cb_func, void *data,</font>
<font color="#009900">+ const char *method, int rettype);</font>
<font color="#009900">+ </font>
<font color="#009900">++void fill_dev_properties(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void fill_ap_properties(void *data, void *reply, DBusError *err);</font>
<font color="#009900">+ void *cb_nm_generic(DBusMessage *msg, DBusError *err);</font>
<font color="#009900">+ void free_nm_generic(void *data);</font>
<font color="#009900">+ void *cb_nm_int32(DBusMessage *msg, DBusError *err);</font>
<font color="#009900">+@@ -47,4 +71,13 @@</font>
<font color="#009900">+ void *cb_nm_boolean(DBusMessage *msg, DBusError *err);</font>
<font color="#009900">+ void *cb_nm_string_list(DBusMessage *msg, DBusError *err);</font>
<font color="#009900">+ void free_nm_string_list(void *data);</font>
<font color="#009900">++</font>
<font color="#009900">++void cb_manager_wifi_get_hw_address(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wifi_get_mode(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wifi_get_bitrate(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wifi_get_active_ap(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wifi_get_wireless_caps(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wifi_aps(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wired_get_hw_address(void *data, void *reply, DBusError *err);</font>
<font color="#009900">++void cb_manager_wired_get_speed(void *data, void *reply, DBusError *err);</font>
<font color="#009900">+ #endif</font>
<font color="#009900">+Index: e_dbus/src/lib/nm/Makefile.am</font>
<font color="#009900">+===================================================================</font>
<font color="#009900">+--- e_dbus.orig/src/lib/nm/Makefile.am        2008-01-18 16:09:00.000000000 +0100</font>
<font color="#009900">++++ e_dbus/src/lib/nm/Makefile.am        2008-05-19 15:05:08.000000000 +0200</font>
<font color="#009900">+@@ -14,7 +14,10 @@</font>
<font color="#009900">+ e_nm.c \</font>
<font color="#009900">+ e_nm_manager.c \</font>
<font color="#009900">+ e_nm_device.c \</font>
<font color="#009900">+-e_nm_network.c \</font>
<font color="#009900">++e_nm_device_wifi.c \</font>
<font color="#009900">++e_nm_device_wired.c \</font>
<font color="#009900">++e_nm_ip4config.c \</font>
<font color="#009900">++e_nm_access_point.c \</font>
<font color="#009900">+ e_nm_util.c</font>
<font color="#009900">+ </font>
<font color="#009900">+ </font>
============================================================
<font color="#FF6600">--- packages/efl1/edbus_cvs.bb        ecd6cb444aeac48cd019c31f15055fb2cca6157a</font>
<font color="#009900">+++ packages/efl1/edbus_cvs.bb        d82002b6ed9027913c726863ac1b51c43ca64969</font>
<font color="#0000FF">@@ -7,7 +7,8 @@ SRC_URI = "${E_CVS};module=e17/libs/e_db</font>
inherit efl
SRC_URI = "${E_CVS};module=e17/libs/e_dbus \
<font color="#FF6600">- http://people.openmoko.org/stefan/e_nm-big-hack.patch;patch=1;pnum=1;mindate=20080330 \</font>
<font color="#009900">+ http://people.openmoko.org/stefan/e_nm-big-hack.patch;patch=1;pnum=1;mindate=20080330;maxdate=20080518 \</font>
<font color="#009900">+ file://e_nm-big-hack.patch;patch=1;mindate=20080519 \</font>
                        "
S = "${WORKDIR}/e_dbus"
</tt></pre>