Hmm well I didn't get the ble_gap_update_params() version to work, but I did get ble_l2cap_sig_update() to work! The key is to *not* enabled the BLE_LL_CFG_FEAT_CONN_PARAM_REQ feature. If I had that enabled, the slave sent an L2CAP Connection Parameter Update Request, and the master replied with an L2CAP Connection Parameter Update Response, saying they were accepted, but then the parameters didn't actually change. If you disable the feature, then instead of replying with an L2CAP Connection Parameter Update Response message, it sends a LL_CONNECTION_UPDATE_IND packet that actually changes the parameters.
By the way I noticed Nimble sends a load of LL_LENGTH_REQ's that never get replied to (except by an LL_UNKNOWN_RSP). They're even sent before LL_VERSION_IND's have been exchanged. Is that intended? Cheers, Tim On 31 August 2016 at 05:03, Christopher Collins <[email protected]> wrote: > Hi Tim, > > Thanks for the report. I am curious why ble_gap_update_params() did not > work with the Xperia. One thing I should mention is that the central is > not obligated to update the connection when the peripheral asks it to. > It should have responded to the request, though. > > On Tue, Aug 30, 2016 at 04:10:58PM +0100, Tim Hutt wrote: > [...] > > 3. Using a 5 second timeout, then ble_gap_update_params it works as > > expected! I couldn't find in the spec where it mentions the 5 seconds, > but > > I guess it is needed in some way. > > The five second recommendation is in Vol. 3, Part C, Appendix A, Table > A.1: > > Timer name > TGAP(conn_pause_peripheral) > > Value > 5s > > Description > Minimum time upon connection establishment before the peripheral > starts a connection update procedure > > Requirement or Recommendation > Recommended value > > Thanks, > Chris >
