You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2015/11/19 20:52:31 UTC
incubator-mynewt-larva git commit: (ble host) Send MTU response as
server.
Repository: incubator-mynewt-larva
Updated Branches:
refs/heads/master c9d16694d -> 03abc47b0
(ble host) Send MTU response as server.
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/03abc47b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/03abc47b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/03abc47b
Branch: refs/heads/master
Commit: 03abc47b044e6f73c4a3751e42131cc6d9750117
Parents: c9d1669
Author: Christopher Collins <cc...@gmail.com>
Authored: Thu Nov 19 11:52:12 2015 -0800
Committer: Christopher Collins <cc...@gmail.com>
Committed: Thu Nov 19 11:52:12 2015 -0800
----------------------------------------------------------------------
net/nimble/host/src/ble_hs_att.c | 76 +++++++++++----
net/nimble/host/src/ble_hs_att_cmd.c | 54 +++++------
net/nimble/host/src/ble_hs_att_cmd.h | 28 ++----
net/nimble/host/src/ble_l2cap.c | 6 +-
net/nimble/host/src/ble_l2cap.h | 6 +-
net/nimble/host/src/test/ble_hs_att_test.c | 116 +++++++++++++++++------
net/nimble/host/src/test/ble_hs_conn_test.c | 4 +-
7 files changed, 190 insertions(+), 100 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/ble_hs_att.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_hs_att.c b/net/nimble/host/src/ble_hs_att.c
index be63df7..4e17551 100644
--- a/net/nimble/host/src/ble_hs_att.c
+++ b/net/nimble/host/src/ble_hs_att.c
@@ -313,7 +313,6 @@ ble_hs_att_tx_error_rsp(struct ble_l2cap_chan *chan, uint8_t req_op,
uint16_t handle, uint8_t error_code)
{
struct ble_hs_att_error_rsp rsp;
- uint8_t buf[BLE_HS_ATT_ERROR_RSP_SZ];
int rc;
rsp.bhaep_op = BLE_HS_ATT_OP_ERROR_RSP;
@@ -321,10 +320,11 @@ ble_hs_att_tx_error_rsp(struct ble_l2cap_chan *chan, uint8_t req_op,
rsp.bhaep_handle = handle;
rsp.bhaep_error_code = error_code;
- rc = ble_hs_att_error_rsp_write(buf, sizeof buf, &rsp);
+ rc = ble_hs_att_error_rsp_write(ble_hs_att_tx_buf,
+ BLE_HS_ATT_ERROR_RSP_SZ, &rsp);
assert(rc == 0);
- rc = ble_l2cap_tx(chan, buf, sizeof buf);
+ rc = ble_l2cap_tx(chan, ble_hs_att_tx_buf, BLE_HS_ATT_ERROR_RSP_SZ);
if (rc != 0) {
return rc;
}
@@ -333,11 +333,37 @@ ble_hs_att_tx_error_rsp(struct ble_l2cap_chan *chan, uint8_t req_op,
}
static int
+ble_hs_att_tx_mtu_cmd(struct ble_l2cap_chan *chan, uint8_t op, uint16_t mtu)
+{
+ struct ble_hs_att_mtu_cmd cmd;
+ int rc;
+
+ assert(!(chan->blc_flags & BLE_L2CAP_CHAN_F_TXED_MTU));
+ assert(op == BLE_HS_ATT_OP_MTU_REQ || op == BLE_HS_ATT_OP_MTU_RSP);
+ assert(mtu >= BLE_HS_ATT_MTU_DFLT);
+
+ cmd.bhamc_op = op;
+ cmd.bhamc_mtu = mtu;
+
+ rc = ble_hs_att_mtu_cmd_write(ble_hs_att_tx_buf, BLE_HS_ATT_MTU_MAX,
+ &cmd);
+ assert(rc == 0);
+
+ rc = ble_l2cap_tx(chan, ble_hs_att_tx_buf, BLE_HS_ATT_MTU_CMD_SZ);
+ if (rc != 0) {
+ return rc;
+ }
+
+ chan->blc_flags |= BLE_L2CAP_CHAN_F_TXED_MTU;
+
+ return 0;
+}
+
+static int
ble_hs_att_rx_mtu_req(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
struct os_mbuf *om)
{
- struct ble_hs_att_mtu_req req;
- uint8_t buf[BLE_HS_ATT_MTU_REQ_SZ];
+ struct ble_hs_att_mtu_cmd cmd;
int rc;
/* We should only receive this command as a server. */
@@ -346,19 +372,23 @@ ble_hs_att_rx_mtu_req(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
return EINVAL;
}
- rc = os_mbuf_copydata(om, 0, sizeof buf, buf);
+ rc = os_mbuf_copydata(om, 0, BLE_HS_ATT_MTU_CMD_SZ, ble_hs_att_tx_buf);
assert(rc == 0);
- rc = ble_hs_att_mtu_req_parse(buf, sizeof buf, &req);
+ rc = ble_hs_att_mtu_cmd_parse(ble_hs_att_tx_buf, BLE_HS_ATT_MTU_CMD_SZ,
+ &cmd);
assert(rc == 0);
- if (req.bhamq_mtu < BLE_HS_ATT_MTU_DFLT) {
- req.bhamq_mtu = BLE_HS_ATT_MTU_DFLT;
+ if (cmd.bhamc_mtu < BLE_HS_ATT_MTU_DFLT) {
+ cmd.bhamc_mtu = BLE_HS_ATT_MTU_DFLT;
}
- chan->blc_peer_mtu = req.bhamq_mtu;
+ chan->blc_peer_mtu = cmd.bhamc_mtu;
- /* XXX: Send response. */
+ rc = ble_hs_att_tx_mtu_cmd(chan, BLE_HS_ATT_OP_MTU_RSP, chan->blc_my_mtu);
+ if (rc != 0) {
+ return rc;
+ }
return 0;
}
@@ -463,16 +493,17 @@ ble_hs_att_rx_find_info_req(struct ble_hs_conn *conn,
{
struct ble_hs_att_find_info_req req;
struct ble_hs_att_find_info_rsp rsp;
- uint8_t buf[BLE_HS_ATT_FIND_INFO_REQ_SZ];
int rsp_sz;
int rc;
- rc = os_mbuf_copydata(om, 0, sizeof buf, buf);
+ rc = os_mbuf_copydata(om, 0, BLE_HS_ATT_FIND_INFO_REQ_SZ,
+ ble_hs_att_tx_buf);
if (rc != 0) {
return rc;
}
- rc = ble_hs_att_find_info_req_parse(buf, sizeof buf, &req);
+ rc = ble_hs_att_find_info_req_parse(ble_hs_att_tx_buf,
+ BLE_HS_ATT_FIND_INFO_REQ_SZ, &req);
assert(rc == 0);
/* Tx error response if start handle is greater than end handle or is equal
@@ -509,7 +540,8 @@ ble_hs_att_rx_find_info_req(struct ble_hs_conn *conn,
*/
rsp.bhafp_op = BLE_HS_ATT_OP_FIND_INFO_RSP;
rc = ble_hs_att_find_info_rsp_write(ble_hs_att_tx_buf,
- BLE_HS_ATT_FIND_INFO_RSP_MIN_SZ, &rsp);
+ BLE_HS_ATT_FIND_INFO_RSP_MIN_SZ,
+ &rsp);
assert(rc == 0);
rc = ble_l2cap_tx(chan, ble_hs_att_tx_buf,
@@ -559,15 +591,15 @@ ble_hs_att_rx_read_req(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
union ble_hs_att_handle_arg arg;
struct ble_hs_att_read_req req;
struct ble_hs_att_entry *entry;
- uint8_t buf[BLE_HS_ATT_READ_REQ_SZ];
int rc;
- rc = os_mbuf_copydata(om, 0, sizeof buf, buf);
+ rc = os_mbuf_copydata(om, 0, BLE_HS_ATT_READ_REQ_SZ, ble_hs_att_tx_buf);
if (rc != 0) {
return rc;
}
- rc = ble_hs_att_read_req_parse(buf, sizeof buf, &req);
+ rc = ble_hs_att_read_req_parse(ble_hs_att_tx_buf, BLE_HS_ATT_READ_REQ_SZ,
+ &req);
assert(rc == 0);
rc = ble_hs_att_find_by_handle(req.bharq_handle, &entry);
@@ -625,15 +657,16 @@ ble_hs_att_rx_write_req(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
union ble_hs_att_handle_arg arg;
struct ble_hs_att_write_req req;
struct ble_hs_att_entry *entry;
- uint8_t buf[BLE_HS_ATT_WRITE_REQ_MIN_SZ];
int rc;
- rc = os_mbuf_copydata(om, 0, sizeof buf, buf);
+ rc = os_mbuf_copydata(om, 0, BLE_HS_ATT_WRITE_REQ_MIN_SZ,
+ ble_hs_att_tx_buf);
if (rc != 0) {
return rc;
}
- rc = ble_hs_att_write_req_parse(buf, sizeof buf, &req);
+ rc = ble_hs_att_write_req_parse(ble_hs_att_tx_buf,
+ BLE_HS_ATT_WRITE_REQ_MIN_SZ, &req);
assert(rc == 0);
rc = ble_hs_att_find_by_handle(req.bhawq_handle, &entry);
@@ -704,6 +737,7 @@ ble_hs_att_create_chan(void)
}
chan->blc_cid = BLE_L2CAP_CID_ATT;
+ chan->blc_my_mtu = BLE_HS_ATT_MTU_DFLT;
chan->blc_default_mtu = BLE_HS_ATT_MTU_DFLT;
chan->blc_rx_fn = ble_hs_att_rx;
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/ble_hs_att_cmd.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_hs_att_cmd.c b/net/nimble/host/src/ble_hs_att_cmd.c
index 0369cfd..d547f3d 100644
--- a/net/nimble/host/src/ble_hs_att_cmd.c
+++ b/net/nimble/host/src/ble_hs_att_cmd.c
@@ -66,21 +66,23 @@ ble_hs_att_error_rsp_write(void *payload, int len,
}
int
-ble_hs_att_mtu_req_parse(void *payload, int len,
- struct ble_hs_att_mtu_req *req)
+ble_hs_att_mtu_cmd_parse(void *payload, int len,
+ struct ble_hs_att_mtu_cmd *cmd)
{
uint8_t *u8ptr;
- if (len < BLE_HS_ATT_MTU_REQ_SZ) {
+ if (len < BLE_HS_ATT_MTU_CMD_SZ) {
return EMSGSIZE;
}
u8ptr = payload;
- req->bhamq_op = u8ptr[0];
- req->bhamq_mtu = le16toh(u8ptr + 1);
+ cmd->bhamc_op = u8ptr[0];
+ cmd->bhamc_mtu = le16toh(u8ptr + 1);
+
+ if (cmd->bhamc_op != BLE_HS_ATT_OP_MTU_REQ &&
+ cmd->bhamc_op != BLE_HS_ATT_OP_MTU_RSP) {
- if (req->bhamq_op != BLE_HS_ATT_OP_MTU_REQ) {
return EINVAL;
}
@@ -88,6 +90,24 @@ ble_hs_att_mtu_req_parse(void *payload, int len,
}
int
+ble_hs_att_mtu_cmd_write(void *payload, int len,
+ struct ble_hs_att_mtu_cmd *cmd)
+{
+ uint8_t *u8ptr;
+
+ if (len < BLE_HS_ATT_MTU_CMD_SZ) {
+ return EMSGSIZE;
+ }
+
+ u8ptr = payload;
+
+ u8ptr[0] = cmd->bhamc_op;
+ htole16(u8ptr + 1, cmd->bhamc_mtu);
+
+ return 0;
+}
+
+int
ble_hs_att_find_info_req_parse(void *payload, int len,
struct ble_hs_att_find_info_req *req)
{
@@ -170,28 +190,6 @@ ble_hs_att_find_info_rsp_write(void *payload, int len,
}
int
-ble_hs_att_mtu_rsp_parse(void *payload, int len,
- struct ble_hs_att_mtu_rsp *rsp)
-{
- uint8_t *u8ptr;
-
- if (len < BLE_HS_ATT_MTU_RSP_SZ) {
- return EMSGSIZE;
- }
-
- u8ptr = payload;
-
- rsp->bhamp_op = u8ptr[0];
- rsp->bhamp_mtu = le16toh(u8ptr + 1);
-
- if (rsp->bhamp_op != BLE_HS_ATT_OP_MTU_RSP) {
- return EINVAL;
- }
-
- return 0;
-}
-
-int
ble_hs_att_read_req_parse(void *payload, int len,
struct ble_hs_att_read_req *req)
{
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/ble_hs_att_cmd.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_hs_att_cmd.h b/net/nimble/host/src/ble_hs_att_cmd.h
index a9caaf8..5694057 100644
--- a/net/nimble/host/src/ble_hs_att_cmd.h
+++ b/net/nimble/host/src/ble_hs_att_cmd.h
@@ -47,24 +47,12 @@ struct ble_hs_att_error_rsp {
* | Parameter | Size (octets) |
* +------------------------------------+-------------------+
* | Attribute Opcode | 1 |
- * | Client Rx MTU | 2 |
- */
-#define BLE_HS_ATT_MTU_REQ_SZ 3
-struct ble_hs_att_mtu_req {
- uint8_t bhamq_op;
- uint16_t bhamq_mtu;
-};
-
-/**
- * | Parameter | Size (octets) |
- * +------------------------------------+-------------------+
- * | Attribute Opcode | 1 |
* | Server Rx MTU | 2 |
*/
-#define BLE_HS_ATT_MTU_RSP_SZ 3
-struct ble_hs_att_mtu_rsp {
- uint8_t bhamp_op;
- uint16_t bhamp_mtu;
+#define BLE_HS_ATT_MTU_CMD_SZ 3
+struct ble_hs_att_mtu_cmd {
+ uint8_t bhamc_op;
+ uint16_t bhamc_mtu;
};
/**
@@ -137,10 +125,10 @@ int ble_hs_att_error_rsp_parse(void *payload, int len,
struct ble_hs_att_error_rsp *rsp);
int ble_hs_att_error_rsp_write(void *payload, int len,
struct ble_hs_att_error_rsp *rsp);
-int ble_hs_att_mtu_req_parse(void *payload, int len,
- struct ble_hs_att_mtu_req *req);
-int ble_hs_att_mtu_rsp_parse(void *payload, int len,
- struct ble_hs_att_mtu_rsp *rsp);
+int ble_hs_att_mtu_cmd_parse(void *payload, int len,
+ struct ble_hs_att_mtu_cmd *cmd);
+int ble_hs_att_mtu_cmd_write(void *payload, int len,
+ struct ble_hs_att_mtu_cmd *cmd);
int ble_hs_att_find_info_req_parse(void *payload, int len,
struct ble_hs_att_find_info_req *req);
int ble_hs_att_find_info_req_write(void *payload, int len,
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/ble_l2cap.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_l2cap.c b/net/nimble/host/src/ble_l2cap.c
index 9accbb8..07d0bef 100644
--- a/net/nimble/host/src/ble_l2cap.c
+++ b/net/nimble/host/src/ble_l2cap.c
@@ -75,12 +75,16 @@ ble_l2cap_chan_mtu(struct ble_l2cap_chan *chan)
/* If either side has not exchanged MTU size, use the default. Otherwise,
* use the lesser of the two exchanged values.
*/
- if (chan->blc_my_mtu == 0 || chan->blc_peer_mtu == 0) {
+ if (!(chan->blc_flags & BLE_L2CAP_CHAN_F_TXED_MTU) ||
+ chan->blc_peer_mtu == 0) {
+
mtu = chan->blc_default_mtu;
} else {
mtu = min(chan->blc_my_mtu, chan->blc_peer_mtu);
}
+ assert(mtu >= chan->blc_default_mtu);
+
return mtu;
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/ble_l2cap.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_l2cap.h b/net/nimble/host/src/ble_l2cap.h
index c2d0f08..f6cd5cc 100644
--- a/net/nimble/host/src/ble_l2cap.h
+++ b/net/nimble/host/src/ble_l2cap.h
@@ -43,13 +43,17 @@ typedef int ble_l2cap_rx_fn(struct ble_hs_conn *conn,
typedef int ble_l2cap_tx_fn(struct ble_hs_conn *conn,
struct ble_l2cap_chan *chan);
+typedef uint8_t ble_l2cap_chan_flags;
+#define BLE_L2CAP_CHAN_F_TXED_MTU 0x01 /* We have sent our MTU. */
+
struct ble_l2cap_chan
{
SLIST_ENTRY(ble_l2cap_chan) blc_next;
uint16_t blc_cid;
- uint16_t blc_my_mtu; /* 0 if not exchanged. */
+ uint16_t blc_my_mtu;
uint16_t blc_peer_mtu; /* 0 if not exchanged. */
uint16_t blc_default_mtu;
+ ble_l2cap_chan_flags blc_flags;
struct os_mbuf *blc_rx_buf;
struct os_mbuf *blc_tx_buf;
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/net/nimble/host/src/test/ble_hs_att_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_att_test.c b/net/nimble/host/src/test/ble_hs_att_test.c
index 6b3c493..82fab92 100644
--- a/net/nimble/host/src/test/ble_hs_att_test.c
+++ b/net/nimble/host/src/test/ble_hs_att_test.c
@@ -33,6 +33,23 @@ static int ble_hs_att_test_attr_1_len;
static uint8_t ble_hs_att_test_attr_2[1024];
static int ble_hs_att_test_attr_2_len;
+static void
+ble_hs_att_test_misc_init(struct ble_hs_conn **conn,
+ struct ble_l2cap_chan **att_chan)
+{
+ int rc;
+
+ rc = ble_hs_init(10);
+ TEST_ASSERT_FATAL(rc == 0);
+
+ ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
+ *conn = ble_hs_conn_find(2);
+ TEST_ASSERT_FATAL(*conn != NULL);
+
+ *att_chan = ble_hs_conn_chan_find(*conn, BLE_L2CAP_CID_ATT);
+ TEST_ASSERT_FATAL(*att_chan != NULL);
+}
+
static int
ble_hs_att_test_misc_attr_fn_1(struct ble_hs_att_entry *entry,
uint8_t op, union ble_hs_att_handle_arg *arg)
@@ -136,6 +153,27 @@ ble_hs_att_test_misc_verify_tx_write_rsp(struct ble_l2cap_chan *chan)
BLE_HS_ATT_WRITE_RSP_SZ);
}
+static void
+ble_hs_att_test_misc_verify_tx_mtu_rsp(struct ble_l2cap_chan *chan)
+{
+ struct ble_hs_att_mtu_cmd rsp;
+ uint8_t buf[BLE_HS_ATT_MTU_CMD_SZ];
+ int rc;
+
+ rc = os_mbuf_copydata(chan->blc_tx_buf, 0, sizeof buf, buf);
+ TEST_ASSERT(rc == 0);
+
+ rc = ble_hs_att_mtu_cmd_parse(buf, sizeof buf, &rsp);
+ TEST_ASSERT(rc == 0);
+
+ TEST_ASSERT(rsp.bhamc_op == BLE_HS_ATT_OP_MTU_RSP);
+ TEST_ASSERT(rsp.bhamc_mtu == chan->blc_my_mtu);
+
+ /* Remove the write response from the buffer. */
+ os_mbuf_adj(&ble_l2cap_mbuf_pool, chan->blc_tx_buf,
+ BLE_HS_ATT_MTU_CMD_SZ);
+}
+
struct ble_hs_att_test_info_entry {
uint16_t handle; /* 0 on last entry */
uint16_t uuid16; /* 0 if not present. */
@@ -198,6 +236,52 @@ ble_hs_att_test_misc_verify_tx_find_info_rsp(
os_mbuf_adj(&ble_l2cap_mbuf_pool, chan->blc_tx_buf, off);
}
+static void
+ble_hs_att_test_misc_mtu_exchange(uint16_t my_mtu, uint16_t peer_sent,
+ uint16_t peer_actual, uint16_t chan_mtu)
+{
+ struct ble_hs_att_mtu_cmd req;
+ struct ble_l2cap_chan *chan;
+ struct ble_hs_conn *conn;
+ uint8_t buf[BLE_HS_ATT_MTU_CMD_SZ];
+ int rc;
+
+ ble_hs_att_test_misc_init(&conn, &chan);
+
+ chan->blc_my_mtu = my_mtu;
+
+ req.bhamc_op = BLE_HS_ATT_OP_MTU_REQ;
+ req.bhamc_mtu = peer_sent;
+ rc = ble_hs_att_mtu_cmd_write(buf, sizeof buf, &req);
+ TEST_ASSERT(rc == 0);
+
+ rc = ble_l2cap_rx_payload(conn, chan, buf, sizeof buf);
+ TEST_ASSERT(rc == 0);
+
+ TEST_ASSERT(chan->blc_peer_mtu == peer_actual);
+
+ ble_hs_att_test_misc_verify_tx_mtu_rsp(chan);
+
+ TEST_ASSERT(ble_l2cap_chan_mtu(chan) == chan_mtu);
+}
+
+TEST_CASE(ble_hs_att_test_mtu)
+{
+ /*** MTU too low; should pretend peer sent default value instead. */
+ ble_hs_att_test_misc_mtu_exchange(BLE_HS_ATT_MTU_DFLT, 5,
+ BLE_HS_ATT_MTU_DFLT,
+ BLE_HS_ATT_MTU_DFLT);
+
+ /*** MTUs equal. */
+ ble_hs_att_test_misc_mtu_exchange(50, 50, 50, 50);
+
+ /*** Peer's higher than mine. */
+ ble_hs_att_test_misc_mtu_exchange(50, 100, 100, 50);
+
+ /*** Mine higher than peer's. */
+ ble_hs_att_test_misc_mtu_exchange(100, 50, 50, 50);
+}
+
TEST_CASE(ble_hs_att_test_read)
{
struct ble_hs_att_read_req req;
@@ -207,15 +291,7 @@ TEST_CASE(ble_hs_att_test_read)
uint8_t uuid[16] = {0};
int rc;
- rc = ble_hs_init(10);
- TEST_ASSERT_FATAL(rc == 0);
-
- ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
- conn = ble_hs_conn_find(2);
- TEST_ASSERT_FATAL(conn != NULL);
-
- chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
- TEST_ASSERT_FATAL(chan != NULL);
+ ble_hs_att_test_misc_init(&conn, &chan);
/*** Nonexistent attribute. */
req.bharq_op = BLE_HS_ATT_OP_READ_REQ;
@@ -270,15 +346,7 @@ TEST_CASE(ble_hs_att_test_write)
uint8_t uuid[16] = {0};
int rc;
- rc = ble_hs_init(10);
- TEST_ASSERT_FATAL(rc == 0);
-
- ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
- conn = ble_hs_conn_find(2);
- TEST_ASSERT_FATAL(conn != NULL);
-
- chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
- TEST_ASSERT_FATAL(chan != NULL);
+ ble_hs_att_test_misc_init(&conn, &chan);
/*** Nonexistent attribute. */
req.bhawq_op = BLE_HS_ATT_OP_WRITE_REQ;
@@ -325,19 +393,12 @@ TEST_CASE(ble_hs_att_test_find_info)
};
int rc;
- rc = ble_hs_init(10);
- TEST_ASSERT_FATAL(rc == 0);
-
- ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
- conn = ble_hs_conn_find(2);
- TEST_ASSERT_FATAL(conn != NULL);
-
- chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
- TEST_ASSERT_FATAL(chan != NULL);
+ ble_hs_att_test_misc_init(&conn, &chan);
/* Increase the MTU to 128 bytes to allow testing of long responses. */
chan->blc_my_mtu = 128;
chan->blc_peer_mtu = 128;
+ chan->blc_flags |= BLE_L2CAP_CHAN_F_TXED_MTU;
/*** Start handle of 0. */
req.bhafq_op = BLE_HS_ATT_OP_FIND_INFO_REQ;
@@ -485,6 +546,7 @@ TEST_CASE(ble_hs_att_test_find_info)
TEST_SUITE(att_suite)
{
+ ble_hs_att_test_mtu();
ble_hs_att_test_read();
ble_hs_att_test_write();
ble_hs_att_test_find_info();
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/03abc47b/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 8b709d4..d458e14 100644
--- a/net/nimble/host/src/test/ble_hs_conn_test.c
+++ b/net/nimble/host/src/test/ble_hs_conn_test.c
@@ -70,7 +70,7 @@ TEST_CASE(ble_hs_conn_test_master_direct_success)
chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
TEST_ASSERT_FATAL(chan != NULL);
- TEST_ASSERT(chan->blc_my_mtu == 0);
+ TEST_ASSERT(chan->blc_my_mtu == BLE_HS_ATT_MTU_DFLT);
TEST_ASSERT(chan->blc_peer_mtu == 0);
TEST_ASSERT(chan->blc_default_mtu == BLE_HS_ATT_MTU_DFLT);
}
@@ -165,7 +165,7 @@ TEST_CASE(ble_hs_conn_test_slave_direct_success)
chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
TEST_ASSERT_FATAL(chan != NULL);
- TEST_ASSERT(chan->blc_my_mtu == 0);
+ TEST_ASSERT(chan->blc_my_mtu == BLE_HS_ATT_MTU_DFLT);
TEST_ASSERT(chan->blc_peer_mtu == 0);
TEST_ASSERT(chan->blc_default_mtu == BLE_HS_ATT_MTU_DFLT);
}