diff options
-rw-r--r-- | src/adapter.c | 48 | ||||
-rw-r--r-- | src/near.h | 3 |
2 files changed, 50 insertions, 1 deletions
diff --git a/src/adapter.c b/src/adapter.c index 6f10679..eac1900 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -23,6 +23,10 @@ #include <config.h> #endif +#include <stdio.h> +#include <stdlib.h> +#include <errno.h> + #include <glib.h> #include "near.h" @@ -31,6 +35,10 @@ static GSList *adapter_list = NULL; struct near_adapter { char *path; + + char *name; + guint32 idx; + guint32 protocols; }; static void append_path(gpointer value, gpointer user_data) @@ -38,11 +46,14 @@ static void append_path(gpointer value, gpointer user_data) struct near_adapter *adapter = value; DBusMessageIter *iter = user_data; + DBG("%s", adapter->path); + if (adapter->path == NULL) return; dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &adapter->path); + } void __near_adapter_list(DBusMessageIter *iter, void *user_data) @@ -50,6 +61,31 @@ void __near_adapter_list(DBusMessageIter *iter, void *user_data) g_slist_foreach(adapter_list, append_path, iter); } +int __near_adapter_create(const char *name, guint32 idx, guint32 protocols) +{ + struct near_adapter *adapter; + + DBG("name %s idx %d", name, idx); + + adapter = g_try_malloc0(sizeof(struct near_adapter)); + if (adapter == NULL) + return -ENOMEM; + + adapter->name = g_strdup(name); + if (adapter->name == NULL) { + g_free(adapter); + return -ENOMEM; + } + adapter->idx = idx; + adapter->protocols = protocols; + + adapter->path = g_strdup_printf("%s_%d", name, idx); + + adapter_list = g_slist_append(adapter_list, adapter); + + return 0; +} + int __near_adapter_init(void) { DBG(""); @@ -59,4 +95,16 @@ int __near_adapter_init(void) void __near_adapter_cleanup(void) { + GSList *list; + struct near_adapter *adapter; + + for (list = adapter_list; list; list = list->next) { + adapter = list->data; + + g_free(adapter->name); + g_free(adapter->path); + g_free(adapter); + } + + g_slist_free(adapter_list); } @@ -55,9 +55,10 @@ DBusMessage *__near_error_invalid_property(DBusMessage *msg); int __near_manager_init(DBusConnection *conn); void __near_manager_cleanup(void); +int __near_adapter_create(const char *name, guint32 idx, guint32 protocols); +void __near_adapter_list(DBusMessageIter *iter, void *user_data); int __near_adapter_init(void); void __near_adapter_cleanup(void); -void __near_adapter_list(DBusMessageIter *iter, void *user_data); int __near_netlink_init(void); void __near_netlink_cleanup(void); |