You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2016/04/28 02:14:07 UTC
[08/50] [abbrv] incubator-mynewt-core git commit: ble host - major
changes.
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_gap_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gap_test.c b/net/nimble/host/src/test/ble_gap_test.c
index 85b630f..7da3d3f 100644
--- a/net/nimble/host/src/test/ble_gap_test.c
+++ b/net/nimble/host/src/test/ble_gap_test.c
@@ -110,27 +110,6 @@ ble_gap_test_util_connect_cb(int event, int status,
return 0;
}
-static int
-ble_gap_test_util_rx_hci_ack(int *cmd_idx, int cmd_fail_idx,
- uint8_t ogf, uint16_t ocf, uint8_t fail_status)
-{
- uint16_t opcode;
- int cur_idx;
-
- opcode = (ogf << 10) | ocf;
-
- cur_idx = *cmd_idx;
- (*cmd_idx)++;
-
- if (cur_idx == cmd_fail_idx) {
- ble_hs_test_util_rx_ack(opcode, fail_status);
- return 1;
- } else {
- ble_hs_test_util_rx_ack(opcode, 0);
- return 0;
- }
-}
-
static void
ble_gap_test_util_verify_tx_clear_wl(void)
{
@@ -364,10 +343,14 @@ ble_gap_test_util_rx_update_complete(
ble_gap_rx_update_complete(&evt);
}
-static void
-ble_gap_test_util_rx_param_req(struct ble_gap_upd_params *params)
+static int
+ble_gap_test_util_rx_param_req(struct ble_gap_upd_params *params, int pos,
+ int *cmd_idx, int cmd_fail_idx,
+ uint8_t fail_status)
{
struct hci_le_conn_param_req evt;
+ uint16_t opcode;
+ uint8_t hci_status;
evt.subevent_code = BLE_HCI_LE_SUBEV_REM_CONN_PARM_REQ;
evt.connection_handle = 2;
@@ -375,8 +358,25 @@ ble_gap_test_util_rx_param_req(struct ble_gap_upd_params *params)
evt.itvl_max = params->itvl_max;
evt.latency = params->latency;
evt.timeout = params->supervision_timeout;
+
+ if (pos) {
+ opcode = host_hci_opcode_join(BLE_HCI_OGF_LE,
+ BLE_HCI_OCF_LE_REM_CONN_PARAM_RR);
+ } else {
+ opcode = host_hci_opcode_join(BLE_HCI_OGF_LE,
+ BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR);
+ }
+ if (*cmd_idx == cmd_fail_idx) {
+ hci_status = fail_status;
+ } else {
+ hci_status = 0;
+ }
+ (*cmd_idx)++;
+ ble_hs_test_util_set_ack(opcode, hci_status);
ble_gap_rx_param_req(&evt);
+
+ return hci_status;
}
/*****************************************************************************
@@ -521,7 +521,6 @@ ble_gap_test_util_disc(uint8_t disc_mode, uint8_t *peer_addr,
if (cmd_fail_idx > 1) {
/* Verify tx of scan enable command. */
- ble_hci_sched_wakeup();
ble_gap_test_util_verify_tx_scan_enable(1);
}
@@ -576,7 +575,15 @@ TEST_CASE(ble_gap_test_case_conn_disc_good)
ble_gap_test_util_disc(d, peer_addr, &adv, -1, 0);
TEST_ASSERT(ble_gap_master_in_progress());
- TEST_ASSERT(ble_gap_test_disc_event == -1);
+ TEST_ASSERT(ble_gap_test_disc_event == BLE_GAP_EVENT_DISC_SUCCESS);
+ TEST_ASSERT(ble_gap_test_disc_status == 0);
+ TEST_ASSERT(ble_gap_test_disc_desc.event_type ==
+ BLE_HCI_ADV_TYPE_ADV_IND);
+ TEST_ASSERT(ble_gap_test_disc_desc.addr_type == BLE_ADDR_TYPE_PUBLIC);
+ TEST_ASSERT(ble_gap_test_disc_desc.length_data == 3);
+ TEST_ASSERT(ble_gap_test_disc_desc.rssi == 0);
+ TEST_ASSERT(memcmp(ble_gap_test_disc_desc.addr, adv.addr, 6) == 0);
+ TEST_ASSERT(ble_gap_test_disc_arg == NULL);
}
}
@@ -706,51 +713,10 @@ TEST_CASE(ble_gap_test_case_conn_dir_bad_args)
TEST_ASSERT(rc == BLE_HS_EALREADY);
}
-TEST_CASE(ble_gap_test_case_conn_dir_bad_addr)
-{
- struct hci_le_conn_complete evt;
- int rc;
-
- uint8_t peer_addr[6] = { 1, 2, 3, 4, 5, 6 };
-
- ble_gap_test_util_init();
-
- TEST_ASSERT(!ble_gap_master_in_progress());
-
- rc = ble_hs_test_util_conn_initiate(BLE_ADDR_TYPE_PUBLIC, peer_addr, NULL,
- ble_gap_test_util_connect_cb, NULL, 0);
- TEST_ASSERT(rc == 0);
-
- TEST_ASSERT(ble_gap_master_in_progress());
-
- /* Verify tx of create connection command. */
- ble_gap_test_util_verify_tx_create_conn(BLE_HCI_CONN_FILT_NO_WL);
- TEST_ASSERT(ble_gap_master_in_progress());
- TEST_ASSERT(ble_hs_conn_find(2) == NULL);
-
- /* Receive connection complete event. */
- memset(&evt, 0, sizeof evt);
- evt.subevent_code = BLE_HCI_LE_SUBEV_CONN_COMPLETE;
- evt.status = BLE_ERR_SUCCESS;
- evt.connection_handle = 2;
- evt.role = BLE_HCI_LE_CONN_COMPLETE_ROLE_MASTER;
- memcpy(evt.peer_addr, ((uint8_t[]){1,1,1,1,1,1}), 6);
- rc = ble_gap_rx_conn_complete(&evt);
- TEST_ASSERT(rc == BLE_HS_ECONTROLLER);
-
- TEST_ASSERT(!ble_gap_master_in_progress());
-
- TEST_ASSERT(ble_gap_test_conn_event == BLE_GAP_EVENT_CONN);
- TEST_ASSERT(ble_gap_test_conn_desc.conn_handle == BLE_HS_CONN_HANDLE_NONE);
-
- TEST_ASSERT(ble_hs_conn_find(2) == NULL);
-}
-
TEST_SUITE(ble_gap_test_suite_conn_dir)
{
ble_gap_test_case_conn_dir_good();
ble_gap_test_case_conn_dir_bad_args();
- ble_gap_test_case_conn_dir_bad_addr();
}
/*****************************************************************************
@@ -1232,7 +1198,6 @@ ble_gap_test_util_stop_adv(uint8_t disc_mode, uint8_t conn_mode,
TEST_ASSERT(rc == BLE_HS_HCI_ERR(hci_status));
/* Verify tx of advertising enable command. */
- ble_hci_sched_wakeup();
ble_gap_test_util_verify_tx_adv_enable(0);
}
@@ -1334,7 +1299,7 @@ ble_gap_test_util_update(struct ble_gap_upd_params *params,
TEST_ASSERT(ble_gap_test_conn_desc.supervision_timeout ==
params->supervision_timeout);
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
return;
@@ -1349,7 +1314,7 @@ fail:
BLE_GAP_INITIAL_CONN_LATENCY);
TEST_ASSERT(ble_gap_test_conn_desc.supervision_timeout ==
BLE_GAP_INITIAL_SUPERVISION_TIMEOUT);
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
}
static void
@@ -1405,19 +1370,16 @@ ble_gap_test_util_update_req_pos(struct ble_gap_upd_params *peer_params,
TEST_ASSERT(!ble_gap_master_in_progress());
ble_gap_test_conn_self_params = *self_params;
- ble_gap_test_util_rx_param_req(peer_params);
+ rc = ble_gap_test_util_rx_param_req(peer_params, 1, &cmd_idx, cmd_fail_idx,
+ hci_status);
+ if (rc != 0) {
+ goto hci_fail;
+ }
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(ble_gap_update_in_progress(2));
/* Verify tx of connection parameters reply command. */
- ble_hci_sched_wakeup();
ble_gap_test_util_verify_tx_params_reply_pos();
- rc = ble_gap_test_util_rx_hci_ack(&cmd_idx, cmd_fail_idx, BLE_HCI_OGF_LE,
- BLE_HCI_OCF_LE_REM_CONN_PARAM_RR,
- hci_status);
- if (rc != 0) {
- goto hci_fail;
- }
TEST_ASSERT(!ble_gap_master_in_progress());
TEST_ASSERT(ble_gap_update_in_progress(2));
@@ -1426,7 +1388,7 @@ ble_gap_test_util_update_req_pos(struct ble_gap_upd_params *peer_params,
ble_gap_test_util_rx_update_complete(0, self_params);
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
TEST_ASSERT(ble_gap_test_conn_event == BLE_GAP_EVENT_CONN_UPDATED);
TEST_ASSERT(ble_gap_test_conn_status == 0);
@@ -1470,24 +1432,21 @@ ble_gap_test_util_update_req_neg(struct ble_gap_upd_params *peer_params,
&reason);
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
- ble_gap_test_util_rx_param_req(peer_params);
+ rc = ble_gap_test_util_rx_param_req(peer_params, 0, &cmd_idx, cmd_fail_idx,
+ hci_status);
+ if (rc != 0) {
+ goto hci_fail;
+ }
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(ble_gap_update_in_progress(2));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
/* Verify tx of connection parameters negative reply command. */
- ble_hci_sched_wakeup();
ble_gap_test_util_verify_tx_params_reply_neg(reason);
- rc = ble_gap_test_util_rx_hci_ack(&cmd_idx, cmd_fail_idx, BLE_HCI_OGF_LE,
- BLE_HCI_OCF_LE_REM_CONN_PARAM_NRR,
- hci_status);
- if (rc != 0) {
- goto hci_fail;
- }
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
return;
@@ -1524,7 +1483,7 @@ ble_gap_test_util_update_req_concurrent(
NULL);
TEST_ASSERT(!ble_gap_master_in_progress());
- TEST_ASSERT(!ble_gap_update_in_progress(BLE_HS_CONN_HANDLE_NONE));
+ TEST_ASSERT(!ble_gap_update_in_progress(2));
hci_status = cmd_fail_idx == 0 ? fail_status : 0;
rc = ble_hs_test_util_conn_update(2, init_params, hci_status);
@@ -1547,20 +1506,16 @@ ble_gap_test_util_update_req_concurrent(
/* Receive connection parameter update request from peer. */
ble_gap_test_conn_self_params = *self_params;
- ble_gap_test_util_rx_param_req(peer_params);
+ rc = ble_gap_test_util_rx_param_req(peer_params, 1, &cmd_idx, cmd_fail_idx,
+ hci_status);
+ if (rc != 0) {
+ goto hci_fail;
+ }
TEST_ASSERT(!ble_gap_master_in_progress());
TEST_ASSERT(ble_gap_update_in_progress(2));
/* Verify tx of connection parameters reply command. */
- ble_hci_sched_wakeup();
ble_gap_test_util_verify_tx_params_reply_pos();
- cmd_idx = 1;
- rc = ble_gap_test_util_rx_hci_ack(&cmd_idx, cmd_fail_idx, BLE_HCI_OGF_LE,
- BLE_HCI_OCF_LE_REM_CONN_PARAM_RR,
- fail_status);
- if (rc != 0) {
- goto hci_fail;
- }
TEST_ASSERT(!ble_gap_master_in_progress());
TEST_ASSERT(ble_gap_update_in_progress(2));
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_gatt_conn_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gatt_conn_test.c b/net/nimble/host/src/test/ble_gatt_conn_test.c
index 1f31122..994f719 100644
--- a/net/nimble/host/src/test/ble_gatt_conn_test.c
+++ b/net/nimble/host/src/test/ble_gatt_conn_test.c
@@ -84,9 +84,6 @@ ble_gatt_conn_test_write_cb(uint16_t conn_handle, struct ble_gatt_error *error,
TEST_ASSERT(error->status == BLE_HS_ENOTCONN);
TEST_ASSERT(attr != NULL);
TEST_ASSERT(attr->handle == BLE_GATT_BREAK_TEST_WRITE_ATTR_HANDLE);
- TEST_ASSERT(attr->value_len == sizeof ble_gatt_conn_test_write_value);
- TEST_ASSERT(memcmp(attr->value, ble_gatt_conn_test_write_value,
- sizeof ble_gatt_conn_test_write_value) == 0);
return 0;
}
@@ -159,6 +156,7 @@ TEST_CASE(ble_gatt_conn_test_disconnect)
ble_gattc_connection_broken(BLE_GATT_BREAK_TEST_DISC_CHR_HANDLE);
ble_gattc_connection_broken(BLE_GATT_BREAK_TEST_READ_HANDLE);
ble_gattc_connection_broken(BLE_GATT_BREAK_TEST_WRITE_HANDLE);
+ /* XXX: Add remaining procedures. */
TEST_ASSERT(disc_s_called == 1);
TEST_ASSERT(disc_c_called == 1);
@@ -166,55 +164,9 @@ TEST_CASE(ble_gatt_conn_test_disconnect)
TEST_ASSERT(write_called == 1);
}
-TEST_CASE(ble_gatt_conn_test_congestion)
-{
- struct ble_hs_conn *conn;
- int rc;
-
- ble_hs_test_util_init();
-
- /* Allow only one outstanding packet per connection. */
- ble_hs_cfg.max_outstanding_pkts_per_conn = 1;
-
- /* Create a connection. */
- conn = ble_hs_test_util_create_conn(1, ((uint8_t[]){1,2,3,4,5,6,7,8}),
- NULL, NULL);
-
- /* Try to send two data packets. */
- rc = ble_gattc_write(1, 0x1234, ble_gatt_conn_test_write_value,
- sizeof ble_gatt_conn_test_write_value, NULL, NULL);
- TEST_ASSERT_FATAL(rc == 0);
-
- rc = ble_gattc_write(1, 0x1234, ble_gatt_conn_test_write_value,
- sizeof ble_gatt_conn_test_write_value, NULL, NULL);
- TEST_ASSERT_FATAL(rc == 0);
- ble_hs_test_util_tx_all();
-
- /* Ensure only one packet got sent. */
- TEST_ASSERT(conn->bhc_outstanding_pkts == 1);
-
- /* Additional wakeups should not trigger the second send. */
- ble_hs_test_util_tx_all();
- TEST_ASSERT(conn->bhc_outstanding_pkts == 1);
-
- /* Receive a num-packets-completed event. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 1, 1 },
- { 0 }});
-
- /* Outstanding packet count should have been reduced to 0. */
- TEST_ASSERT(conn->bhc_outstanding_pkts == 0);
-
- /* Now the second write should get sent. */
- ble_hs_test_util_tx_all();
- TEST_ASSERT(conn->bhc_outstanding_pkts == 1);
-}
-
TEST_SUITE(ble_gatt_break_suite)
{
ble_gatt_conn_test_disconnect();
- ble_gatt_conn_test_congestion();
}
int
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_gatt_read_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gatt_read_test.c b/net/nimble/host/src/test/ble_gatt_read_test.c
index 47392fb..edf7d63 100644
--- a/net/nimble/host/src/test/ble_gatt_read_test.c
+++ b/net/nimble/host/src/test/ble_gatt_read_test.c
@@ -43,9 +43,6 @@ int ble_gatt_read_test_complete;
uint16_t ble_gatt_read_test_bad_conn_handle;
int ble_gatt_read_test_bad_status;
-uint16_t ble_gatt_read_test_mult_handles[BLE_GATT_READ_TEST_MAX_ATTRS];
-uint8_t ble_gatt_read_test_mult_num_handles;
-
static void
ble_gatt_read_test_misc_init(void)
{
@@ -97,6 +94,8 @@ ble_gatt_read_test_cb(uint16_t conn_handle, struct ble_gatt_error *error,
ble_gatt_read_test_complete = 1;
return 1;
}
+ } else {
+ ble_gatt_read_test_complete = 1;
}
return 0;
@@ -149,46 +148,6 @@ ble_gatt_read_test_long_cb(uint16_t conn_handle, struct ble_gatt_error *error,
return 0;
}
-static int
-ble_gatt_read_test_mult_cb(uint16_t conn_handle, struct ble_gatt_error *error,
- uint16_t *attr_handles, uint8_t num_attr_handles,
- uint8_t *attr_data, uint16_t attr_data_len,
- void *arg)
-{
- struct ble_gatt_read_test_attr *dst;
- int i;
-
- ble_gatt_read_test_mult_num_handles = num_attr_handles;
- for (i = 0; i < num_attr_handles; i++) {
- ble_gatt_read_test_mult_handles[i] = attr_handles[i];
- }
-
- if (error != NULL) {
- ble_gatt_read_test_bad_conn_handle = conn_handle;
- ble_gatt_read_test_bad_status = error->status;
- ble_gatt_read_test_complete = 1;
- return 0;
- }
-
- if (attr_data == NULL) {
- ble_gatt_read_test_complete = 1;
- return 0;
- }
-
- dst = ble_gatt_read_test_attrs + ble_gatt_read_test_num_attrs++;
-
- TEST_ASSERT_FATAL(attr_data_len <= sizeof dst->value);
-
- dst->conn_handle = conn_handle;
- dst->handle = 0;
- dst->value_len = attr_data_len;
- memcpy(dst->value, attr_data, attr_data_len);
-
- ble_gatt_read_test_complete = 1;
-
- return 0;
-}
-
static void
ble_gatt_read_test_misc_rx_rsp_good_raw(struct ble_hs_conn *conn,
uint8_t att_op,
@@ -500,7 +459,7 @@ ble_gatt_read_test_misc_mult_verify_good(struct ble_gatt_attr *attrs)
}
rc = ble_gattc_read_mult(conn->bhc_handle, handles, num_attrs,
- ble_gatt_read_test_mult_cb, NULL);
+ ble_gatt_read_test_cb, NULL);
TEST_ASSERT_FATAL(rc == 0);
ble_gatt_read_test_misc_rx_rsp_good_raw(conn, BLE_ATT_OP_READ_MULT_RSP,
@@ -509,9 +468,6 @@ ble_gatt_read_test_misc_mult_verify_good(struct ble_gatt_attr *attrs)
TEST_ASSERT(ble_gatt_read_test_complete);
TEST_ASSERT(!ble_gattc_any_jobs());
TEST_ASSERT(ble_gatt_read_test_attrs[0].conn_handle == conn->bhc_handle);
- TEST_ASSERT(ble_gatt_read_test_mult_num_handles == num_attrs);
- TEST_ASSERT(memcmp(ble_gatt_read_test_mult_handles, handles,
- num_attrs * 2) == 0);
TEST_ASSERT(ble_gatt_read_test_attrs[0].value_len == off);
TEST_ASSERT(memcmp(ble_gatt_read_test_attrs[0].value, expected_value,
off) == 0);
@@ -534,16 +490,13 @@ ble_gatt_read_test_misc_mult_verify_bad(uint8_t att_status,
num_attrs = ble_gatt_read_test_misc_extract_handles(attrs, handles);
rc = ble_gattc_read_mult(conn->bhc_handle, handles, num_attrs,
- ble_gatt_read_test_mult_cb, NULL);
+ ble_gatt_read_test_cb, NULL);
TEST_ASSERT_FATAL(rc == 0);
ble_gatt_read_test_misc_rx_rsp_bad(conn, att_status, err_handle);
TEST_ASSERT(ble_gatt_read_test_num_attrs == 0);
TEST_ASSERT(ble_gatt_read_test_bad_conn_handle == conn->bhc_handle);
- TEST_ASSERT(ble_gatt_read_test_mult_num_handles == num_attrs);
- TEST_ASSERT(memcmp(ble_gatt_read_test_mult_handles, handles,
- num_attrs * 2) == 0);
TEST_ASSERT(ble_gatt_read_test_bad_status ==
BLE_HS_ERR_ATT_BASE + att_status);
TEST_ASSERT(!ble_gattc_any_jobs());
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_gatt_write_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gatt_write_test.c b/net/nimble/host/src/test/ble_gatt_write_test.c
index 3c17114..b452e79 100644
--- a/net/nimble/host/src/test/ble_gatt_write_test.c
+++ b/net/nimble/host/src/test/ble_gatt_write_test.c
@@ -63,8 +63,6 @@ ble_gatt_write_test_cb_good(uint16_t conn_handle, struct ble_gatt_error *error,
if (attr_len != NULL) {
TEST_ASSERT(error == NULL);
TEST_ASSERT(attr->handle == 100);
- TEST_ASSERT(attr->value_len == *attr_len);
- TEST_ASSERT(attr->value == ble_gatt_write_test_attr_value);
} else {
TEST_ASSERT(error != NULL);
ble_gatt_write_test_error = *error;
@@ -348,15 +346,14 @@ TEST_CASE(ble_gatt_write_test_no_rsp)
attr_len = 4;
rc = ble_gattc_write_no_rsp(2, 100, ble_gatt_write_test_attr_value,
- attr_len, ble_gatt_write_test_cb_good,
- &attr_len);
+ attr_len);
TEST_ASSERT(rc == 0);
/* Send the pending ATT Write Command. */
ble_hs_test_util_tx_all();
- /* No response expected; verify callback got called. */
- TEST_ASSERT(ble_gatt_write_test_cb_called);
+ /* No response expected; verify callback not called. */
+ TEST_ASSERT(!ble_gatt_write_test_cb_called);
}
TEST_CASE(ble_gatt_write_test_rsp)
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_host_hci_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_host_hci_test.c b/net/nimble/host/src/test/ble_host_hci_test.c
index 778df9d..d451e7a 100644
--- a/net/nimble/host/src/test/ble_host_hci_test.c
+++ b/net/nimble/host/src/test/ble_host_hci_test.c
@@ -38,142 +38,9 @@ TEST_CASE(ble_host_hci_test_event_bad)
TEST_ASSERT(rc == BLE_HS_ENOTSUP);
}
-TEST_CASE(ble_host_hci_test_event_cmd_complete)
-{
- uint8_t buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN];
- int rc;
-
- ble_hs_test_util_init();
-
- /*** Unsent OCF. */
- ble_hs_test_util_build_cmd_complete(buf, sizeof buf, 1, 1, 12345);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == BLE_HS_ENOENT);
-
- /*** No error on NOP. */
- ble_hs_test_util_build_cmd_complete(buf, sizeof buf, 1, 1,
- BLE_HCI_OPCODE_NOP);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-
- /*** Acknowledge sent command. */
- rc = host_hci_cmd_le_set_adv_enable(0);
- TEST_ASSERT(rc == 0);
- ble_hs_test_util_build_cmd_complete(
- buf, sizeof buf, 1, 1,
- (BLE_HCI_OGF_LE << 10) | BLE_HCI_OCF_LE_SET_ADV_ENABLE);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-
- /*** Duplicate ack is error. */
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == BLE_HS_ENOENT);
-}
-
-TEST_CASE(ble_host_hci_test_event_cmd_status)
-{
- uint8_t buf[BLE_HCI_EVENT_CMD_STATUS_LEN];
- int rc;
-
- ble_hs_test_util_init();
-
- /*** Unsent OCF. */
- ble_hs_test_util_build_cmd_status(buf, sizeof buf, 0, 1, 12345);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == BLE_HS_ENOENT);
-
- /*** No error on NOP. */
- ble_hs_test_util_build_cmd_complete(buf, sizeof buf, 0, 1,
- BLE_HCI_OPCODE_NOP);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-
- /*** Acknowledge sent command. */
- rc = host_hci_cmd_le_set_adv_enable(0);
- TEST_ASSERT(rc == 0);
- ble_hs_test_util_build_cmd_status(
- buf, sizeof buf, BLE_ERR_SUCCESS, 1,
- (BLE_HCI_OGF_LE << 10) | BLE_HCI_OCF_LE_SET_ADV_ENABLE);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-
- /*** Duplicate ack is error. */
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == BLE_HS_ENOENT);
-}
-
-static int ble_host_hci_test_tx_called;
-static uint8_t ble_host_hci_test_handle;
-
-static int
-ble_host_hci_test_util_tx_cb(void *arg)
-{
- ble_host_hci_test_tx_called++;
- return 0;
-}
-
-static void
-ble_host_hci_test_util_ack_cb(struct ble_hci_ack *ack, void *arg)
-{ }
-
-TEST_CASE(ble_host_hci_test_cancel_bad)
-{
- int rc;
-
- /*** Nonexistant handle. */
- rc = ble_hci_sched_cancel(123);
- TEST_ASSERT(rc == BLE_HS_ENOENT);
-}
-
-TEST_CASE(ble_host_hci_test_cancel_pending)
-{
- uint8_t hci_handle;
- int rc;
-
- rc = ble_hci_sched_enqueue(ble_host_hci_test_util_tx_cb, NULL,
- &hci_handle);
- TEST_ASSERT_FATAL(rc == 0);
- TEST_ASSERT(hci_handle != BLE_HCI_SCHED_HANDLE_NONE);
-
- rc = ble_hci_sched_cancel(hci_handle);
- TEST_ASSERT(rc == 0);
-
- ble_hci_sched_wakeup();
- TEST_ASSERT(ble_host_hci_test_tx_called == 0);
-}
-
-TEST_CASE(ble_host_hci_test_cancel_cur)
-{
- uint8_t hci_handle;
- int rc;
-
- ble_hci_sched_set_ack_cb(ble_host_hci_test_util_ack_cb, NULL);
- rc = ble_hci_sched_enqueue(ble_host_hci_test_util_tx_cb, NULL,
- &hci_handle);
- TEST_ASSERT_FATAL(rc == 0);
- TEST_ASSERT(hci_handle != BLE_HCI_SCHED_HANDLE_NONE);
-
- ble_host_hci_test_handle = hci_handle;
-
- ble_hci_sched_wakeup();
-
- TEST_ASSERT(ble_host_hci_test_tx_called == 1);
- TEST_ASSERT(ble_hci_sched_get_ack_cb() != NULL);
-
- rc = ble_hci_sched_cancel(hci_handle);
- TEST_ASSERT_FATAL(rc == 0);
-
- TEST_ASSERT(ble_hci_sched_get_ack_cb() == NULL);
-}
-
TEST_SUITE(ble_host_hci_suite)
{
ble_host_hci_test_event_bad();
- ble_host_hci_test_event_cmd_complete();
- ble_host_hci_test_event_cmd_status();
- ble_host_hci_test_cancel_bad();
- ble_host_hci_test_cancel_pending();
- ble_host_hci_test_cancel_cur();
}
int
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_hs_conn_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_conn_test.c b/net/nimble/host/src/test/ble_hs_conn_test.c
index 5a23700..fa23c18 100644
--- a/net/nimble/host/src/test/ble_hs_conn_test.c
+++ b/net/nimble/host/src/test/ble_hs_conn_test.c
@@ -110,8 +110,6 @@ TEST_CASE(ble_hs_conn_test_direct_connectable_success)
NULL, 0, 0);
TEST_ASSERT(rc == 0);
- ble_hci_sched_wakeup();
-
TEST_ASSERT(!ble_gap_master_in_progress());
TEST_ASSERT(ble_gap_slave_in_progress());
@@ -220,72 +218,6 @@ TEST_CASE(ble_hs_conn_test_undirect_connectable_success)
TEST_ASSERT(chan->blc_peer_mtu == 0);
TEST_ASSERT(chan->blc_default_mtu == BLE_ATT_MTU_DFLT);
}
-TEST_CASE(ble_hs_conn_test_completed_pkts)
-{
- struct ble_hs_conn *conn1;
- struct ble_hs_conn *conn2;
-
- ble_hs_test_util_init();
-
- conn1 = ble_hs_test_util_create_conn(1, ((uint8_t[]){2,3,4,5,6,7,8,9}),
- NULL, NULL);
- conn2 = ble_hs_test_util_create_conn(2, ((uint8_t[]){3,4,5,6,7,8,9,10}),
- NULL, NULL);
-
- conn1->bhc_outstanding_pkts = 5;
- conn2->bhc_outstanding_pkts = 5;
-
- /*** Event specifies nonexistent connection; no effect. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 5, 5 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 5);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 5);
-
- /*** Event specifies connection 1. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 1, 1 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 4);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 5);
-
- /*** Event specifies connection 2. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 2, 1 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 4);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 4);
-
- /*** Event specifies connections 1 and 2. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 1, 2 },
- { 2, 2 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 2);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 2);
-
- /*** Event specifies connections 1, 2, and nonexistent. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 1, 1 },
- { 2, 1 },
- { 10, 50 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 1);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 1);
-
- /*** Don't wrap when count gets out of sync. */
- ble_hs_test_util_rx_num_completed_pkts_event(
- (struct ble_hs_test_util_num_completed_pkts_entry []) {
- { 1, 10 },
- { 0 }});
- TEST_ASSERT(conn1->bhc_outstanding_pkts == 0);
- TEST_ASSERT(conn2->bhc_outstanding_pkts == 1);
-}
TEST_SUITE(conn_suite)
{
@@ -294,7 +226,6 @@ TEST_SUITE(conn_suite)
ble_hs_conn_test_direct_connectable_success();
ble_hs_conn_test_direct_connectable_hci_errors();
ble_hs_conn_test_undirect_connectable_success();
- ble_hs_conn_test_completed_pkts();
}
int
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_hs_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test.c b/net/nimble/host/src/test/ble_hs_test.c
index 61150a6..183774e 100644
--- a/net/nimble/host/src/test/ble_hs_test.c
+++ b/net/nimble/host/src/test/ble_hs_test.c
@@ -49,28 +49,27 @@ int
main(void)
{
tu_config.tc_print_results = 1;
- tu_config.tc_system_assert = 1;
tu_init();
- ble_l2cap_test_all();
- ble_l2cap_sm_test_all();
- ble_att_svr_test_all();
ble_att_clt_test_all();
- ble_host_hci_test_all();
- ble_hs_conn_test_all();
- ble_os_test_all();
- ble_uuid_test_all();
- ble_gatt_disc_s_test_all();
+ ble_att_svr_test_all();
+ ble_gap_test_all();
+ ble_gatt_conn_test_all();
ble_gatt_disc_c_test_all();
ble_gatt_disc_d_test_all();
+ ble_gatt_disc_s_test_all();
+ ble_gatt_find_s_test_all();
ble_gatt_read_test_all();
ble_gatt_write_test_all();
- ble_gatt_conn_test_all();
- ble_hs_adv_test_all();
- ble_gatts_reg_test_all();
ble_gatts_notify_test_all();
- ble_gatt_find_s_test_all();
- ble_gap_test_all();
+ ble_gatts_reg_test_all();
+ ble_host_hci_test_all();
+ ble_hs_adv_test_all();
+ ble_hs_conn_test_all();
+ ble_l2cap_sm_test_all();
+ ble_l2cap_test_all();
+ ble_os_test_all();
+ ble_uuid_test_all();
return tu_any_failed;
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_hs_test_util.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.c b/net/nimble/host/src/test/ble_hs_test_util.c
index 0741cc3..d8c9dab 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.c
+++ b/net/nimble/host/src/test/ble_hs_test_util.c
@@ -37,6 +37,8 @@
#define BLE_HS_TEST_UTIL_LE_OPCODE(ocf) \
host_hci_opcode_join(BLE_HCI_OGF_LE, (ocf))
+struct os_eventq ble_hs_test_util_evq;
+
os_membuf_t ble_hs_test_util_mbuf_mpool_data[BLE_HS_TEST_UTIL_MEMPOOL_SIZE];
struct os_mbuf_pool ble_hs_test_util_mbuf_pool;
struct os_mempool ble_hs_test_util_mbuf_mpool;
@@ -134,7 +136,7 @@ ble_hs_test_util_build_cmd_status(uint8_t *dst, int len,
struct ble_hs_test_util_phony_ack {
uint16_t opcode;
uint8_t status;
- uint8_t *evt_params;
+ uint8_t evt_params[256];
uint8_t evt_params_len;
};
@@ -143,7 +145,7 @@ ble_hs_test_util_phony_acks[BLE_HS_TEST_UTIL_PHONY_ACK_MAX];
static int ble_hs_test_util_num_phony_acks;
static int
-ble_hs_test_util_phony_ack_cb(void *cmd, uint8_t *ack, int ack_buf_len)
+ble_hs_test_util_phony_ack_cb(uint8_t *ack, int ack_buf_len)
{
struct ble_hs_test_util_phony_ack *entry;
@@ -170,13 +172,30 @@ ble_hs_test_util_phony_ack_cb(void *cmd, uint8_t *ack, int ack_buf_len)
}
void
-ble_hs_test_util_set_ack(uint16_t opcode, uint8_t status)
+ble_hs_test_util_set_ack_params(uint16_t opcode, uint8_t status, void *params,
+ uint8_t params_len)
{
- ble_hs_test_util_phony_acks[0].opcode = opcode;
- ble_hs_test_util_phony_acks[0].status = status;
+ struct ble_hs_test_util_phony_ack *ack;
+
+ ack = ble_hs_test_util_phony_acks + 0;
+ ack->opcode = opcode;
+ ack->status = status;
+
+ if (params == NULL || params_len == 0) {
+ ack->evt_params_len = 0;
+ } else {
+ memcpy(ack->evt_params, params, params_len);
+ ack->evt_params_len = params_len;
+ }
ble_hs_test_util_num_phony_acks = 1;
- ble_hci_block_set_phony_ack_cb(ble_hs_test_util_phony_ack_cb);
+ ble_hci_set_phony_ack_cb(ble_hs_test_util_phony_ack_cb);
+}
+
+void
+ble_hs_test_util_set_ack(uint16_t opcode, uint8_t status)
+{
+ ble_hs_test_util_set_ack_params(opcode, status, NULL, 0);
}
static void
@@ -189,7 +208,7 @@ ble_hs_test_util_set_ack_seq(struct ble_hs_test_util_phony_ack *acks)
}
ble_hs_test_util_num_phony_acks = i;
- ble_hci_block_set_phony_ack_cb(ble_hs_test_util_phony_ack_cb);
+ ble_hci_set_phony_ack_cb(ble_hs_test_util_phony_ack_cb);
}
struct ble_hs_conn *
@@ -320,7 +339,7 @@ ble_hs_test_util_adv_start(uint8_t discoverable_mode,
acks[i] = (struct ble_hs_test_util_phony_ack) {
BLE_HS_TEST_UTIL_LE_OPCODE(BLE_HCI_OCF_LE_RD_ADV_CHAN_TXPWR),
fail_idx == i ? fail_status : 0,
- (uint8_t[]) { 0 },
+ { 0 },
1,
};
i++;
@@ -414,65 +433,16 @@ ble_hs_test_util_conn_update(uint16_t conn_handle,
return rc;
}
-void
-ble_hs_test_util_rx_ack_param(uint16_t opcode, uint8_t status, void *param,
- int param_len)
-{
- uint8_t buf[256];
- int rc;
-
- ble_hs_test_util_build_cmd_complete(buf, sizeof buf, param_len + 1, 1,
- opcode);
- buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN] = status;
- memcpy(buf + BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 1, param, param_len);
-
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-}
-
-void
-ble_hs_test_util_rx_ack(uint16_t opcode, uint8_t status)
-{
- uint8_t buf[BLE_HCI_EVENT_CMD_STATUS_LEN];
- int rc;
-
- ble_hs_test_util_build_cmd_status(buf, sizeof buf, status, 1, opcode);
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-}
-
-void
-ble_hs_test_util_rx_hci_buf_size_ack(uint16_t buf_size)
+int
+ble_hs_test_util_security_initiate(uint16_t conn_handle, uint8_t hci_status)
{
- uint8_t buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN +
- BLE_HCI_RD_BUF_SIZE_RSPLEN + 1];
int rc;
- ble_hs_test_util_build_cmd_complete(buf, sizeof buf,
- BLE_HCI_RD_BUF_SIZE_RSPLEN + 1, 1,
- (BLE_HCI_OGF_LE << 10) |
- BLE_HCI_OCF_LE_RD_BUF_SIZE);
-
- buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 0] = 0;
- htole16(buf + BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 1, buf_size);
- buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 3] = 1;
-
- rc = host_hci_event_rx(buf);
- TEST_ASSERT(rc == 0);
-}
-
-void
-ble_hs_test_util_rx_le_ack_param(uint16_t ocf, uint8_t status, void *param,
- int param_len)
-{
- ble_hs_test_util_rx_ack_param((BLE_HCI_OGF_LE << 10) | ocf, status, param,
- param_len);
-}
+ ble_hs_test_util_set_ack(
+ BLE_HS_TEST_UTIL_LE_OPCODE(BLE_HCI_OCF_LE_START_ENCRYPT), hci_status);
-void
-ble_hs_test_util_rx_le_ack(uint16_t ocf, uint8_t status)
-{
- ble_hs_test_util_rx_ack((BLE_HCI_OGF_LE << 10) | ocf, status);
+ rc = ble_gap_security_initiate(conn_handle);
+ return rc;
}
int
@@ -560,24 +530,39 @@ ble_hs_test_util_rx_att_err_rsp(struct ble_hs_conn *conn, uint8_t req_op,
}
void
-ble_hs_test_util_rx_startup_acks(void)
+ble_hs_test_util_set_startup_acks(void)
{
- uint8_t supp_feat[8];
-
- memset(supp_feat, 0, sizeof supp_feat);
-
/* Receive acknowledgements for the startup sequence. We sent the
* corresponding requests when the host task was started.
*/
- ble_hs_test_util_rx_ack(
- (BLE_HCI_OGF_CTLR_BASEBAND << 10) | BLE_HCI_OCF_CB_RESET, 0);
- ble_hs_test_util_rx_ack(
- (BLE_HCI_OGF_CTLR_BASEBAND << 10) | BLE_HCI_OCF_CB_SET_EVENT_MASK,
- 0);
- ble_hs_test_util_rx_le_ack(BLE_HCI_OCF_LE_SET_EVENT_MASK, 0);
- ble_hs_test_util_rx_hci_buf_size_ack(0xffff);
- ble_hs_test_util_rx_le_ack_param(BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT, 0,
- supp_feat, sizeof supp_feat);
+ ble_hs_test_util_set_ack_seq(((struct ble_hs_test_util_phony_ack[]) {
+ {
+ .opcode = host_hci_opcode_join(BLE_HCI_OGF_CTLR_BASEBAND,
+ BLE_HCI_OCF_CB_RESET),
+ },
+ {
+ .opcode = host_hci_opcode_join(BLE_HCI_OGF_CTLR_BASEBAND,
+ BLE_HCI_OCF_CB_SET_EVENT_MASK),
+ },
+ {
+ .opcode = host_hci_opcode_join(BLE_HCI_OGF_LE,
+ BLE_HCI_OCF_LE_SET_EVENT_MASK),
+ },
+ {
+ .opcode = host_hci_opcode_join(BLE_HCI_OGF_LE,
+ BLE_HCI_OCF_LE_RD_BUF_SIZE),
+ .evt_params = { 0xff, 0xff, 1 },
+ .evt_params_len = 3,
+ },
+ {
+ .opcode = host_hci_opcode_join(BLE_HCI_OGF_LE,
+ BLE_HCI_OCF_LE_RD_LOC_SUPP_FEAT),
+ .evt_params = { 0 },
+ .evt_params_len = 8,
+ },
+
+ { 0 }
+ }));
}
void
@@ -641,11 +626,7 @@ ble_hs_test_util_verify_tx_hci(uint8_t ogf, uint16_t ocf,
void
ble_hs_test_util_tx_all(void)
{
- ble_gattc_wakeup();
- ble_l2cap_sig_wakeup();
- ble_l2cap_sm_wakeup();
ble_hs_process_tx_data_queue();
- ble_hci_sched_wakeup();
}
void
@@ -662,12 +643,14 @@ ble_hs_test_util_init(void)
tu_init();
+ os_eventq_init(&ble_hs_test_util_evq);
+
os_msys_reset();
stats_module_reset();
cfg = ble_hs_cfg_dflt;
cfg.max_connections = 8;
- rc = ble_hs_init(10, &cfg);
+ rc = ble_hs_init(&ble_hs_test_util_evq, &cfg);
TEST_ASSERT_FATAL(rc == 0);
rc = os_mempool_init(&ble_hs_test_util_mbuf_mpool,
@@ -686,7 +669,7 @@ ble_hs_test_util_init(void)
rc = os_msys_register(&ble_hs_test_util_mbuf_pool);
TEST_ASSERT_FATAL(rc == 0);
- ble_hci_block_set_phony_ack_cb(NULL);
+ ble_hci_set_phony_ack_cb(NULL);
/* Don't limit a connection's ability to transmit; simplify tests. */
ble_hs_cfg.max_outstanding_pkts_per_conn = 0;
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_hs_test_util.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.h b/net/nimble/host/src/test/ble_hs_test_util.h
index 0bbeb52..aea5f08 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.h
+++ b/net/nimble/host/src/test/ble_hs_test_util.h
@@ -26,6 +26,7 @@
struct ble_hs_conn;
struct ble_l2cap_chan;
+struct os_eventq ble_hs_test_util_evq;
extern struct os_mbuf *ble_hs_test_util_prev_tx;
struct ble_hs_test_util_num_completed_pkts_entry {
@@ -33,6 +34,8 @@ struct ble_hs_test_util_num_completed_pkts_entry {
uint16_t num_pkts;
};
+void ble_hs_test_util_set_ack_params(uint16_t opcode, uint8_t status,
+ void *params, uint8_t params_len);
void ble_hs_test_util_set_ack(uint16_t opcode, uint8_t status);
void *ble_hs_test_util_get_first_hci_tx(void);
void *ble_hs_test_util_get_last_hci_tx(void);
@@ -71,10 +74,8 @@ int ble_hs_test_util_wl_set(struct ble_gap_white_entry *white_list,
int ble_hs_test_util_conn_update(uint16_t conn_handle,
struct ble_gap_upd_params *params,
uint8_t hci_status);
-void ble_hs_test_util_rx_ack(uint16_t opcode, uint8_t status);
-void ble_hs_test_util_rx_ack_param(uint16_t opcode, uint8_t status,
- void *param, int param_len);
-void ble_hs_test_util_rx_le_ack(uint16_t ocf, uint8_t status);
+int ble_hs_test_util_security_initiate(uint16_t conn_handle,
+ uint8_t hci_status);
int ble_hs_test_util_l2cap_rx_first_frag(struct ble_hs_conn *conn,
uint16_t cid,
struct hci_data_hdr *hci_hdr,
@@ -82,15 +83,13 @@ int ble_hs_test_util_l2cap_rx_first_frag(struct ble_hs_conn *conn,
int ble_hs_test_util_l2cap_rx(struct ble_hs_conn *conn,
struct hci_data_hdr *hci_hdr,
struct os_mbuf *om);
-void ble_hs_test_util_rx_le_ack_param(uint16_t ocf, uint8_t status,
- void *param, int param_len);
int ble_hs_test_util_l2cap_rx_payload_flat(struct ble_hs_conn *conn,
struct ble_l2cap_chan *chan,
const void *data, int len);
void ble_hs_test_util_rx_hci_buf_size_ack(uint16_t buf_size);
void ble_hs_test_util_rx_att_err_rsp(struct ble_hs_conn *conn, uint8_t req_op,
uint8_t error_code, uint16_t err_handle);
-void ble_hs_test_util_rx_startup_acks(void);
+void ble_hs_test_util_set_startup_acks(void);
void ble_hs_test_util_rx_num_completed_pkts_event(
struct ble_hs_test_util_num_completed_pkts_entry *entries);
uint8_t *ble_hs_test_util_verify_tx_hci(uint8_t ogf, uint16_t ocf,
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_l2cap_sm_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_l2cap_sm_test.c b/net/nimble/host/src/test/ble_l2cap_sm_test.c
index e0234ae..86b69c3 100644
--- a/net/nimble/host/src/test/ble_l2cap_sm_test.c
+++ b/net/nimble/host/src/test/ble_l2cap_sm_test.c
@@ -303,14 +303,15 @@ ble_l2cap_sm_test_util_verify_tx_lt_key_req_reply(uint16_t conn_handle,
}
static void
-ble_l2cap_sm_test_util_rx_lt_key_req_reply_ack(uint8_t status,
- uint16_t conn_handle)
+ble_l2cap_sm_test_util_set_lt_key_req_reply_ack(uint8_t status,
+ uint16_t conn_handle)
{
- uint8_t params[BLE_HCI_LT_KEY_REQ_REPLY_ACK_PARAM_LEN - 1];
+ static uint8_t params[BLE_HCI_LT_KEY_REQ_REPLY_ACK_PARAM_LEN - 1];
htole16(params, conn_handle);
- ble_hs_test_util_rx_le_ack_param(BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY, status,
- params, sizeof params);
+ ble_hs_test_util_set_ack_params(
+ host_hci_opcode_join(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_LT_KEY_REQ_REPLY),
+ status, params, sizeof params);
}
static void
@@ -412,21 +413,16 @@ ble_l2cap_sm_test_util_peer_lgcy_good(
TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
/* Receive a long term key request from the controller. */
+ ble_l2cap_sm_test_util_set_lt_key_req_reply_ack(0, 2);
ble_l2cap_sm_test_util_rx_lt_key_req(2, r, ediv);
TEST_ASSERT(!conn->bhc_sec_params.enc_enabled);
TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
/* Ensure we sent the expected long term key request reply command. */
- ble_hs_test_util_tx_all();
ble_l2cap_sm_test_util_verify_tx_lt_key_req_reply(2, stk);
TEST_ASSERT(!conn->bhc_sec_params.enc_enabled);
TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
- /* Receive a command complete event. */
- ble_l2cap_sm_test_util_rx_lt_key_req_reply_ack(0, 2);
- TEST_ASSERT(!conn->bhc_sec_params.enc_enabled);
- TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
-
/* Receive an encryption changed event. */
ble_l2cap_sm_test_util_rx_enc_change(2, 0, 1);
@@ -493,7 +489,6 @@ ble_l2cap_sm_test_util_peer_lgcy_fail(
/* Receive a pair random from the peer. */
ble_l2cap_sm_test_util_rx_random(conn, random_req);
- TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
/* Ensure we sent the expected pair fail. */
ble_hs_test_util_tx_all();
@@ -568,8 +563,8 @@ TEST_CASE(ble_l2cap_sm_test_case_peer_lgcy_jw_good)
BLE_L2CAP_SM_PAIR_ALG_JW,
NULL,
((uint8_t[16]) {
- 0xe6, 0xb3, 0x05, 0xd4, 0xc3, 0x67, 0xf0, 0x45,
- 0x38, 0x8f, 0xe7, 0x33, 0x0d, 0x51, 0x8e, 0xa4,
+ 0xa4, 0x8e, 0x51, 0x0d, 0x33, 0xe7, 0x8f, 0x38,
+ 0x45, 0xf0, 0x67, 0xc3, 0xd4, 0x05, 0xb3, 0xe6,
}),
0,
0
@@ -664,7 +659,7 @@ ble_l2cap_sm_test_util_us_lgcy_good(
TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 0);
/* Initiate the pairing procedure. */
- rc = ble_gap_security_initiate(2);
+ rc = ble_hs_test_util_security_initiate(2, 0);
TEST_ASSERT_FATAL(rc == 0);
/* Ensure we sent the expected pair request. */
@@ -706,11 +701,6 @@ ble_l2cap_sm_test_util_us_lgcy_good(
TEST_ASSERT(!conn->bhc_sec_params.enc_enabled);
TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
- /* Receive a command status event. */
- ble_hs_test_util_rx_le_ack(BLE_HCI_OCF_LE_START_ENCRYPT, 0);
- TEST_ASSERT(!conn->bhc_sec_params.enc_enabled);
- TEST_ASSERT(ble_l2cap_sm_dbg_num_procs() == 1);
-
/* Receive an encryption changed event. */
ble_l2cap_sm_test_util_rx_enc_change(2, 0, 1);
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/host/src/test/ble_l2cap_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_l2cap_test.c b/net/nimble/host/src/test/ble_l2cap_test.c
index c9e116c..9cde642 100644
--- a/net/nimble/host/src/test/ble_l2cap_test.c
+++ b/net/nimble/host/src/test/ble_l2cap_test.c
@@ -471,10 +471,6 @@ ble_l2cap_test_util_peer_updates(int accept)
ble_l2cap_test_util_verify_tx_update_rsp(1, !accept);
if (accept) {
- /* Ensure update request gets sent. */
- ble_gattc_wakeup();
- ble_hci_sched_wakeup();
-
params.itvl_min = 0x200;
params.itvl_max = 0x300;
params.latency = 0;
@@ -574,13 +570,11 @@ TEST_CASE(ble_l2cap_test_case_sig_update_init_fail_master)
params.timeout_multiplier = 0x100;
rc = ble_l2cap_sig_update(conn->bhc_handle, ¶ms,
ble_l2cap_test_util_update_cb, NULL);
- TEST_ASSERT_FATAL(rc == 0);
+ TEST_ASSERT_FATAL(rc == BLE_HS_EINVAL);
+ /* Ensure callback never called. */
ble_hs_test_util_tx_all();
-
- /* Ensure callback indicates failure. */
- TEST_ASSERT(ble_l2cap_test_update_status == BLE_HS_EINVAL);
- TEST_ASSERT(ble_l2cap_test_update_arg == NULL);
+ TEST_ASSERT(ble_l2cap_test_update_status == -1);
}
TEST_CASE(ble_l2cap_test_case_sig_update_init_fail_bad_id)
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/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 b8f3901..e95e567 100644
--- a/net/nimble/host/src/test/ble_os_test.c
+++ b/net/nimble/host/src/test/ble_os_test.c
@@ -28,39 +28,51 @@
#ifdef ARCH_sim
#define BLE_OS_TEST_STACK_SIZE 1024
+#define BLE_OS_TEST_APP_STACK_SIZE 1024
#else
#define BLE_OS_TEST_STACK_SIZE 256
+#define BLE_OS_TEST_APP_STACK_SIZE 256
#endif
-#define BLE_OS_TEST_HS_PRIO 10
+#define BLE_OS_TEST_APP_PRIO 9
+#define BLE_OS_TEST_TASK_PRIO 10
static struct os_task ble_os_test_task;
+static struct os_task ble_os_test_app_task;
static os_stack_t ble_os_test_stack[OS_STACK_ALIGN(BLE_OS_TEST_STACK_SIZE)];
+static os_stack_t
+ble_os_test_app_stack[OS_STACK_ALIGN(BLE_OS_TEST_APP_STACK_SIZE)];
+
static uint8_t ble_os_test_peer_addr[6] = { 1, 2, 3, 4, 5, 6 };
+static void ble_os_test_app_task_handler(void *arg);
+
static void
-ble_os_test_misc_rx_ack(uint8_t ogf, uint8_t ocf, uint8_t status)
+ble_os_test_init_app_task(void)
{
- uint16_t opcode;
- uint8_t *cmd;
int rc;
- cmd = os_memblock_get(&g_hci_cmd_pool);
- TEST_ASSERT_FATAL(cmd != NULL);
-
- opcode = (ogf << 10) | ocf;
- ble_hs_test_util_build_cmd_status(cmd, BLE_HCI_EVENT_CMD_STATUS_LEN,
- status, 1, opcode);
-
- rc = ble_hci_transport_ctlr_event_send(cmd);
- TEST_ASSERT(rc == 0);
+ rc = os_task_init(&ble_os_test_app_task,
+ "ble_gap_terminate_test_task",
+ ble_os_test_app_task_handler, NULL,
+ BLE_OS_TEST_APP_PRIO, OS_WAIT_FOREVER,
+ ble_os_test_app_stack,
+ OS_STACK_ALIGN(BLE_OS_TEST_APP_STACK_SIZE));
+ TEST_ASSERT_FATAL(rc == 0);
}
static void
-ble_os_test_misc_rx_le_ack(uint16_t ocf, uint8_t status)
+ble_os_test_misc_init(void)
{
- ble_os_test_misc_rx_ack(BLE_HCI_OGF_LE, ocf, status);
+ ble_hs_test_util_init();
+
+ ble_os_test_init_app_task();
+
+ /* Receive acknowledgements for the startup sequence. We sent the
+ * corresponding requests when the host task was started.
+ */
+ ble_hs_test_util_set_startup_acks();
}
static int
@@ -90,11 +102,6 @@ ble_gap_direct_connect_test_task_handler(void *arg)
int cb_called;
int rc;
- /* Receive acknowledgements for the startup sequence. We sent the
- * corresponding requests when the host task was started.
- */
- ble_hs_test_util_rx_startup_acks();
-
/* Set the connect callback so we can verify that it gets called with the
* proper arguments.
*/
@@ -130,12 +137,12 @@ ble_gap_direct_connect_test_task_handler(void *arg)
TEST_CASE(ble_gap_direct_connect_test_case)
{
- ble_hs_test_util_init();
+ ble_os_test_misc_init();
os_task_init(&ble_os_test_task,
"ble_gap_direct_connect_test_task",
ble_gap_direct_connect_test_task_handler, NULL,
- BLE_OS_TEST_HS_PRIO + 1, OS_WAIT_FOREVER, ble_os_test_stack,
+ BLE_OS_TEST_TASK_PRIO, OS_WAIT_FOREVER, ble_os_test_stack,
OS_STACK_ALIGN(BLE_OS_TEST_STACK_SIZE));
os_start();
@@ -163,7 +170,7 @@ ble_gap_gen_disc_test_task_handler(void *arg)
/* Receive acknowledgements for the startup sequence. We sent the
* corresponding requests when the host task was started.
*/
- ble_hs_test_util_rx_startup_acks();
+ ble_hs_test_util_set_startup_acks();
/* Set the connect callback so we can verify that it gets called with the
* proper arguments.
@@ -177,7 +184,7 @@ ble_gap_gen_disc_test_task_handler(void *arg)
TEST_ASSERT(!ble_gap_master_in_progress());
/* Initiate the general discovery procedure with a 200 ms timeout. */
- rc = ble_hs_test_util_disc(200, BLE_GAP_DISC_MODE_GEN,
+ rc = ble_hs_test_util_disc(300, BLE_GAP_DISC_MODE_GEN,
BLE_HCI_SCAN_TYPE_ACTIVE,
BLE_HCI_SCAN_FILT_NO_WL,
ble_gap_gen_disc_test_connect_cb,
@@ -198,9 +205,12 @@ ble_gap_gen_disc_test_task_handler(void *arg)
TEST_ASSERT(ble_gap_master_in_progress());
TEST_ASSERT(!cb_called);
- /* Wait 150 more ms; verify scan completed. */
- os_time_delay(150 * OS_TICKS_PER_SEC / 1000);
- ble_os_test_misc_rx_le_ack(BLE_HCI_OCF_LE_SET_SCAN_ENABLE, 0);
+ ble_hs_test_util_set_ack(
+ host_hci_opcode_join(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_SET_SCAN_ENABLE),
+ 0);
+
+ /* Wait 250 more ms; verify scan completed. */
+ os_time_delay(250 * OS_TICKS_PER_SEC / 1000);
TEST_ASSERT(ble_hs_conn_first() == NULL);
TEST_ASSERT(!ble_gap_master_in_progress());
TEST_ASSERT(cb_called);
@@ -210,12 +220,12 @@ ble_gap_gen_disc_test_task_handler(void *arg)
TEST_CASE(ble_gap_gen_disc_test_case)
{
- ble_hs_test_util_init();
+ ble_os_test_misc_init();
os_task_init(&ble_os_test_task,
"ble_gap_gen_disc_test_task",
ble_gap_gen_disc_test_task_handler, NULL,
- BLE_OS_TEST_HS_PRIO + 1, OS_WAIT_FOREVER, ble_os_test_stack,
+ BLE_OS_TEST_TASK_PRIO, OS_WAIT_FOREVER, ble_os_test_stack,
OS_STACK_ALIGN(BLE_OS_TEST_STACK_SIZE));
os_start();
@@ -252,7 +262,7 @@ ble_gap_terminate_test_task_handler(void *arg)
/* Receive acknowledgements for the startup sequence. We sent the
* corresponding requests when the host task was started.
*/
- ble_hs_test_util_rx_startup_acks();
+ ble_hs_test_util_set_startup_acks();
/* Set the connect callback so we can verify that it gets called with the
* proper arguments.
@@ -314,14 +324,39 @@ ble_gap_terminate_test_task_handler(void *arg)
tu_restart();
}
+static void
+ble_os_test_app_task_handler(void *arg)
+{
+ struct os_callout_func *cf;
+ struct os_event *ev;
+ int rc;
+
+ rc = ble_hs_start();
+ TEST_ASSERT(rc == 0);
+
+ while (1) {
+ ev = os_eventq_get(&ble_hs_test_util_evq);
+ switch (ev->ev_type) {
+ case OS_EVENT_T_TIMER:
+ cf = (struct os_callout_func *)ev;
+ assert(cf->cf_func);
+ cf->cf_func(cf->cf_arg);
+ break;
+ default:
+ assert(0);
+ break;
+ }
+ }
+}
+
TEST_CASE(ble_gap_terminate_test_case)
{
- ble_hs_test_util_init();
+ ble_os_test_misc_init();
os_task_init(&ble_os_test_task,
"ble_gap_terminate_test_task",
ble_gap_terminate_test_task_handler, NULL,
- BLE_OS_TEST_HS_PRIO + 1, OS_WAIT_FOREVER, ble_os_test_stack,
+ BLE_OS_TEST_TASK_PRIO, OS_WAIT_FOREVER, ble_os_test_stack,
OS_STACK_ALIGN(BLE_OS_TEST_STACK_SIZE));
os_start();
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/e32f9f9f/net/nimble/include/nimble/hci_common.h
----------------------------------------------------------------------
diff --git a/net/nimble/include/nimble/hci_common.h b/net/nimble/include/nimble/hci_common.h
index e2874a7..2d43652 100644
--- a/net/nimble/include/nimble/hci_common.h
+++ b/net/nimble/include/nimble/hci_common.h
@@ -142,7 +142,7 @@
/* --- LE read buffer size (OCF 0x0002) --- */
#define BLE_HCI_RD_BUF_SIZE_LEN (0)
-#define BLE_HCI_RD_BUF_SIZE_RSPLEN (3)
+#define BLE_HCI_RD_BUF_SIZE_RSPLEN (3) /* No status byte. */
/* --- LE read local supported features (OCF 0x0003) --- */
#define BLE_HCI_RD_LOC_SUPP_FEAT_RSPLEN (8)