diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2007-06-07 10:57:21 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2007-06-07 10:57:21 +0000 |
commit | c5acb02af37c52f61cc73b2025880994497c2bb8 (patch) | |
tree | 6255e401a69406e80ddca1b3b5274403cf612ad1 /hcid/dbus-adapter.c | |
parent | 6ad0aa23b611cd6f3a3ae578ba0082221d4316af (diff) |
Add method for retrieving the list of supported adapter modes
Diffstat (limited to 'hcid/dbus-adapter.c')
-rw-r--r-- | hcid/dbus-adapter.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/hcid/dbus-adapter.c b/hcid/dbus-adapter.c index 1dfe1f6c..0f6d680a 100644 --- a/hcid/dbus-adapter.c +++ b/hcid/dbus-adapter.c @@ -457,6 +457,34 @@ static DBusHandlerResult adapter_get_company(DBusConnection *conn, return send_message_and_unref(conn, reply); } +static DBusHandlerResult adapter_list_modes(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter; + DBusMessageIter array_iter; + const char *mode_ptr[] = { "off", "connectable", "discoverable", "limited" }; + int i; + + if (!dbus_message_has_signature(msg, DBUS_TYPE_INVALID_AS_STRING)) + return error_invalid_arguments(conn, msg); + + reply = dbus_message_new_method_return(msg); + if (!reply) + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + dbus_message_iter_init_append(reply, &iter); + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_TYPE_STRING_AS_STRING, &array_iter); + for (i = 0; i < 4; i++) + dbus_message_iter_append_basic(&array_iter, DBUS_TYPE_STRING, + &mode_ptr[i]); + + dbus_message_iter_close_container(&iter, &array_iter); + + return send_message_and_unref(conn, reply); +} + static DBusHandlerResult adapter_get_mode(DBusConnection *conn, DBusMessage *msg, void *data) { @@ -3069,6 +3097,8 @@ static DBusMethodVTable adapter_methods[] = { "", "s" }, { "GetCompany", adapter_get_company, "", "s" }, + { "ListAvailableModes", adapter_list_modes, + "", "as" }, { "GetMode", adapter_get_mode, "", "s" }, { "SetMode", adapter_set_mode, @@ -3099,7 +3129,7 @@ static DBusMethodVTable adapter_methods[] = { "", "s" }, { "SetName", adapter_set_name, "s", "" }, - + { "GetRemoteInfo", adapter_get_remote_info, "s", "{sv}" }, { "GetRemoteServiceRecord", adapter_get_remote_svc, @@ -3227,4 +3257,3 @@ dbus_bool_t adapter_init(DBusConnection *conn, const char *path) adapter_methods, adapter_signals, NULL); } - |