cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WB missing HCI_LE_CONNECTION_UPDATE_COMPLETE _EVENT

HLin.3
Associate II

I have been testing with two STM32WB boards, one as central and the other as peripheral. I read in the document "Building wireless applications with STM32WB Series microcontrollers" (newest member cannot add links so I could only paste the title of the document) in section 6.9 that the master can initiate `aci_gap_start_connection_update()` to update the connection parameters, and the end of procedure will be indicated with an HCI_LE_CONNECTION_UPDATE_COMPLETE

_EVENT.

However, I didn't seem to be getting any event on both central and peripheral, even though I could sense the update taking effect and the update was actually completed.

As I'm new to bluetooth, I don't know what the possible reason for missing events could be. I don't have problems with other events such as the completion of general discovery or connection establishment. Connection updating is the only one I'm having an issue with. Please help! Thanks!

EDIT: After some more testing, I noticed only when the update caused change to the connection interval would there be an event. But in my case I only want to update the CE_length and I don't know why there is no event for this.

3 REPLIES 3
Remy ISSALYS
ST Employee

Hello,

In fact, the CE_length parameter is used by the master and isn't transmit to the slave, so if you change only this parameter, there is no event on slave side because the other parameter didn't change.

The standard says that:

This event shall be issued if the HCI_LE_Connection_Update command was issued by the Host or if the connection parameters are updated following a request from the peer device. If no parameters are updated following a request from the peer device or the parameters were changed using the Connection Subrate Update procedure, then this event shall not be issued.

So, according to the standard it's a normal behavior because no parameters are updated.

Best Regards

Thank you for your detailed answer! Since there is no event, I wonder if there is a way to tell when the update is completed?

My situation is that I have a master that maintains connections with multiple slaves​. Sometimes it will need to change the CL_length for these devices. I noticed that I couldn't issue another HCI_LE_Connection_Update until the last update was done, otherwise the update function would return an error. My workaround was keep retrying the update until it returned success. I don't consider this an elegant style so I'm wondering if it is possible for me to know the update is done and I can proceed with the next update?

Thanks!

Well according to your answer if the HOST initiates the aci_gap_start_connection_update the event shall be reported.
"This event shall be issued if the HCI_LE_Connection_Update command was issued by the Host"

I'm also facing the same issue and was wondering why sometimes I do not get the event.

Only in case the peer device issues an update that has no change shall not fire the event. -> To me it seems someone misinterpreted the standard by a lot.