This change will enable the MGMT_SETTING_WIDEBAND_SPEECH setting and implement the adapter property to allow higher level profile implementations to know if the adapter supports and has the feature enabled. --- src/adapter.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 972d88772..02c5f7e1c 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3424,6 +3424,15 @@ static DBusMessage *connect_device(DBusConnection *conn, return NULL; } +static gboolean property_get_wideband_speech_enabled( + const GDBusPropertyTable *property, + DBusMessageIter *iter, void *user_data) +{ + struct btd_adapter *adapter = user_data; + + return property_get_mode(adapter, MGMT_SETTING_WIDEBAND_SPEECH, iter); +} + static const GDBusMethodTable adapter_methods[] = { { GDBUS_ASYNC_METHOD("StartDiscovery", NULL, NULL, start_discovery) }, { GDBUS_METHOD("SetDiscoveryFilter", @@ -3459,6 +3468,7 @@ static const GDBusPropertyTable adapter_properties[] = { { "UUIDs", "as", property_get_uuids }, { "Modalias", "s", property_get_modalias, NULL, property_exists_modalias }, + { "WidebandSpeechEnabled", "b", property_get_wideband_speech_enabled }, { } }; @@ -8808,6 +8818,8 @@ static void read_info_complete(uint8_t status, uint16_t length, set_mode(adapter, MGMT_OP_SET_LE, 0x01); if (missing_settings & MGMT_SETTING_BREDR) set_mode(adapter, MGMT_OP_SET_BREDR, 0x01); + if (missing_settings & MGMT_SETTING_WIDEBAND_SPEECH) + set_mode(adapter, MGMT_OP_SET_WIDEBAND_SPEECH, 0x01); break; case BT_MODE_BREDR: if (!(adapter->supported_settings & MGMT_SETTING_BREDR)) { @@ -8822,6 +8834,8 @@ static void read_info_complete(uint8_t status, uint16_t length, set_mode(adapter, MGMT_OP_SET_BREDR, 0x01); if (adapter->current_settings & MGMT_SETTING_LE) set_mode(adapter, MGMT_OP_SET_LE, 0x00); + if (missing_settings & MGMT_SETTING_WIDEBAND_SPEECH) + set_mode(adapter, MGMT_OP_SET_WIDEBAND_SPEECH, 0x01); break; case BT_MODE_LE: if (!(adapter->supported_settings & MGMT_SETTING_LE)) { -- 2.26.0.292.g33ef6b2f38-goog