mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-10-01 21:17:21 +00:00
nimble/controller: Remove callout for HCI Read Remote Features event
We don't need this callout - it's enough that we wait until end of conn event and send an event from there. X-Original-Commit: 75ba1ad07189835a309a8b71c44d2f34278ef33c
This commit is contained in:
@@ -294,8 +294,6 @@ struct ble_ll_conn_sm
|
|||||||
struct os_callout auth_pyld_timer;
|
struct os_callout auth_pyld_timer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct os_callout rd_features_timer;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX: a note on all these structures for control procedures. First off,
|
* XXX: a note on all these structures for control procedures. First off,
|
||||||
* all of these need to be ifdef'd to save memory. Another thing to
|
* all of these need to be ifdef'd to save memory. Another thing to
|
||||||
|
|||||||
@@ -1916,11 +1916,6 @@ ble_ll_conn_sm_new(struct ble_ll_conn_sm *connsm)
|
|||||||
connsm);
|
connsm);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
os_callout_init(&connsm->rd_features_timer,
|
|
||||||
&g_ble_ll_data.ll_evq,
|
|
||||||
ble_ll_conn_rd_features_timer_cb,
|
|
||||||
connsm);
|
|
||||||
|
|
||||||
ble_ll_conn_calc_itvl_ticks(connsm);
|
ble_ll_conn_calc_itvl_ticks(connsm);
|
||||||
|
|
||||||
/* Add to list of active connections */
|
/* Add to list of active connections */
|
||||||
@@ -2006,8 +2001,6 @@ ble_ll_conn_end(struct ble_ll_conn_sm *connsm, uint8_t ble_err)
|
|||||||
os_callout_stop(&connsm->auth_pyld_timer);
|
os_callout_stop(&connsm->auth_pyld_timer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
os_callout_stop(&connsm->rd_features_timer);
|
|
||||||
|
|
||||||
/* Remove from the active connection list */
|
/* Remove from the active connection list */
|
||||||
SLIST_REMOVE(&g_ble_ll_conn_active_list, connsm, ble_ll_conn_sm, act_sle);
|
SLIST_REMOVE(&g_ble_ll_conn_active_list, connsm, ble_ll_conn_sm, act_sle);
|
||||||
|
|
||||||
@@ -2036,6 +2029,16 @@ ble_ll_conn_end(struct ble_ll_conn_sm *connsm, uint8_t ble_err)
|
|||||||
/* Connection state machine is now idle */
|
/* Connection state machine is now idle */
|
||||||
connsm->conn_state = BLE_LL_CONN_STATE_IDLE;
|
connsm->conn_state = BLE_LL_CONN_STATE_IDLE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we have features and there's pending HCI command, send an event before
|
||||||
|
* disconnection event so it does make sense to host.
|
||||||
|
*/
|
||||||
|
if (connsm->csmflags.cfbit.pending_hci_rd_features &&
|
||||||
|
connsm->csmflags.cfbit.rxd_features) {
|
||||||
|
ble_ll_hci_ev_rd_rem_used_feat(connsm, BLE_ERR_SUCCESS);
|
||||||
|
connsm->csmflags.cfbit.pending_hci_rd_features = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need to send a disconnection complete event or a connection complete
|
* We need to send a disconnection complete event or a connection complete
|
||||||
* event when the connection ends. We send a connection complete event
|
* event when the connection ends. We send a connection complete event
|
||||||
@@ -2054,8 +2057,13 @@ ble_ll_conn_end(struct ble_ll_conn_sm *connsm, uint8_t ble_err)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If there is still pending read features request HCI command, send an
|
||||||
|
* event to complete it.
|
||||||
|
*/
|
||||||
if (connsm->csmflags.cfbit.pending_hci_rd_features) {
|
if (connsm->csmflags.cfbit.pending_hci_rd_features) {
|
||||||
ble_ll_hci_ev_rd_rem_used_feat(connsm, BLE_ERR_UNK_CONN_ID);
|
ble_ll_hci_ev_rd_rem_used_feat(connsm, BLE_ERR_UNK_CONN_ID);
|
||||||
|
connsm->csmflags.cfbit.pending_hci_rd_features = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Put connection state machine back on free list */
|
/* Put connection state machine back on free list */
|
||||||
@@ -2533,6 +2541,13 @@ ble_ll_conn_event_end(struct os_event *ev)
|
|||||||
|
|
||||||
/* If we have completed packets, send an event */
|
/* If we have completed packets, send an event */
|
||||||
ble_ll_conn_num_comp_pkts_event_send(connsm);
|
ble_ll_conn_num_comp_pkts_event_send(connsm);
|
||||||
|
|
||||||
|
/* If we have features and there's pending HCI command, send an event */
|
||||||
|
if (connsm->csmflags.cfbit.pending_hci_rd_features &&
|
||||||
|
connsm->csmflags.cfbit.rxd_features) {
|
||||||
|
ble_ll_hci_ev_rd_rem_used_feat(connsm, BLE_ERR_SUCCESS);
|
||||||
|
connsm->csmflags.cfbit.pending_hci_rd_features = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -768,8 +768,6 @@ ble_ll_conn_hci_read_rem_features(uint8_t *cmdbuf)
|
|||||||
|
|
||||||
connsm->csmflags.cfbit.pending_hci_rd_features = 1;
|
connsm->csmflags.cfbit.pending_hci_rd_features = 1;
|
||||||
|
|
||||||
os_callout_reset(&connsm->rd_features_timer, 0);
|
|
||||||
|
|
||||||
return BLE_ERR_SUCCESS;
|
return BLE_ERR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user