MYNEWT-385: Controller not sending connection update complete event The nimble controller was not sending the connection update complete event if the connection was a slave, the host initiated the connection parameter request and only an anchor point move was requested. The spec is not perfectly clear but it seems this was a bug and that the host should always be notified if it initiates the connection update or connection parameter request.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/97189e71 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/97189e71 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/97189e71 Branch: refs/heads/develop Commit: 97189e716b11ab59599a7693e838f9ccf51c071f Parents: f77bf7f Author: William San Filippo <[email protected]> Authored: Tue Sep 6 14:15:28 2016 -0700 Committer: William San Filippo <[email protected]> Committed: Tue Sep 6 14:17:28 2016 -0700 ---------------------------------------------------------------------- net/nimble/controller/src/ble_ll_conn.c | 2 ++ 1 file changed, 2 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/97189e71/net/nimble/controller/src/ble_ll_conn.c ---------------------------------------------------------------------- diff --git a/net/nimble/controller/src/ble_ll_conn.c b/net/nimble/controller/src/ble_ll_conn.c index 38220ea..f8d21cd 100644 --- a/net/nimble/controller/src/ble_ll_conn.c +++ b/net/nimble/controller/src/ble_ll_conn.c @@ -1663,6 +1663,8 @@ ble_ll_conn_next_event(struct ble_ll_conn_sm *connsm) /* Set flag so we send connection update event */ upd = &connsm->conn_update_req; if ((connsm->conn_role == BLE_LL_CONN_ROLE_MASTER) || + ((connsm->conn_role == BLE_LL_CONN_ROLE_SLAVE) && + IS_PENDING_CTRL_PROC(connsm, BLE_LL_CTRL_PROC_CONN_PARAM_REQ)) || (connsm->conn_itvl != upd->interval) || (connsm->slave_latency != upd->latency) || (connsm->supervision_tmo != upd->timeout)) {
