Message ID | 20240419180752.96699-4-andrei.istodorescu@nxp.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Create transports for matching BISes | expand |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/CheckPatch | success | CheckPatch PASS |
tedd_an/GitLint | success | Gitlint PASS |
tedd_an/IncrementalBuild | success | Incremental Build PASS |
Hi Andrei, On Fri, Apr 19, 2024 at 2:08 PM Andrei Istodorescu <andrei.istodorescu@nxp.com> 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 >
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); 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)