bluez5: indicate codec support status for ofono/hsphfpd

Indicates codecs properly.
This commit is contained in:
Pauli Virtanen 2025-06-11 21:03:25 +03:00 committed by Wim Taymans
parent 52fc22a76b
commit df591638a5
2 changed files with 34 additions and 0 deletions

View file

@ -1433,11 +1433,25 @@ static int backend_hsphfpd_free(void *data)
return 0;
}
static int backend_hsphfpd_supports_codec(void *data, struct spa_bt_device *device, unsigned int codec)
{
struct impl *backend = data;
switch (codec) {
case HFP_AUDIO_CODEC_CVSD:
return 1;
case HFP_AUDIO_CODEC_MSBC:
return backend->msbc_supported;
}
return 0;
}
static const struct spa_bt_backend_implementation backend_impl = {
SPA_VERSION_BT_BACKEND_IMPLEMENTATION,
.free = backend_hsphfpd_free,
.register_profiles = backend_hsphfpd_register,
.unregister_profiles = backend_hsphfpd_unregistered,
.supports_codec = backend_hsphfpd_supports_codec,
};
static bool is_available(struct impl *backend)
@ -1492,6 +1506,9 @@ struct spa_bt_backend *backend_hsphfpd_new(struct spa_bt_monitor *monitor,
else
backend->msbc_supported = false;
if (!spa_bt_get_hfp_codec(monitor, HFP_AUDIO_CODEC_MSBC))
backend->msbc_supported = false;
spa_log_topic_init(backend->log, &log_topic);
spa_list_init(&backend->endpoint_list);

View file

@ -840,10 +840,24 @@ static int backend_ofono_free(void *data)
return 0;
}
static int backend_ofono_supports_codec(void *data, struct spa_bt_device *device, unsigned int codec)
{
struct impl *backend = data;
switch (codec) {
case HFP_AUDIO_CODEC_CVSD:
return 1;
case HFP_AUDIO_CODEC_MSBC:
return backend->msbc_supported;
}
return 0;
}
static const struct spa_bt_backend_implementation backend_impl = {
SPA_VERSION_BT_BACKEND_IMPLEMENTATION,
.free = backend_ofono_free,
.register_profiles = backend_ofono_register,
.supports_codec = backend_ofono_supports_codec,
};
static bool is_available(struct impl *backend)
@ -897,6 +911,9 @@ struct spa_bt_backend *backend_ofono_new(struct spa_bt_monitor *monitor,
else
backend->msbc_supported = false;
if (!spa_bt_get_hfp_codec(monitor, HFP_AUDIO_CODEC_MSBC))
backend->msbc_supported = false;
spa_log_topic_init(backend->log, &log_topic);
backend->timer = spa_loop_utils_add_timer(backend->loop_utils, activate_timer_event, backend);