You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2017/04/10 11:46:55 UTC

[03/50] incubator-mynewt-core git commit: nimble/att: Use new helpers for sending MTU exchange

nimble/att: Use new helpers for sending MTU exchange

This constructs response directly on mbuf reducing number of memcopies.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/55b8a5c2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/55b8a5c2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/55b8a5c2

Branch: refs/heads/master
Commit: 55b8a5c20766f93996cd04d8ba06f8b77787932d
Parents: b50707b
Author: Szymon Janc <sz...@codecoup.pl>
Authored: Fri Mar 24 15:27:26 2017 +0100
Committer: Szymon Janc <sz...@codecoup.pl>
Committed: Mon Apr 10 11:31:30 2017 +0200

----------------------------------------------------------------------
 net/nimble/host/src/ble_att_clt.c           | 16 +++++++++-------
 net/nimble/host/src/ble_att_priv.h          |  3 +--
 net/nimble/host/src/ble_gattc.c             | 15 +++++----------
 net/nimble/host/test/src/ble_att_clt_test.c |  4 +---
 4 files changed, 16 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/55b8a5c2/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 8c92893..7ea7980 100644
--- a/net/nimble/host/src/ble_att_clt.c
+++ b/net/nimble/host/src/ble_att_clt.c
@@ -116,14 +116,15 @@ ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **rxom)
  *****************************************************************************/
 
 int
-ble_att_clt_tx_mtu(uint16_t conn_handle, const struct ble_att_mtu_cmd *req)
+ble_att_clt_tx_mtu(uint16_t conn_handle, uint16_t mtu)
 {
+    struct ble_att_mtu_cmd *req;
     struct ble_l2cap_chan *chan;
     struct ble_hs_conn *conn;
     struct os_mbuf *txom;
     int rc;
 
-    if (req->bamc_mtu < BLE_ATT_MTU_DFLT) {
+    if (mtu < BLE_ATT_MTU_DFLT) {
         return BLE_HS_EINVAL;
     }
 
@@ -143,13 +144,14 @@ ble_att_clt_tx_mtu(uint16_t conn_handle, const struct ble_att_mtu_cmd *req)
         return rc;
     }
 
-    rc = ble_att_clt_init_req(BLE_ATT_MTU_CMD_SZ, &txom);
-    if (rc != 0) {
-        return rc;
+    req = ble_att_cmd_get(BLE_ATT_OP_MTU_REQ, sizeof(*req), &txom);
+    if (req == NULL) {
+        return BLE_HS_ENOMEM;
     }
-    ble_att_mtu_req_write(txom->om_data, txom->om_len, req);
 
-    rc = ble_att_clt_tx_req(conn_handle, txom);
+    req->bamc_mtu = htole16(mtu);
+
+    rc = ble_att_tx(conn_handle, txom);
     if (rc != 0) {
         return rc;
     }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/55b8a5c2/net/nimble/host/src/ble_att_priv.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_priv.h b/net/nimble/host/src/ble_att_priv.h
index 918ca9b..4e37bb7 100644
--- a/net/nimble/host/src/ble_att_priv.h
+++ b/net/nimble/host/src/ble_att_priv.h
@@ -250,8 +250,7 @@ struct ble_att_read_group_type_adata {
 };
 
 int ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **rxom);
-int ble_att_clt_tx_mtu(uint16_t conn_handle,
-                       const struct ble_att_mtu_cmd *req);
+int ble_att_clt_tx_mtu(uint16_t conn_handle, uint16_t mtu);
 int ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **rxom);
 int ble_att_clt_tx_read(uint16_t conn_handle,
                         const struct ble_att_read_req *req);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/55b8a5c2/net/nimble/host/src/ble_gattc.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_gattc.c b/net/nimble/host/src/ble_gattc.c
index 917e21a..d50368f 100644
--- a/net/nimble/host/src/ble_gattc.c
+++ b/net/nimble/host/src/ble_gattc.c
@@ -1267,28 +1267,23 @@ ble_gattc_mtu_err(struct ble_gattc_proc *proc, int status, uint16_t att_handle)
 static int
 ble_gattc_mtu_tx(struct ble_gattc_proc *proc)
 {
-    struct ble_att_mtu_cmd req;
     struct ble_l2cap_chan *chan;
     struct ble_hs_conn *conn;
+    uint16_t mtu;
     int rc;
 
     ble_hs_lock();
     rc = ble_att_conn_chan_find(proc->conn_handle, &conn, &chan);
     if (rc == 0) {
-        req.bamc_mtu = chan->my_mtu;
+        mtu = chan->my_mtu;
     }
     ble_hs_unlock();
 
-    if (rc != 0) {
-        return rc;
-    }
-
-    rc = ble_att_clt_tx_mtu(proc->conn_handle, &req);
-    if (rc != 0) {
-        return rc;
+    if (rc == 0) {
+        rc = ble_att_clt_tx_mtu(proc->conn_handle, mtu);
     }
 
-    return 0;
+    return rc;
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/55b8a5c2/net/nimble/host/test/src/ble_att_clt_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/test/src/ble_att_clt_test.c b/net/nimble/host/test/src/ble_att_clt_test.c
index 3728557..c452128 100644
--- a/net/nimble/host/test/src/ble_att_clt_test.c
+++ b/net/nimble/host/test/src/ble_att_clt_test.c
@@ -278,11 +278,9 @@ ble_att_clt_test_misc_prep_bad(uint16_t handle, uint16_t offset,
 static void
 ble_att_clt_test_misc_tx_mtu(uint16_t conn_handle, uint16_t mtu, int status)
 {
-    struct ble_att_mtu_cmd req;
     int rc;
 
-    req.bamc_mtu = mtu;
-    rc = ble_att_clt_tx_mtu(conn_handle, &req);
+    rc = ble_att_clt_tx_mtu(conn_handle, mtu);
     TEST_ASSERT(rc == status);
 
     if (rc == 0) {