diff options
author | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-13 19:07:02 +0000 |
---|---|---|
committer | Claudio Takahasi <claudio.takahasi@openbossa.org> | 2007-08-13 19:07:02 +0000 |
commit | e375ab2250d99fcb1d188541001fc4fb8c5aa4c7 (patch) | |
tree | 281d112c7813484a05969e26f66a8779a3ab4093 /serial/manager.c | |
parent | 47b21533a202883df227a106b2838b172d8a81f5 (diff) |
serial: added proxy GetInfo implementation
Diffstat (limited to 'serial/manager.c')
-rw-r--r-- | serial/manager.c | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/serial/manager.c b/serial/manager.c index cd83bfe2..39da4ab5 100644 --- a/serial/manager.c +++ b/serial/manager.c @@ -1273,7 +1273,56 @@ static DBusHandlerResult proxy_disable(DBusConnection *conn, static DBusHandlerResult proxy_get_info(DBusConnection *conn, DBusMessage *msg, void *data) { - return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + struct proxy *prx = data; + DBusMessage *reply; + DBusMessageIter iter, dict; + dbus_bool_t boolean; + char uuid_str[MAX_LEN_UUID_STR]; + char bda[18]; + const char *pstr; + + 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); + + sdp_uuid2strn(&prx->uuid, uuid_str, MAX_LEN_UUID_STR); + pstr = uuid_str; + dbus_message_iter_append_dict_entry(&dict, "uuid", + DBUS_TYPE_STRING, &pstr); + + dbus_message_iter_append_dict_entry(&dict, "tty", + DBUS_TYPE_STRING, &prx->tty); + + if (prx->channel) + dbus_message_iter_append_dict_entry(&dict, "channel", + DBUS_TYPE_BYTE, &prx->channel); + + boolean = (prx->listen_watch ? TRUE : FALSE); + dbus_message_iter_append_dict_entry(&dict, "enabled", + DBUS_TYPE_BOOLEAN, &boolean); + + boolean = (prx->rfcomm_watch ? TRUE : FALSE); + dbus_message_iter_append_dict_entry(&dict, "connected", + DBUS_TYPE_BOOLEAN, &boolean); + + /* If connected: append the remote address */ + if (boolean) { + ba2str(&prx->dst, bda); + pstr = bda; + dbus_message_iter_append_dict_entry(&dict, "address", + DBUS_TYPE_STRING, &pstr); + } + + dbus_message_iter_close_container(&iter, &dict); + + return send_message_and_unref(conn, reply); } static DBusMethodVTable proxy_methods[] = { |