Hi Andrei, On Fri, Apr 19, 2024 at 2:08 PM Andrei Istodorescu <andrei.istodorescu@xxxxxxx> wrote: > > Set the stream to enabling for BAP Broadcast Sink, when the transport is > acquired. > Remove PAC logic for BAP Broadcast Sink stream creation. > --- > src/shared/bap.c | 60 +++++------------------------------------------- > 1 file changed, 6 insertions(+), 54 deletions(-) > > diff --git a/src/shared/bap.c b/src/shared/bap.c > index 36f0b0a3b50a..d7a2f9381c53 100644 > --- a/src/shared/bap.c > +++ b/src/shared/bap.c > @@ -2006,7 +2006,7 @@ static unsigned int bap_bcast_enable(struct bt_bap_stream *stream, > void *user_data) > { > if (bt_bap_stream_io_dir(stream) == BT_BAP_BCAST_SOURCE) > - stream_set_state(stream, BT_BAP_STREAM_STATE_STREAMING); > + stream_set_state(stream, BT_BAP_STREAM_STATE_ENABLING); There is no Enabling state for Broadcast Stream in BAP: https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/16212-BAP-html5/out/en/index-en.html#UUID-4a295bf2-6e50-be11-e827-c23e63569087_figure-idm4631863059107233170457600297 > else > stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG); > > @@ -5287,7 +5287,6 @@ void bt_bap_cancel_select(struct bt_bap_pac *lpac, bt_bap_pac_select_t func, > > static struct bt_bap_stream *bap_bcast_stream_new(struct bt_bap *bap, > struct bt_bap_pac *lpac, > - struct bt_bap_pac *rpac, > struct bt_bap_qos *pqos, > struct iovec *data) > { > @@ -5298,71 +5297,24 @@ static struct bt_bap_stream *bap_bcast_stream_new(struct bt_bap *bap, > if (!bap) > return NULL; > > - if (!rpac && (lpac->type != BT_BAP_BCAST_SOURCE) > - && queue_isempty(bap->remote_eps)) > - return NULL; > - > - if (lpac && rpac) { > - if ((rpac->type != BT_BAP_BCAST_SOURCE) > - && (!bap_codec_equal(&lpac->codec, &rpac->codec))) > - return NULL; > - } else { > - uint8_t type; > - > + if (lpac->type == BT_BAP_BCAST_SOURCE) { > match.lpac = lpac; > - match.rpac = rpac; > + match.rpac = NULL; > memset(&match.codec, 0, sizeof(match.codec)); > > - if (rpac) > - type = rpac->type; > - else if (lpac) { > - switch (lpac->type) { > - case BT_BAP_BCAST_SOURCE: > - type = BT_BAP_BCAST_SINK; > - break; > - case BT_BAP_BCAST_SINK: > - type = BT_BAP_BCAST_SOURCE; > - break; > - default: > - return NULL; > - } > - } else > - return NULL; > - > - bt_bap_foreach_pac(bap, type, match_pac, &match); > + bt_bap_foreach_pac(bap, BT_BAP_BCAST_SINK, match_pac, &match); > if ((!match.lpac) || (!lpac)) > return NULL; > - if (!match.rpac && (lpac->type != BT_BAP_BCAST_SOURCE)) > - return NULL; > > lpac = match.lpac; > - rpac = match.rpac; > - } > - > - match.lpac = lpac; > - match.rpac = rpac; > > - if (lpac->type != BT_BAP_BCAST_SOURCE) { > - /* Check for existing stream */ > - ep = queue_find(bap->remote_eps, find_ep_pacs, &match); > - if (!ep) { > - /* Check for unused ASE */ > - ep = queue_find(bap->remote_eps, find_ep_unused, > - &match); > - if (!ep) { > - DBG(bap, "Unable to find unused ASE"); > - return NULL; > - } > - } > - stream = ep->stream; > - } else { > ep = queue_find(bap->remote_eps, find_ep_source, NULL); > if (!ep) > return NULL; > } > > if (!stream) > - stream = bap_stream_new(bap, ep, lpac, rpac, data, true); > + stream = bap_stream_new(bap, ep, lpac, NULL, data, true); > > return stream; > } > @@ -5415,7 +5367,7 @@ struct bt_bap_stream *bt_bap_stream_new(struct bt_bap *bap, > if (bt_bap_get_att(bap)) > return bap_ucast_stream_new(bap, lpac, rpac, pqos, data); > > - return bap_bcast_stream_new(bap, lpac, rpac, pqos, data); > + return bap_bcast_stream_new(bap, lpac, pqos, data); > } > > struct bt_bap *bt_bap_stream_get_session(struct bt_bap_stream *stream) > -- > 2.40.1 > -- Luiz Augusto von Dentz