bluez5: backend-native: update HFP SDP records

Advertise SWB since we implement it.  Update HFP version to 1.9
accordingly.
This commit is contained in:
Pauli Virtanen 2024-10-30 18:48:45 +02:00
parent c5e57a062d
commit 73488ee338
2 changed files with 29 additions and 17 deletions

View file

@ -2538,6 +2538,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha
/* We announce wideband speech support anyway */ /* We announce wideband speech support anyway */
features = SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH; features = SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH;
#ifdef HAVE_LC3
features |= SPA_BT_HFP_SDP_AG_FEATURE_SUPER_WIDEBAND_SPEECH;
#endif
dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]);
dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str);
dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]);
@ -2545,9 +2548,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha
dbus_message_iter_close_container(&it[2], &it[3]); dbus_message_iter_close_container(&it[2], &it[3]);
dbus_message_iter_close_container(&it[1], &it[2]); dbus_message_iter_close_container(&it[1], &it[2]);
/* HFP version 1.7 */ /* HFP version 1.9 */
str = "Version"; str = "Version";
version = 0x0107; version = 0x0109;
dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]);
dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str);
dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]);
@ -2559,6 +2562,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha
/* We announce wideband speech support anyway */ /* We announce wideband speech support anyway */
features = SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH; features = SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH;
#ifdef HAVE_LC3
features |= SPA_BT_HFP_SDP_HF_FEATURE_SUPER_WIDEBAND_SPEECH;
#endif
dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]);
dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str);
dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]);
@ -2566,9 +2572,9 @@ static int register_profile(struct impl *backend, const char *profile, const cha
dbus_message_iter_close_container(&it[2], &it[3]); dbus_message_iter_close_container(&it[2], &it[3]);
dbus_message_iter_close_container(&it[1], &it[2]); dbus_message_iter_close_container(&it[1], &it[2]);
/* HFP version 1.7 */ /* HFP version 1.9 */
str = "Version"; str = "Version";
version = 0x0107; version = 0x0109;
dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]); dbus_message_iter_open_container(&it[1], DBUS_TYPE_DICT_ENTRY, NULL, &it[2]);
dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str); dbus_message_iter_append_basic(&it[2], DBUS_TYPE_STRING, &str);
dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]); dbus_message_iter_open_container(&it[2], DBUS_TYPE_VARIANT, "q", &it[3]);

View file

@ -252,13 +252,16 @@ enum spa_bt_hfp_ag_feature {
}; };
enum spa_bt_hfp_sdp_ag_features { enum spa_bt_hfp_sdp_ag_features {
SPA_BT_HFP_SDP_AG_FEATURE_NONE = (0), SPA_BT_HFP_SDP_AG_FEATURE_NONE = (0),
SPA_BT_HFP_SDP_AG_FEATURE_3WAY = (1 << 0), SPA_BT_HFP_SDP_AG_FEATURE_3WAY = (1 << 0),
SPA_BT_HFP_SDP_AG_FEATURE_ECNR = (1 << 1), SPA_BT_HFP_SDP_AG_FEATURE_ECNR = (1 << 1),
SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG = (1 << 2), SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG = (1 << 2),
SPA_BT_HFP_SDP_AG_FEATURE_IN_BAND_RING_TONE = (1 << 3), SPA_BT_HFP_SDP_AG_FEATURE_IN_BAND_RING_TONE = (1 << 3),
SPA_BT_HFP_SDP_AG_FEATURE_ATTACH_VOICE_TAG = (1 << 4), SPA_BT_HFP_SDP_AG_FEATURE_ATTACH_VOICE_TAG = (1 << 4),
SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH = (1 << 5), SPA_BT_HFP_SDP_AG_FEATURE_WIDEBAND_SPEECH = (1 << 5),
SPA_BT_HFP_SDP_AG_FEATURE_ENH_VOICE_RECOG_STATUS = (1 << 6),
SPA_BT_HFP_SDP_AG_FEATURE_VOICE_RECOG_TEXT = (1 << 7),
SPA_BT_HFP_SDP_AG_FEATURE_SUPER_WIDEBAND_SPEECH = (1 << 8),
}; };
enum spa_bt_hfp_hf_feature { enum spa_bt_hfp_hf_feature {
@ -299,13 +302,16 @@ enum spa_bt_hfp_hf_xapl_features {
}; };
enum spa_bt_hfp_sdp_hf_features { enum spa_bt_hfp_sdp_hf_features {
SPA_BT_HFP_SDP_HF_FEATURE_NONE = (0), SPA_BT_HFP_SDP_HF_FEATURE_NONE = (0),
SPA_BT_HFP_SDP_HF_FEATURE_ECNR = (1 << 0), SPA_BT_HFP_SDP_HF_FEATURE_ECNR = (1 << 0),
SPA_BT_HFP_SDP_HF_FEATURE_3WAY = (1 << 1), SPA_BT_HFP_SDP_HF_FEATURE_3WAY = (1 << 1),
SPA_BT_HFP_SDP_HF_FEATURE_CLIP = (1 << 2), SPA_BT_HFP_SDP_HF_FEATURE_CLIP = (1 << 2),
SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOGNITION = (1 << 3), SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOGNITION = (1 << 3),
SPA_BT_HFP_SDP_HF_FEATURE_REMOTE_VOLUME_CONTROL = (1 << 4), SPA_BT_HFP_SDP_HF_FEATURE_REMOTE_VOLUME_CONTROL = (1 << 4),
SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH = (1 << 5), SPA_BT_HFP_SDP_HF_FEATURE_WIDEBAND_SPEECH = (1 << 5),
SPA_BT_HFP_SDP_HF_FEATURE_ENH_VOICE_RECOG_STATUS = (1 << 6),
SPA_BT_HFP_SDP_HF_FEATURE_VOICE_RECOG_TEXT = (1 << 7),
SPA_BT_HFP_SDP_HF_FEATURE_SUPER_WIDEBAND_SPEECH = (1 << 8),
}; };
static inline const char *spa_bt_profile_name (enum spa_bt_profile profile) { static inline const char *spa_bt_profile_name (enum spa_bt_profile profile) {