diff options
author | Szymon Janc <szymon.janc@codecoup.pl> | 2017-12-07 12:43:44 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@codecoup.pl> | 2017-12-14 10:08:32 +0100 |
commit | 1dade008111247167bbc36cef3e018e02c7e6e3d (patch) | |
tree | 793c7bdf04ecd379cd551efe58e12c9e24c66475 /tools/btpclient.c | |
parent | 10e3523e6c9907ee4c57c103c26cc61d999c4a62 (diff) | |
download | bluez-1dade008111247167bbc36cef3e018e02c7e6e3d.tar.gz |
tools/btpclient: Get initial values for adapter setttings
Diffstat (limited to 'tools/btpclient.c')
-rw-r--r-- | tools/btpclient.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tools/btpclient.c b/tools/btpclient.c index d4b4601bd..b0bc0ab30 100644 --- a/tools/btpclient.c +++ b/tools/btpclient.c @@ -325,6 +325,49 @@ static void btp_device_free(struct btp_device *device) l_free(device); } +static void extract_settings(struct l_dbus_proxy *proxy, uint32_t *current, + uint32_t *supported) +{ + bool prop; + + *supported = 0; + *current = 0; + + /* TODO not all info is available via D-Bus API */ + *supported |= BTP_GAP_SETTING_POWERED; + *supported |= BTP_GAP_SETTING_CONNECTABLE; + *supported |= BTP_GAP_SETTING_DISCOVERABLE; + *supported |= BTP_GAP_SETTING_BONDABLE; + *supported |= BTP_GAP_SETTING_SSP; + *supported |= BTP_GAP_SETTING_BREDR; + *supported |= BTP_GAP_SETTING_LE; + *supported |= BTP_GAP_SETTING_ADVERTISING; + *supported |= BTP_GAP_SETTING_SC; + *supported |= BTP_GAP_SETTING_PRIVACY; + /* *supported |= BTP_GAP_SETTING_STATIC_ADDRESS; */ + + /* TODO not all info is availbe via D-Bus API so some are assumed to be + * enabled by bluetoothd or simply hardcoded until API is extended + */ + *current |= BTP_GAP_SETTING_CONNECTABLE; + *current |= BTP_GAP_SETTING_SSP; + *current |= BTP_GAP_SETTING_BREDR; + *current |= BTP_GAP_SETTING_LE; + *current |= BTP_GAP_SETTING_PRIVACY; + *current |= BTP_GAP_SETTING_SC; + /* *supported |= BTP_GAP_SETTING_STATIC_ADDRESS; */ + + if (l_dbus_proxy_get_property(proxy, "Powered", "b", &prop) && prop) + *current |= BTP_GAP_SETTING_POWERED; + + if (l_dbus_proxy_get_property(proxy, "Discoverable", "b", &prop) && + prop) + *current |= BTP_GAP_SETTING_DISCOVERABLE; + + if (l_dbus_proxy_get_property(proxy, "Pairable", "b", &prop) && prop) + *current |= BTP_GAP_SETTING_BONDABLE; +} + static void proxy_added(struct l_dbus_proxy *proxy, void *user_data) { const char *interface = l_dbus_proxy_get_interface(proxy); @@ -339,6 +382,9 @@ static void proxy_added(struct l_dbus_proxy *proxy, void *user_data) adapter->proxy = proxy; adapter->index = l_queue_length(adapters); + extract_settings(proxy, &adapter->current_settings, + &adapter->supported_settings); + l_queue_push_tail(adapters, adapter); return; } |