diff options
author | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-03-10 14:59:45 +0000 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.dentz@openbossa.org> | 2008-03-10 14:59:45 +0000 |
commit | 2d77680a915812ab703f653bf76b378e86d36414 (patch) | |
tree | 92137a0caf8f1759c43e338e5c53a01ff3158446 /hcid | |
parent | 223a14dbbbec152492e3c969c95901303f958d23 (diff) |
Intial adapter GetProperties implementation.
Diffstat (limited to 'hcid')
-rw-r--r-- | hcid/adapter.c | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c index 77d0b0f8..83a575b6 100644 --- a/hcid/adapter.c +++ b/hcid/adapter.c @@ -3139,7 +3139,59 @@ static void do_append_device(struct device *device, DBusMessageIter *iter) static DBusHandlerResult get_properties(DBusConnection *conn, DBusMessage *msg, void *data) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + struct adapter *adapter = data; + const char *property; + DBusMessage *reply; + DBusMessageIter iter; + DBusMessageIter dict; + bdaddr_t ba; + char str[249]; + + if (check_address(adapter->address) < 0) + return error_not_ready(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_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); + + /* Address */ + property = adapter->address; + dbus_message_iter_append_dict_entry(&dict, "Address", + DBUS_TYPE_STRING, &property); + + /* Name */ + memset(str, 0, sizeof(str)); + property = str; + str2ba(adapter->address, &ba); + + if (!read_local_name(&ba, str)) + dbus_message_iter_append_dict_entry(&dict, "Name", + DBUS_TYPE_STRING, &property); + + /* Mode */ + property = mode2str(adapter->mode); + + dbus_message_iter_append_dict_entry(&dict, "Mode", + DBUS_TYPE_STRING, &property); + + /* DiscoverableTimeout */ + dbus_message_iter_append_dict_entry(&dict, "DiscoverableTimeout", + DBUS_TYPE_UINT32, &adapter->discov_timeout); + + /* PeriodicDiscovery */ + dbus_message_iter_append_dict_entry(&dict, "PeriodicDiscovery", + DBUS_TYPE_BOOLEAN, &adapter->pdiscov_active); + + dbus_message_iter_close_container(&iter, &dict); + + return send_message_and_unref(conn, reply); } static DBusHandlerResult set_property(DBusConnection *conn, |