Re: [PATCH 1/2] shared/bap:Update stream enable/disable flow bcast source

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Silviu,

On Mon, Sep 11, 2023 at 12:47 AM Silviu Florian Barbulescu
<silviu.barbulescu@xxxxxxx> wrote:
>
> Update stream enable/disable flow for BAP broadcast source
>
> ---
>  src/shared/bap.c | 51 +++++++++++++++++++++++++++++++++++-------------
>  src/shared/bap.h |  2 ++
>  2 files changed, 39 insertions(+), 14 deletions(-)
>
> diff --git a/src/shared/bap.c b/src/shared/bap.c
> index 1c43680c2..801716dd9 100644
> --- a/src/shared/bap.c
> +++ b/src/shared/bap.c
> @@ -1331,6 +1331,11 @@ static void stream_set_state_broadcast(struct bt_bap_stream *stream,
>         ep->old_state = ep->state;
>         ep->state = state;
>
> +       DBG(bap, "stream %p dir 0x%02x: %s -> %s", stream,
> +                       bt_bap_stream_get_dir(stream),
> +                       bt_bap_stream_statestr(stream->ep->old_state),
> +                       bt_bap_stream_statestr(stream->ep->state));
> +
>         bt_bap_ref(bap);
>
>         for (entry = queue_get_entries(bap->state_cbs); entry;
> @@ -1492,7 +1497,7 @@ static void ep_config_cb(struct bt_bap_stream *stream, int err)
>                 return;
>
>         if (bt_bap_stream_get_type(stream) == BT_BAP_STREAM_TYPE_BCAST) {
> -               stream_set_state_broadcast(stream, BT_BAP_STREAM_STATE_CONFIG);
> +               stream_set_state_broadcast(stream, BT_BAP_STREAM_STATE_QOS);
>                 return;
>         }
>
> @@ -4698,13 +4703,19 @@ unsigned int bt_bap_stream_enable(struct bt_bap_stream *stream,
>                 break;
>         case BT_BAP_STREAM_TYPE_BCAST:
>                 stream_set_state_broadcast(stream,
> -                                       BT_BAP_STREAM_STATE_STREAMING);
> +                                       BT_BAP_STREAM_STATE_CONFIG);
>                 return 1;
>         }
>
>         return ret;
>  }
>
> +void bt_bap_stream_streaming(struct bt_bap_stream *stream)
> +{
> +               stream_set_state_broadcast(stream,
> +                                       BT_BAP_STREAM_STATE_STREAMING);
> +}
> +
>  unsigned int bt_bap_stream_start(struct bt_bap_stream *stream,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data)
> @@ -4779,24 +4790,36 @@ unsigned int bt_bap_stream_disable(struct bt_bap_stream *stream,
>                 return 0;
>         }
>
> -       memset(&disable, 0, sizeof(disable));
> +       switch (bt_bap_stream_get_type(stream)) {
> +       case BT_BAP_STREAM_TYPE_UCAST:
> +               memset(&disable, 0, sizeof(disable));
>
> -       disable.ase = stream->ep->id;
> +               disable.ase = stream->ep->id;
>
> -       iov.iov_base = &disable;
> -       iov.iov_len = sizeof(disable);
> +               iov.iov_base = &disable;
> +               iov.iov_len = sizeof(disable);
>
> -       req = bap_req_new(stream, BT_ASCS_DISABLE, &iov, 1, func, user_data);
> +               req = bap_req_new(stream, BT_ASCS_DISABLE, &iov, 1, func,
> +                                                       user_data);
>
> -       if (!bap_queue_req(stream->bap, req)) {
> -               bap_req_free(req);
> -               return 0;
> -       }
> +               if (!bap_queue_req(stream->bap, req)) {
> +                       bap_req_free(req);
> +                       return 0;
> +               }
>
> -       if (disable_links)
> -               queue_foreach(stream->links, bap_stream_disable_link, NULL);
> +               if (disable_links)
> +                       queue_foreach(stream->links, bap_stream_disable_link,
> +                                                       NULL);
>
> -       return req->id;
> +               return req->id;
> +
> +       case BT_BAP_STREAM_TYPE_BCAST:
> +               stream_set_state_broadcast(stream,
> +                                       BT_BAP_STREAM_STATE_RELEASING);
> +               return 1;
> +       }
> +
> +       return 0;
>  }
>
>  unsigned int bt_bap_stream_stop(struct bt_bap_stream *stream,
> diff --git a/src/shared/bap.h b/src/shared/bap.h
> index edb5c1bed..d3c9b241e 100644
> --- a/src/shared/bap.h
> +++ b/src/shared/bap.h
> @@ -264,6 +264,8 @@ unsigned int bt_bap_stream_start(struct bt_bap_stream *stream,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data);
>
> +void bt_bap_stream_streaming(struct bt_bap_stream *stream);
> +

Lets use bt_bap_stream_start and handle this internally instead of
introducing new APIs specific to broadcast.

>  unsigned int bt_bap_stream_disable(struct bt_bap_stream *stream,
>                                         bool disable_links,
>                                         bt_bap_stream_func_t func,
> --
> 2.34.1
>


-- 
Luiz Augusto von Dentz




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux