diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-05-27 08:10:10 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-05-27 08:10:10 +0000 |
commit | 0e07fdd871947eea8d082b094494358c49596d0f (patch) | |
tree | d99e2cea77fedbd5b7ce107dd9537385fe35ff25 /hcid | |
parent | e7bf43c753dda82371be083bdb063a96767576eb (diff) |
First attempt to use the new interface helpers
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/manager.c | 78 |
1 files changed, 41 insertions, 37 deletions
diff --git a/hcid/manager.c b/hcid/manager.c index be92b1b3..6d84d4b5 100644 --- a/hcid/manager.c +++ b/hcid/manager.c @@ -356,32 +356,34 @@ static DBusSignalVTable old_manager_signals[] = { { NULL, NULL } }; -static DBusHandlerResult default_adapter(DBusConnection *conn, - DBusMessage *msg, void *data) +static DBusMessage *default_adapter(DBusConnection *conn, + DBusMessage *msg, void *data) { DBusMessage *reply; char path[MAX_PATH_LENGTH], *path_ptr = path; if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING)) - return error_invalid_arguments(conn, msg, NULL); + // FIXME return error_invalid_arguments(conn, msg, NULL); + return NULL; if (default_adapter_id < 0) - return error_no_such_adapter(conn, msg); + // FIXME return error_no_such_adapter(conn, msg); + return NULL; reply = dbus_message_new_method_return(msg); if (!reply) - return DBUS_HANDLER_RESULT_NEED_MEMORY; + return NULL; snprintf(path, sizeof(path), "/hci%d", default_adapter_id); dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &path_ptr, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); - return send_message_and_unref(conn, reply); + return reply; } -static DBusHandlerResult find_adapter(DBusConnection *conn, - DBusMessage *msg, void *data) +static DBusMessage *find_adapter(DBusConnection *conn, + DBusMessage *msg, void *data) { DBusMessage *reply; char path[MAX_PATH_LENGTH], *path_ptr = path; @@ -392,7 +394,8 @@ static DBusHandlerResult find_adapter(DBusConnection *conn, if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &pattern, DBUS_TYPE_INVALID)) - return error_invalid_arguments(conn, msg, NULL); + // FIXME return error_invalid_arguments(conn, msg, NULL); + return NULL; /* hci_devid() would make sense to use here, except it is restricted to devices which are up */ @@ -402,28 +405,31 @@ static DBusHandlerResult find_adapter(DBusConnection *conn, dev_id = find_by_address(pattern); if (dev_id < 0) - return error_no_such_adapter(conn, msg); + // FIXME return error_no_such_adapter(conn, msg); + return NULL; if (hci_devinfo(dev_id, &di) < 0) - return error_no_such_adapter(conn, msg); + // FIXME return error_no_such_adapter(conn, msg); + return NULL; if (hci_test_bit(HCI_RAW, &di.flags)) - return error_no_such_adapter(conn, msg); + // FIXME return error_no_such_adapter(conn, msg); + return NULL; reply = dbus_message_new_method_return(msg); if (!reply) - return DBUS_HANDLER_RESULT_NEED_MEMORY; + return NULL; snprintf(path, sizeof(path), "/hci%d", dev_id); dbus_message_append_args(reply, DBUS_TYPE_OBJECT_PATH, &path_ptr, - DBUS_TYPE_INVALID); + DBUS_TYPE_INVALID); - return send_message_and_unref(conn, reply); + return reply; } -static DBusHandlerResult list_adapters(DBusConnection *conn, - DBusMessage *msg, void *data) +static DBusMessage *list_adapters(DBusConnection *conn, + DBusMessage *msg, void *data) { DBusMessageIter iter; DBusMessageIter array_iter; @@ -432,12 +438,10 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, struct hci_dev_req *dr; int i, sk; - if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING)) - return error_invalid_arguments(conn, msg, NULL); - sk = socket(AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI); if (sk < 0) - return error_failed_errno(conn, msg, errno); + // FIXME return error_failed_errno(conn, msg, errno); + return NULL; dl = g_malloc0(HCI_MAX_DEV * sizeof(*dr) + sizeof(*dl)); @@ -445,10 +449,11 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, dr = dl->dev_req; if (ioctl(sk, HCIGETDEVLIST, dl) < 0) { - int err = errno; + //int err = errno; close(sk); g_free(dl); - return error_failed_errno(conn, msg, err); + // FIXME return error_failed_errno(conn, msg, err); + return NULL; } dr = dl->dev_req; @@ -457,7 +462,7 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, if (!reply) { close(sk); g_free(dl); - return DBUS_HANDLER_RESULT_NEED_MEMORY; + return NULL; } dbus_message_iter_init_append(reply, &iter); @@ -487,31 +492,30 @@ static DBusHandlerResult list_adapters(DBusConnection *conn, close(sk); - return send_message_and_unref(conn, reply); + return reply; } -static DBusMethodVTable manager_methods[] = { - { "DefaultAdapter", default_adapter, "", "o" }, - { "FindAdapter", find_adapter, "s", "o" }, - { "ListAdapters", list_adapters, "", "ao" }, - { NULL, NULL, NULL, NULL } +static GDBusMethodTable manager_methods[] = { + { "DefaultAdapter", "", "o", default_adapter }, + { "FindAdapter", "s", "o", find_adapter }, + { "ListAdapters", "", "ao", list_adapters }, + { } }; -static DBusSignalVTable manager_signals[] = { +static GDBusSignalTable manager_signals[] = { { "AdapterAdded", "o" }, { "AdapterRemoved", "o" }, { "DefaultAdapterChanged", "o" }, - { NULL, NULL } + { } }; dbus_bool_t manager_init(DBusConnection *conn, const char *path) { if (hcid_dbus_use_experimental()) { debug("Registering experimental manager interface"); - dbus_connection_register_interface(conn, "/", - MANAGER_INTERFACE, - manager_methods, - manager_signals, NULL); + g_dbus_register_interface(conn, "/", MANAGER_INTERFACE, + manager_methods, manager_signals, NULL, + NULL, NULL); } return dbus_connection_register_interface(conn, path, |