Bluetooth: Audio: Add bt_audio_dir_str to improve logging of dir

The direction of a stream/endpoint/parameter has just been
logged as a unsigned integer. This commits adds a
value -> string internal function that would log
BT_AUDIO_DIR_SINK as "sink" and BT_AUDIO_DIR_SOURCE
as "source".

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
Emil Gydesen 2023-01-05 11:33:47 +01:00 committed by Carles Cufí
commit 249d4774f3
6 changed files with 69 additions and 43 deletions

View file

@ -381,9 +381,9 @@ static void ascs_ep_get_status_config(struct bt_audio_ep *ep,
cfg->codec.cid = sys_cpu_to_le16(ep->codec.cid); cfg->codec.cid = sys_cpu_to_le16(ep->codec.cid);
cfg->codec.vid = sys_cpu_to_le16(ep->codec.vid); cfg->codec.vid = sys_cpu_to_le16(ep->codec.vid);
LOG_DBG("dir 0x%02x unframed_supported 0x%02x phy 0x%02x rtn %u " LOG_DBG("dir %s unframed_supported 0x%02x phy 0x%02x rtn %u "
"latency %u pd_min %u pd_max %u codec 0x%02x", "latency %u pd_min %u pd_max %u codec 0x%02x",
ep->dir, pref->unframed_supported, pref->phy, bt_audio_dir_str(ep->dir), pref->unframed_supported, pref->phy,
pref->rtn, pref->latency, pref->pd_min, pref->pd_max, pref->rtn, pref->latency, pref->pd_min, pref->pd_max,
ep->stream->codec->id); ep->stream->codec->id);
@ -408,9 +408,9 @@ static void ascs_ep_get_status_qos(struct bt_audio_ep *ep,
qos->latency = sys_cpu_to_le16(ep->stream->qos->latency); qos->latency = sys_cpu_to_le16(ep->stream->qos->latency);
sys_put_le24(ep->stream->qos->pd, qos->pd); sys_put_le24(ep->stream->qos->pd, qos->pd);
LOG_DBG("dir 0x%02x codec 0x%02x interval %u framing 0x%02x phy 0x%02x " LOG_DBG("dir %s codec 0x%02x interval %u framing 0x%02x phy 0x%02x "
"rtn %u latency %u pd %u", "rtn %u latency %u pd %u",
ep->dir, ep->stream->codec->id, bt_audio_dir_str(ep->dir), ep->stream->codec->id,
ep->stream->qos->interval, ep->stream->qos->framing, ep->stream->qos->interval, ep->stream->qos->framing,
ep->stream->qos->phy, ep->stream->qos->rtn, ep->stream->qos->phy, ep->stream->qos->rtn,
ep->stream->qos->latency, ep->stream->qos->pd); ep->stream->qos->latency, ep->stream->qos->pd);
@ -429,7 +429,8 @@ static void ascs_ep_get_status_enable(struct bt_audio_ep *ep,
ascs_codec_data_add(buf, "meta", ep->codec.meta_count, ep->codec.meta); ascs_codec_data_add(buf, "meta", ep->codec.meta_count, ep->codec.meta);
enable->metadata_len = buf->len - enable->metadata_len; enable->metadata_len = buf->len - enable->metadata_len;
LOG_DBG("dir 0x%02x cig 0x%02x cis 0x%02x", ep->dir, ep->cig_id, ep->cis_id); LOG_DBG("dir %s cig 0x%02x cis 0x%02x",
bt_audio_dir_str(ep->dir), ep->cig_id, ep->cis_id);
} }
static int ascs_ep_get_status_idle(uint8_t ase_id, struct net_buf_simple *buf) static int ascs_ep_get_status_idle(uint8_t ase_id, struct net_buf_simple *buf)
@ -1207,14 +1208,14 @@ static int ascs_ep_set_codec(struct bt_audio_ep *ep, uint8_t id, uint16_t cid,
return -EINVAL; return -EINVAL;
} }
LOG_DBG("ep %p dir %u codec id 0x%02x cid 0x%04x vid 0x%04x len %u", ep, ep->dir, id, cid, LOG_DBG("ep %p dir %s codec id 0x%02x cid 0x%04x vid 0x%04x len %u",
vid, len); ep, bt_audio_dir_str(ep->dir), id, cid, vid, len);
bt_pacs_cap_foreach(ep->dir, codec_lookup_id, &lookup_data); bt_pacs_cap_foreach(ep->dir, codec_lookup_id, &lookup_data);
if (lookup_data.codec == NULL) { if (lookup_data.codec == NULL) {
LOG_DBG("Codec with id %u for dir %u is not supported by our capabilities", LOG_DBG("Codec with id %u for dir %s is not supported by our capabilities",
id, ep->dir); id, bt_audio_dir_str(ep->dir));
return -ENOENT; return -ENOENT;
} }
@ -1504,8 +1505,8 @@ static int ase_stream_qos(struct bt_audio_stream *stream,
} }
if (bt_audio_iso_get_ep(false, iso, ep->dir) != NULL) { if (bt_audio_iso_get_ep(false, iso, ep->dir) != NULL) {
LOG_ERR("iso %p already in use in dir %u", LOG_ERR("iso %p already in use in dir %s",
&iso->chan, ep->dir); &iso->chan, bt_audio_dir_str(ep->dir));
bt_audio_iso_unref(iso); bt_audio_iso_unref(iso);
return -EALREADY; return -EALREADY;
} }

View file

@ -58,3 +58,15 @@ ssize_t bt_audio_ccc_cfg_write(struct bt_conn *conn, const struct bt_gatt_attr *
BT_GATT_CCC_MANAGED(((struct _bt_gatt_ccc[]) \ BT_GATT_CCC_MANAGED(((struct _bt_gatt_ccc[]) \
{BT_GATT_CCC_INITIALIZER(_changed, bt_audio_ccc_cfg_write, NULL)}), \ {BT_GATT_CCC_INITIALIZER(_changed, bt_audio_ccc_cfg_write, NULL)}), \
(BT_GATT_PERM_READ | BT_GATT_PERM_WRITE_ENCRYPT)) (BT_GATT_PERM_READ | BT_GATT_PERM_WRITE_ENCRYPT))
static inline const char *bt_audio_dir_str(enum bt_audio_dir dir)
{
switch (dir) {
case BT_AUDIO_DIR_SINK:
return "sink";
case BT_AUDIO_DIR_SOURCE:
return "source";
}
return "Unknown";
}

View file

@ -7,6 +7,7 @@
*/ */
#include "audio_iso.h" #include "audio_iso.h"
#include "audio_internal.h"
#include "endpoint.h" #include "endpoint.h"
#include <zephyr/logging/log.h> #include <zephyr/logging/log.h>
@ -151,7 +152,7 @@ void bt_audio_iso_bind_ep(struct bt_audio_iso *iso, struct bt_audio_ep *ep)
__ASSERT(ep->dir == BT_AUDIO_DIR_SINK || ep->dir == BT_AUDIO_DIR_SOURCE, __ASSERT(ep->dir == BT_AUDIO_DIR_SINK || ep->dir == BT_AUDIO_DIR_SOURCE,
"invalid dir: %u", ep->dir); "invalid dir: %u", ep->dir);
LOG_DBG("iso %p ep %p dir %u", iso, ep, ep->dir); LOG_DBG("iso %p ep %p dir %s", iso, ep, bt_audio_dir_str(ep->dir));
if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) && if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) &&
bt_audio_ep_is_unicast_client(ep)) { bt_audio_ep_is_unicast_client(ep)) {
@ -189,7 +190,7 @@ void bt_audio_iso_unbind_ep(struct bt_audio_iso *iso, struct bt_audio_ep *ep)
__ASSERT(ep->dir == BT_AUDIO_DIR_SINK || ep->dir == BT_AUDIO_DIR_SOURCE, __ASSERT(ep->dir == BT_AUDIO_DIR_SINK || ep->dir == BT_AUDIO_DIR_SOURCE,
"Invalid dir: %u", ep->dir); "Invalid dir: %u", ep->dir);
LOG_DBG("iso %p ep %p dir %u", iso, ep, ep->dir); LOG_DBG("iso %p ep %p dir %s", iso, ep, bt_audio_dir_str(ep->dir));
if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) && if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) &&
bt_audio_ep_is_unicast_client(ep)) { bt_audio_ep_is_unicast_client(ep)) {
@ -226,7 +227,7 @@ struct bt_audio_ep *bt_audio_iso_get_ep(bool unicast_client,
__ASSERT(dir == BT_AUDIO_DIR_SINK || dir == BT_AUDIO_DIR_SOURCE, __ASSERT(dir == BT_AUDIO_DIR_SINK || dir == BT_AUDIO_DIR_SOURCE,
"invalid dir: %u", dir); "invalid dir: %u", dir);
LOG_DBG("iso %p dir %u", iso, dir); LOG_DBG("iso %p dir %s", iso, bt_audio_dir_str(dir));
/* TODO FIX FOR CLIENT */ /* TODO FIX FOR CLIENT */
if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) && unicast_client) { if (IS_ENABLED(CONFIG_BT_AUDIO_UNICAST_CLIENT) && unicast_client) {
@ -257,8 +258,8 @@ void bt_audio_iso_bind_stream(struct bt_audio_iso *audio_iso,
"stream %p bound with audio_iso %p already", "stream %p bound with audio_iso %p already",
stream, stream->audio_iso); stream, stream->audio_iso);
LOG_DBG("audio_iso %p stream %p dir %u", LOG_DBG("audio_iso %p stream %p dir %s",
audio_iso, stream, stream->dir); audio_iso, stream, bt_audio_dir_str(stream->dir));
/* For the unicast client, the direction and tx/rx is reversed */ /* For the unicast client, the direction and tx/rx is reversed */
if (stream->dir == BT_AUDIO_DIR_SOURCE) { if (stream->dir == BT_AUDIO_DIR_SOURCE) {
@ -286,8 +287,8 @@ void bt_audio_iso_unbind_stream(struct bt_audio_iso *audio_iso,
"stream %p not bound with an audio_iso", "stream %p not bound with an audio_iso",
stream); stream);
LOG_DBG("audio_iso %p stream %p dir %u", LOG_DBG("audio_iso %p stream %p dir %s",
audio_iso, stream, stream->dir); audio_iso, stream, bt_audio_dir_str(stream->dir));
/* For the unicast client, the direction and tx/rx is reversed */ /* For the unicast client, the direction and tx/rx is reversed */
if (stream->dir == BT_AUDIO_DIR_SOURCE) { if (stream->dir == BT_AUDIO_DIR_SOURCE) {
@ -311,7 +312,7 @@ struct bt_audio_stream *bt_audio_iso_get_stream(struct bt_audio_iso *iso,
__ASSERT(dir == BT_AUDIO_DIR_SINK || dir == BT_AUDIO_DIR_SOURCE, __ASSERT(dir == BT_AUDIO_DIR_SINK || dir == BT_AUDIO_DIR_SOURCE,
"invalid dir: %u", dir); "invalid dir: %u", dir);
LOG_DBG("iso %p dir %u", iso, dir); LOG_DBG("iso %p dir %s", iso, bt_audio_dir_str(dir));
/* For the unicast client, the direction and tx/rx is reversed */ /* For the unicast client, the direction and tx/rx is reversed */
if (dir == BT_AUDIO_DIR_SOURCE) { if (dir == BT_AUDIO_DIR_SOURCE) {

View file

@ -662,8 +662,8 @@ int bt_pacs_cap_register(enum bt_audio_dir dir, struct bt_pacs_cap *cap)
return -EINVAL; return -EINVAL;
} }
LOG_DBG("cap %p dir 0x%02x codec 0x%02x codec cid 0x%04x " LOG_DBG("cap %p dir %s codec 0x%02x codec cid 0x%04x "
"codec vid 0x%04x", cap, dir, cap->codec->id, "codec vid 0x%04x", cap, bt_audio_dir_str(dir), cap->codec->id,
cap->codec->cid, cap->codec->vid); cap->codec->cid, cap->codec->vid);
sys_slist_append(&pac->list, &cap->_node); sys_slist_append(&pac->list, &cap->_node);
@ -687,7 +687,7 @@ int bt_pacs_cap_unregister(enum bt_audio_dir dir, struct bt_pacs_cap *cap)
return -EINVAL; return -EINVAL;
} }
LOG_DBG("cap %p dir 0x%02x", cap, dir); LOG_DBG("cap %p dir %s", cap, bt_audio_dir_str(dir));
if (!sys_slist_find_and_remove(&pac->list, &cap->_node)) { if (!sys_slist_find_and_remove(&pac->list, &cap->_node)) {
return -ENOENT; return -ENOENT;

View file

@ -22,6 +22,7 @@
#include "../host/iso_internal.h" #include "../host/iso_internal.h"
#include "audio_iso.h" #include "audio_iso.h"
#include "audio_internal.h"
#include "endpoint.h" #include "endpoint.h"
#include "unicast_client_internal.h" #include "unicast_client_internal.h"
#include "unicast_server.h" #include "unicast_server.h"
@ -872,7 +873,8 @@ static int unicast_group_add_stream(struct bt_audio_unicast_group *group,
__ASSERT_NO_MSG(stream->ep == NULL || __ASSERT_NO_MSG(stream->ep == NULL ||
(stream->ep != NULL && stream->ep->iso == NULL)); (stream->ep != NULL && stream->ep->iso == NULL));
LOG_DBG("group %p stream %p dir %u", group, stream, dir); LOG_DBG("group %p stream %p dir %s",
group, stream, bt_audio_dir_str(dir));
iso = get_new_iso(group, stream->conn, dir); iso = get_new_iso(group, stream->conn, dir);
if (iso == NULL) { if (iso == NULL) {

View file

@ -23,6 +23,7 @@
#include "../host/conn_internal.h" #include "../host/conn_internal.h"
#include "audio_iso.h" #include "audio_iso.h"
#include "audio_internal.h"
#include "endpoint.h" #include "endpoint.h"
#include "pacs_internal.h" #include "pacs_internal.h"
#include "unicast_client_internal.h" #include "unicast_client_internal.h"
@ -177,7 +178,8 @@ static void unicast_client_ep_iso_connected(struct bt_audio_ep *ep)
return; return;
} }
LOG_DBG("stream %p ep %p dir %u", stream, ep, ep->dir); LOG_DBG("stream %p ep %p dir %s",
stream, ep, bt_audio_dir_str(ep->dir));
} }
static void unicast_client_iso_connected(struct bt_iso_chan *chan) static void unicast_client_iso_connected(struct bt_iso_chan *chan)
@ -270,7 +272,8 @@ static void unicast_client_ep_init(struct bt_audio_ep *ep, uint16_t handle,
{ {
struct bt_unicast_client_ep *client_ep; struct bt_unicast_client_ep *client_ep;
LOG_DBG("ep %p dir 0x%02x handle 0x%04x", ep, dir, handle); LOG_DBG("ep %p dir %s handle 0x%04x",
ep, bt_audio_dir_str(dir), handle);
client_ep = CONTAINER_OF(ep, struct bt_unicast_client_ep, ep); client_ep = CONTAINER_OF(ep, struct bt_unicast_client_ep, ep);
@ -407,7 +410,8 @@ static void unicast_client_ep_qos_update(struct bt_audio_ep *ep,
{ {
struct bt_iso_chan_io_qos *iso_io_qos; struct bt_iso_chan_io_qos *iso_io_qos;
LOG_DBG("ep %p dir %u audio_iso %p", ep, ep->dir, ep->iso); LOG_DBG("ep %p dir %s audio_iso %p",
ep, bt_audio_dir_str(ep->dir), ep->iso);
if (ep->dir == BT_AUDIO_DIR_SOURCE) { if (ep->dir == BT_AUDIO_DIR_SOURCE) {
/* If the endpoint is a source, then we need to /* If the endpoint is a source, then we need to
@ -479,10 +483,11 @@ static void unicast_client_ep_config_state(struct bt_audio_ep *ep,
pref->pref_pd_min = sys_get_le24(cfg->prefer_pd_min); pref->pref_pd_min = sys_get_le24(cfg->prefer_pd_min);
pref->pref_pd_max = sys_get_le24(cfg->prefer_pd_max); pref->pref_pd_max = sys_get_le24(cfg->prefer_pd_max);
LOG_DBG("dir 0x%02x unframed_supported 0x%02x phy 0x%02x rtn %u " LOG_DBG("dir %s unframed_supported 0x%02x phy 0x%02x rtn %u "
"latency %u pd_min %u pd_max %u codec 0x%02x ", "latency %u pd_min %u pd_max %u codec 0x%02x ",
ep->dir, pref->unframed_supported, pref->phy, pref->rtn, bt_audio_dir_str(ep->dir), pref->unframed_supported, pref->phy,
pref->latency, pref->pd_min, pref->pd_max, stream->codec->id); pref->rtn, pref->latency, pref->pd_min, pref->pd_max,
stream->codec->id);
unicast_client_ep_set_codec(ep, cfg->codec.id, unicast_client_ep_set_codec(ep, cfg->codec.id,
sys_le16_to_cpu(cfg->codec.cid), sys_le16_to_cpu(cfg->codec.cid),
@ -531,10 +536,10 @@ static void unicast_client_ep_qos_state(struct bt_audio_ep *ep,
(void)memcpy(&stream->qos->pd, sys_le24_to_cpu(qos->pd), (void)memcpy(&stream->qos->pd, sys_le24_to_cpu(qos->pd),
sizeof(qos->pd)); sizeof(qos->pd));
LOG_DBG("dir 0x%02x cig 0x%02x cis 0x%02x codec 0x%02x interval %u " LOG_DBG("dir %s cig 0x%02x cis 0x%02x codec 0x%02x interval %u "
"framing 0x%02x phy 0x%02x rtn %u latency %u pd %u", "framing 0x%02x phy 0x%02x rtn %u latency %u pd %u",
ep->dir, ep->cig_id, ep->cis_id, stream->codec->id, bt_audio_dir_str(ep->dir), ep->cig_id, ep->cis_id,
stream->qos->interval, stream->qos->framing, stream->codec->id, stream->qos->interval, stream->qos->framing,
stream->qos->phy, stream->qos->rtn, stream->qos->latency, stream->qos->phy, stream->qos->rtn, stream->qos->latency,
stream->qos->pd); stream->qos->pd);
@ -598,7 +603,8 @@ static void unicast_client_ep_enabling_state(struct bt_audio_ep *ep,
metadata = net_buf_simple_pull_mem(buf, enable->metadata_len); metadata = net_buf_simple_pull_mem(buf, enable->metadata_len);
LOG_DBG("dir 0x%02x cig 0x%02x cis 0x%02x", ep->dir, ep->cig_id, ep->cis_id); LOG_DBG("dir %s cig 0x%02x cis 0x%02x",
bt_audio_dir_str(ep->dir), ep->cig_id, ep->cis_id);
unicast_client_ep_set_metadata(ep, metadata, enable->metadata_len, NULL); unicast_client_ep_set_metadata(ep, metadata, enable->metadata_len, NULL);
@ -642,7 +648,8 @@ static void unicast_client_ep_streaming_state(struct bt_audio_ep *ep,
stream_status = net_buf_simple_pull_mem(buf, sizeof(*stream_status)); stream_status = net_buf_simple_pull_mem(buf, sizeof(*stream_status));
LOG_DBG("dir 0x%02x cig 0x%02x cis 0x%02x", ep->dir, ep->cig_id, ep->cis_id); LOG_DBG("dir %s cig 0x%02x cis 0x%02x",
bt_audio_dir_str(ep->dir), ep->cig_id, ep->cis_id);
/* Notify upper layer /* Notify upper layer
* *
@ -683,7 +690,8 @@ static void unicast_client_ep_disabling_state(struct bt_audio_ep *ep,
disable = net_buf_simple_pull_mem(buf, sizeof(*disable)); disable = net_buf_simple_pull_mem(buf, sizeof(*disable));
LOG_DBG("dir 0x%02x cig 0x%02x cis 0x%02x", ep->dir, ep->cig_id, ep->cis_id); LOG_DBG("dir %s cig 0x%02x cis 0x%02x",
bt_audio_dir_str(ep->dir), ep->cig_id, ep->cis_id);
/* Notify upper layer */ /* Notify upper layer */
if (stream->ops != NULL && stream->ops->disabled != NULL) { if (stream->ops != NULL && stream->ops->disabled != NULL) {
@ -704,7 +712,7 @@ static void unicast_client_ep_releasing_state(struct bt_audio_ep *ep,
return; return;
} }
LOG_DBG("dir 0x%02x", ep->dir); LOG_DBG("dir %s", bt_audio_dir_str(ep->dir));
/* The Unicast Client shall terminate any CIS established for that ASE /* The Unicast Client shall terminate any CIS established for that ASE
* by following the Connected Isochronous Stream Terminate procedure * by following the Connected Isochronous Stream Terminate procedure
@ -734,8 +742,9 @@ static void unicast_client_ep_set_status(struct bt_audio_ep *ep,
ep->status = *status; ep->status = *status;
state_changed = old_state != ep->status.state; state_changed = old_state != ep->status.state;
LOG_DBG("ep %p handle 0x%04x id 0x%02x dir %u state %s -> %s", ep, client_ep->handle, LOG_DBG("ep %p handle 0x%04x id 0x%02x dir %s state %s -> %s",
status->id, ep->dir, bt_audio_ep_state_str(old_state), ep, client_ep->handle, status->id, bt_audio_dir_str(ep->dir),
bt_audio_ep_state_str(old_state),
bt_audio_ep_state_str(status->state)); bt_audio_ep_state_str(status->state));
switch (status->state) { switch (status->state) {
@ -1254,7 +1263,8 @@ static int unicast_client_ep_config(struct bt_audio_ep *ep,
return -EINVAL; return -EINVAL;
} }
LOG_DBG("id 0x%02x dir 0x%02x codec 0x%02x", ep->status.id, ep->dir, codec->id); LOG_DBG("id 0x%02x dir %s codec 0x%02x",
ep->status.id, bt_audio_dir_str(ep->dir), codec->id);
req = net_buf_simple_add(buf, sizeof(*req)); req = net_buf_simple_add(buf, sizeof(*req));
req->ase = ep->status.id; req->ase = ep->status.id;
@ -2086,8 +2096,8 @@ static uint8_t unicast_client_pacs_location_read_func(struct bt_conn *conn,
LOG_DBG("conn %p err 0x%02x len %u", conn, err, length); LOG_DBG("conn %p err 0x%02x len %u", conn, err, length);
if (err || data == NULL || length != sizeof(location)) { if (err || data == NULL || length != sizeof(location)) {
LOG_DBG("Unable to read PACS location for dir %u: %u, %p, %u", params->dir, err, LOG_DBG("Unable to read PACS location for dir %s: %u, %p, %u",
data, length); bt_audio_dir_str(params->dir), err, data, length);
params->func(conn, NULL, NULL, params); params->func(conn, NULL, NULL, params);
@ -2097,7 +2107,7 @@ static uint8_t unicast_client_pacs_location_read_func(struct bt_conn *conn,
net_buf_simple_init_with_data(&buf, (void *)data, length); net_buf_simple_init_with_data(&buf, (void *)data, length);
location = net_buf_simple_pull_le32(&buf); location = net_buf_simple_pull_le32(&buf);
LOG_DBG("dir %u loc %X", params->dir, location); LOG_DBG("dir %s loc %X", bt_audio_dir_str(params->dir), location);
if (unicast_client_cbs != NULL && unicast_client_cbs->location != NULL) { if (unicast_client_cbs != NULL && unicast_client_cbs->location != NULL) {
unicast_client_cbs->location(conn, params->dir, unicast_client_cbs->location(conn, params->dir,
@ -2156,7 +2166,7 @@ static uint8_t unicast_client_pacs_location_notify_cb(struct bt_conn *conn,
net_buf_simple_init_with_data(&buf, (void *)data, length); net_buf_simple_init_with_data(&buf, (void *)data, length);
location = net_buf_simple_pull_le32(&buf); location = net_buf_simple_pull_le32(&buf);
LOG_DBG("dir %u loc %X", dir, location); LOG_DBG("dir %s loc %X", bt_audio_dir_str(dir), location);
if (unicast_client_cbs != NULL && unicast_client_cbs->location != NULL) { if (unicast_client_cbs != NULL && unicast_client_cbs->location != NULL) {
unicast_client_cbs->location(conn, dir, unicast_client_cbs->location(conn, dir,