Repository: incubator-mynewt-larva Updated Branches: refs/heads/master 56f1ce6f8 -> 2b2118b37
Combine all GAP discovery procedures. Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/commit/a232d329 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/a232d329 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/a232d329 Branch: refs/heads/master Commit: a232d3297c872ee2a85c4a0784b24b1d9c370ff8 Parents: 56f1ce6 Author: Christopher Collins <[email protected]> Authored: Mon Dec 21 16:06:18 2015 -0800 Committer: Christopher Collins <[email protected]> Committed: Mon Dec 21 16:06:18 2015 -0800 ---------------------------------------------------------------------- net/nimble/host/include/host/ble_gap.h | 2 +- net/nimble/host/src/ble_gap_conn.c | 63 ++++++++++++----------------- net/nimble/host/src/test/ble_os_test.c | 2 +- 3 files changed, 28 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a232d329/net/nimble/host/include/host/ble_gap.h ---------------------------------------------------------------------- diff --git a/net/nimble/host/include/host/ble_gap.h b/net/nimble/host/include/host/ble_gap.h index f91c30e..0ec5f96 100644 --- a/net/nimble/host/include/host/ble_gap.h +++ b/net/nimble/host/include/host/ble_gap.h @@ -77,7 +77,7 @@ void ble_gap_conn_set_cb(ble_gap_connect_fn *cb, void *arg); int ble_gap_conn_advertise(uint8_t discoverable_mode, uint8_t connectable_mode, uint8_t *peer_addr, uint8_t peer_addr_type); int ble_gap_conn_set_adv_fields(struct ble_gap_conn_adv_fields *adv_fields); -int ble_gap_conn_gen_disc(uint32_t duration_ms); +int ble_gap_conn_disc(uint32_t duration_ms); int ble_gap_conn_direct_connect(int addr_type, uint8_t *addr); int ble_gap_conn_terminate(uint16_t handle); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a232d329/net/nimble/host/src/ble_gap_conn.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/src/ble_gap_conn.c b/net/nimble/host/src/ble_gap_conn.c index 90db35b..1163b11 100644 --- a/net/nimble/host/src/ble_gap_conn.c +++ b/net/nimble/host/src/ble_gap_conn.c @@ -30,16 +30,14 @@ #define BLE_GAP_CONN_STATE_IDLE UINT8_MAX /** General discovery master states. */ -#define BLE_GAP_CONN_M_STATE_GEN_DISC_PENDING 0 -#define BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS 1 -#define BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS_ACKED 2 -#define BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE 3 -#define BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE_ACKED 4 +#define BLE_GAP_CONN_M_STATE_DISC_PARAMS 0 +#define BLE_GAP_CONN_M_STATE_DISC_ENABLE 1 +#define BLE_GAP_CONN_M_STATE_DISC_ACKED 2 /** General discovery master states. */ -#define BLE_GAP_CONN_M_STATE_DIRECT_PENDING 5 -#define BLE_GAP_CONN_M_STATE_DIRECT_UNACKED 6 -#define BLE_GAP_CONN_M_STATE_DIRECT_ACKED 7 +#define BLE_GAP_CONN_M_STATE_DIRECT_PENDING 3 +#define BLE_GAP_CONN_M_STATE_DIRECT_UNACKED 4 +#define BLE_GAP_CONN_M_STATE_DIRECT_ACKED 5 /** Undirected slave states. */ #define BLE_GAP_CONN_S_STATE_UND_PARAMS 0 @@ -231,11 +229,8 @@ ble_gap_conn_master_failed(uint8_t status) ble_gap_conn_master_reset_state(); switch (old_state) { - case BLE_GAP_CONN_M_STATE_GEN_DISC_PENDING: - case BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS: - case BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS_ACKED: - case BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE: - case BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE_ACKED: + case BLE_GAP_CONN_M_STATE_DISC_PARAMS: + case BLE_GAP_CONN_M_STATE_DISC_ACKED: event.type = BLE_GAP_CONN_EVENT_TYPE_SCAN_DONE; ble_gap_conn_call_cb(&event); break; @@ -376,7 +371,7 @@ ble_gap_conn_rx_adv_report(struct ble_gap_conn_adv_rpt *rpt) struct ble_gap_conn_event event; switch (ble_gap_conn_master_state) { - case BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE_ACKED: + case BLE_GAP_CONN_M_STATE_DISC_ACKED: event.type = BLE_GAP_CONN_EVENT_TYPE_ADV_RPT; event.adv = *rpt; ble_gap_conn_call_cb(&event); @@ -476,7 +471,7 @@ ble_gap_conn_master_timer_exp(void *arg) assert(ble_gap_conn_master_in_progress()); switch (ble_gap_conn_master_state) { - case BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE_ACKED: + case BLE_GAP_CONN_M_STATE_DISC_ACKED: /* When a discovery procedure times out, it is not a failure. */ status = 0; break; @@ -869,28 +864,25 @@ ble_gap_conn_set_adv_fields(struct ble_gap_conn_adv_fields *adv_fields) *****************************************************************************/ static void -ble_gap_conn_gen_disc_ack_enable(struct ble_hci_ack *ack, void *arg) +ble_gap_conn_disc_ack_enable(struct ble_hci_ack *ack, void *arg) { - assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE); + assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_DISC_ENABLE); if (ack->bha_status != 0) { ble_gap_conn_master_failed(ack->bha_status); } else { - ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE_ACKED; + ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_DISC_ACKED; } } static int -ble_gap_conn_gen_disc_tx_enable(void *arg) +ble_gap_conn_disc_tx_enable(void *arg) { int rc; - assert(ble_gap_conn_master_state == - BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS_ACKED); - - ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_GEN_DISC_ENABLE; - ble_hci_ack_set_callback(ble_gap_conn_gen_disc_ack_enable, NULL); + assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_DISC_ENABLE); + ble_hci_ack_set_callback(ble_gap_conn_disc_ack_enable, NULL); rc = host_hci_cmd_le_set_scan_enable(1, 0); if (rc != 0) { ble_gap_conn_master_failed(rc); @@ -901,20 +893,19 @@ ble_gap_conn_gen_disc_tx_enable(void *arg) } static void -ble_gap_conn_gen_disc_ack_params(struct ble_hci_ack *ack, void *arg) +ble_gap_conn_disc_ack_params(struct ble_hci_ack *ack, void *arg) { int rc; - assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS); + assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_DISC_PARAMS); if (ack->bha_status != 0) { ble_gap_conn_master_failed(ack->bha_status); return; } - ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS_ACKED; - - rc = ble_hci_sched_enqueue(ble_gap_conn_gen_disc_tx_enable, NULL); + ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_DISC_ENABLE; + rc = ble_hci_sched_enqueue(ble_gap_conn_disc_tx_enable, NULL); if (rc != 0) { ble_gap_conn_master_failed(rc); return; @@ -922,15 +913,13 @@ ble_gap_conn_gen_disc_ack_params(struct ble_hci_ack *ack, void *arg) } static int -ble_gap_conn_gen_disc_tx_params(void *arg) +ble_gap_conn_disc_tx_params(void *arg) { int rc; - assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_GEN_DISC_PENDING); - - ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_GEN_DISC_PARAMS; - ble_hci_ack_set_callback(ble_gap_conn_gen_disc_ack_params, NULL); + assert(ble_gap_conn_master_state == BLE_GAP_CONN_M_STATE_DISC_PARAMS); + ble_hci_ack_set_callback(ble_gap_conn_disc_ack_params, NULL); rc = host_hci_cmd_le_set_scan_params(BLE_HCI_SCAN_TYPE_ACTIVE, BLE_GAP_SCAN_FAST_INTERVAL_MIN, BLE_GAP_SCAN_FAST_WINDOW, @@ -951,7 +940,7 @@ ble_gap_conn_gen_disc_tx_params(void *arg) * @return 0 on success; nonzero on failure. */ int -ble_gap_conn_gen_disc(uint32_t duration_ms) +ble_gap_conn_disc(uint32_t duration_ms) { int rc; @@ -964,10 +953,10 @@ ble_gap_conn_gen_disc(uint32_t duration_ms) duration_ms = BLE_GAP_GEN_DISC_SCAN_MIN; } - ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_GEN_DISC_PENDING; + ble_gap_conn_master_state = BLE_GAP_CONN_M_STATE_DISC_PARAMS; memset(ble_gap_conn_master_addr, 0, BLE_DEV_ADDR_LEN); - rc = ble_hci_sched_enqueue(ble_gap_conn_gen_disc_tx_params, NULL); + rc = ble_hci_sched_enqueue(ble_gap_conn_disc_tx_params, NULL); if (rc != 0) { ble_gap_conn_master_reset_state(); return rc; http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/a232d329/net/nimble/host/src/test/ble_os_test.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/src/test/ble_os_test.c b/net/nimble/host/src/test/ble_os_test.c index 18e8ada..8cf3b1e 100644 --- a/net/nimble/host/src/test/ble_os_test.c +++ b/net/nimble/host/src/test/ble_os_test.c @@ -178,7 +178,7 @@ ble_gap_gen_disc_test_task_handler(void *arg) TEST_ASSERT(!ble_gap_conn_master_in_progress()); /* Initiate the general discovery procedure with a 200 ms timeout. */ - ble_gap_conn_gen_disc(200); + ble_gap_conn_disc(200); TEST_ASSERT(ble_hs_conn_first() == NULL); TEST_ASSERT(ble_gap_conn_master_in_progress()); TEST_ASSERT(!cb_called);
