Re: [PATCH BlueZ 1/2] shared/bap: Update BAP Broadcast Source state machine

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

 



Hi Silviu,

On Mon, May 20, 2024 at 12:28 PM Silviu Florian Barbulescu
<silviu.barbulescu@xxxxxxx> wrote:
>
> Update BAP Broadcast Source state machine states to use BAP define states
>  for source Idle, Config, Streaming, and an intermediary state enabling.

Not really following, what is an intermediary state? Or do you mean
internal state? And more importantly why would we need an internal
state like that?

> Updated test-bap too.
>
> ---
>  src/shared/bap.c | 39 ++++++++++++++++++++-------------------
>  unit/test-bap.c  |  4 ++--
>  2 files changed, 22 insertions(+), 21 deletions(-)
>
> diff --git a/src/shared/bap.c b/src/shared/bap.c
> index 6572ef1d1..639149520 100644
> --- a/src/shared/bap.c
> +++ b/src/shared/bap.c
> @@ -1361,14 +1361,6 @@ static void ep_config_cb(struct bt_bap_stream *stream, int err)
>         if (err)
>                 return;
>
> -       if (bt_bap_stream_get_type(stream) == BT_BAP_STREAM_TYPE_BCAST) {
> -               if (bt_bap_stream_io_dir(stream) == BT_BAP_BCAST_SINK)
> -                       stream_set_state(stream, BT_BAP_STREAM_STATE_QOS);
> -               else if (bt_bap_stream_io_dir(stream) == BT_BAP_BCAST_SOURCE)
> -                       stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG);
> -               return;
> -       }
> -
>         stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG);
>  }
>
> @@ -1759,6 +1751,15 @@ static unsigned int bap_stream_metadata(struct bt_bap_stream *stream,
>         return req->id;
>  }
>
> +static unsigned int bap_bcast_qos(struct bt_bap_stream *stream,
> +                                       struct bt_bap_qos *data,
> +                                       bt_bap_stream_func_t func,
> +                                       void *user_data)
> +{
> +       stream->qos = *data;
> +       return 1;
> +}
> +
>  static unsigned int bap_bcast_config(struct bt_bap_stream *stream,
>                                      struct bt_bap_qos *qos, struct iovec *data,
>                                      bt_bap_stream_func_t func, void *user_data)
> @@ -2071,7 +2072,7 @@ static unsigned int bap_bcast_get_state(struct bt_bap_stream *stream)
>         return stream->state;
>  }
>
> -static unsigned int bap_bcast_enable(struct bt_bap_stream *stream,
> +static unsigned int bap_bcast_sink_enable(struct bt_bap_stream *stream,
>                                         bool enable_links, struct iovec *data,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data)
> @@ -2081,22 +2082,21 @@ static unsigned int bap_bcast_enable(struct bt_bap_stream *stream,
>         return 1;
>  }
>
> -static unsigned int bap_bcast_start(struct bt_bap_stream *stream,
> +static unsigned int bap_bcast_src_enable(struct bt_bap_stream *stream,
> +                                       bool enable_links, struct iovec *data,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data)
>  {
> -       stream_set_state(stream, BT_BAP_STREAM_STATE_STREAMING);
> +       stream_set_state(stream, BT_BAP_STREAM_STATE_ENABLING);
>
>         return 1;
>  }
>
> -static unsigned int bap_bcast_sink_disable(struct bt_bap_stream *stream,
> -                                       bool disable_links,
> +static unsigned int bap_bcast_start(struct bt_bap_stream *stream,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data)
>  {
> -       bap_stream_io_detach(stream);
> -       stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG);
> +       stream_set_state(stream, BT_BAP_STREAM_STATE_STREAMING);
>
>         return 1;
>  }
> @@ -2106,7 +2106,8 @@ static unsigned int bap_bcast_disable(struct bt_bap_stream *stream,
>                                         bt_bap_stream_func_t func,
>                                         void *user_data)
>  {
> -       stream_set_state(stream, BT_BAP_STREAM_STATE_DISABLING);
> +       bap_stream_io_detach(stream);
> +       stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG);
>
>         return 1;
>  }
> @@ -2205,14 +2206,14 @@ static const struct bt_bap_stream_ops stream_ops[] = {
>                         bap_ucast_release, bap_ucast_detach),
>         STREAM_OPS(BT_BAP_BCAST_SINK, bap_bcast_set_state,
>                         bap_bcast_get_state,
> -                       bap_bcast_config, NULL, bap_bcast_enable,
> -                       bap_bcast_start, bap_bcast_sink_disable, NULL,
> +                       bap_bcast_config, NULL, bap_bcast_sink_enable,
> +                       bap_bcast_start, bap_bcast_disable, NULL,
>                         bap_bcast_metadata, bap_bcast_sink_get_dir,
>                         bap_bcast_get_location,
>                         bap_bcast_release, bap_bcast_sink_detach),
>         STREAM_OPS(BT_BAP_BCAST_SOURCE, bap_bcast_set_state,
>                         bap_bcast_get_state,
> -                       bap_bcast_config, NULL, bap_bcast_enable,
> +                       bap_bcast_config, bap_bcast_qos, bap_bcast_src_enable,
>                         bap_bcast_start, bap_bcast_disable, NULL,
>                         bap_bcast_metadata, bap_bcast_src_get_dir,
>                         bap_bcast_get_location,
> diff --git a/unit/test-bap.c b/unit/test-bap.c
> index 46ee0e4e5..10f9e348c 100644
> --- a/unit/test-bap.c
> +++ b/unit/test-bap.c
> @@ -547,10 +547,10 @@ static void bsrc_state(struct bt_bap_stream *stream, uint8_t old_state,
>         struct test_data *data = user_data;
>
>         switch (new_state) {
> -       case BT_BAP_STREAM_STATE_QOS:
> +       case BT_BAP_STREAM_STATE_CONFIG:
>                 bt_bap_stream_enable(stream, true, NULL, NULL, NULL);
>                 break;
> -       case BT_BAP_STREAM_STATE_CONFIG:
> +       case BT_BAP_STREAM_STATE_ENABLING:
>                 data->base = bt_bap_stream_get_base(stream);
>
>                 g_assert(data->base);
> --
> 2.40.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