Hi Yang, On Mon, Apr 7, 2025 at 6:34 AM Yang Li via B4 Relay <devnull+yang.li.amlogic.com@xxxxxxxxxx> wrote: > > From: Yang Li <yang.li@xxxxxxxxxxx> > > When the ASE state changes from releasing(6) -> idle(0), > the idle state needs to be notified to the Client. > > --- > Signed-off-by: Yang Li <yang.li@xxxxxxxxxxx> > --- > src/shared/bap.c | 13 ++++--------- > 1 file changed, 4 insertions(+), 9 deletions(-) > > diff --git a/src/shared/bap.c b/src/shared/bap.c > index 650bea2f4..c40d6e051 100644 > --- a/src/shared/bap.c > +++ b/src/shared/bap.c > @@ -1123,17 +1123,12 @@ static void stream_notify_metadata(struct bt_bap_stream *stream) > free(status); > } > > -static void stream_notify_release(struct bt_bap_stream *stream) > +static void stream_notify_ase_state(struct bt_bap_stream *stream) > { > struct bt_bap_endpoint *ep = stream->ep; > struct bt_ascs_ase_status status; > > - DBG(stream->bap, "stream %p", stream); > - > - > - memset(&status, 0, sizeof(status)); > status.id = ep->id; > - ep->state = BT_BAP_STREAM_STATE_RELEASING; Not really sure why you are taking away releasing state, we actually depend on it for the new tests: https://patchwork.kernel.org/project/bluetooth/list/?series=950067 > status.state = ep->state; > > gatt_db_attribute_notify(ep->attr, (void *)&status, sizeof(status), > @@ -1713,6 +1708,7 @@ static void stream_notify(struct bt_bap_stream *stream, uint8_t state) > > switch (state) { > case BT_ASCS_ASE_STATE_IDLE: > + stream_notify_ase_state(stream); We need something like stream_notify_idle. > break; > case BT_ASCS_ASE_STATE_CONFIG: > stream_notify_config(stream); > @@ -1726,7 +1722,7 @@ static void stream_notify(struct bt_bap_stream *stream, uint8_t state) > stream_notify_metadata(stream); > break; > case BT_ASCS_ASE_STATE_RELEASING: > - stream_notify_release(stream); > + stream_notify_ase_state(stream); This is actually wrong, we need to notify the releasing state. > break; > } > } > @@ -6397,9 +6393,8 @@ static bool stream_io_disconnected(struct io *io, void *user_data) > DBG(stream->bap, "stream %p io disconnected", stream); > > if (stream->ep->state == BT_ASCS_ASE_STATE_RELEASING) > - stream_set_state(stream, BT_BAP_STREAM_STATE_CONFIG); > + stream_set_state(stream, BT_BAP_STREAM_STATE_IDLE); Ok, so this is sort of reverting from bap: Fix not generating releasing state? I was wondering how much testing you guys did to confirm this is the right behavior, I don't think it is and Im trying to figure out if there are any tests for the testing spec that do properly verify this behavior. > - bt_bap_stream_set_io(stream, -1); > return false; > } > > > --- > base-commit: 0efa20cbf3fb5693c7c2f14ba8cf67053ca029e5 > change-id: 20250407-bap_aes_state-9306798ff95a > > Best regards, > -- > Yang Li <yang.li@xxxxxxxxxxx> > > > -- Luiz Augusto von Dentz