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/12/05 00:04:06 UTC

[1/2] incubator-mynewt-larva git commit: Some renaming for consistency.

Repository: incubator-mynewt-larva
Updated Branches:
  refs/heads/master 941319ca0 -> dde460fe6


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/test/ble_hs_att_svr_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_att_svr_test.c b/net/nimble/host/src/test/ble_hs_att_svr_test.c
deleted file mode 100644
index 0b1d928..0000000
--- a/net/nimble/host/src/test/ble_hs_att_svr_test.c
+++ /dev/null
@@ -1,859 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stddef.h>
-#include <errno.h>
-#include <string.h>
-#include "nimble/hci_common.h"
-#include "host/ble_hs.h"
-#include "host/ble_hs_test.h"
-#include "testutil/testutil.h"
-#include "ble_l2cap.h"
-#include "ble_hs_test_util.h"
-#include "ble_hs_conn.h"
-#include "ble_att.h"
-#include "ble_att_cmd.h"
-
-static uint8_t *ble_att_svr_test_attr_r_1;
-static int ble_att_svr_test_attr_r_1_len;
-static uint8_t *ble_att_svr_test_attr_r_2;
-static int ble_att_svr_test_attr_r_2_len;
-
-static uint8_t ble_att_svr_test_attr_w_1[1024];
-static int ble_att_svr_test_attr_w_1_len;
-
-static void
-ble_att_svr_test_misc_init(struct ble_hs_conn **conn,
-                              struct ble_l2cap_chan **att_chan)
-{
-    ble_hs_test_util_init();
-
-    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_att_svr_test_misc_attr_fn_r_1(struct ble_att_svr_entry *entry,
-                                     uint8_t op,
-                                     union ble_att_svr_handle_arg *arg)
-{
-    switch (op) {
-    case BLE_ATT_OP_READ_REQ:
-        arg->aha_read.attr_data = ble_att_svr_test_attr_r_1;
-        arg->aha_read.attr_len = ble_att_svr_test_attr_r_1_len;
-        return 0;
-
-    default:
-        return -1;
-    }
-}
-
-static int
-ble_att_svr_test_misc_attr_fn_r_2(struct ble_att_svr_entry *entry,
-                                     uint8_t op,
-                                     union ble_att_svr_handle_arg *arg)
-{
-    switch (op) {
-    case BLE_ATT_OP_READ_REQ:
-        arg->aha_read.attr_data = ble_att_svr_test_attr_r_2;
-        arg->aha_read.attr_len = ble_att_svr_test_attr_r_2_len;
-        return 0;
-
-    default:
-        return -1;
-    }
-}
-
-static int
-ble_att_svr_test_misc_attr_fn_w_1(struct ble_att_svr_entry *entry,
-                                     uint8_t op,
-                                     union ble_att_svr_handle_arg *arg)
-{
-    struct os_mbuf_pkthdr *omp;
-    int rc;
-
-    switch (op) {
-    case BLE_ATT_OP_WRITE_REQ:
-        omp = OS_MBUF_PKTHDR(arg->aha_write.om);
-        rc = os_mbuf_copydata(arg->aha_write.om, 0, arg->aha_write.attr_len,
-                              ble_att_svr_test_attr_w_1);
-        TEST_ASSERT(rc == 0);
-        ble_att_svr_test_attr_w_1_len = arg->aha_write.attr_len;
-        return 0;
-
-    default:
-        return -1;
-    }
-
-    (void)omp;
-}
-
-static void
-ble_att_svr_test_misc_verify_tx_err_rsp(struct ble_l2cap_chan *chan,
-                                           uint8_t req_op, uint16_t handle,
-                                           uint8_t error_code)
-{
-    struct ble_att_error_rsp rsp;
-    uint8_t buf[BLE_ATT_ERROR_RSP_SZ];
-    int rc;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, sizeof buf, buf);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_att_error_rsp_parse(buf, sizeof buf, &rsp);
-    TEST_ASSERT(rc == 0);
-
-    TEST_ASSERT(rsp.bhaep_req_op == req_op);
-    TEST_ASSERT(rsp.bhaep_handle == handle);
-    TEST_ASSERT(rsp.bhaep_error_code == error_code);
-
-    /* Remove the error response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx,
-                BLE_ATT_ERROR_RSP_SZ);
-}
-
-static void
-ble_att_svr_test_misc_verify_tx_read_rsp(struct ble_l2cap_chan *chan,
-                                            uint8_t *attr_data, int attr_len)
-{
-    uint8_t u8;
-    int rc;
-    int i;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, 1, &u8);
-    TEST_ASSERT(rc == 0);
-    TEST_ASSERT(u8 == BLE_ATT_OP_READ_RSP);
-
-    for (i = 0; i < attr_len; i++) {
-        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, i + 1, 1, &u8);
-        TEST_ASSERT(rc == 0);
-        TEST_ASSERT(u8 == attr_data[i]);
-    }
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, i + 1, 1, &u8);
-    TEST_ASSERT(rc != 0);
-
-    /* Remove the read response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx, attr_len + 1);
-}
-
-static void
-ble_att_svr_test_misc_verify_tx_write_rsp(struct ble_l2cap_chan *chan)
-{
-    uint8_t u8;
-    int rc;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, 1, &u8);
-    TEST_ASSERT(rc == 0);
-    TEST_ASSERT(u8 == BLE_ATT_OP_WRITE_RSP);
-
-    /* Remove the write response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx,
-                BLE_ATT_WRITE_RSP_SZ);
-}
-
-static void
-ble_att_svr_test_misc_verify_tx_mtu_rsp(struct ble_l2cap_chan *chan)
-{
-    struct ble_att_mtu_cmd rsp;
-    uint8_t buf[BLE_ATT_MTU_CMD_SZ];
-    int rc;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, sizeof buf, buf);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_att_mtu_cmd_parse(buf, sizeof buf, &rsp);
-    TEST_ASSERT(rc == 0);
-
-    TEST_ASSERT(rsp.bhamc_mtu == chan->blc_my_mtu);
-
-    /* Remove the write response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx,
-                BLE_ATT_MTU_CMD_SZ);
-}
-
-struct ble_att_svr_test_info_entry {
-    uint16_t handle;        /* 0 on last entry */
-    uint16_t uuid16;        /* 0 if not present. */
-    uint8_t uuid128[16];
-};
-
-static void
-ble_att_svr_test_misc_verify_tx_find_info_rsp(
-    struct ble_l2cap_chan *chan,
-    struct ble_att_svr_test_info_entry *entries)
-{
-    struct ble_att_svr_test_info_entry *entry;
-    struct ble_att_find_info_rsp rsp;
-    uint16_t handle;
-    uint16_t uuid16;
-    uint8_t buf[BLE_ATT_FIND_INFO_RSP_BASE_SZ];
-    uint8_t uuid128[16];
-    int off;
-    int rc;
-
-    off = 0;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, sizeof buf, buf);
-    TEST_ASSERT(rc == 0);
-    off += sizeof buf;
-
-    rc = ble_att_find_info_rsp_parse(buf, sizeof buf, &rsp);
-    TEST_ASSERT(rc == 0);
-
-    for (entry = entries; entry->handle != 0; entry++) {
-        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &handle);
-        TEST_ASSERT(rc == 0);
-        off += 2;
-
-        handle = le16toh((void *)&handle);
-        TEST_ASSERT(handle == entry->handle);
-
-        if (entry->uuid16 != 0) {
-            TEST_ASSERT(rsp.bhafp_format ==
-                        BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT);
-            rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &uuid16);
-            TEST_ASSERT(rc == 0);
-            off += 2;
-
-            uuid16 = le16toh((void *)&uuid16);
-            TEST_ASSERT(uuid16 == entry->uuid16);
-        } else {
-            TEST_ASSERT(rsp.bhafp_format ==
-                        BLE_ATT_FIND_INFO_RSP_FORMAT_128BIT);
-            rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 16, uuid128);
-            TEST_ASSERT(rc == 0);
-            off += 16;
-
-            TEST_ASSERT(memcmp(uuid128, entry->uuid128, 16) == 0);
-        }
-    }
-
-    /* Ensure there is no extra data in the response. */
-    TEST_ASSERT(off == OS_MBUF_PKTHDR(ble_hs_test_util_prev_tx)->omp_len);
-
-    /* Remove the response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx, off);
-}
-
-struct ble_att_svr_test_type_value_entry {
-    uint16_t first;        /* 0 on last entry */
-    uint16_t last;
-};
-
-static void
-ble_att_svr_test_misc_verify_tx_find_type_value_rsp(
-    struct ble_l2cap_chan *chan,
-    struct ble_att_svr_test_type_value_entry *entries)
-{
-    struct ble_att_svr_test_type_value_entry *entry;
-    uint16_t u16;
-    uint8_t op;
-    int off;
-    int rc;
-
-    off = 0;
-
-    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 1, &op);
-    TEST_ASSERT(rc == 0);
-    off += 1;
-
-    TEST_ASSERT(op == BLE_ATT_OP_FIND_TYPE_VALUE_RSP);
-
-    for (entry = entries; entry->first != 0; entry++) {
-        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &u16);
-        TEST_ASSERT(rc == 0);
-        htole16(&u16, u16);
-        TEST_ASSERT(u16 == entry->first);
-        off += 2;
-
-        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &u16);
-        TEST_ASSERT(rc == 0);
-        htole16(&u16, u16);
-        TEST_ASSERT(u16 == entry->last);
-        off += 2;
-    }
-
-    /* Ensure there is no extra data in the response. */
-    TEST_ASSERT(off == OS_MBUF_PKTHDR(ble_hs_test_util_prev_tx)->omp_len);
-
-    /* Remove the response from the buffer. */
-    os_mbuf_adj(ble_hs_test_util_prev_tx, off);
-}
-
-static void
-ble_att_svr_test_misc_mtu_exchange(uint16_t my_mtu, uint16_t peer_sent,
-                                      uint16_t peer_actual, uint16_t chan_mtu)
-{
-    struct ble_att_mtu_cmd req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint8_t buf[BLE_ATT_MTU_CMD_SZ];
-    int rc;
-
-    ble_att_svr_test_misc_init(&conn, &chan);
-
-    chan->blc_my_mtu = my_mtu;
-
-    req.bhamc_mtu = peer_sent;
-    rc = ble_att_mtu_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    TEST_ASSERT(chan->blc_peer_mtu == peer_actual);
-
-    ble_att_svr_test_misc_verify_tx_mtu_rsp(chan);
-
-    TEST_ASSERT(ble_l2cap_chan_mtu(chan) == chan_mtu);
-}
-
-TEST_CASE(ble_att_svr_test_mtu)
-{
-    /*** MTU too low; should pretend peer sent default value instead. */
-    ble_att_svr_test_misc_mtu_exchange(BLE_ATT_MTU_DFLT, 5,
-                                       BLE_ATT_MTU_DFLT, BLE_ATT_MTU_DFLT);
-
-    /*** MTUs equal. */
-    ble_att_svr_test_misc_mtu_exchange(50, 50, 50, 50);
-
-    /*** Peer's higher than mine. */
-    ble_att_svr_test_misc_mtu_exchange(50, 100, 100, 50);
-
-    /*** Mine higher than peer's. */
-    ble_att_svr_test_misc_mtu_exchange(100, 50, 50, 50);
-}
-
-TEST_CASE(ble_att_svr_test_read)
-{
-    struct ble_att_read_req req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint8_t buf[BLE_ATT_READ_REQ_SZ];
-    uint8_t uuid[16] = {0};
-    int rc;
-
-    ble_att_svr_test_misc_init(&conn, &chan);
-
-    /*** Nonexistent attribute. */
-    req.bharq_handle = 0;
-    rc = ble_att_read_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-    ble_att_svr_test_misc_verify_tx_err_rsp(chan, BLE_ATT_OP_READ_REQ, 0,
-                                               BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** Successful read. */
-    ble_att_svr_test_attr_r_1 = (uint8_t[]){0,1,2,3,4,5,6,7};
-    ble_att_svr_test_attr_r_1_len = 8;
-    rc = ble_att_svr_register(uuid, 0, &req.bharq_handle,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_att_read_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_read_rsp(
-        chan, ble_att_svr_test_attr_r_1, ble_att_svr_test_attr_r_1_len);
-
-    /*** Partial read. */
-    ble_att_svr_test_attr_r_1 =
-        (uint8_t[]){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
-                    22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39};
-    ble_att_svr_test_attr_r_1_len = 40;
-
-    rc = ble_att_read_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_read_rsp(chan,
-                                                ble_att_svr_test_attr_r_1,
-                                                BLE_ATT_MTU_DFLT - 1);
-}
-
-TEST_CASE(ble_att_svr_test_write)
-{
-    struct ble_att_write_req req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint8_t buf[BLE_ATT_READ_REQ_SZ + 8];
-    uint8_t uuid[16] = {0};
-    int rc;
-
-    ble_att_svr_test_misc_init(&conn, &chan);
-
-    /*** Nonexistent attribute. */
-    req.bhawq_handle = 0;
-    rc = ble_att_write_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-    memcpy(buf + BLE_ATT_READ_REQ_SZ, ((uint8_t[]){0,1,2,3,4,5,6,7}), 8);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_WRITE_REQ, 0, BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** Successful write. */
-    rc = ble_att_svr_register(uuid, 0, &req.bhawq_handle,
-                                 ble_att_svr_test_misc_attr_fn_w_1);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_att_write_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-    memcpy(buf + BLE_ATT_WRITE_REQ_MIN_SZ,
-           ((uint8_t[]){0,1,2,3,4,5,6,7}), 8);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_write_rsp(chan);
-}
-
-TEST_CASE(ble_att_svr_test_find_info)
-{
-    struct ble_att_find_info_req req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint16_t handle1;
-    uint16_t handle2;
-    uint16_t handle3;
-    uint8_t buf[BLE_ATT_FIND_INFO_REQ_SZ];
-    uint8_t uuid1[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
-    uint8_t uuid2[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
-    uint8_t uuid3[16] = {
-        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
-        0x00, 0x10, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00
-    };
-    int rc;
-
-    ble_att_svr_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_start_handle = 0;
-    req.bhafq_end_handle = 0;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_INFO_REQ, 0, BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** Start handle > end handle. */
-    req.bhafq_start_handle = 101;
-    req.bhafq_end_handle = 100;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_INFO_REQ, 101, BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** No attributes. */
-    req.bhafq_start_handle = 200;
-    req.bhafq_end_handle = 300;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_INFO_REQ, 200, BLE_ATT_ERR_ATTR_NOT_FOUND);
-
-    /*** Range too late. */
-    rc = ble_att_svr_register(uuid1, 0, &handle1,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhafq_start_handle = 200;
-    req.bhafq_end_handle = 300;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_INFO_REQ, 200, BLE_ATT_ERR_ATTR_NOT_FOUND);
-
-    /*** One 128-bit entry. */
-    req.bhafq_start_handle = handle1;
-    req.bhafq_end_handle = handle1;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
-        ((struct ble_att_svr_test_info_entry[]) { {
-            .handle = handle1,
-            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
-        }, {
-            .handle = 0,
-        } }));
-
-    /*** Two 128-bit entries. */
-    rc = ble_att_svr_register(uuid2, 0,
-                                 &handle2,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhafq_start_handle = handle1;
-    req.bhafq_end_handle = handle2;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
-        ((struct ble_att_svr_test_info_entry[]) { {
-            .handle = handle1,
-            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
-        }, {
-            .handle = handle2,
-            .uuid128 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},
-        }, {
-            .handle = 0,
-        } }));
-
-    /*** Two 128-bit entries; 16-bit entry doesn't get sent. */
-    rc = ble_att_svr_register(uuid3, 0,
-                                 &handle3,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhafq_start_handle = handle1;
-    req.bhafq_end_handle = handle3;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
-        ((struct ble_att_svr_test_info_entry[]) { {
-            .handle = handle1,
-            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
-        }, {
-            .handle = handle2,
-            .uuid128 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},
-        }, {
-            .handle = 0,
-        } }));
-
-    /*** Remaining 16-bit entry requested. */
-    req.bhafq_start_handle = handle3;
-    req.bhafq_end_handle = handle3;
-
-    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
-        ((struct ble_att_svr_test_info_entry[]) { {
-            .handle = handle3,
-            .uuid16 = 0x000f,
-        }, {
-            .handle = 0,
-        } }));
-}
-
-TEST_CASE(ble_att_svr_test_find_type_value)
-{
-    struct ble_att_find_type_value_req req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint8_t buf[BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ + 2];
-    uint16_t handle1;
-    uint16_t handle2;
-    uint16_t handle3;
-    uint16_t handle4;
-    uint16_t handle5;
-    uint8_t uuid1[16] = {
-        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
-        0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
-    };
-    uint8_t uuid2[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
-    uint8_t uuid3[16] = {
-        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
-        0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-    };
-    int rc;
-
-    ble_att_svr_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;
-
-    /* One-time write of the attribute value at the end of the request. */
-    ble_att_svr_test_attr_r_1 = (uint8_t[]){0x99, 0x99};
-    ble_att_svr_test_attr_r_1_len = 2;
-    memcpy(buf + BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ,
-           ble_att_svr_test_attr_r_1,
-           ble_att_svr_test_attr_r_1_len);
-
-    /*** Start handle of 0. */
-    req.bhavq_start_handle = 0;
-    req.bhavq_end_handle = 0;
-    req.bhavq_attr_type = 0x0001;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 0,
-        BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** Start handle > end handle. */
-    req.bhavq_start_handle = 101;
-    req.bhavq_end_handle = 100;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 101,
-        BLE_ATT_ERR_INVALID_HANDLE);
-
-    /*** No attributes. */
-    req.bhavq_start_handle = 200;
-    req.bhavq_end_handle = 300;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 200,
-        BLE_ATT_ERR_ATTR_NOT_FOUND);
-
-    /*** Range too late. */
-    rc = ble_att_svr_register(uuid1, 0, &handle1,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhavq_start_handle = 200;
-    req.bhavq_end_handle = 300;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc != 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_err_rsp(
-        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 200,
-        BLE_ATT_ERR_ATTR_NOT_FOUND);
-
-    /*** One entry, one attribute. */
-    req.bhavq_start_handle = handle1;
-    req.bhavq_end_handle = handle1;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
-        ((struct ble_att_svr_test_type_value_entry[]) { {
-            .first = handle1,
-            .last = handle1,
-        }, {
-            .first = 0,
-        } }));
-
-    /*** One entry, two attributes. */
-    rc = ble_att_svr_register(uuid1, 0, &handle2,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhavq_start_handle = handle1;
-    req.bhavq_end_handle = handle2;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
-        ((struct ble_att_svr_test_type_value_entry[]) { {
-            .first = handle1,
-            .last = handle2,
-        }, {
-            .first = 0,
-        } }));
-
-    /*** Entry 1: two attributes; entry 2: one attribute. */
-    rc = ble_att_svr_register(uuid2, 0, &handle3,
-                                 ble_att_svr_test_misc_attr_fn_r_2);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_att_svr_register(uuid1, 0, &handle4,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-    TEST_ASSERT(rc == 0);
-
-    req.bhavq_start_handle = 0x0001;
-    req.bhavq_end_handle = 0xffff;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
-        ((struct ble_att_svr_test_type_value_entry[]) { {
-            .first = handle1,
-            .last = handle2,
-        }, {
-            .first = handle4,
-            .last = handle4,
-        }, {
-            .first = 0,
-        } }));
-
-    /*** Ensure attribute with wrong value is not included. */
-    ble_att_svr_test_attr_r_2 = (uint8_t[]){0x00, 0x00};
-    ble_att_svr_test_attr_r_2_len = 2;
-
-    req.bhavq_start_handle = 0x0001;
-    req.bhavq_end_handle = 0xffff;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
-        ((struct ble_att_svr_test_type_value_entry[]) { {
-            .first = handle1,
-            .last = handle2,
-        }, {
-            .first = handle4,
-            .last = handle4,
-        }, {
-            .first = 0,
-        } }));
-
-    /*** Ensure attribute with wrong type is not included. */
-    rc = ble_att_svr_register(uuid3, 0, &handle5,
-                                 ble_att_svr_test_misc_attr_fn_r_1);
-
-    req.bhavq_start_handle = 0x0001;
-    req.bhavq_end_handle = 0xffff;
-
-    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
-    TEST_ASSERT(rc == 0);
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
-    TEST_ASSERT(rc == 0);
-    ble_hs_process_tx_data_queue();
-
-    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
-        ((struct ble_att_svr_test_type_value_entry[]) { {
-            .first = handle1,
-            .last = handle2,
-        }, {
-            .first = handle4,
-            .last = handle4,
-        }, {
-            .first = 0,
-        } }));
-}
-
-TEST_SUITE(ble_att_svr_suite)
-{
-    ble_att_svr_test_mtu();
-    ble_att_svr_test_read();
-    ble_att_svr_test_write();
-    ble_att_svr_test_find_info();
-    ble_att_svr_test_find_type_value();
-}
-
-int
-ble_att_svr_test_all(void)
-{
-    ble_att_svr_suite();
-
-    return tu_any_failed;
-}


[2/2] incubator-mynewt-larva git commit: Some renaming for consistency.

Posted by cc...@apache.org.
Some renaming for consistency.


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/dde460fe
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/tree/dde460fe
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/diff/dde460fe

Branch: refs/heads/master
Commit: dde460fe6b7724ea102e6b5e17a31095399a93d6
Parents: 941319c
Author: Christopher Collins <cc...@gmail.com>
Authored: Fri Dec 4 15:03:16 2015 -0800
Committer: Christopher Collins <cc...@gmail.com>
Committed: Fri Dec 4 15:03:16 2015 -0800

----------------------------------------------------------------------
 net/nimble/host/src/ble_att_clt.c              |  25 +-
 net/nimble/host/src/ble_att_cmd.c              |  74 +-
 net/nimble/host/src/ble_att_cmd.h              |  60 +-
 net/nimble/host/src/ble_att_svr.c              |  52 +-
 net/nimble/host/src/ble_gatt.c                 |  24 +-
 net/nimble/host/src/test/ble_att_clt_test.c    | 150 ++++
 net/nimble/host/src/test/ble_att_svr_test.c    | 859 ++++++++++++++++++++
 net/nimble/host/src/test/ble_gatt_test.c       |  10 +-
 net/nimble/host/src/test/ble_hs_att_clt_test.c | 150 ----
 net/nimble/host/src/test/ble_hs_att_svr_test.c | 859 --------------------
 10 files changed, 1132 insertions(+), 1131 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/ble_att_clt.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_clt.c b/net/nimble/host/src/ble_att_clt.c
index 20b584d..94cd0cc 100644
--- a/net/nimble/host/src/ble_att_clt.c
+++ b/net/nimble/host/src/ble_att_clt.c
@@ -91,7 +91,7 @@ ble_att_clt_tx_mtu(struct ble_hs_conn *conn, struct ble_att_mtu_cmd *req)
 
     txom = NULL;
 
-    if (req->bhamc_mtu < BLE_ATT_MTU_DFLT) {
+    if (req->bamc_mtu < BLE_ATT_MTU_DFLT) {
         rc = EINVAL;
         goto err;
     }
@@ -136,7 +136,7 @@ ble_att_clt_rx_mtu(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
         return rc;
     }
 
-    ble_att_set_peer_mtu(chan, rsp.bhamc_mtu);
+    ble_att_set_peer_mtu(chan, rsp.bamc_mtu);
 
     ble_gatt_rx_mtu(conn, ble_l2cap_chan_mtu(chan));
 
@@ -153,8 +153,8 @@ ble_att_clt_tx_find_info(struct ble_hs_conn *conn,
 
     txom = NULL;
 
-    if (req->bhafq_start_handle == 0 ||
-        req->bhafq_start_handle > req->bhafq_end_handle) {
+    if (req->bafq_start_handle == 0 ||
+        req->bafq_start_handle > req->bafq_end_handle) {
 
         rc = EINVAL;
         goto err;
@@ -218,7 +218,7 @@ ble_att_clt_rx_find_info(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
         off += 2;
         handle_id = le16toh(&handle_id);
 
-        switch (rsp.bhafp_format) {
+        switch (rsp.bafp_format) {
         case BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT:
             rc = os_mbuf_copydata(rxom, off, 2, &uuid16);
             if (rc != 0) {
@@ -266,7 +266,7 @@ ble_att_clt_tx_read(struct ble_hs_conn *conn, struct ble_att_read_req *req)
 
     txom = NULL;
 
-    if (req->bharq_handle == 0) {
+    if (req->barq_handle == 0) {
         rc = EINVAL;
         goto err;
     }
@@ -305,8 +305,8 @@ ble_att_clt_tx_find_type_value(struct ble_hs_conn *conn,
 
     txom = NULL;
 
-    if (req->bhavq_start_handle == 0 ||
-        req->bhavq_start_handle > req->bhavq_end_handle) {
+    if (req->bavq_start_handle == 0 ||
+        req->bavq_start_handle > req->bavq_end_handle) {
 
         rc = EINVAL;
         goto err;
@@ -376,6 +376,7 @@ ble_att_clt_rx_find_type_value(struct ble_hs_conn *conn,
     /* Parse the Handles Information List field, passing each entry to the
      * GATT.
      */
+    rc = 0;
     while (OS_MBUF_PKTLEN(*rxom) > 0) {
         rc = ble_att_clt_parse_handles_info(rxom, &adata);
         if (rc != 0) {
@@ -403,8 +404,8 @@ ble_att_clt_tx_read_group_type(struct ble_hs_conn *conn,
 
     txom = NULL;
 
-    if (req->bhagq_start_handle == 0 ||
-        req->bhagq_start_handle > req->bhagq_end_handle) {
+    if (req->bagq_start_handle == 0 ||
+        req->bagq_start_handle > req->bagq_end_handle) {
 
         rc = EINVAL;
         goto err;
@@ -483,13 +484,13 @@ ble_att_clt_rx_read_group_type_rsp(struct ble_hs_conn *conn,
 
     /* Parse the Attribute Data List field, passing each entry to the GATT. */
     while (OS_MBUF_PKTLEN(*rxom) > 0) {
-        rc = ble_att_clt_parse_attribute_data(rxom, rsp.bhagp_length, &adata);
+        rc = ble_att_clt_parse_attribute_data(rxom, rsp.bagp_length, &adata);
         if (rc != 0) {
             goto done;
         }
 
         ble_gatt_rx_read_group_type_adata(conn, &adata);
-        os_mbuf_adj(*rxom, rsp.bhagp_length);
+        os_mbuf_adj(*rxom, rsp.bagp_length);
     }
 
 done:

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/ble_att_cmd.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_cmd.c b/net/nimble/host/src/ble_att_cmd.c
index 09718d8..1fad7c7 100644
--- a/net/nimble/host/src/ble_att_cmd.c
+++ b/net/nimble/host/src/ble_att_cmd.c
@@ -37,9 +37,9 @@ ble_att_error_rsp_parse(void *payload, int len, struct ble_att_error_rsp *rsp)
         return EINVAL;
     }
 
-    rsp->bhaep_req_op = u8ptr[1];
-    rsp->bhaep_handle = le16toh(u8ptr + 2);
-    rsp->bhaep_error_code = u8ptr[4];
+    rsp->baep_req_op = u8ptr[1];
+    rsp->baep_handle = le16toh(u8ptr + 2);
+    rsp->baep_error_code = u8ptr[4];
 
     return 0;
 }
@@ -56,9 +56,9 @@ ble_att_error_rsp_write(void *payload, int len, struct ble_att_error_rsp *rsp)
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_ERROR_RSP;
-    u8ptr[1] = rsp->bhaep_req_op;
-    htole16(u8ptr + 2, rsp->bhaep_handle);
-    u8ptr[4] = rsp->bhaep_error_code;
+    u8ptr[1] = rsp->baep_req_op;
+    htole16(u8ptr + 2, rsp->baep_handle);
+    u8ptr[4] = rsp->baep_error_code;
 
     return 0;
 }
@@ -80,7 +80,7 @@ ble_att_mtu_cmd_parse(void *payload, int len, struct ble_att_mtu_cmd *cmd)
         return EINVAL;
     }
 
-    cmd->bhamc_mtu = le16toh(u8ptr + 1);
+    cmd->bamc_mtu = le16toh(u8ptr + 1);
 
     return 0;
 }
@@ -98,7 +98,7 @@ ble_att_mtu_req_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_MTU_REQ;
-    htole16(u8ptr + 1, cmd->bhamc_mtu);
+    htole16(u8ptr + 1, cmd->bamc_mtu);
 
     return 0;
 }
@@ -115,7 +115,7 @@ ble_att_mtu_rsp_write(void *payload, int len, struct ble_att_mtu_cmd *cmd)
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_MTU_RSP;
-    htole16(u8ptr + 1, cmd->bhamc_mtu);
+    htole16(u8ptr + 1, cmd->bamc_mtu);
 
     return 0;
 }
@@ -136,8 +136,8 @@ ble_att_find_info_req_parse(void *payload, int len,
         return EINVAL;
     }
 
-    req->bhafq_start_handle = le16toh(u8ptr + 1);
-    req->bhafq_end_handle = le16toh(u8ptr + 3);
+    req->bafq_start_handle = le16toh(u8ptr + 1);
+    req->bafq_end_handle = le16toh(u8ptr + 3);
 
     return 0;
 }
@@ -155,8 +155,8 @@ ble_att_find_info_req_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_FIND_INFO_REQ;
-    htole16(u8ptr + 1, req->bhafq_start_handle);
-    htole16(u8ptr + 3, req->bhafq_end_handle);
+    htole16(u8ptr + 1, req->bafq_start_handle);
+    htole16(u8ptr + 3, req->bafq_end_handle);
 
     return 0;
 }
@@ -177,7 +177,7 @@ ble_att_find_info_rsp_parse(void *payload, int len,
         return EINVAL;
     }
 
-    rsp->bhafp_format = u8ptr[1];
+    rsp->bafp_format = u8ptr[1];
 
     return 0;
 }
@@ -195,7 +195,7 @@ ble_att_find_info_rsp_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_FIND_INFO_RSP;
-    u8ptr[1] = rsp->bhafp_format;
+    u8ptr[1] = rsp->bafp_format;
 
     return 0;
 }
@@ -216,9 +216,9 @@ ble_att_find_type_value_req_parse(void *payload, int len,
         return EINVAL;
     }
 
-    req->bhavq_start_handle = le16toh(u8ptr + 1);
-    req->bhavq_end_handle = le16toh(u8ptr + 3);
-    req->bhavq_attr_type = le16toh(u8ptr + 5);
+    req->bavq_start_handle = le16toh(u8ptr + 1);
+    req->bavq_end_handle = le16toh(u8ptr + 3);
+    req->bavq_attr_type = le16toh(u8ptr + 5);
 
     return 0;
 }
@@ -236,9 +236,9 @@ ble_att_find_type_value_req_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_FIND_TYPE_VALUE_REQ;
-    htole16(u8ptr + 1, req->bhavq_start_handle);
-    htole16(u8ptr + 3, req->bhavq_end_handle);
-    htole16(u8ptr + 5, req->bhavq_attr_type);
+    htole16(u8ptr + 1, req->bavq_start_handle);
+    htole16(u8ptr + 3, req->bavq_end_handle);
+    htole16(u8ptr + 5, req->bavq_attr_type);
 
     return 0;
 }
@@ -259,8 +259,8 @@ ble_att_read_type_req_parse(void *payload, int len,
         return EINVAL;
     }
 
-    req->bhatq_start_handle = le16toh(u8ptr + 1);
-    req->bhatq_end_handle = le16toh(u8ptr + 3);
+    req->batq_start_handle = le16toh(u8ptr + 1);
+    req->batq_end_handle = le16toh(u8ptr + 3);
 
     return 0;
 }
@@ -278,8 +278,8 @@ ble_att_read_type_req_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_READ_TYPE_REQ;
-    htole16(u8ptr + 1, req->bhatq_start_handle);
-    htole16(u8ptr + 3, req->bhatq_end_handle);
+    htole16(u8ptr + 1, req->batq_start_handle);
+    htole16(u8ptr + 3, req->batq_end_handle);
 
     return 0;
 }
@@ -296,7 +296,7 @@ ble_att_read_type_rsp_parse(void *payload, int len,
 
     u8ptr = payload;
 
-    rsp->bhatp_len = u8ptr[1];
+    rsp->batp_len = u8ptr[1];
 
     return 0;
 }
@@ -314,7 +314,7 @@ ble_att_read_type_rsp_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_READ_TYPE_RSP;
-    u8ptr[1] = rsp->bhatp_len;
+    u8ptr[1] = rsp->batp_len;
 
     return 0;
 }
@@ -334,7 +334,7 @@ ble_att_read_req_parse(void *payload, int len, struct ble_att_read_req *req)
         return EINVAL;
     }
 
-    req->bharq_handle = le16toh(u8ptr + 1);
+    req->barq_handle = le16toh(u8ptr + 1);
 
     return 0;
 }
@@ -351,7 +351,7 @@ ble_att_read_req_write(void *payload, int len, struct ble_att_read_req *req)
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_READ_REQ;
-    htole16(u8ptr + 1, req->bharq_handle);
+    htole16(u8ptr + 1, req->barq_handle);
 
     return 0;
 }
@@ -372,8 +372,8 @@ ble_att_read_group_type_req_parse(void *payload, int len,
         return EINVAL;
     }
 
-    req->bhagq_start_handle = le16toh(u8ptr + 1);
-    req->bhagq_end_handle = le16toh(u8ptr + 3);
+    req->bagq_start_handle = le16toh(u8ptr + 1);
+    req->bagq_end_handle = le16toh(u8ptr + 3);
 
     return 0;
 }
@@ -391,8 +391,8 @@ ble_att_read_group_type_req_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_READ_GROUP_TYPE_REQ;
-    htole16(u8ptr + 1, req->bhagq_start_handle);
-    htole16(u8ptr + 3, req->bhagq_end_handle);
+    htole16(u8ptr + 1, req->bagq_start_handle);
+    htole16(u8ptr + 3, req->bagq_end_handle);
 
     return 0;
 }
@@ -413,7 +413,7 @@ ble_att_read_group_type_rsp_parse(void *payload, int len,
         return EINVAL;
     }
 
-    rsp->bhagp_length = u8ptr[1];
+    rsp->bagp_length = u8ptr[1];
 
     return 0;
 }
@@ -431,7 +431,7 @@ ble_att_read_group_type_rsp_write(void *payload, int len,
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_READ_GROUP_TYPE_RSP;
-    u8ptr[1] = rsp->bhagp_length;
+    u8ptr[1] = rsp->bagp_length;
 
     return 0;
 }
@@ -451,7 +451,7 @@ ble_att_write_req_parse(void *payload, int len, struct ble_att_write_req *req)
         return EINVAL;
     }
 
-    req->bhawq_handle = le16toh(u8ptr + 1);
+    req->bawq_handle = le16toh(u8ptr + 1);
 
     return 0;
 }
@@ -468,7 +468,7 @@ ble_att_write_req_write(void *payload, int len, struct ble_att_write_req *req)
     u8ptr = payload;
 
     u8ptr[0] = BLE_ATT_OP_WRITE_REQ;
-    htole16(u8ptr + 1, req->bhawq_handle);
+    htole16(u8ptr + 1, req->bawq_handle);
 
     return 0;
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/ble_att_cmd.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_cmd.h b/net/nimble/host/src/ble_att_cmd.h
index 3b4cdf6..1253e9e 100644
--- a/net/nimble/host/src/ble_att_cmd.h
+++ b/net/nimble/host/src/ble_att_cmd.h
@@ -43,9 +43,9 @@ struct ble_l2cap_chan;
  */
 #define BLE_ATT_ERROR_RSP_SZ             5
 struct ble_att_error_rsp {
-    uint8_t bhaep_req_op;
-    uint16_t bhaep_handle;
-    uint8_t bhaep_error_code;
+    uint8_t baep_req_op;
+    uint16_t baep_handle;
+    uint8_t baep_error_code;
 };
 
 /**
@@ -56,7 +56,7 @@ struct ble_att_error_rsp {
  */
 #define BLE_ATT_MTU_CMD_SZ               3
 struct ble_att_mtu_cmd {
-    uint16_t bhamc_mtu;
+    uint16_t bamc_mtu;
 };
 
 /**
@@ -68,8 +68,8 @@ struct ble_att_mtu_cmd {
  */
 #define BLE_ATT_FIND_INFO_REQ_SZ         5
 struct ble_att_find_info_req {
-    uint16_t bhafq_start_handle;
-    uint16_t bhafq_end_handle;
+    uint16_t bafq_start_handle;
+    uint16_t bafq_end_handle;
 };
 
 /**
@@ -81,7 +81,7 @@ struct ble_att_find_info_req {
  */
 #define BLE_ATT_FIND_INFO_RSP_BASE_SZ       2
 struct ble_att_find_info_rsp {
-    uint8_t bhafp_format;
+    uint8_t bafp_format;
     /* Followed by information data. */
 };
 
@@ -99,9 +99,9 @@ struct ble_att_find_info_rsp {
  */
 #define BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ   7
 struct ble_att_find_type_value_req {
-    uint16_t bhavq_start_handle;
-    uint16_t bhavq_end_handle;
-    uint16_t bhavq_attr_type;
+    uint16_t bavq_start_handle;
+    uint16_t bavq_end_handle;
+    uint16_t bavq_attr_type;
 };
 
 /**
@@ -125,8 +125,8 @@ struct ble_att_find_type_value_req {
 #define BLE_ATT_READ_TYPE_REQ_SZ_16      7
 #define BLE_ATT_READ_TYPE_REQ_SZ_128     21
 struct ble_att_read_type_req {
-    uint16_t bhatq_start_handle;
-    uint16_t bhatq_end_handle;
+    uint16_t batq_start_handle;
+    uint16_t batq_end_handle;
 };
 
 /**
@@ -138,7 +138,7 @@ struct ble_att_read_type_req {
  */
 #define BLE_ATT_READ_TYPE_RSP_MIN_SZ     2
 struct ble_att_read_type_rsp {
-    uint8_t bhatp_len;
+    uint8_t batp_len;
 };
 
 /**
@@ -149,7 +149,7 @@ struct ble_att_read_type_rsp {
  */
 #define BLE_ATT_READ_REQ_SZ              3
 struct ble_att_read_req {
-    uint16_t bharq_handle;
+    uint16_t barq_handle;
 };
 
 /**
@@ -172,8 +172,8 @@ struct ble_att_read_req {
 #define BLE_ATT_READ_GROUP_TYPE_REQ_SZ_16    7
 #define BLE_ATT_READ_GROUP_TYPE_REQ_SZ_128   21
 struct ble_att_read_group_type_req {
-    uint16_t bhagq_start_handle;
-    uint16_t bhagq_end_handle;
+    uint16_t bagq_start_handle;
+    uint16_t bagq_end_handle;
 };
 
 /**
@@ -185,7 +185,7 @@ struct ble_att_read_group_type_req {
  */
 #define BLE_ATT_READ_GROUP_TYPE_RSP_BASE_SZ  2
 struct ble_att_read_group_type_rsp {
-    uint8_t bhagp_length;
+    uint8_t bagp_length;
 };
 
 #define BLE_ATT_READ_GROUP_TYPE_ADATA_BASE_SZ   4
@@ -199,7 +199,7 @@ struct ble_att_read_group_type_rsp {
  */
 #define BLE_ATT_WRITE_REQ_MIN_SZ         3
 struct ble_att_write_req {
-    uint16_t bhawq_handle;
+    uint16_t bawq_handle;
 };
 
 #define BLE_ATT_WRITE_RSP_SZ             1
@@ -222,10 +222,10 @@ int ble_att_find_info_rsp_parse(void *payload, int len,
                                 struct ble_att_find_info_rsp *rsp);
 int ble_att_find_info_rsp_write(void *payload, int len,
                                 struct ble_att_find_info_rsp *rsp);
-int ble_att_find_type_value_req_parse(
-    void *payload, int len, struct ble_att_find_type_value_req *req);
-int ble_att_find_type_value_req_write(
-    void *payload, int len, struct ble_att_find_type_value_req *req);
+int ble_att_find_type_value_req_parse(void *payload, int len,
+                                      struct ble_att_find_type_value_req *req);
+int ble_att_find_type_value_req_write(void *payload, int len,
+                                      struct ble_att_find_type_value_req *req);
 int ble_att_read_req_parse(void *payload, int len,
                            struct ble_att_read_req *req);
 int ble_att_read_req_write(void *payload, int len,
@@ -238,14 +238,14 @@ int ble_att_read_type_rsp_parse(void *payload, int len,
                                 struct ble_att_read_type_rsp *rsp);
 int ble_att_read_type_rsp_write(void *payload, int len,
                                 struct ble_att_read_type_rsp *rsp);
-int ble_att_read_group_type_req_parse(
-    void *payload, int len, struct ble_att_read_group_type_req *req);
-int ble_att_read_group_type_req_write(
-    void *payload, int len, struct ble_att_read_group_type_req *req);
-int ble_att_read_group_type_rsp_parse(
-    void *payload, int len, struct ble_att_read_group_type_rsp *rsp);
-int ble_att_read_group_type_rsp_write(
-    void *payload, int len, struct ble_att_read_group_type_rsp *rsp);
+int ble_att_read_group_type_req_parse(void *payload, int len,
+                                      struct ble_att_read_group_type_req *req);
+int ble_att_read_group_type_req_write(void *payload, int len,
+                                      struct ble_att_read_group_type_req *req);
+int ble_att_read_group_type_rsp_parse(void *payload, int len,
+                                      struct ble_att_read_group_type_rsp *rsp);
+int ble_att_read_group_type_rsp_write(void *payload, int len,
+                                      struct ble_att_read_group_type_rsp *rsp);
 int ble_att_write_req_parse(void *payload, int len,
                             struct ble_att_write_req *req);
 int ble_att_write_req_write(void *payload, int len,

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/ble_att_svr.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_svr.c b/net/nimble/host/src/ble_att_svr.c
index 25f9cb8..aab3906 100644
--- a/net/nimble/host/src/ble_att_svr.c
+++ b/net/nimble/host/src/ble_att_svr.c
@@ -285,9 +285,9 @@ ble_att_svr_tx_error_rsp(struct ble_l2cap_chan *chan, uint8_t req_op,
         goto err;
     }
 
-    rsp.bhaep_req_op = req_op;
-    rsp.bhaep_handle = handle;
-    rsp.bhaep_error_code = error_code;
+    rsp.baep_req_op = req_op;
+    rsp.baep_handle = handle;
+    rsp.baep_error_code = error_code;
 
     rc = ble_att_error_rsp_write(dst, BLE_ATT_ERROR_RSP_SZ, &rsp);
     assert(rc == 0);
@@ -329,7 +329,7 @@ ble_att_svr_tx_mtu_rsp(struct ble_l2cap_chan *chan, uint8_t op, uint16_t mtu)
         goto err;
     }
 
-    cmd.bhamc_mtu = mtu;
+    cmd.bamc_mtu = mtu;
 
     rc = ble_att_mtu_rsp_write(dst, BLE_ATT_MTU_CMD_SZ, &cmd);
     assert(rc == 0);
@@ -364,7 +364,7 @@ ble_att_svr_rx_mtu(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
     rc = ble_att_mtu_cmd_parse((*om)->om_data, (*om)->om_len, &cmd);
     assert(rc == 0);
 
-    ble_att_set_peer_mtu(chan, cmd.bhamc_mtu);
+    ble_att_set_peer_mtu(chan, cmd.bamc_mtu);
     rc = ble_att_svr_tx_mtu_rsp(chan, BLE_ATT_OP_MTU_RSP, chan->blc_my_mtu);
     if (rc != 0) {
         return rc;
@@ -407,11 +407,11 @@ ble_att_svr_fill_info(struct ble_att_find_info_req *req, struct os_mbuf *om,
     ble_att_svr_list_lock();
 
     STAILQ_FOREACH(ha, &ble_att_svr_list, ha_next) {
-        if (ha->ha_handle_id > req->bhafq_end_handle) {
+        if (ha->ha_handle_id > req->bafq_end_handle) {
             rc = 0;
             goto done;
         }
-        if (ha->ha_handle_id >= req->bhafq_start_handle) {
+        if (ha->ha_handle_id >= req->bafq_start_handle) {
             uuid16 = ble_hs_uuid_16bit(ha->ha_uuid);
 
             if (*format == 0) {
@@ -511,7 +511,7 @@ ble_att_svr_rx_find_info(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
 
     rc = ble_att_find_info_req_parse((*rxom)->om_data, (*rxom)->om_len, &req);
     if (rc != 0) {
-        req.bhafq_start_handle = 0;
+        req.bafq_start_handle = 0;
         rc = BLE_ATT_ERR_INVALID_PDU;
         goto err;
     }
@@ -519,8 +519,8 @@ ble_att_svr_rx_find_info(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
     /* Tx error response if start handle is greater than end handle or is equal
      * to 0 (Vol. 3, Part F, 3.4.3.1).
      */
-    if (req.bhafq_start_handle > req.bhafq_end_handle ||
-        req.bhafq_start_handle == 0) {
+    if (req.bafq_start_handle > req.bafq_end_handle ||
+        req.bafq_start_handle == 0) {
 
         rc = BLE_ATT_ERR_INVALID_HANDLE;
         goto err;
@@ -565,7 +565,7 @@ ble_att_svr_rx_find_info(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
 err:
     os_mbuf_free_chain(txom);
     ble_att_svr_tx_error_rsp(chan, BLE_ATT_OP_FIND_INFO_REQ,
-                             req.bhafq_start_handle, rc);
+                             req.bafq_start_handle, rc);
 
     return rc;
 }
@@ -718,16 +718,16 @@ ble_att_svr_fill_type_value(struct ble_att_find_type_value_req *req,
     STAILQ_FOREACH(ha, &ble_att_svr_list, ha_next) {
         match = 0;
 
-        if (ha->ha_handle_id > req->bhavq_end_handle) {
+        if (ha->ha_handle_id > req->bavq_end_handle) {
             break;
         }
 
-        if (ha->ha_handle_id >= req->bhavq_start_handle) {
+        if (ha->ha_handle_id >= req->bavq_start_handle) {
             /* Compare the attribute type and value to the request fields to
              * determine if this attribute matches.
              */
             uuid16 = ble_hs_uuid_16bit(ha->ha_uuid);
-            if (uuid16 == req->bhavq_attr_type) {
+            if (uuid16 == req->bavq_attr_type) {
                 rc = ha->ha_fn(ha, BLE_ATT_OP_READ_REQ, &arg);
                 if (rc != 0) {
                     rc = BLE_ATT_ERR_UNLIKELY;
@@ -806,8 +806,8 @@ ble_att_svr_rx_find_type_value(struct ble_hs_conn *conn,
     /* Tx error response if start handle is greater than end handle or is equal
      * to 0 (Vol. 3, Part F, 3.4.3.3).
      */
-    if (req.bhavq_start_handle > req.bhavq_end_handle ||
-        req.bhavq_start_handle == 0) {
+    if (req.bavq_start_handle > req.bavq_end_handle ||
+        req.bavq_start_handle == 0) {
 
         rc = BLE_ATT_ERR_INVALID_HANDLE;
         goto err;
@@ -846,7 +846,7 @@ ble_att_svr_rx_find_type_value(struct ble_hs_conn *conn,
 err:
     os_mbuf_free_chain(txom);
     ble_att_svr_tx_error_rsp(chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ,
-                            req.bhavq_start_handle, rc);
+                            req.bavq_start_handle, rc);
     return rc;
 }
 
@@ -894,12 +894,12 @@ ble_att_svr_tx_read_type_rsp(struct ble_hs_conn *conn,
             goto err;
         }
 
-        if (entry->ha_handle_id > req->bhatq_end_handle) {
+        if (entry->ha_handle_id > req->batq_end_handle) {
             break;
         }
 
-        if (entry->ha_handle_id >= req->bhatq_start_handle &&
-            entry->ha_handle_id <= req->bhatq_end_handle) {
+        if (entry->ha_handle_id >= req->batq_start_handle &&
+            entry->ha_handle_id <= req->batq_end_handle) {
 
             rc = entry->ha_fn(entry, BLE_ATT_OP_READ_REQ, &arg);
             if (rc != 0) {
@@ -942,7 +942,7 @@ ble_att_svr_tx_read_type_rsp(struct ble_hs_conn *conn,
     }
 
     /* Fill the response base. */
-    rsp.bhatp_len = prev_attr_len;
+    rsp.batp_len = prev_attr_len;
     rc = ble_att_read_type_rsp_write(txom->om_data, txom->om_len, &rsp);
     assert(rc == 0);
 
@@ -959,7 +959,7 @@ ble_att_svr_tx_read_type_rsp(struct ble_hs_conn *conn,
 err:
     os_mbuf_free_chain(txom);
     ble_att_svr_tx_error_rsp(chan, BLE_ATT_OP_READ_TYPE_REQ,
-                                req->bhatq_start_handle, rc);
+                                req->batq_start_handle, rc);
     return rc;
 }
 
@@ -1076,7 +1076,7 @@ ble_att_svr_rx_read(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
     }
 
     entry = NULL;
-    rc = ble_att_svr_find_by_handle(req.bharq_handle, &entry);
+    rc = ble_att_svr_find_by_handle(req.barq_handle, &entry);
     if (rc != 0) {
         rc = BLE_ATT_ERR_INVALID_HANDLE;
         goto err;
@@ -1103,7 +1103,7 @@ ble_att_svr_rx_read(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
 
 err:
     ble_att_svr_tx_error_rsp(chan, BLE_ATT_OP_READ_REQ,
-                             req.bharq_handle, rc);
+                             req.barq_handle, rc);
     return rc;
 }
 
@@ -1164,7 +1164,7 @@ ble_att_svr_rx_write(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
     os_mbuf_adj(*rxom, BLE_ATT_WRITE_REQ_MIN_SZ);
 
     entry = NULL;
-    rc = ble_att_svr_find_by_handle(req.bhawq_handle, &entry);
+    rc = ble_att_svr_find_by_handle(req.bawq_handle, &entry);
     if (rc != 0) {
         rc = BLE_ATT_ERR_INVALID_HANDLE;
         goto send_err;
@@ -1191,7 +1191,7 @@ ble_att_svr_rx_write(struct ble_hs_conn *conn, struct ble_l2cap_chan *chan,
 
 send_err:
     ble_att_svr_tx_error_rsp(chan, BLE_ATT_OP_WRITE_REQ,
-                                req.bhawq_handle, rc);
+                                req.bawq_handle, rc);
     return rc;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/ble_gatt.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_gatt.c b/net/nimble/host/src/ble_gatt.c
index e357240..8f929e3 100644
--- a/net/nimble/host/src/ble_gatt.c
+++ b/net/nimble/host/src/ble_gatt.c
@@ -283,7 +283,7 @@ ble_gatt_kick_mtu(struct ble_gatt_entry *entry)
     chan = ble_hs_conn_chan_find(conn, BLE_L2CAP_CID_ATT);
     assert(chan != NULL);
 
-    req.bhamc_mtu = chan->blc_my_mtu;
+    req.bamc_mtu = chan->blc_my_mtu;
     rc = ble_att_clt_tx_mtu(conn, &req);
     if (rc != 0) {
         return rc;
@@ -304,8 +304,8 @@ ble_gatt_kick_find_info(struct ble_gatt_entry *entry)
         return ENOTCONN;
     }
 
-    req.bhafq_start_handle = entry->find_info.next_handle;
-    req.bhafq_end_handle = entry->find_info.end_handle;
+    req.bafq_start_handle = entry->find_info.next_handle;
+    req.bafq_end_handle = entry->find_info.end_handle;
     rc = ble_att_clt_tx_find_info(conn, &req);
     if (rc != 0) {
         return rc;
@@ -330,8 +330,8 @@ ble_gatt_kick_disc_all_services(struct ble_gatt_entry *entry)
     rc = ble_hs_uuid_from_16bit(BLE_ATT_UUID_PRIMARY_SERVICE, uuid128);
     assert(rc == 0);
 
-    req.bhagq_start_handle = entry->disc_all_services.prev_handle + 1;
-    req.bhagq_end_handle = 0xffff;
+    req.bagq_start_handle = entry->disc_all_services.prev_handle + 1;
+    req.bagq_end_handle = 0xffff;
     rc = ble_att_clt_tx_read_group_type(conn, &req, uuid128);
     if (rc != 0) {
         return rc;
@@ -352,9 +352,9 @@ ble_gatt_kick_disc_service_uuid(struct ble_gatt_entry *entry)
         return ENOTCONN;
     }
 
-    req.bhavq_start_handle = entry->disc_service_uuid.prev_handle + 1;
-    req.bhavq_end_handle = 0xffff;
-    req.bhavq_attr_type = BLE_ATT_UUID_PRIMARY_SERVICE;
+    req.bavq_start_handle = entry->disc_service_uuid.prev_handle + 1;
+    req.bavq_end_handle = 0xffff;
+    req.bavq_attr_type = BLE_ATT_UUID_PRIMARY_SERVICE;
 
     rc = ble_att_clt_tx_find_type_value(conn, &req,
                                         entry->disc_service_uuid.service_uuid,
@@ -405,12 +405,12 @@ ble_gatt_rx_err_disc_all_services(struct ble_gatt_entry *entry,
 {
     uint8_t status;
 
-    if (rsp->bhaep_error_code == BLE_ATT_ERR_ATTR_NOT_FOUND) {
+    if (rsp->baep_error_code == BLE_ATT_ERR_ATTR_NOT_FOUND) {
         /* Discovery is complete. */
         status = 0;
     } else {
         /* Discovery failure. */
-        status = rsp->bhaep_error_code;
+        status = rsp->baep_error_code;
     }
 
     entry->disc_all_services.cb(conn->bhc_handle, status, NULL,
@@ -426,12 +426,12 @@ ble_gatt_rx_err_disc_service_uuid(struct ble_gatt_entry *entry,
 {
     uint8_t status;
 
-    if (rsp->bhaep_error_code == BLE_ATT_ERR_ATTR_NOT_FOUND) {
+    if (rsp->baep_error_code == BLE_ATT_ERR_ATTR_NOT_FOUND) {
         /* Discovery is complete. */
         status = 0;
     } else {
         /* Discovery failure. */
-        status = rsp->bhaep_error_code;
+        status = rsp->baep_error_code;
     }
 
     entry->disc_service_uuid.cb(conn->bhc_handle, status, NULL,

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/test/ble_att_clt_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_att_clt_test.c b/net/nimble/host/src/test/ble_att_clt_test.c
new file mode 100644
index 0000000..bcb4fc9
--- /dev/null
+++ b/net/nimble/host/src/test/ble_att_clt_test.c
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2015 Runtime Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <string.h>
+#include <errno.h>
+#include "testutil/testutil.h"
+#include "nimble/ble.h"
+#include "host/ble_hs_test.h"
+#include "ble_hs_conn.h"
+#include "ble_att.h"
+#include "ble_att_cmd.h"
+#include "ble_hs_test_util.h"
+
+static void
+ble_att_clt_test_misc_init(struct ble_hs_conn **conn,
+                           struct ble_l2cap_chan **att_chan)
+{
+    ble_hs_test_util_init();
+
+    *conn = ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
+    *att_chan = ble_hs_conn_chan_find(*conn, BLE_L2CAP_CID_ATT);
+    TEST_ASSERT_FATAL(*att_chan != NULL);
+}
+
+TEST_CASE(ble_att_clt_test_tx_find_info)
+{
+    struct ble_att_find_info_req req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    int rc;
+
+    ble_att_clt_test_misc_init(&conn, &chan);
+
+    /*** Success. */
+    req.bafq_start_handle = 1;
+    req.bafq_end_handle = 0xffff;
+    rc = ble_att_clt_tx_find_info(conn, &req);
+    TEST_ASSERT(rc == 0);
+
+    /*** Error: start handle of 0. */
+    req.bafq_start_handle = 0;
+    req.bafq_end_handle = 0xffff;
+    rc = ble_att_clt_tx_find_info(conn, &req);
+    TEST_ASSERT(rc == EINVAL);
+
+    /*** Error: start handle greater than end handle. */
+    req.bafq_start_handle = 500;
+    req.bafq_end_handle = 499;
+    rc = ble_att_clt_tx_find_info(conn, &req);
+    TEST_ASSERT(rc == EINVAL);
+
+    /*** Success; start and end handles equal. */
+    req.bafq_start_handle = 500;
+    req.bafq_end_handle = 500;
+    rc = ble_att_clt_tx_find_info(conn, &req);
+    TEST_ASSERT(rc == 0);
+}
+
+TEST_CASE(ble_att_clt_test_rx_find_info)
+{
+    struct ble_att_find_info_rsp rsp;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint8_t buf[1024];
+    uint8_t uuid128_1[16] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
+    int off;
+    int rc;
+
+    ble_att_clt_test_misc_init(&conn, &chan);
+
+    /*** One 128-bit UUID. */
+    /* Receive response with attribute mapping. */
+    off = 0;
+    rsp.bafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_128BIT;
+    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
+    TEST_ASSERT(rc == 0);
+    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
+
+    htole16(buf + off, 1);
+    off += 2;
+    memcpy(buf + off, uuid128_1, 16);
+    off += 16;
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
+    TEST_ASSERT(rc == 0);
+
+    /*** One 16-bit UUID. */
+    /* Receive response with attribute mapping. */
+    off = 0;
+    rsp.bafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT;
+    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
+    TEST_ASSERT(rc == 0);
+    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
+
+    htole16(buf + off, 2);
+    off += 2;
+    htole16(buf + off, 0x000f);
+    off += 2;
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
+    TEST_ASSERT(rc == 0);
+
+    /*** Two 16-bit UUIDs. */
+    /* Receive response with attribute mappings. */
+    off = 0;
+    rsp.bafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT;
+    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
+    TEST_ASSERT(rc == 0);
+    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
+
+    htole16(buf + off, 3);
+    off += 2;
+    htole16(buf + off, 0x0010);
+    off += 2;
+
+    htole16(buf + off, 4);
+    off += 2;
+    htole16(buf + off, 0x0011);
+    off += 2;
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
+    TEST_ASSERT(rc == 0);
+}
+
+TEST_SUITE(ble_att_clt_suite)
+{
+    ble_att_clt_test_tx_find_info();
+    ble_att_clt_test_rx_find_info();
+}
+
+int
+ble_att_clt_test_all(void)
+{
+    ble_att_clt_suite();
+
+    return tu_any_failed;
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/test/ble_att_svr_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_att_svr_test.c b/net/nimble/host/src/test/ble_att_svr_test.c
new file mode 100644
index 0000000..7ca324d
--- /dev/null
+++ b/net/nimble/host/src/test/ble_att_svr_test.c
@@ -0,0 +1,859 @@
+/**
+ * Copyright (c) 2015 Runtime Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stddef.h>
+#include <errno.h>
+#include <string.h>
+#include "nimble/hci_common.h"
+#include "host/ble_hs.h"
+#include "host/ble_hs_test.h"
+#include "testutil/testutil.h"
+#include "ble_l2cap.h"
+#include "ble_hs_test_util.h"
+#include "ble_hs_conn.h"
+#include "ble_att.h"
+#include "ble_att_cmd.h"
+
+static uint8_t *ble_att_svr_test_attr_r_1;
+static int ble_att_svr_test_attr_r_1_len;
+static uint8_t *ble_att_svr_test_attr_r_2;
+static int ble_att_svr_test_attr_r_2_len;
+
+static uint8_t ble_att_svr_test_attr_w_1[1024];
+static int ble_att_svr_test_attr_w_1_len;
+
+static void
+ble_att_svr_test_misc_init(struct ble_hs_conn **conn,
+                              struct ble_l2cap_chan **att_chan)
+{
+    ble_hs_test_util_init();
+
+    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_att_svr_test_misc_attr_fn_r_1(struct ble_att_svr_entry *entry,
+                                     uint8_t op,
+                                     union ble_att_svr_handle_arg *arg)
+{
+    switch (op) {
+    case BLE_ATT_OP_READ_REQ:
+        arg->aha_read.attr_data = ble_att_svr_test_attr_r_1;
+        arg->aha_read.attr_len = ble_att_svr_test_attr_r_1_len;
+        return 0;
+
+    default:
+        return -1;
+    }
+}
+
+static int
+ble_att_svr_test_misc_attr_fn_r_2(struct ble_att_svr_entry *entry,
+                                     uint8_t op,
+                                     union ble_att_svr_handle_arg *arg)
+{
+    switch (op) {
+    case BLE_ATT_OP_READ_REQ:
+        arg->aha_read.attr_data = ble_att_svr_test_attr_r_2;
+        arg->aha_read.attr_len = ble_att_svr_test_attr_r_2_len;
+        return 0;
+
+    default:
+        return -1;
+    }
+}
+
+static int
+ble_att_svr_test_misc_attr_fn_w_1(struct ble_att_svr_entry *entry,
+                                     uint8_t op,
+                                     union ble_att_svr_handle_arg *arg)
+{
+    struct os_mbuf_pkthdr *omp;
+    int rc;
+
+    switch (op) {
+    case BLE_ATT_OP_WRITE_REQ:
+        omp = OS_MBUF_PKTHDR(arg->aha_write.om);
+        rc = os_mbuf_copydata(arg->aha_write.om, 0, arg->aha_write.attr_len,
+                              ble_att_svr_test_attr_w_1);
+        TEST_ASSERT(rc == 0);
+        ble_att_svr_test_attr_w_1_len = arg->aha_write.attr_len;
+        return 0;
+
+    default:
+        return -1;
+    }
+
+    (void)omp;
+}
+
+static void
+ble_att_svr_test_misc_verify_tx_err_rsp(struct ble_l2cap_chan *chan,
+                                           uint8_t req_op, uint16_t handle,
+                                           uint8_t error_code)
+{
+    struct ble_att_error_rsp rsp;
+    uint8_t buf[BLE_ATT_ERROR_RSP_SZ];
+    int rc;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, sizeof buf, buf);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_att_error_rsp_parse(buf, sizeof buf, &rsp);
+    TEST_ASSERT(rc == 0);
+
+    TEST_ASSERT(rsp.baep_req_op == req_op);
+    TEST_ASSERT(rsp.baep_handle == handle);
+    TEST_ASSERT(rsp.baep_error_code == error_code);
+
+    /* Remove the error response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx,
+                BLE_ATT_ERROR_RSP_SZ);
+}
+
+static void
+ble_att_svr_test_misc_verify_tx_read_rsp(struct ble_l2cap_chan *chan,
+                                            uint8_t *attr_data, int attr_len)
+{
+    uint8_t u8;
+    int rc;
+    int i;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, 1, &u8);
+    TEST_ASSERT(rc == 0);
+    TEST_ASSERT(u8 == BLE_ATT_OP_READ_RSP);
+
+    for (i = 0; i < attr_len; i++) {
+        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, i + 1, 1, &u8);
+        TEST_ASSERT(rc == 0);
+        TEST_ASSERT(u8 == attr_data[i]);
+    }
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, i + 1, 1, &u8);
+    TEST_ASSERT(rc != 0);
+
+    /* Remove the read response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx, attr_len + 1);
+}
+
+static void
+ble_att_svr_test_misc_verify_tx_write_rsp(struct ble_l2cap_chan *chan)
+{
+    uint8_t u8;
+    int rc;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, 1, &u8);
+    TEST_ASSERT(rc == 0);
+    TEST_ASSERT(u8 == BLE_ATT_OP_WRITE_RSP);
+
+    /* Remove the write response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx,
+                BLE_ATT_WRITE_RSP_SZ);
+}
+
+static void
+ble_att_svr_test_misc_verify_tx_mtu_rsp(struct ble_l2cap_chan *chan)
+{
+    struct ble_att_mtu_cmd rsp;
+    uint8_t buf[BLE_ATT_MTU_CMD_SZ];
+    int rc;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, 0, sizeof buf, buf);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_att_mtu_cmd_parse(buf, sizeof buf, &rsp);
+    TEST_ASSERT(rc == 0);
+
+    TEST_ASSERT(rsp.bamc_mtu == chan->blc_my_mtu);
+
+    /* Remove the write response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx,
+                BLE_ATT_MTU_CMD_SZ);
+}
+
+struct ble_att_svr_test_info_entry {
+    uint16_t handle;        /* 0 on last entry */
+    uint16_t uuid16;        /* 0 if not present. */
+    uint8_t uuid128[16];
+};
+
+static void
+ble_att_svr_test_misc_verify_tx_find_info_rsp(
+    struct ble_l2cap_chan *chan,
+    struct ble_att_svr_test_info_entry *entries)
+{
+    struct ble_att_svr_test_info_entry *entry;
+    struct ble_att_find_info_rsp rsp;
+    uint16_t handle;
+    uint16_t uuid16;
+    uint8_t buf[BLE_ATT_FIND_INFO_RSP_BASE_SZ];
+    uint8_t uuid128[16];
+    int off;
+    int rc;
+
+    off = 0;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, sizeof buf, buf);
+    TEST_ASSERT(rc == 0);
+    off += sizeof buf;
+
+    rc = ble_att_find_info_rsp_parse(buf, sizeof buf, &rsp);
+    TEST_ASSERT(rc == 0);
+
+    for (entry = entries; entry->handle != 0; entry++) {
+        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &handle);
+        TEST_ASSERT(rc == 0);
+        off += 2;
+
+        handle = le16toh((void *)&handle);
+        TEST_ASSERT(handle == entry->handle);
+
+        if (entry->uuid16 != 0) {
+            TEST_ASSERT(rsp.bafp_format ==
+                        BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT);
+            rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &uuid16);
+            TEST_ASSERT(rc == 0);
+            off += 2;
+
+            uuid16 = le16toh((void *)&uuid16);
+            TEST_ASSERT(uuid16 == entry->uuid16);
+        } else {
+            TEST_ASSERT(rsp.bafp_format ==
+                        BLE_ATT_FIND_INFO_RSP_FORMAT_128BIT);
+            rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 16, uuid128);
+            TEST_ASSERT(rc == 0);
+            off += 16;
+
+            TEST_ASSERT(memcmp(uuid128, entry->uuid128, 16) == 0);
+        }
+    }
+
+    /* Ensure there is no extra data in the response. */
+    TEST_ASSERT(off == OS_MBUF_PKTHDR(ble_hs_test_util_prev_tx)->omp_len);
+
+    /* Remove the response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx, off);
+}
+
+struct ble_att_svr_test_type_value_entry {
+    uint16_t first;        /* 0 on last entry */
+    uint16_t last;
+};
+
+static void
+ble_att_svr_test_misc_verify_tx_find_type_value_rsp(
+    struct ble_l2cap_chan *chan,
+    struct ble_att_svr_test_type_value_entry *entries)
+{
+    struct ble_att_svr_test_type_value_entry *entry;
+    uint16_t u16;
+    uint8_t op;
+    int off;
+    int rc;
+
+    off = 0;
+
+    rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 1, &op);
+    TEST_ASSERT(rc == 0);
+    off += 1;
+
+    TEST_ASSERT(op == BLE_ATT_OP_FIND_TYPE_VALUE_RSP);
+
+    for (entry = entries; entry->first != 0; entry++) {
+        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &u16);
+        TEST_ASSERT(rc == 0);
+        htole16(&u16, u16);
+        TEST_ASSERT(u16 == entry->first);
+        off += 2;
+
+        rc = os_mbuf_copydata(ble_hs_test_util_prev_tx, off, 2, &u16);
+        TEST_ASSERT(rc == 0);
+        htole16(&u16, u16);
+        TEST_ASSERT(u16 == entry->last);
+        off += 2;
+    }
+
+    /* Ensure there is no extra data in the response. */
+    TEST_ASSERT(off == OS_MBUF_PKTHDR(ble_hs_test_util_prev_tx)->omp_len);
+
+    /* Remove the response from the buffer. */
+    os_mbuf_adj(ble_hs_test_util_prev_tx, off);
+}
+
+static void
+ble_att_svr_test_misc_mtu_exchange(uint16_t my_mtu, uint16_t peer_sent,
+                                      uint16_t peer_actual, uint16_t chan_mtu)
+{
+    struct ble_att_mtu_cmd req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint8_t buf[BLE_ATT_MTU_CMD_SZ];
+    int rc;
+
+    ble_att_svr_test_misc_init(&conn, &chan);
+
+    chan->blc_my_mtu = my_mtu;
+
+    req.bamc_mtu = peer_sent;
+    rc = ble_att_mtu_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    TEST_ASSERT(chan->blc_peer_mtu == peer_actual);
+
+    ble_att_svr_test_misc_verify_tx_mtu_rsp(chan);
+
+    TEST_ASSERT(ble_l2cap_chan_mtu(chan) == chan_mtu);
+}
+
+TEST_CASE(ble_att_svr_test_mtu)
+{
+    /*** MTU too low; should pretend peer sent default value instead. */
+    ble_att_svr_test_misc_mtu_exchange(BLE_ATT_MTU_DFLT, 5,
+                                       BLE_ATT_MTU_DFLT, BLE_ATT_MTU_DFLT);
+
+    /*** MTUs equal. */
+    ble_att_svr_test_misc_mtu_exchange(50, 50, 50, 50);
+
+    /*** Peer's higher than mine. */
+    ble_att_svr_test_misc_mtu_exchange(50, 100, 100, 50);
+
+    /*** Mine higher than peer's. */
+    ble_att_svr_test_misc_mtu_exchange(100, 50, 50, 50);
+}
+
+TEST_CASE(ble_att_svr_test_read)
+{
+    struct ble_att_read_req req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint8_t buf[BLE_ATT_READ_REQ_SZ];
+    uint8_t uuid[16] = {0};
+    int rc;
+
+    ble_att_svr_test_misc_init(&conn, &chan);
+
+    /*** Nonexistent attribute. */
+    req.barq_handle = 0;
+    rc = ble_att_read_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+    ble_att_svr_test_misc_verify_tx_err_rsp(chan, BLE_ATT_OP_READ_REQ, 0,
+                                               BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** Successful read. */
+    ble_att_svr_test_attr_r_1 = (uint8_t[]){0,1,2,3,4,5,6,7};
+    ble_att_svr_test_attr_r_1_len = 8;
+    rc = ble_att_svr_register(uuid, 0, &req.barq_handle,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_att_read_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_read_rsp(
+        chan, ble_att_svr_test_attr_r_1, ble_att_svr_test_attr_r_1_len);
+
+    /*** Partial read. */
+    ble_att_svr_test_attr_r_1 =
+        (uint8_t[]){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,
+                    22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39};
+    ble_att_svr_test_attr_r_1_len = 40;
+
+    rc = ble_att_read_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_read_rsp(chan,
+                                                ble_att_svr_test_attr_r_1,
+                                                BLE_ATT_MTU_DFLT - 1);
+}
+
+TEST_CASE(ble_att_svr_test_write)
+{
+    struct ble_att_write_req req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint8_t buf[BLE_ATT_READ_REQ_SZ + 8];
+    uint8_t uuid[16] = {0};
+    int rc;
+
+    ble_att_svr_test_misc_init(&conn, &chan);
+
+    /*** Nonexistent attribute. */
+    req.bawq_handle = 0;
+    rc = ble_att_write_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+    memcpy(buf + BLE_ATT_READ_REQ_SZ, ((uint8_t[]){0,1,2,3,4,5,6,7}), 8);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_WRITE_REQ, 0, BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** Successful write. */
+    rc = ble_att_svr_register(uuid, 0, &req.bawq_handle,
+                                 ble_att_svr_test_misc_attr_fn_w_1);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_att_write_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+    memcpy(buf + BLE_ATT_WRITE_REQ_MIN_SZ,
+           ((uint8_t[]){0,1,2,3,4,5,6,7}), 8);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_write_rsp(chan);
+}
+
+TEST_CASE(ble_att_svr_test_find_info)
+{
+    struct ble_att_find_info_req req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint16_t handle1;
+    uint16_t handle2;
+    uint16_t handle3;
+    uint8_t buf[BLE_ATT_FIND_INFO_REQ_SZ];
+    uint8_t uuid1[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+    uint8_t uuid2[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+    uint8_t uuid3[16] = {
+        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
+        0x00, 0x10, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00
+    };
+    int rc;
+
+    ble_att_svr_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.bafq_start_handle = 0;
+    req.bafq_end_handle = 0;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_INFO_REQ, 0, BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** Start handle > end handle. */
+    req.bafq_start_handle = 101;
+    req.bafq_end_handle = 100;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_INFO_REQ, 101, BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** No attributes. */
+    req.bafq_start_handle = 200;
+    req.bafq_end_handle = 300;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_INFO_REQ, 200, BLE_ATT_ERR_ATTR_NOT_FOUND);
+
+    /*** Range too late. */
+    rc = ble_att_svr_register(uuid1, 0, &handle1,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bafq_start_handle = 200;
+    req.bafq_end_handle = 300;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_INFO_REQ, 200, BLE_ATT_ERR_ATTR_NOT_FOUND);
+
+    /*** One 128-bit entry. */
+    req.bafq_start_handle = handle1;
+    req.bafq_end_handle = handle1;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
+        ((struct ble_att_svr_test_info_entry[]) { {
+            .handle = handle1,
+            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
+        }, {
+            .handle = 0,
+        } }));
+
+    /*** Two 128-bit entries. */
+    rc = ble_att_svr_register(uuid2, 0,
+                                 &handle2,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bafq_start_handle = handle1;
+    req.bafq_end_handle = handle2;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
+        ((struct ble_att_svr_test_info_entry[]) { {
+            .handle = handle1,
+            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
+        }, {
+            .handle = handle2,
+            .uuid128 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},
+        }, {
+            .handle = 0,
+        } }));
+
+    /*** Two 128-bit entries; 16-bit entry doesn't get sent. */
+    rc = ble_att_svr_register(uuid3, 0,
+                                 &handle3,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bafq_start_handle = handle1;
+    req.bafq_end_handle = handle3;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
+        ((struct ble_att_svr_test_info_entry[]) { {
+            .handle = handle1,
+            .uuid128 = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
+        }, {
+            .handle = handle2,
+            .uuid128 = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},
+        }, {
+            .handle = 0,
+        } }));
+
+    /*** Remaining 16-bit entry requested. */
+    req.bafq_start_handle = handle3;
+    req.bafq_end_handle = handle3;
+
+    rc = ble_att_find_info_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_info_rsp(chan,
+        ((struct ble_att_svr_test_info_entry[]) { {
+            .handle = handle3,
+            .uuid16 = 0x000f,
+        }, {
+            .handle = 0,
+        } }));
+}
+
+TEST_CASE(ble_att_svr_test_find_type_value)
+{
+    struct ble_att_find_type_value_req req;
+    struct ble_l2cap_chan *chan;
+    struct ble_hs_conn *conn;
+    uint8_t buf[BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ + 2];
+    uint16_t handle1;
+    uint16_t handle2;
+    uint16_t handle3;
+    uint16_t handle4;
+    uint16_t handle5;
+    uint8_t uuid1[16] = {
+        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
+        0x00, 0x10, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
+    };
+    uint8_t uuid2[16] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
+    uint8_t uuid3[16] = {
+        0xfb, 0x34, 0x9b, 0x5f, 0x80, 0x00, 0x00, 0x80,
+        0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
+    };
+    int rc;
+
+    ble_att_svr_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;
+
+    /* One-time write of the attribute value at the end of the request. */
+    ble_att_svr_test_attr_r_1 = (uint8_t[]){0x99, 0x99};
+    ble_att_svr_test_attr_r_1_len = 2;
+    memcpy(buf + BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ,
+           ble_att_svr_test_attr_r_1,
+           ble_att_svr_test_attr_r_1_len);
+
+    /*** Start handle of 0. */
+    req.bavq_start_handle = 0;
+    req.bavq_end_handle = 0;
+    req.bavq_attr_type = 0x0001;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 0,
+        BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** Start handle > end handle. */
+    req.bavq_start_handle = 101;
+    req.bavq_end_handle = 100;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 101,
+        BLE_ATT_ERR_INVALID_HANDLE);
+
+    /*** No attributes. */
+    req.bavq_start_handle = 200;
+    req.bavq_end_handle = 300;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 200,
+        BLE_ATT_ERR_ATTR_NOT_FOUND);
+
+    /*** Range too late. */
+    rc = ble_att_svr_register(uuid1, 0, &handle1,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bavq_start_handle = 200;
+    req.bavq_end_handle = 300;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc != 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_err_rsp(
+        chan, BLE_ATT_OP_FIND_TYPE_VALUE_REQ, 200,
+        BLE_ATT_ERR_ATTR_NOT_FOUND);
+
+    /*** One entry, one attribute. */
+    req.bavq_start_handle = handle1;
+    req.bavq_end_handle = handle1;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
+        ((struct ble_att_svr_test_type_value_entry[]) { {
+            .first = handle1,
+            .last = handle1,
+        }, {
+            .first = 0,
+        } }));
+
+    /*** One entry, two attributes. */
+    rc = ble_att_svr_register(uuid1, 0, &handle2,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bavq_start_handle = handle1;
+    req.bavq_end_handle = handle2;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
+        ((struct ble_att_svr_test_type_value_entry[]) { {
+            .first = handle1,
+            .last = handle2,
+        }, {
+            .first = 0,
+        } }));
+
+    /*** Entry 1: two attributes; entry 2: one attribute. */
+    rc = ble_att_svr_register(uuid2, 0, &handle3,
+                                 ble_att_svr_test_misc_attr_fn_r_2);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_att_svr_register(uuid1, 0, &handle4,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+    TEST_ASSERT(rc == 0);
+
+    req.bavq_start_handle = 0x0001;
+    req.bavq_end_handle = 0xffff;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
+        ((struct ble_att_svr_test_type_value_entry[]) { {
+            .first = handle1,
+            .last = handle2,
+        }, {
+            .first = handle4,
+            .last = handle4,
+        }, {
+            .first = 0,
+        } }));
+
+    /*** Ensure attribute with wrong value is not included. */
+    ble_att_svr_test_attr_r_2 = (uint8_t[]){0x00, 0x00};
+    ble_att_svr_test_attr_r_2_len = 2;
+
+    req.bavq_start_handle = 0x0001;
+    req.bavq_end_handle = 0xffff;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
+        ((struct ble_att_svr_test_type_value_entry[]) { {
+            .first = handle1,
+            .last = handle2,
+        }, {
+            .first = handle4,
+            .last = handle4,
+        }, {
+            .first = 0,
+        } }));
+
+    /*** Ensure attribute with wrong type is not included. */
+    rc = ble_att_svr_register(uuid3, 0, &handle5,
+                                 ble_att_svr_test_misc_attr_fn_r_1);
+
+    req.bavq_start_handle = 0x0001;
+    req.bavq_end_handle = 0xffff;
+
+    rc = ble_att_find_type_value_req_write(buf, sizeof buf, &req);
+    TEST_ASSERT(rc == 0);
+
+    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, sizeof buf);
+    TEST_ASSERT(rc == 0);
+    ble_hs_process_tx_data_queue();
+
+    ble_att_svr_test_misc_verify_tx_find_type_value_rsp(chan,
+        ((struct ble_att_svr_test_type_value_entry[]) { {
+            .first = handle1,
+            .last = handle2,
+        }, {
+            .first = handle4,
+            .last = handle4,
+        }, {
+            .first = 0,
+        } }));
+}
+
+TEST_SUITE(ble_att_svr_suite)
+{
+    ble_att_svr_test_mtu();
+    ble_att_svr_test_read();
+    ble_att_svr_test_write();
+    ble_att_svr_test_find_info();
+    ble_att_svr_test_find_type_value();
+}
+
+int
+ble_att_svr_test_all(void)
+{
+    ble_att_svr_suite();
+
+    return tu_any_failed;
+}

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/test/ble_gatt_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gatt_test.c b/net/nimble/host/src/test/ble_gatt_test.c
index ad9b4d0..0764232 100644
--- a/net/nimble/host/src/test/ble_gatt_test.c
+++ b/net/nimble/host/src/test/ble_gatt_test.c
@@ -68,9 +68,9 @@ ble_gatt_test_misc_rx_err_rsp(struct ble_hs_conn *conn, uint8_t req_op,
     /* Send the pending ATT Request. */
     ble_gatt_wakeup();
 
-    rsp.bhaep_req_op = req_op;
-    rsp.bhaep_handle = conn->bhc_handle;
-    rsp.bhaep_error_code = error_code;
+    rsp.baep_req_op = req_op;
+    rsp.baep_handle = conn->bhc_handle;
+    rsp.baep_error_code = error_code;
 
     rc = ble_att_error_rsp_write(buf, sizeof buf, &rsp);
     TEST_ASSERT_FATAL(rc == 0);
@@ -96,7 +96,7 @@ ble_gatt_test_misc_rx_disc_services_rsp_once(
     /* Send the pending ATT Read By Group Type Request. */
     ble_gatt_wakeup();
 
-    rsp.bhagp_length = ble_gatt_test_misc_service_length(services);
+    rsp.bagp_length = ble_gatt_test_misc_service_length(services);
     rc = ble_att_read_group_type_rsp_write(
         buf, BLE_ATT_READ_GROUP_TYPE_RSP_BASE_SZ, &rsp);
     TEST_ASSERT_FATAL(rc == 0);
@@ -109,7 +109,7 @@ ble_gatt_test_misc_rx_disc_services_rsp_once(
         }
 
         rc = ble_gatt_test_misc_service_length(services + i);
-        if (rc != rsp.bhagp_length) {
+        if (rc != rsp.bagp_length) {
             /* UUID length is changing; Need a separate response. */
             break;
         }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-larva/blob/dde460fe/net/nimble/host/src/test/ble_hs_att_clt_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_att_clt_test.c b/net/nimble/host/src/test/ble_hs_att_clt_test.c
deleted file mode 100644
index d4c9ed2..0000000
--- a/net/nimble/host/src/test/ble_hs_att_clt_test.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/**
- * Copyright (c) 2015 Runtime Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <string.h>
-#include <errno.h>
-#include "testutil/testutil.h"
-#include "nimble/ble.h"
-#include "host/ble_hs_test.h"
-#include "ble_hs_conn.h"
-#include "ble_att.h"
-#include "ble_att_cmd.h"
-#include "ble_hs_test_util.h"
-
-static void
-ble_att_clt_test_misc_init(struct ble_hs_conn **conn,
-                           struct ble_l2cap_chan **att_chan)
-{
-    ble_hs_test_util_init();
-
-    *conn = ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}));
-    *att_chan = ble_hs_conn_chan_find(*conn, BLE_L2CAP_CID_ATT);
-    TEST_ASSERT_FATAL(*att_chan != NULL);
-}
-
-TEST_CASE(ble_att_clt_test_tx_find_info)
-{
-    struct ble_att_find_info_req req;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    int rc;
-
-    ble_att_clt_test_misc_init(&conn, &chan);
-
-    /*** Success. */
-    req.bhafq_start_handle = 1;
-    req.bhafq_end_handle = 0xffff;
-    rc = ble_att_clt_tx_find_info(conn, &req);
-    TEST_ASSERT(rc == 0);
-
-    /*** Error: start handle of 0. */
-    req.bhafq_start_handle = 0;
-    req.bhafq_end_handle = 0xffff;
-    rc = ble_att_clt_tx_find_info(conn, &req);
-    TEST_ASSERT(rc == EINVAL);
-
-    /*** Error: start handle greater than end handle. */
-    req.bhafq_start_handle = 500;
-    req.bhafq_end_handle = 499;
-    rc = ble_att_clt_tx_find_info(conn, &req);
-    TEST_ASSERT(rc == EINVAL);
-
-    /*** Success; start and end handles equal. */
-    req.bhafq_start_handle = 500;
-    req.bhafq_end_handle = 500;
-    rc = ble_att_clt_tx_find_info(conn, &req);
-    TEST_ASSERT(rc == 0);
-}
-
-TEST_CASE(ble_att_clt_test_rx_find_info)
-{
-    struct ble_att_find_info_rsp rsp;
-    struct ble_l2cap_chan *chan;
-    struct ble_hs_conn *conn;
-    uint8_t buf[1024];
-    uint8_t uuid128_1[16] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
-    int off;
-    int rc;
-
-    ble_att_clt_test_misc_init(&conn, &chan);
-
-    /*** One 128-bit UUID. */
-    /* Receive response with attribute mapping. */
-    off = 0;
-    rsp.bhafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_128BIT;
-    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
-    TEST_ASSERT(rc == 0);
-    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
-
-    htole16(buf + off, 1);
-    off += 2;
-    memcpy(buf + off, uuid128_1, 16);
-    off += 16;
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
-    TEST_ASSERT(rc == 0);
-
-    /*** One 16-bit UUID. */
-    /* Receive response with attribute mapping. */
-    off = 0;
-    rsp.bhafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT;
-    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
-    TEST_ASSERT(rc == 0);
-    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
-
-    htole16(buf + off, 2);
-    off += 2;
-    htole16(buf + off, 0x000f);
-    off += 2;
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
-    TEST_ASSERT(rc == 0);
-
-    /*** Two 16-bit UUIDs. */
-    /* Receive response with attribute mappings. */
-    off = 0;
-    rsp.bhafp_format = BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT;
-    rc = ble_att_find_info_rsp_write(buf + off, sizeof buf - off, &rsp);
-    TEST_ASSERT(rc == 0);
-    off += BLE_ATT_FIND_INFO_RSP_BASE_SZ;
-
-    htole16(buf + off, 3);
-    off += 2;
-    htole16(buf + off, 0x0010);
-    off += 2;
-
-    htole16(buf + off, 4);
-    off += 2;
-    htole16(buf + off, 0x0011);
-    off += 2;
-
-    rc = ble_hs_test_util_l2cap_rx_payload_flat(conn, chan, buf, off);
-    TEST_ASSERT(rc == 0);
-}
-
-TEST_SUITE(ble_att_clt_suite)
-{
-    ble_att_clt_test_tx_find_info();
-    ble_att_clt_test_rx_find_info();
-}
-
-int
-ble_att_clt_test_all(void)
-{
-    ble_att_clt_suite();
-
-    return tu_any_failed;
-}