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 2016/07/13 20:55:22 UTC

[09/50] [abbrv] incubator-mynewt-core git commit: BLE Host - Const correctness.

BLE Host - Const correctness.


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

Branch: refs/heads/develop
Commit: 6353155771e1de9d1cd619b97fbe86e1265a5d59
Parents: 46801ab
Author: Christopher Collins <cc...@apache.org>
Authored: Fri Jun 24 17:00:15 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Jul 11 16:43:32 2016 -0700

----------------------------------------------------------------------
 apps/bleprph/src/gatt_svr.c                     |  18 +-
 apps/bletiny/src/bletiny.h                      |   2 +-
 apps/bletiny/src/gatt_svr.c                     |  18 +-
 net/nimble/host/include/host/ble_att.h          |  69 +++++-
 net/nimble/host/include/host/ble_gap.h          |  12 +-
 net/nimble/host/include/host/ble_gatt.h         | 137 ++++--------
 net/nimble/host/include/host/ble_hs_adv.h       |   4 +-
 net/nimble/host/include/host/ble_uuid.h         |   2 +-
 net/nimble/host/include/host/host_hci.h         |  75 +++----
 net/nimble/host/src/ble_att_clt.c               | 112 +++++-----
 net/nimble/host/src/ble_att_cmd.c               | 213 ++++++++++---------
 net/nimble/host/src/ble_att_cmd_priv.h          | 125 +++++------
 net/nimble/host/src/ble_att_priv.h              |  50 ++---
 net/nimble/host/src/ble_att_svr.c               | 113 ++++++----
 net/nimble/host/src/ble_gap.c                   |  25 ++-
 net/nimble/host/src/ble_gatt_priv.h             |   2 -
 net/nimble/host/src/ble_gattc.c                 |  54 ++---
 net/nimble/host/src/ble_gatts.c                 | 159 ++++----------
 net/nimble/host/src/ble_hs_adv.c                |   8 +-
 net/nimble/host/src/ble_hs_priv.h               |   4 +-
 net/nimble/host/src/ble_hs_pvcy.c               |   4 +-
 net/nimble/host/src/ble_sm.c                    |   2 +-
 net/nimble/host/src/ble_sm_priv.h               |   2 +-
 net/nimble/host/src/ble_uuid.c                  |   2 +-
 net/nimble/host/src/host_hci_cmd.c              | 100 +++++----
 net/nimble/host/src/test/ble_att_svr_test.c     |  50 ++---
 net/nimble/host/src/test/ble_gatt_conn_test.c   |  69 +++---
 net/nimble/host/src/test/ble_gatt_disc_c_test.c |   4 +-
 net/nimble/host/src/test/ble_gatt_disc_d_test.c |   5 +-
 net/nimble/host/src/test/ble_gatt_disc_s_test.c |   5 +-
 net/nimble/host/src/test/ble_gatt_find_s_test.c |   4 +-
 net/nimble/host/src/test/ble_gatt_read_test.c   |  11 +-
 net/nimble/host/src/test/ble_gatt_write_test.c  |  13 +-
 .../host/src/test/ble_gatts_notify_test.c       |  16 +-
 net/nimble/host/src/test/ble_gatts_read_test.c  |  34 +--
 net/nimble/host/src/test/ble_gatts_reg_test.c   |   2 +-
 36 files changed, 760 insertions(+), 765 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/apps/bleprph/src/gatt_svr.c
----------------------------------------------------------------------
diff --git a/apps/bleprph/src/gatt_svr.c b/apps/bleprph/src/gatt_svr.c
index 638257f..fa798ec 100644
--- a/apps/bleprph/src/gatt_svr.c
+++ b/apps/bleprph/src/gatt_svr.c
@@ -56,18 +56,18 @@ static uint8_t gatt_svr_sec_test_static_val;
 
 static int
 gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                        union ble_gatt_access_ctxt *ctxt, void *arg);
+                        struct ble_gatt_access_ctxt *ctxt, void *arg);
 static int
 gatt_svr_chr_access_gatt(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                         union ble_gatt_access_ctxt *ctxt, void *arg);
+                         struct ble_gatt_access_ctxt *ctxt, void *arg);
 static int
 gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
-                          uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                          uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                           void *arg);
 
 static int
 gatt_svr_chr_access_sec_test(uint16_t conn_handle, uint16_t attr_handle,
-                                uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                                uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                                 void *arg);
 
 static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
@@ -173,7 +173,7 @@ static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
 };
 
 static int
-gatt_svr_chr_write(uint8_t op, union ble_gatt_access_ctxt *ctxt,
+gatt_svr_chr_write(uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                    uint16_t min_len, uint16_t max_len, void *dst,
                    uint16_t *len)
 {
@@ -194,7 +194,7 @@ gatt_svr_chr_write(uint8_t op, union ble_gatt_access_ctxt *ctxt,
 
 static int
 gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                        union ble_gatt_access_ctxt *ctxt, void *arg)
+                        struct ble_gatt_access_ctxt *ctxt, void *arg)
 {
     uint16_t uuid16;
 
@@ -245,7 +245,7 @@ gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
 
 static int
 gatt_svr_chr_access_gatt(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                         union ble_gatt_access_ctxt *ctxt, void *arg)
+                         struct ble_gatt_access_ctxt *ctxt, void *arg)
 {
     uint16_t uuid16;
 
@@ -285,7 +285,7 @@ static uint16_t gatt_svr_alert_not_ctrl_pt;
 
 static int
 gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
-                          uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                          uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                           void *arg)
 {
     uint16_t uuid16;
@@ -347,7 +347,7 @@ gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
 
 static int
 gatt_svr_chr_access_sec_test(uint16_t conn_handle, uint16_t attr_handle,
-                            uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                            uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                             void *arg)
 {
     const void *uuid128;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/apps/bletiny/src/bletiny.h
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/bletiny.h b/apps/bletiny/src/bletiny.h
index 23699d2..90002e6 100644
--- a/apps/bletiny/src/bletiny.h
+++ b/apps/bletiny/src/bletiny.h
@@ -124,7 +124,7 @@ int parse_err_too_few_args(char *cmd_name);
 int parse_arg_all(int argc, char **argv);
 int cmd_init(void);
 int nm_chr_access(uint16_t conn_handle, uint16_t attr_handle,
-                  uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                  uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                   void *arg);
 int nm_rx_rsp(uint8_t *attr_val, uint16_t attr_len);
 void nm_init(void);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/apps/bletiny/src/gatt_svr.c
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/gatt_svr.c b/apps/bletiny/src/gatt_svr.c
index a99b86b..321bf9d 100644
--- a/apps/bletiny/src/gatt_svr.c
+++ b/apps/bletiny/src/gatt_svr.c
@@ -56,18 +56,18 @@ static uint8_t gatt_svr_sec_test_static_val;
 
 static int
 gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                        union ble_gatt_access_ctxt *ctxt, void *arg);
+                        struct ble_gatt_access_ctxt *ctxt, void *arg);
 static int
 gatt_svr_chr_access_gatt(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                         union ble_gatt_access_ctxt *ctxt, void *arg);
+                         struct ble_gatt_access_ctxt *ctxt, void *arg);
 static int
 gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
-                          uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                          uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                           void *arg);
 
 static int
 gatt_svr_chr_access_sec_test(uint16_t conn_handle, uint16_t attr_handle,
-                                uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                                uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                                 void *arg);
 
 static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
@@ -173,7 +173,7 @@ static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
 };
 
 static int
-gatt_svr_chr_write(uint8_t op, union ble_gatt_access_ctxt *ctxt,
+gatt_svr_chr_write(uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                    uint16_t min_len, uint16_t max_len, void *dst,
                    uint16_t *len)
 {
@@ -194,7 +194,7 @@ gatt_svr_chr_write(uint8_t op, union ble_gatt_access_ctxt *ctxt,
 
 static int
 gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                        union ble_gatt_access_ctxt *ctxt, void *arg)
+                        struct ble_gatt_access_ctxt *ctxt, void *arg)
 {
     uint16_t uuid16;
 
@@ -245,7 +245,7 @@ gatt_svr_chr_access_gap(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
 
 static int
 gatt_svr_chr_access_gatt(uint16_t conn_handle, uint16_t attr_handle, uint8_t op,
-                         union ble_gatt_access_ctxt *ctxt, void *arg)
+                         struct ble_gatt_access_ctxt *ctxt, void *arg)
 {
     uint16_t uuid16;
 
@@ -285,7 +285,7 @@ static uint16_t gatt_svr_alert_not_ctrl_pt;
 
 static int
 gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
-                          uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                          uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                           void *arg)
 {
     uint16_t uuid16;
@@ -347,7 +347,7 @@ gatt_svr_chr_access_alert(uint16_t conn_handle, uint16_t attr_handle,
 
 static int
 gatt_svr_chr_access_sec_test(uint16_t conn_handle, uint16_t attr_handle,
-                            uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                            uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                             void *arg)
 {
     const void *uuid128;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/ble_att.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_att.h b/net/nimble/host/include/host/ble_att.h
index 324ac0b..f25b8e2 100644
--- a/net/nimble/host/include/host/ble_att.h
+++ b/net/nimble/host/include/host/ble_att.h
@@ -86,10 +86,69 @@
 #define BLE_ATT_ACCESS_OP_READ              1
 #define BLE_ATT_ACCESS_OP_WRITE             2
 
+/**
+ * Context for reads of characteristics and descriptors.  An instance of this
+ * gets passed to an application callback whenever a local characteristic or
+ * descriptor is read.
+ */
+struct ble_att_read_ctxt {
+    /**
+     * (stack --> app)
+     * Maximum number of data bytes the stack can send in the read response.
+     * This is based on the connection's ATT MTU.
+     */
+    uint16_t max_data_len;
+
+    /**
+     * (stack --> app)
+     * A buffer that the app can use to write the characteristic response value
+     * to.  This buffer can hold up to max_data_len bytes.
+     */
+    uint8_t *buf;
+
+    /**
+     * (app --> stack)
+     * App points this at the characteristic data to respond with.  Initially
+     * this points to "buf".
+     */
+    const void *data;
+
+    /**
+     * (app --> stack)
+     * App fills this with the number of data bytes contained in characteristic
+     * response.
+     */
+    uint16_t len;
+
+    uint16_t offset;
+};
+
+/**
+ * Context for writes of characteristics and descriptors.  An instance of this
+ * gets passed to an application callback whenever a local characteristic or
+ * descriptor is written.
+ */
+struct ble_att_write_ctxt {
+    /**
+     * (stack --> app)
+     * The data that the peer is writing to the characteristic.
+     */
+    const void *data;
+
+    /**
+     * (stack --> app)
+     * The number of bytes of characteristic data being written.
+     */
+    int len;
+
+    uint16_t offset;
+};
+
 struct ble_att_svr_access_ctxt {
-    void *attr_data;
-    uint16_t data_len;
-    uint16_t offset; /* Only used for read-blob requests. */
+    union {
+        struct ble_att_read_ctxt read;
+        struct ble_att_write_ctxt write;
+    };
 };
 
 /**
@@ -120,9 +179,9 @@ typedef int ble_att_svr_notify_fn(uint16_t conn_handle, uint16_t attr_handle,
                                   uint8_t *attr_val, uint16_t attr_len,
                                   void *arg);
 
-int ble_att_svr_read_local(uint16_t attr_handle, void **out_data,
+int ble_att_svr_read_local(uint16_t attr_handle, const void **out_data,
                            uint16_t *out_attr_len);
-int ble_att_svr_write_local(uint16_t attr_handle, void *data,
+int ble_att_svr_write_local(uint16_t attr_handle, const void *data,
                             uint16_t data_len);
 
 int ble_att_set_preferred_mtu(uint16_t mtu);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/ble_gap.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_gap.h b/net/nimble/host/include/host/ble_gap.h
index f2adaf5..147eaf4 100644
--- a/net/nimble/host/include/host/ble_gap.h
+++ b/net/nimble/host/include/host/ble_gap.h
@@ -298,8 +298,8 @@ int ble_gap_adv_start(uint8_t own_addr_type, uint8_t peer_addr_type,
                       const struct ble_gap_adv_params *adv_params,
                       ble_gap_event_fn *cb, void *cb_arg);
 int ble_gap_adv_stop(void);
-int ble_gap_adv_set_fields(struct ble_hs_adv_fields *adv_fields);
-int ble_gap_adv_rsp_set_fields(struct ble_hs_adv_fields *rsp_fields);
+int ble_gap_adv_set_fields(const struct ble_hs_adv_fields *adv_fields);
+int ble_gap_adv_rsp_set_fields(const struct ble_hs_adv_fields *rsp_fields);
 int ble_gap_disc(uint8_t own_addr_type, int32_t duration_ms,
                  const struct ble_gap_disc_params *disc_params,
                  ble_gap_disc_fn *cb, void *cb_arg);
@@ -310,14 +310,14 @@ int ble_gap_connect(uint8_t own_addr_type,
                     ble_gap_event_fn *cb, void *cb_arg);
 int ble_gap_terminate(uint16_t handle);
 int ble_gap_conn_cancel(void);
-int ble_gap_wl_set(struct ble_gap_white_entry *white_list,
+int ble_gap_wl_set(const struct ble_gap_white_entry *white_list,
                    uint8_t white_list_count);
 int ble_gap_update_params(uint16_t conn_handle,
-                          struct ble_gap_upd_params *params);
+                          const struct ble_gap_upd_params *params);
 int ble_gap_security_initiate(uint16_t conn_handle);
 int ble_gap_pair_initiate(uint16_t conn_handle);
-int ble_gap_encryption_initiate(uint16_t conn_handle, uint8_t *ltk,
+int ble_gap_encryption_initiate(uint16_t conn_handle, const uint8_t *ltk,
                                 uint16_t ediv, uint64_t rand_val, int auth);
-void ble_gap_init_identity_addr(uint8_t *addr);
+void ble_gap_init_identity_addr(const uint8_t *addr);
 
 #endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/ble_gatt.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_gatt.h b/net/nimble/host/include/host/ble_gatt.h
index 6f68ada..76d61cf 100644
--- a/net/nimble/host/include/host/ble_gatt.h
+++ b/net/nimble/host/include/host/ble_gatt.h
@@ -44,7 +44,7 @@ struct ble_gatt_attr {
     uint16_t handle;
     uint16_t offset;
     uint16_t value_len;
-    void *value;
+    const void *value;
 };
 
 struct ble_gatt_chr {
@@ -59,32 +59,37 @@ struct ble_gatt_dsc {
     uint8_t uuid128[16];
 };
 
-typedef int ble_gatt_mtu_fn(uint16_t conn_handle, struct ble_gatt_error *error,
+typedef int ble_gatt_mtu_fn(uint16_t conn_handle,
+                            const struct ble_gatt_error *error,
                             uint16_t mtu, void *arg);
 typedef int ble_gatt_disc_svc_fn(uint16_t conn_handle,
-                                 struct ble_gatt_error *error,
-                                 struct ble_gatt_svc *service,
+                                 const struct ble_gatt_error *error,
+                                 const struct ble_gatt_svc *service,
                                  void *arg);
 typedef int ble_gatt_attr_fn(uint16_t conn_handle,
-                             struct ble_gatt_error *error,
-                             struct ble_gatt_attr *attr, void *arg);
+                             const struct ble_gatt_error *error,
+                             const struct ble_gatt_attr *attr,
+                             void *arg);
 typedef int ble_gatt_reliable_attr_fn(uint16_t conn_handle,
-                                      struct ble_gatt_error *error,
-                                      struct ble_gatt_attr *attrs,
+                                      const struct ble_gatt_error *error,
+                                      const struct ble_gatt_attr *attrs,
                                       uint8_t num_attrs, void *arg);
 
-typedef int ble_gatt_chr_fn(uint16_t conn_handle, struct ble_gatt_error *error,
-                            struct ble_gatt_chr *chr, void *arg);
+typedef int ble_gatt_chr_fn(uint16_t conn_handle,
+                            const struct ble_gatt_error *error,
+                            const struct ble_gatt_chr *chr, void *arg);
 
-typedef int ble_gatt_dsc_fn(uint16_t conn_handle, struct ble_gatt_error *error,
-                            uint16_t chr_def_handle, struct ble_gatt_dsc *dsc,
+typedef int ble_gatt_dsc_fn(uint16_t conn_handle,
+                            const struct ble_gatt_error *error,
+                            uint16_t chr_def_handle,
+                            const struct ble_gatt_dsc *dsc,
                             void *arg);
 
 int ble_gattc_exchange_mtu(uint16_t conn_handle,
                            ble_gatt_mtu_fn *cb, void *cb_arg);
 int ble_gattc_disc_all_svcs(uint16_t conn_handle,
                             ble_gatt_disc_svc_fn *cb, void *cb_arg);
-int ble_gattc_disc_svc_by_uuid(uint16_t conn_handle, void *service_uuid128,
+int ble_gattc_disc_svc_by_uuid(uint16_t conn_handle, const void *svc_uuid128,
                                ble_gatt_disc_svc_fn *cb, void *cb_arg);
 int ble_gattc_find_inc_svcs(uint16_t conn_handle, uint16_t start_handle,
                             uint16_t end_handle,
@@ -93,7 +98,7 @@ int ble_gattc_disc_all_chrs(uint16_t conn_handle, uint16_t start_handle,
                             uint16_t end_handle, ble_gatt_chr_fn *cb,
                             void *cb_arg);
 int ble_gattc_disc_chrs_by_uuid(uint16_t conn_handle, uint16_t start_handle,
-                               uint16_t end_handle, void *uuid128,
+                               uint16_t end_handle, const void *uuid128,
                                ble_gatt_chr_fn *cb, void *cb_arg);
 int ble_gattc_disc_all_dscs(uint16_t conn_handle, uint16_t chr_val_handle,
                             uint16_t chr_end_handle,
@@ -101,21 +106,23 @@ int ble_gattc_disc_all_dscs(uint16_t conn_handle, uint16_t chr_val_handle,
 int ble_gattc_read(uint16_t conn_handle, uint16_t attr_handle,
                    ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_read_by_uuid(uint16_t conn_handle, uint16_t start_handle,
-                           uint16_t end_handle, void *uuid128,
+                           uint16_t end_handle, const void *uuid128,
                            ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_read_long(uint16_t conn_handle, uint16_t handle,
                         ble_gatt_attr_fn *cb, void *cb_arg);
-int ble_gattc_read_mult(uint16_t conn_handle, uint16_t *handles,
+int ble_gattc_read_mult(uint16_t conn_handle, const uint16_t *handles,
                         uint8_t num_handles, ble_gatt_attr_fn *cb,
                         void *cb_arg);
 int ble_gattc_write_no_rsp(uint16_t conn_handle, uint16_t attr_handle,
-                           void *value, uint16_t value_len);
-int ble_gattc_write(uint16_t conn_handle, uint16_t attr_handle, void *value,
-                    uint16_t value_len, ble_gatt_attr_fn *cb, void *cb_arg);
+                           const void *value, uint16_t value_len);
+int ble_gattc_write(uint16_t conn_handle, uint16_t attr_handle,
+                    const void *value, uint16_t value_len,
+                    ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_write_long(uint16_t conn_handle, uint16_t attr_handle,
-                         void *value, uint16_t value_len, ble_gatt_attr_fn *cb,
-                         void *cb_arg);
-int ble_gattc_write_reliable(uint16_t conn_handle, struct ble_gatt_attr *attrs,
+                         const void *value, uint16_t value_len,
+                         ble_gatt_attr_fn *cb, void *cb_arg);
+int ble_gattc_write_reliable(uint16_t conn_handle,
+                             const struct ble_gatt_attr *attrs,
                              int num_attrs, ble_gatt_reliable_attr_fn *cb,
                              void *cb_arg);
 int ble_gattc_read_dsc(uint16_t conn_handle, uint16_t attr_handle,
@@ -123,14 +130,14 @@ int ble_gattc_read_dsc(uint16_t conn_handle, uint16_t attr_handle,
 int ble_gattc_read_long_dsc(uint16_t conn_handle, uint16_t attr_handle,
                             ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_write_dsc(uint16_t conn_handle, uint16_t attr_handle,
-                        void *value, uint16_t value_len,
+                        const void *value, uint16_t value_len,
                         ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_write_long_dsc(uint16_t conn_handle, uint16_t attr_handle,
-                             void *value, uint16_t value_len,
+                             const void *value, uint16_t value_len,
                              ble_gatt_attr_fn *cb, void *cb_arg);
 int ble_gattc_notify(uint16_t conn_handle, uint16_t chr_val_handle);
 int ble_gattc_notify_custom(uint16_t conn_handle, uint16_t att_handle,
-                            void *attr_data, uint16_t attr_data_len);
+                            const void *attr_data, uint16_t attr_data_len);
 
 int ble_gattc_init(void);
 
@@ -150,9 +157,9 @@ int ble_gattc_init(void);
 #define BLE_GATT_ACCESS_OP_READ_DSC         2
 #define BLE_GATT_ACCESS_OP_WRITE_DSC        3
 
-union ble_gatt_access_ctxt;
+struct ble_gatt_access_ctxt;
 typedef int ble_gatt_access_fn(uint16_t conn_handle, uint16_t attr_handle,
-                               uint8_t op, union ble_gatt_access_ctxt *ctxt,
+                               uint8_t op, struct ble_gatt_access_ctxt *ctxt,
                                void *arg);
 
 typedef uint16_t ble_gatt_chr_flags;
@@ -192,87 +199,23 @@ struct ble_gatt_svc_def {
     const struct ble_gatt_chr_def *characteristics;
 };
 
-/**
- * Context for reads of characteristics and descriptors.  An instance of this
- * gets passed to an application callback whenever a local characteristic or
- * descriptor is read.
- */
-struct ble_gatt_read_ctxt {
-    /**
-     * (stack --> app)
-     * Maximum number of data bytes the stack can send in the read response.
-     * This is based on the connection's ATT MTU.
-     */
-    uint16_t max_data_len;
-
-    /**
-     * (stack --> app)
-     * A buffer that the app can use to write the characteristic response value
-     * to.  This buffer can hold up to max_data_len bytes.
-     */
-    uint8_t *buf;
-
-    /**
-     * (app --> stack)
-     * App points this at the characteristic data to respond with.  Initially
-     * this points to "buf".
-     */
-    const void *data;
-
-    /**
-     * (app --> stack)
-     * App fills this with the number of data bytes contained in characteristic
-     * response.
-     */
-    uint16_t len;
-};
-
-/**
- * Context for writes of characteristics and descriptors.  An instance of this
- * gets passed to an application callback whenever a local characteristic or
- * descriptor is written.
- */
-struct ble_gatt_write_ctxt {
-    /**
-     * (stack --> app)
-     * The data that the peer is writing to the characteristic.
-     */
-    const void *data;
-
-    /**
-     * (stack --> app)
-     * The number of bytes of characteristic data being written.
-     */
-    int len;
-};
-
-union ble_gatt_access_ctxt {
-    struct {
+struct ble_gatt_access_ctxt {
+    union {
         /**
          * Points to the characteristic defintion corresponding to the
          * characteristic being accessed.  This is what the app registered at
          * startup.
          */
-        const struct ble_gatt_chr_def *def;
-
-        union {
-            struct ble_gatt_read_ctxt read;
-            struct ble_gatt_write_ctxt write;
-        };
-    } chr;
+        const struct ble_gatt_chr_def *chr;
 
-    struct {
         /**
          * Points to the descriptor defintion corresponding to the descriptor
          * being accessed.  This is what the app registered at startup.
          */
-        const struct ble_gatt_dsc_def *def;
+        const struct ble_gatt_dsc_def *dsc;
+    };
 
-        union {
-            struct ble_gatt_read_ctxt read;
-            struct ble_gatt_write_ctxt write;
-        };
-    } dsc;
+    struct ble_att_svr_access_ctxt *att;
 };
 
 struct ble_gatt_dsc_def {

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/ble_hs_adv.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_hs_adv.h b/net/nimble/host/include/host/ble_hs_adv.h
index b967ad0..3f7f911 100644
--- a/net/nimble/host/include/host/ble_hs_adv.h
+++ b/net/nimble/host/include/host/ble_hs_adv.h
@@ -171,9 +171,9 @@ struct ble_hs_adv_fields {
 
 #define BLE_HS_ADV_SVC_DATA_UUID128_MIN_LEN     16
 
-int ble_hs_adv_set_flat(uint8_t type, int data_len, void *data,
+int ble_hs_adv_set_flat(uint8_t type, int data_len, const void *data,
                         uint8_t *dst, uint8_t *dst_len, uint8_t max_len);
-int ble_hs_adv_set_fields(struct ble_hs_adv_fields *adv_fields,
+int ble_hs_adv_set_fields(const struct ble_hs_adv_fields *adv_fields,
                           uint8_t *dst, uint8_t *dst_len, uint8_t max_len);
 int ble_hs_adv_parse_fields(struct ble_hs_adv_fields *adv_fields, uint8_t *src,
                             uint8_t src_len);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/ble_uuid.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_uuid.h b/net/nimble/host/include/host/ble_uuid.h
index 4424f60..1bcc0b4 100644
--- a/net/nimble/host/include/host/ble_uuid.h
+++ b/net/nimble/host/include/host/ble_uuid.h
@@ -25,7 +25,7 @@ struct os_mbuf;
 
 uint16_t ble_uuid_128_to_16(const void *uuid128);
 int ble_uuid_16_to_128(uint16_t uuid16, void *dst);
-int ble_uuid_append(struct os_mbuf *om, void *uuid128);
+int ble_uuid_append(struct os_mbuf *om, const void *uuid128);
 int ble_uuid_extract(struct os_mbuf *om, int off, void *uuid128);
 
 #define BLE_UUID16_ARR(uuid16) {                                            \

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/include/host/host_hci.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/host_hci.h b/net/nimble/host/include/host/host_hci.h
index c33cb39..f2a2a94 100644
--- a/net/nimble/host/include/host/host_hci.h
+++ b/net/nimble/host/include/host/host_hci.h
@@ -32,7 +32,8 @@ int host_hci_os_event_proc(struct os_event *ev);
 int host_hci_event_rx(uint8_t *data);
 uint16_t host_hci_opcode_join(uint8_t ogf, uint16_t ocf);
 void host_hci_write_hdr(uint8_t ogf, uint8_t ocf, uint8_t len, void *buf);
-int host_hci_cmd_send(uint8_t ogf, uint8_t ocf, uint8_t len, void *cmddata);
+int host_hci_cmd_send(uint8_t ogf, uint8_t ocf, uint8_t len,
+                      const void *cmddata);
 int host_hci_cmd_send_buf(void *cmddata);
 void host_hci_cmd_build_set_event_mask(uint64_t event_mask,
                                        uint8_t *dst, int dst_len);
@@ -43,11 +44,11 @@ void host_hci_cmd_build_disconnect(uint16_t handle, uint8_t reason,
 int host_hci_cmd_disconnect(uint16_t handle, uint8_t reason);
 void host_hci_cmd_build_read_rssi(uint16_t handle, uint8_t *dst, int dst_len);
 int host_hci_cmd_read_rssi(uint16_t handle);
-int host_hci_cmd_build_le_set_scan_rsp_data(uint8_t *data, uint8_t len,
+int host_hci_cmd_build_le_set_scan_rsp_data(const uint8_t *data, uint8_t len,
                                             uint8_t *dst, int dst_len);
-int host_hci_cmd_build_le_set_adv_data(uint8_t *data, uint8_t len,
+int host_hci_cmd_build_le_set_adv_data(const uint8_t *data, uint8_t len,
                                        uint8_t *dst, int dst_len);
-int host_hci_cmd_build_le_set_adv_params(struct hci_adv_params *adv,
+int host_hci_cmd_build_le_set_adv_params(const struct hci_adv_params *adv,
                                          uint8_t *dst, int dst_len);
 void host_hci_cmd_build_le_set_event_mask(uint64_t event_mask,
                                           uint8_t *dst, int dst_len);
@@ -62,16 +63,17 @@ int host_hci_cmd_build_le_set_scan_params(uint8_t scan_type,
                                           uint16_t scan_window,
                                           uint8_t own_addr_type,
                                           uint8_t filter_policy,
-                                          uint8_t *cmd, int cmd_len);
+                                          uint8_t *dst, int dst_len);
 void host_hci_cmd_build_le_set_scan_enable(uint8_t enable,
                                            uint8_t filter_dups,
                                            uint8_t *dst, uint8_t dst_len);
 int host_hci_cmd_le_set_scan_enable(uint8_t enable, uint8_t filter_dups);
-int host_hci_cmd_build_le_create_connection(struct hci_create_conn *hcc,
+int host_hci_cmd_build_le_create_connection(const struct hci_create_conn *hcc,
                                             uint8_t *cmd, int cmd_len);
-int host_hci_cmd_le_create_connection(struct hci_create_conn *hcc);
+int host_hci_cmd_le_create_connection(const struct hci_create_conn *hcc);
 void host_hci_cmd_build_le_clear_whitelist(uint8_t *dst, int dst_len);
-int host_hci_cmd_build_le_add_to_whitelist(uint8_t *addr, uint8_t addr_type,
+int host_hci_cmd_build_le_add_to_whitelist(const uint8_t *addr,
+                                           uint8_t addr_type,
                                            uint8_t *dst, int dst_len);
 void host_hci_cmd_build_reset(uint8_t *dst, int dst_len);
 int host_hci_cmd_reset(void);
@@ -79,21 +81,22 @@ void host_hci_cmd_build_read_adv_pwr(uint8_t *dst, int dst_len);
 int host_hci_cmd_read_adv_pwr(void);
 void host_hci_cmd_build_le_create_conn_cancel(uint8_t *dst, int dst_len);
 int host_hci_cmd_le_create_conn_cancel(void);
-int host_hci_cmd_build_le_conn_update(struct hci_conn_update *hcu,
+int host_hci_cmd_build_le_conn_update(const struct hci_conn_update *hcu,
                                       uint8_t *dst, int dst_len);
-int host_hci_cmd_le_conn_update(struct hci_conn_update *hcu);
-void host_hci_cmd_build_le_lt_key_req_reply(struct hci_lt_key_req_reply *hkr,
-                                            uint8_t *dst, int dst_len);
+int host_hci_cmd_le_conn_update(const struct hci_conn_update *hcu);
+void host_hci_cmd_build_le_lt_key_req_reply(
+    const struct hci_lt_key_req_reply *hkr, uint8_t *dst, int dst_len);
 void host_hci_cmd_build_le_lt_key_req_neg_reply(uint16_t conn_handle,
                                                 uint8_t *dst, int dst_len);
-void host_hci_cmd_build_le_conn_param_reply(struct hci_conn_param_reply *hcr,
-                                            uint8_t *dst, int dst_len);
-int host_hci_cmd_le_conn_param_reply(struct hci_conn_param_reply *hcr);
+void host_hci_cmd_build_le_conn_param_reply(
+    const struct hci_conn_param_reply *hcr, uint8_t *dst, int dst_len);
+int host_hci_cmd_le_conn_param_reply(const struct hci_conn_param_reply *hcr);
 void host_hci_cmd_build_le_conn_param_neg_reply(
-    struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len);
-int host_hci_cmd_le_conn_param_neg_reply(struct hci_conn_param_neg_reply *hcn);
+    const struct hci_conn_param_neg_reply *hcn, uint8_t *dst, int dst_len);
+int host_hci_cmd_le_conn_param_neg_reply(
+    const struct hci_conn_param_neg_reply *hcn);
 void host_hci_cmd_build_le_rand(uint8_t *dst, int dst_len);
-void host_hci_cmd_build_le_start_encrypt(struct hci_start_encrypt *cmd,
+void host_hci_cmd_build_le_start_encrypt(const struct hci_start_encrypt *cmd,
                                          uint8_t *dst, int dst_len);
 int host_hci_set_buf_size(uint16_t pktlen, uint8_t max_pkts);
 
@@ -106,28 +109,26 @@ int host_hci_cmd_build_set_data_len(uint16_t connection_handle,
                                     uint16_t tx_octets, uint16_t tx_time,
                                     uint8_t *dst, int dst_len);
 int host_hci_cmd_build_add_to_resolv_list(
-                                    struct hci_add_dev_to_resolving_list *padd,
-                                    uint8_t *dst, int dst_len);
-int host_hci_cmd_build_remove_from_resolv_list(uint8_t addr_type,
-                                            uint8_t *addr, uint8_t *dst,
-                                            int dst_len);
+    const struct hci_add_dev_to_resolving_list *padd,
+    uint8_t *dst, int dst_len);
+int host_hci_cmd_build_remove_from_resolv_list(
+    uint8_t addr_type, const uint8_t *addr, uint8_t *dst, int dst_len);
 int host_hci_cmd_build_read_resolv_list_size(uint8_t *dst, int dst_len);
-int
-host_hci_cmd_build_clear_resolv_list(uint8_t *dst, int dst_len);
-int host_hci_cmd_build_read_peer_resolv_addr(uint8_t peer_identity_addr_type,
-                                          uint8_t *peer_identity_addr,
-                                          uint8_t *dst, int dst_len);
-int host_hci_cmd_build_read_lcl_resolv_addr(uint8_t local_identity_addr_type,
-                                        uint8_t *local_identity_addr,
-                                        uint8_t *dst, int dst_len);
-int host_hci_cmd_build_set_addr_res_en(uint8_t enable,
-                                          uint8_t *dst, int dst_len);
-int host_hci_cmd_build_set_resolv_priv_addr_timeout(uint16_t timeout,
-                                                            uint8_t *dst,
-                                                            int dst_len);
+int host_hci_cmd_build_clear_resolv_list(uint8_t *dst, int dst_len);
+int host_hci_cmd_build_read_peer_resolv_addr(
+    uint8_t peer_identity_addr_type, const uint8_t *peer_identity_addr,
+    uint8_t *dst, int dst_len);
+int host_hci_cmd_build_read_lcl_resolv_addr(
+    uint8_t local_identity_addr_type, const uint8_t *local_identity_addr,
+    uint8_t *dst, int dst_len);
+int host_hci_cmd_build_set_addr_res_en(
+    uint8_t enable, uint8_t *dst, int dst_len);
+int host_hci_cmd_build_set_resolv_priv_addr_timeout(
+    uint16_t timeout, uint8_t *dst, int dst_len);
 
 void host_hci_timer_set(void);
 
-int host_hci_cmd_build_set_random_addr(uint8_t *addr, uint8_t *dst, int dst_len);
+int host_hci_cmd_build_set_random_addr(const uint8_t *addr,
+                                       uint8_t *dst, int dst_len);
 
 #endif /* H_HOST_HCI_ */

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/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 dba3527..cb5acc7 100644
--- a/net/nimble/host/src/ble_att_clt.c
+++ b/net/nimble/host/src/ble_att_clt.c
@@ -57,7 +57,7 @@ err:
 
 static int
 ble_att_clt_append_blob(uint16_t conn_handle, struct os_mbuf *txom,
-                        void *blob, int blob_len)
+                        const void *blob, int blob_len)
 {
     int rc;
 
@@ -77,7 +77,7 @@ ble_att_clt_append_blob(uint16_t conn_handle, struct os_mbuf *txom,
 }
 
 static int
-ble_att_clt_copy_attr_to_flatbuf(struct os_mbuf *om, void **out_attr_val,
+ble_att_clt_copy_attr_to_flatbuf(const struct os_mbuf *om, void **out_attr_val,
                                  uint16_t *out_attr_len)
 {
     uint8_t *flat_buf;
@@ -141,17 +141,17 @@ ble_att_clt_tx_req(uint16_t conn_handle, struct os_mbuf *txom)
  *****************************************************************************/
 
 int
-ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **om)
+ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **rxom)
 {
     struct ble_att_error_rsp rsp;
     int rc;
 
-    rc = ble_hs_misc_pullup_base(om, BLE_ATT_ERROR_RSP_SZ);
+    rc = ble_hs_misc_pullup_base(rxom, BLE_ATT_ERROR_RSP_SZ);
     if (rc != 0) {
         return rc;
     }
 
-    ble_att_error_rsp_parse((*om)->om_data, (*om)->om_len, &rsp);
+    ble_att_error_rsp_parse((*rxom)->om_data, (*rxom)->om_len, &rsp);
     BLE_ATT_LOG_CMD(0, "error rsp", conn_handle, ble_att_error_rsp_log, &rsp);
 
     ble_gattc_rx_err(conn_handle, &rsp);
@@ -164,7 +164,7 @@ ble_att_clt_rx_error(uint16_t conn_handle, struct os_mbuf **om)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_mtu_req(struct ble_att_mtu_cmd *req,
+ble_att_clt_build_mtu_req(const struct ble_att_mtu_cmd *req,
                           struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -190,7 +190,7 @@ done:
 }
 
 int
-ble_att_clt_tx_mtu(uint16_t conn_handle, struct ble_att_mtu_cmd *req)
+ble_att_clt_tx_mtu(uint16_t conn_handle, const struct ble_att_mtu_cmd *req)
 {
     struct ble_l2cap_chan *chan;
     struct ble_hs_conn *conn;
@@ -226,7 +226,7 @@ ble_att_clt_tx_mtu(uint16_t conn_handle, struct ble_att_mtu_cmd *req)
 }
 
 int
-ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **om)
+ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **rxom)
 {
     struct ble_att_mtu_cmd cmd;
     struct ble_l2cap_chan *chan;
@@ -235,9 +235,9 @@ ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **om)
 
     mtu = 0;
 
-    rc = ble_hs_misc_pullup_base(om, BLE_ATT_MTU_CMD_SZ);
+    rc = ble_hs_misc_pullup_base(rxom, BLE_ATT_MTU_CMD_SZ);
     if (rc == 0) {
-        ble_att_mtu_cmd_parse((*om)->om_data, (*om)->om_len, &cmd);
+        ble_att_mtu_cmd_parse((*rxom)->om_data, (*rxom)->om_len, &cmd);
         BLE_ATT_LOG_CMD(0, "mtu rsp", conn_handle, ble_att_mtu_cmd_log, &cmd);
 
         ble_hs_lock();
@@ -260,7 +260,7 @@ ble_att_clt_rx_mtu(uint16_t conn_handle, struct os_mbuf **om)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_find_info_req(struct ble_att_find_info_req *req,
+ble_att_clt_build_find_info_req(const struct ble_att_find_info_req *req,
                                 struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -279,7 +279,7 @@ ble_att_clt_build_find_info_req(struct ble_att_find_info_req *req,
 
 int
 ble_att_clt_tx_find_info(uint16_t conn_handle,
-                         struct ble_att_find_info_req *req)
+                         const struct ble_att_find_info_req *req)
 {
 #if !NIMBLE_OPT(ATT_CLT_FIND_INFO)
     return BLE_HS_ENOTSUP;
@@ -409,9 +409,10 @@ done:
  *****************************************************************************/
 
 static int
-ble_att_clt_build_find_type_value_req(struct ble_att_find_type_value_req *req,
-                                      void *attribute_value, int value_len,
-                                      struct os_mbuf **out_txom)
+ble_att_clt_build_find_type_value_req(
+    const struct ble_att_find_type_value_req *req,
+    const void *attribute_value, int value_len,
+    struct os_mbuf **out_txom)
 {
     int rc;
 
@@ -434,8 +435,8 @@ ble_att_clt_build_find_type_value_req(struct ble_att_find_type_value_req *req,
 
 int
 ble_att_clt_tx_find_type_value(uint16_t conn_handle,
-                               struct ble_att_find_type_value_req *req,
-                               void *attribute_value, int value_len)
+                               const struct ble_att_find_type_value_req *req,
+                               const void *attribute_value, int value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_FIND_TYPE)
     return BLE_HS_ENOTSUP;
@@ -525,8 +526,8 @@ ble_att_clt_rx_find_type_value(uint16_t conn_handle, struct os_mbuf **rxom)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_read_type_req(struct ble_att_read_type_req *req,
-                                void *uuid128, struct os_mbuf **out_txom)
+ble_att_clt_build_read_type_req(const struct ble_att_read_type_req *req,
+                                const void *uuid128, struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
     int rc;
@@ -558,8 +559,8 @@ done:
 
 int
 ble_att_clt_tx_read_type(uint16_t conn_handle,
-                         struct ble_att_read_type_req *req,
-                         void *uuid128)
+                         const struct ble_att_read_type_req *req,
+                         const void *uuid128)
 {
 #if !NIMBLE_OPT(ATT_CLT_READ_TYPE)
     return BLE_HS_ENOTSUP;
@@ -654,7 +655,7 @@ done:
  *****************************************************************************/
 
 static int
-ble_att_clt_build_read_req(struct ble_att_read_req *req,
+ble_att_clt_build_read_req(const struct ble_att_read_req *req,
                            struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -680,7 +681,7 @@ done:
 }
 
 int
-ble_att_clt_tx_read(uint16_t conn_handle, struct ble_att_read_req *req)
+ble_att_clt_tx_read(uint16_t conn_handle, const struct ble_att_read_req *req)
 {
 #if !NIMBLE_OPT(ATT_CLT_READ)
     return BLE_HS_ENOTSUP;
@@ -740,7 +741,7 @@ ble_att_clt_rx_read(uint16_t conn_handle, struct os_mbuf **rxom)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_read_blob_req(struct ble_att_read_blob_req *req,
+ble_att_clt_build_read_blob_req(const struct ble_att_read_blob_req *req,
                                 struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -767,7 +768,7 @@ done:
 
 int
 ble_att_clt_tx_read_blob(uint16_t conn_handle,
-                         struct ble_att_read_blob_req *req)
+                         const struct ble_att_read_blob_req *req)
 {
 #if !NIMBLE_OPT(ATT_CLT_READ_BLOB)
     return BLE_HS_ENOTSUP;
@@ -827,7 +828,8 @@ ble_att_clt_rx_read_blob(uint16_t conn_handle, struct os_mbuf **rxom)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_read_mult_req(uint16_t *att_handles, int num_att_handles,
+ble_att_clt_build_read_mult_req(const uint16_t *att_handles,
+                                int num_att_handles,
                                 struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -867,7 +869,7 @@ done:
 }
 
 int
-ble_att_clt_tx_read_mult(uint16_t conn_handle, uint16_t *att_handles,
+ble_att_clt_tx_read_mult(uint16_t conn_handle, const uint16_t *att_handles,
                          int num_att_handles)
 {
 #if !NIMBLE_OPT(ATT_CLT_READ_MULT)
@@ -927,8 +929,9 @@ ble_att_clt_rx_read_mult(uint16_t conn_handle, struct os_mbuf **rxom)
  *****************************************************************************/
 
 static int
-ble_att_clt_build_read_group_type_req(struct ble_att_read_group_type_req *req,
-                                      void *uuid128, struct os_mbuf **out_txom)
+ble_att_clt_build_read_group_type_req(
+    const struct ble_att_read_group_type_req *req, const void *uuid128,
+    struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
     int rc;
@@ -959,8 +962,8 @@ done:
 
 int
 ble_att_clt_tx_read_group_type(uint16_t conn_handle,
-                               struct ble_att_read_group_type_req *req,
-                               void *uuid128)
+                               const struct ble_att_read_group_type_req *req,
+                               const void *uuid128)
 {
 #if !NIMBLE_OPT(ATT_CLT_READ_GROUP_TYPE)
     return BLE_HS_ENOTSUP;
@@ -1064,8 +1067,9 @@ done:
 
 static int
 ble_att_clt_build_write_req_or_cmd(uint16_t conn_handle,
-                                   struct ble_att_write_req *req,
-                                   void *value, uint16_t value_len, int is_req,
+                                   const struct ble_att_write_req *req,
+                                   const void *value, uint16_t value_len,
+                                   int is_req,
                                    struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -1101,8 +1105,8 @@ done:
 
 static int
 ble_att_clt_tx_write_req_or_cmd(uint16_t conn_handle,
-                                struct ble_att_write_req *req,
-                                void *value, uint16_t value_len,
+                                const struct ble_att_write_req *req,
+                                const void *value, uint16_t value_len,
                                 int is_req)
 {
     struct os_mbuf *txom;
@@ -1123,8 +1127,9 @@ ble_att_clt_tx_write_req_or_cmd(uint16_t conn_handle,
 }
 
 int
-ble_att_clt_tx_write_req(uint16_t conn_handle, struct ble_att_write_req *req,
-                         void *value, uint16_t value_len)
+ble_att_clt_tx_write_req(uint16_t conn_handle,
+                         const struct ble_att_write_req *req,
+                         const void *value, uint16_t value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_WRITE)
     return BLE_HS_ENOTSUP;
@@ -1141,8 +1146,8 @@ ble_att_clt_tx_write_req(uint16_t conn_handle, struct ble_att_write_req *req,
 
 int
 ble_att_clt_tx_write_cmd(uint16_t conn_handle,
-                         struct ble_att_write_req *req,
-                         void *value, uint16_t value_len)
+                         const struct ble_att_write_req *req,
+                         const void *value, uint16_t value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_WRITE_NO_RSP)
     return BLE_HS_ENOTSUP;
@@ -1177,8 +1182,8 @@ ble_att_clt_rx_write(uint16_t conn_handle, struct os_mbuf **rxom)
 
 static int
 ble_att_clt_build_prep_write_req(uint16_t conn_handle,
-                                 struct ble_att_prep_write_cmd *req,
-                                 void *value, uint16_t value_len,
+                                 const struct ble_att_prep_write_cmd *req,
+                                 const void *value, uint16_t value_len,
                                  struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -1210,8 +1215,8 @@ done:
 
 int
 ble_att_clt_tx_prep_write(uint16_t conn_handle,
-                          struct ble_att_prep_write_cmd *req,
-                          void *value, uint16_t value_len)
+                          const struct ble_att_prep_write_cmd *req,
+                          const void *value, uint16_t value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_PREP_WRITE)
     return BLE_HS_ENOTSUP;
@@ -1294,7 +1299,7 @@ done:
  *****************************************************************************/
 
 static int
-ble_att_clt_build_exec_write_req(struct ble_att_exec_write_req *req,
+ble_att_clt_build_exec_write_req(const struct ble_att_exec_write_req *req,
                                  struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -1321,7 +1326,7 @@ done:
 
 int
 ble_att_clt_tx_exec_write(uint16_t conn_handle,
-                          struct ble_att_exec_write_req *req)
+                          const struct ble_att_exec_write_req *req)
 {
 #if !NIMBLE_OPT(ATT_CLT_EXEC_WRITE)
     return BLE_HS_ENOTSUP;
@@ -1376,8 +1381,8 @@ ble_att_clt_rx_exec_write(uint16_t conn_handle, struct os_mbuf **rxom)
 
 static int
 ble_att_clt_build_notify_req(uint16_t conn_handle,
-                             struct ble_att_notify_req *req,
-                             void *value, uint16_t value_len,
+                             const struct ble_att_notify_req *req,
+                             const void *value, uint16_t value_len,
                              struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -1408,8 +1413,9 @@ done:
 }
 
 int
-ble_att_clt_tx_notify(uint16_t conn_handle, struct ble_att_notify_req *req,
-                      void *value, uint16_t value_len)
+ble_att_clt_tx_notify(uint16_t conn_handle,
+                      const struct ble_att_notify_req *req,
+                      const void *value, uint16_t value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_NOTIFY)
     return BLE_HS_ENOTSUP;
@@ -1444,8 +1450,8 @@ ble_att_clt_tx_notify(uint16_t conn_handle, struct ble_att_notify_req *req,
 
 static int
 ble_att_clt_build_indicate_req(uint16_t conn_handle,
-                               struct ble_att_indicate_req *req,
-                               void *value, uint16_t value_len,
+                               const struct ble_att_indicate_req *req,
+                               const void *value, uint16_t value_len,
                                struct os_mbuf **out_txom)
 {
     struct os_mbuf *txom;
@@ -1477,8 +1483,8 @@ done:
 
 int
 ble_att_clt_tx_indicate(uint16_t conn_handle,
-                        struct ble_att_indicate_req *req,
-                        void *value, uint16_t value_len)
+                        const struct ble_att_indicate_req *req,
+                        const void *value, uint16_t value_len)
 {
 #if !NIMBLE_OPT(ATT_CLT_INDICATE)
     return BLE_HS_ENOTSUP;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/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 5df0846..b8ca094 100644
--- a/net/nimble/host/src/ble_att_cmd.c
+++ b/net/nimble/host/src/ble_att_cmd.c
@@ -26,10 +26,11 @@
 #include "host/ble_uuid.h"
 #include "ble_hs_priv.h"
 
-static void *
-ble_att_init_parse(uint8_t op, void *payload, int min_len, int actual_len)
+static const void *
+ble_att_init_parse(uint8_t op, const void *payload,
+                   int min_len, int actual_len)
 {
-    uint8_t *u8ptr;
+    const uint8_t *u8ptr;
 
     BLE_HS_DBG_ASSERT(actual_len >= min_len);
 
@@ -39,11 +40,11 @@ ble_att_init_parse(uint8_t op, void *payload, int min_len, int actual_len)
     return u8ptr + 1;
 }
 
-static void *
-ble_att_init_parse_2op(uint8_t op1, uint8_t op2, void *payload,
+static const void *
+ble_att_init_parse_2op(uint8_t op1, uint8_t op2, const void *payload,
                        int min_len, int actual_len)
 {
-    uint8_t *u8ptr;
+    const uint8_t *u8ptr;
 
     BLE_HS_DBG_ASSERT(actual_len >= min_len);
 
@@ -68,7 +69,7 @@ ble_att_init_write(uint8_t op, void *payload, int min_len, int actual_len)
 
 static void
 ble_att_error_rsp_swap(struct ble_att_error_rsp *dst,
-                       struct ble_att_error_rsp *src)
+                       const struct ble_att_error_rsp *src)
 {
     dst->baep_req_op = src->baep_req_op;
     dst->baep_handle = TOFROMLE16(src->baep_handle);
@@ -76,9 +77,10 @@ ble_att_error_rsp_swap(struct ble_att_error_rsp *dst,
 }
 
 void
-ble_att_error_rsp_parse(void *payload, int len, struct ble_att_error_rsp *dst)
+ble_att_error_rsp_parse(const void *payload, int len,
+                        struct ble_att_error_rsp *dst)
 {
-    struct ble_att_error_rsp *src;
+    const struct ble_att_error_rsp *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_ERROR_RSP, payload,
                              BLE_ATT_ERROR_RSP_SZ, len);
@@ -86,7 +88,8 @@ ble_att_error_rsp_parse(void *payload, int len, struct ble_att_error_rsp *dst)
 }
 
 void
-ble_att_error_rsp_write(void *payload, int len, struct ble_att_error_rsp *src)
+ble_att_error_rsp_write(void *payload, int len,
+                        const struct ble_att_error_rsp *src)
 {
     struct ble_att_error_rsp *dst;
 
@@ -96,22 +99,24 @@ ble_att_error_rsp_write(void *payload, int len, struct ble_att_error_rsp *src)
 }
 
 void
-ble_att_error_rsp_log(struct ble_att_error_rsp *cmd)
+ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd)
 {
     BLE_HS_LOG(DEBUG, "req_op=%d handle=0x%04x error_code=%d",
                cmd->baep_req_op, cmd->baep_handle, cmd->baep_error_code);
 }
 
 static void
-ble_att_mtu_cmd_swap(struct ble_att_mtu_cmd *dst, struct ble_att_mtu_cmd *src)
+ble_att_mtu_cmd_swap(struct ble_att_mtu_cmd *dst,
+                     const struct ble_att_mtu_cmd *src)
 {
     dst->bamc_mtu = TOFROMLE16(src->bamc_mtu);
 }
 
 void
-ble_att_mtu_cmd_parse(void *payload, int len, struct ble_att_mtu_cmd *dst)
+ble_att_mtu_cmd_parse(const void *payload, int len,
+                      struct ble_att_mtu_cmd *dst)
 {
-    struct ble_att_mtu_cmd *src;
+    const struct ble_att_mtu_cmd *src;
 
     src = ble_att_init_parse_2op(BLE_ATT_OP_MTU_REQ, BLE_ATT_OP_MTU_RSP,
                                  payload, BLE_ATT_MTU_CMD_SZ, len);
@@ -119,7 +124,8 @@ ble_att_mtu_cmd_parse(void *payload, int len, struct ble_att_mtu_cmd *dst)
 }
 
 void
-ble_att_mtu_req_write(void *payload, int len, struct ble_att_mtu_cmd *src)
+ble_att_mtu_req_write(void *payload, int len,
+                      const struct ble_att_mtu_cmd *src)
 {
     struct ble_att_mtu_cmd *dst;
 
@@ -129,7 +135,8 @@ ble_att_mtu_req_write(void *payload, int len, struct ble_att_mtu_cmd *src)
 }
 
 void
-ble_att_mtu_rsp_write(void *payload, int len, struct ble_att_mtu_cmd *src)
+ble_att_mtu_rsp_write(void *payload, int len,
+                      const struct ble_att_mtu_cmd *src)
 {
     struct ble_att_mtu_cmd *dst;
 
@@ -139,24 +146,24 @@ ble_att_mtu_rsp_write(void *payload, int len, struct ble_att_mtu_cmd *src)
 }
 
 void
-ble_att_mtu_cmd_log(struct ble_att_mtu_cmd *cmd)
+ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd)
 {
     BLE_HS_LOG(DEBUG, "mtu=%d", cmd->bamc_mtu);
 }
 
 static void
 ble_att_find_info_req_swap(struct ble_att_find_info_req *dst,
-                           struct ble_att_find_info_req *src)
+                           const struct ble_att_find_info_req *src)
 {
     dst->bafq_start_handle = TOFROMLE16(src->bafq_start_handle);
     dst->bafq_end_handle = TOFROMLE16(src->bafq_end_handle);
 }
 
 void
-ble_att_find_info_req_parse(void *payload, int len,
+ble_att_find_info_req_parse(const void *payload, int len,
                             struct ble_att_find_info_req *dst)
 {
-    struct ble_att_find_info_req *src;
+    const struct ble_att_find_info_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_FIND_INFO_REQ, payload,
                              BLE_ATT_FIND_INFO_REQ_SZ, len);
@@ -165,7 +172,7 @@ ble_att_find_info_req_parse(void *payload, int len,
 
 void
 ble_att_find_info_req_write(void *payload, int len,
-                            struct ble_att_find_info_req *src)
+                            const struct ble_att_find_info_req *src)
 {
     struct ble_att_find_info_req *dst;
 
@@ -175,7 +182,7 @@ ble_att_find_info_req_write(void *payload, int len,
 }
 
 void
-ble_att_find_info_req_log(struct ble_att_find_info_req *cmd)
+ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x",
                cmd->bafq_start_handle, cmd->bafq_end_handle);
@@ -183,16 +190,16 @@ ble_att_find_info_req_log(struct ble_att_find_info_req *cmd)
 
 static void
 ble_att_find_info_rsp_swap(struct ble_att_find_info_rsp *dst,
-                           struct ble_att_find_info_rsp *src)
+                           const struct ble_att_find_info_rsp *src)
 {
     dst->bafp_format = src->bafp_format;
 }
 
 void
-ble_att_find_info_rsp_parse(void *payload, int len,
+ble_att_find_info_rsp_parse(const void *payload, int len,
                             struct ble_att_find_info_rsp *dst)
 {
-    struct ble_att_find_info_rsp *src;
+    const struct ble_att_find_info_rsp *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_FIND_INFO_RSP, payload,
                              BLE_ATT_FIND_INFO_RSP_BASE_SZ, len);
@@ -201,7 +208,7 @@ ble_att_find_info_rsp_parse(void *payload, int len,
 
 void
 ble_att_find_info_rsp_write(void *payload, int len,
-                            struct ble_att_find_info_rsp *src)
+                            const struct ble_att_find_info_rsp *src)
 {
     struct ble_att_find_info_rsp *dst;
 
@@ -211,14 +218,14 @@ ble_att_find_info_rsp_write(void *payload, int len,
 }
 
 void
-ble_att_find_info_rsp_log(struct ble_att_find_info_rsp *cmd)
+ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd)
 {
     BLE_HS_LOG(DEBUG, "format=%d", cmd->bafp_format);
 }
 
 static void
 ble_att_find_type_value_req_swap(struct ble_att_find_type_value_req *dst,
-                                 struct ble_att_find_type_value_req *src)
+                                 const struct ble_att_find_type_value_req *src)
 {
     dst->bavq_start_handle = TOFROMLE16(src->bavq_start_handle);
     dst->bavq_end_handle = TOFROMLE16(src->bavq_end_handle);
@@ -226,10 +233,10 @@ ble_att_find_type_value_req_swap(struct ble_att_find_type_value_req *dst,
 }
 
 void
-ble_att_find_type_value_req_parse(void *payload, int len,
+ble_att_find_type_value_req_parse(const void *payload, int len,
                                   struct ble_att_find_type_value_req *dst)
 {
-    struct ble_att_find_type_value_req *src;
+    const struct ble_att_find_type_value_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_FIND_TYPE_VALUE_REQ, payload,
                              BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ, len);
@@ -237,8 +244,8 @@ ble_att_find_type_value_req_parse(void *payload, int len,
 }
 
 void
-ble_att_find_type_value_req_write(void *payload, int len,
-                                  struct ble_att_find_type_value_req *src)
+ble_att_find_type_value_req_write(
+    void *payload, int len, const struct ble_att_find_type_value_req *src)
 {
     struct ble_att_find_type_value_req *dst;
 
@@ -248,7 +255,7 @@ ble_att_find_type_value_req_write(void *payload, int len,
 }
 
 void
-ble_att_find_type_value_req_log(struct ble_att_find_type_value_req *cmd)
+ble_att_find_type_value_req_log(const struct ble_att_find_type_value_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x attr_type=%d",
                cmd->bavq_start_handle, cmd->bavq_end_handle,
@@ -257,17 +264,17 @@ ble_att_find_type_value_req_log(struct ble_att_find_type_value_req *cmd)
 
 static void
 ble_att_read_type_req_swap(struct ble_att_read_type_req *dst,
-                           struct ble_att_read_type_req *src)
+                           const struct ble_att_read_type_req *src)
 {
     dst->batq_start_handle = TOFROMLE16(src->batq_start_handle);
     dst->batq_end_handle = TOFROMLE16(src->batq_end_handle);
 }
 
 void
-ble_att_read_type_req_parse(void *payload, int len,
+ble_att_read_type_req_parse(const void *payload, int len,
                             struct ble_att_read_type_req *dst)
 {
-    struct ble_att_read_type_req *src;
+    const struct ble_att_read_type_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_TYPE_REQ, payload,
                              BLE_ATT_READ_TYPE_REQ_BASE_SZ, len);
@@ -276,7 +283,7 @@ ble_att_read_type_req_parse(void *payload, int len,
 
 void
 ble_att_read_type_req_write(void *payload, int len,
-                            struct ble_att_read_type_req *src)
+                            const struct ble_att_read_type_req *src)
 {
     struct ble_att_read_type_req *dst;
 
@@ -286,7 +293,7 @@ ble_att_read_type_req_write(void *payload, int len,
 }
 
 void
-ble_att_read_type_req_log(struct ble_att_read_type_req *cmd)
+ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x",
                cmd->batq_start_handle, cmd->batq_end_handle);
@@ -294,16 +301,16 @@ ble_att_read_type_req_log(struct ble_att_read_type_req *cmd)
 
 static void
 ble_att_read_type_rsp_swap(struct ble_att_read_type_rsp *dst,
-                           struct ble_att_read_type_rsp *src)
+                           const struct ble_att_read_type_rsp *src)
 {
     dst->batp_length = src->batp_length;
 }
 
 void
-ble_att_read_type_rsp_parse(void *payload, int len,
+ble_att_read_type_rsp_parse(const void *payload, int len,
                             struct ble_att_read_type_rsp *dst)
 {
-    struct ble_att_read_type_rsp *src;
+    const struct ble_att_read_type_rsp *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_TYPE_RSP, payload,
                              BLE_ATT_READ_TYPE_RSP_BASE_SZ, len);
@@ -312,7 +319,7 @@ ble_att_read_type_rsp_parse(void *payload, int len,
 
 void
 ble_att_read_type_rsp_write(void *payload, int len,
-                            struct ble_att_read_type_rsp *src)
+                            const struct ble_att_read_type_rsp *src)
 {
     struct ble_att_read_type_rsp *dst;
 
@@ -322,22 +329,23 @@ ble_att_read_type_rsp_write(void *payload, int len,
 }
 
 void
-ble_att_read_type_rsp_log(struct ble_att_read_type_rsp *cmd)
+ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd)
 {
     BLE_HS_LOG(DEBUG, "length=%d", cmd->batp_length);
 }
 
 static void
 ble_att_read_req_swap(struct ble_att_read_req *dst,
-                      struct ble_att_read_req *src)
+                      const struct ble_att_read_req *src)
 {
     dst->barq_handle = TOFROMLE16(src->barq_handle);
 }
 
 void
-ble_att_read_req_parse(void *payload, int len, struct ble_att_read_req *dst)
+ble_att_read_req_parse(const void *payload, int len,
+                       struct ble_att_read_req *dst)
 {
-    struct ble_att_read_req *src;
+    const struct ble_att_read_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_REQ, payload,
                              BLE_ATT_READ_REQ_SZ, len);
@@ -345,7 +353,8 @@ ble_att_read_req_parse(void *payload, int len, struct ble_att_read_req *dst)
 }
 
 void
-ble_att_read_req_write(void *payload, int len, struct ble_att_read_req *src)
+ble_att_read_req_write(void *payload, int len,
+                       const struct ble_att_read_req *src)
 {
     struct ble_att_read_req *dst;
 
@@ -355,24 +364,24 @@ ble_att_read_req_write(void *payload, int len, struct ble_att_read_req *src)
 }
 
 void
-ble_att_read_req_log(struct ble_att_read_req *cmd)
+ble_att_read_req_log(const struct ble_att_read_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->barq_handle);
 }
 
 static void
 ble_att_read_blob_req_swap(struct ble_att_read_blob_req *dst,
-                           struct ble_att_read_blob_req *src)
+                           const struct ble_att_read_blob_req *src)
 {
     dst->babq_handle = TOFROMLE16(src->babq_handle);
     dst->babq_offset = TOFROMLE16(src->babq_offset);
 }
 
 void
-ble_att_read_blob_req_parse(void *payload, int len,
+ble_att_read_blob_req_parse(const void *payload, int len,
                             struct ble_att_read_blob_req *dst)
 {
-    struct ble_att_read_blob_req *src;
+    const struct ble_att_read_blob_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_BLOB_REQ, payload,
                              BLE_ATT_READ_BLOB_REQ_SZ, len);
@@ -381,7 +390,7 @@ ble_att_read_blob_req_parse(void *payload, int len,
 
 void
 ble_att_read_blob_req_write(void *payload, int len,
-                            struct ble_att_read_blob_req *src)
+                            const struct ble_att_read_blob_req *src)
 {
     struct ble_att_read_blob_req *dst;
 
@@ -391,14 +400,14 @@ ble_att_read_blob_req_write(void *payload, int len,
 }
 
 void
-ble_att_read_blob_req_log(struct ble_att_read_blob_req *cmd)
+ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x offset=%d", cmd->babq_handle,
                cmd->babq_offset);
 }
 
 void
-ble_att_read_mult_req_parse(void *payload, int len)
+ble_att_read_mult_req_parse(const void *payload, int len)
 {
     ble_att_init_parse(BLE_ATT_OP_READ_MULT_REQ, payload,
                        BLE_ATT_READ_MULT_REQ_BASE_SZ, len);
@@ -412,7 +421,7 @@ ble_att_read_mult_req_write(void *payload, int len)
 }
 
 void
-ble_att_read_mult_rsp_parse(void *payload, int len)
+ble_att_read_mult_rsp_parse(const void *payload, int len)
 {
     ble_att_init_parse(BLE_ATT_OP_READ_MULT_RSP, payload,
                        BLE_ATT_READ_MULT_RSP_BASE_SZ, len);
@@ -427,17 +436,17 @@ ble_att_read_mult_rsp_write(void *payload, int len)
 
 static void
 ble_att_read_group_type_req_swap(struct ble_att_read_group_type_req *dst,
-                                 struct ble_att_read_group_type_req *src)
+                                 const struct ble_att_read_group_type_req *src)
 {
     dst->bagq_start_handle = TOFROMLE16(src->bagq_start_handle);
     dst->bagq_end_handle = TOFROMLE16(src->bagq_end_handle);
 }
 
 void
-ble_att_read_group_type_req_parse(void *payload, int len,
+ble_att_read_group_type_req_parse(const void *payload, int len,
                                   struct ble_att_read_group_type_req *dst)
 {
-    struct ble_att_read_group_type_req *src;
+    const struct ble_att_read_group_type_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_GROUP_TYPE_REQ, payload,
                              BLE_ATT_READ_GROUP_TYPE_REQ_BASE_SZ, len);
@@ -445,8 +454,8 @@ ble_att_read_group_type_req_parse(void *payload, int len,
 }
 
 void
-ble_att_read_group_type_req_write(void *payload, int len,
-                                  struct ble_att_read_group_type_req *src)
+ble_att_read_group_type_req_write(
+    void *payload, int len, const struct ble_att_read_group_type_req *src)
 {
     struct ble_att_read_group_type_req *dst;
 
@@ -456,7 +465,7 @@ ble_att_read_group_type_req_write(void *payload, int len,
 }
 
 void
-ble_att_read_group_type_req_log(struct ble_att_read_group_type_req *cmd)
+ble_att_read_group_type_req_log(const struct ble_att_read_group_type_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "start_handle=0x%04x end_handle=0x%04x",
                cmd->bagq_start_handle, cmd->bagq_end_handle);
@@ -464,16 +473,16 @@ ble_att_read_group_type_req_log(struct ble_att_read_group_type_req *cmd)
 
 static void
 ble_att_read_group_type_rsp_swap(struct ble_att_read_group_type_rsp *dst,
-                                 struct ble_att_read_group_type_rsp *src)
+                                 const struct ble_att_read_group_type_rsp *src)
 {
     dst->bagp_length = src->bagp_length;
 }
 
 void
-ble_att_read_group_type_rsp_parse(void *payload, int len,
+ble_att_read_group_type_rsp_parse(const void *payload, int len,
                                   struct ble_att_read_group_type_rsp *dst)
 {
-    struct ble_att_read_group_type_rsp *src;
+    const struct ble_att_read_group_type_rsp *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_READ_GROUP_TYPE_RSP, payload,
                              BLE_ATT_READ_GROUP_TYPE_RSP_BASE_SZ, len);
@@ -481,8 +490,8 @@ ble_att_read_group_type_rsp_parse(void *payload, int len,
 }
 
 void
-ble_att_read_group_type_rsp_write(void *payload, int len,
-                                  struct ble_att_read_group_type_rsp *src)
+ble_att_read_group_type_rsp_write(
+    void *payload, int len, const struct ble_att_read_group_type_rsp *src)
 {
     struct ble_att_read_group_type_rsp *dst;
 
@@ -492,22 +501,23 @@ ble_att_read_group_type_rsp_write(void *payload, int len,
 }
 
 void
-ble_att_read_group_type_rsp_log(struct ble_att_read_group_type_rsp *cmd)
+ble_att_read_group_type_rsp_log(const struct ble_att_read_group_type_rsp *cmd)
 {
     BLE_HS_LOG(DEBUG, "length=%d", cmd->bagp_length);
 }
 
 static void
 ble_att_write_req_swap(struct ble_att_write_req *dst,
-                       struct ble_att_write_req *src)
+                       const struct ble_att_write_req *src)
 {
     dst->bawq_handle = TOFROMLE16(src->bawq_handle);
 }
 
 void
-ble_att_write_req_parse(void *payload, int len, struct ble_att_write_req *dst)
+ble_att_write_req_parse(const void *payload, int len,
+                        struct ble_att_write_req *dst)
 {
-    struct ble_att_write_req *src;
+    const struct ble_att_write_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_WRITE_REQ, payload,
                              BLE_ATT_WRITE_REQ_BASE_SZ, len);
@@ -515,9 +525,10 @@ ble_att_write_req_parse(void *payload, int len, struct ble_att_write_req *dst)
 }
 
 void
-ble_att_write_cmd_parse(void *payload, int len, struct ble_att_write_req *dst)
+ble_att_write_cmd_parse(const void *payload, int len,
+                        struct ble_att_write_req *dst)
 {
-    struct ble_att_write_req *src;
+    const struct ble_att_write_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_WRITE_CMD, payload,
                              BLE_ATT_WRITE_REQ_BASE_SZ, len);
@@ -525,7 +536,8 @@ ble_att_write_cmd_parse(void *payload, int len, struct ble_att_write_req *dst)
 }
 
 void
-ble_att_write_req_write(void *payload, int len, struct ble_att_write_req *src)
+ble_att_write_req_write(void *payload, int len,
+                        const struct ble_att_write_req *src)
 {
     struct ble_att_write_req *dst;
 
@@ -535,7 +547,8 @@ ble_att_write_req_write(void *payload, int len, struct ble_att_write_req *src)
 }
 
 void
-ble_att_write_cmd_write(void *payload, int len, struct ble_att_write_req *src)
+ble_att_write_cmd_write(void *payload, int len,
+                        const struct ble_att_write_req *src)
 {
     struct ble_att_write_req *dst;
 
@@ -545,24 +558,24 @@ ble_att_write_cmd_write(void *payload, int len, struct ble_att_write_req *src)
 }
 
 void
-ble_att_write_cmd_log(struct ble_att_write_req *cmd)
+ble_att_write_cmd_log(const struct ble_att_write_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->bawq_handle);
 }
 
 static void
 ble_att_prep_write_cmd_swap(struct ble_att_prep_write_cmd *dst,
-                            struct ble_att_prep_write_cmd *src)
+                            const struct ble_att_prep_write_cmd *src)
 {
     dst->bapc_handle = TOFROMLE16(src->bapc_handle);
     dst->bapc_offset = TOFROMLE16(src->bapc_offset);
 }
 
 void
-ble_att_prep_write_req_parse(void *payload, int len,
+ble_att_prep_write_req_parse(const void *payload, int len,
                              struct ble_att_prep_write_cmd *dst)
 {
-    struct ble_att_prep_write_cmd *src;
+    const struct ble_att_prep_write_cmd *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_PREP_WRITE_REQ, payload,
                              BLE_ATT_PREP_WRITE_CMD_BASE_SZ, len);
@@ -571,7 +584,7 @@ ble_att_prep_write_req_parse(void *payload, int len,
 
 void
 ble_att_prep_write_req_write(void *payload, int len,
-                             struct ble_att_prep_write_cmd *src)
+                             const struct ble_att_prep_write_cmd *src)
 {
     struct ble_att_prep_write_cmd *dst;
 
@@ -581,10 +594,10 @@ ble_att_prep_write_req_write(void *payload, int len,
 }
 
 void
-ble_att_prep_write_rsp_parse(void *payload, int len,
+ble_att_prep_write_rsp_parse(const void *payload, int len,
                              struct ble_att_prep_write_cmd *dst)
 {
-    struct ble_att_prep_write_cmd *src;
+    const struct ble_att_prep_write_cmd *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_PREP_WRITE_RSP, payload,
                              BLE_ATT_PREP_WRITE_CMD_BASE_SZ, len);
@@ -593,7 +606,7 @@ ble_att_prep_write_rsp_parse(void *payload, int len,
 
 void
 ble_att_prep_write_rsp_write(void *payload, int len,
-                             struct ble_att_prep_write_cmd *src)
+                             const struct ble_att_prep_write_cmd *src)
 {
     struct ble_att_prep_write_cmd *dst;
 
@@ -603,7 +616,7 @@ ble_att_prep_write_rsp_write(void *payload, int len,
 }
 
 void
-ble_att_prep_write_cmd_log(struct ble_att_prep_write_cmd *cmd)
+ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x offset=%d", cmd->bapc_handle,
                cmd->bapc_offset);
@@ -611,16 +624,16 @@ ble_att_prep_write_cmd_log(struct ble_att_prep_write_cmd *cmd)
 
 static void
 ble_att_exec_write_req_swap(struct ble_att_exec_write_req *dst,
-                            struct ble_att_exec_write_req *src)
+                            const struct ble_att_exec_write_req *src)
 {
     dst->baeq_flags = src->baeq_flags;
 }
 
 void
-ble_att_exec_write_req_parse(void *payload, int len,
+ble_att_exec_write_req_parse(const void *payload, int len,
                              struct ble_att_exec_write_req *dst)
 {
-    struct ble_att_exec_write_req *src;
+    const struct ble_att_exec_write_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_EXEC_WRITE_REQ, payload,
                              BLE_ATT_EXEC_WRITE_REQ_SZ, len);
@@ -629,7 +642,7 @@ ble_att_exec_write_req_parse(void *payload, int len,
 
 void
 ble_att_exec_write_req_write(void *payload, int len,
-                             struct ble_att_exec_write_req *src)
+                             const struct ble_att_exec_write_req *src)
 {
     struct ble_att_exec_write_req *dst;
 
@@ -639,13 +652,13 @@ ble_att_exec_write_req_write(void *payload, int len,
 }
 
 void
-ble_att_exec_write_req_log(struct ble_att_exec_write_req *cmd)
+ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "flags=0x%02x", cmd->baeq_flags);
 }
 
 void
-ble_att_exec_write_rsp_parse(void *payload, int len)
+ble_att_exec_write_rsp_parse(const void *payload, int len)
 {
     ble_att_init_parse(BLE_ATT_OP_EXEC_WRITE_RSP, payload,
                        BLE_ATT_EXEC_WRITE_RSP_SZ, len);
@@ -660,16 +673,16 @@ ble_att_exec_write_rsp_write(void *payload, int len)
 
 static void
 ble_att_notify_req_swap(struct ble_att_notify_req *dst,
-                        struct ble_att_notify_req *src)
+                        const struct ble_att_notify_req *src)
 {
     dst->banq_handle = TOFROMLE16(src->banq_handle);
 }
 
 void
-ble_att_notify_req_parse(void *payload, int len,
+ble_att_notify_req_parse(const void *payload, int len,
                          struct ble_att_notify_req *dst)
 {
-    struct ble_att_notify_req *src;
+    const struct ble_att_notify_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_NOTIFY_REQ, payload,
                              BLE_ATT_NOTIFY_REQ_BASE_SZ, len);
@@ -678,7 +691,7 @@ ble_att_notify_req_parse(void *payload, int len,
 
 void
 ble_att_notify_req_write(void *payload, int len,
-                         struct ble_att_notify_req *src)
+                         const struct ble_att_notify_req *src)
 {
     struct ble_att_notify_req *dst;
 
@@ -688,23 +701,23 @@ ble_att_notify_req_write(void *payload, int len,
 }
 
 void
-ble_att_notify_req_log(struct ble_att_notify_req *cmd)
+ble_att_notify_req_log(const struct ble_att_notify_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->banq_handle);
 }
 
 static void
 ble_att_indicate_req_swap(struct ble_att_indicate_req *dst,
-                          struct ble_att_indicate_req *src)
+                          const struct ble_att_indicate_req *src)
 {
     dst->baiq_handle = TOFROMLE16(src->baiq_handle);
 }
 
 void
-ble_att_indicate_req_parse(void *payload, int len,
+ble_att_indicate_req_parse(const void *payload, int len,
                            struct ble_att_indicate_req *dst)
 {
-    struct ble_att_indicate_req *src;
+    const struct ble_att_indicate_req *src;
 
     src = ble_att_init_parse(BLE_ATT_OP_INDICATE_REQ, payload,
                              BLE_ATT_INDICATE_REQ_BASE_SZ, len);
@@ -713,7 +726,7 @@ ble_att_indicate_req_parse(void *payload, int len,
 
 void
 ble_att_indicate_req_write(void *payload, int len,
-                           struct ble_att_indicate_req *src)
+                           const struct ble_att_indicate_req *src)
 {
     struct ble_att_indicate_req *dst;
 
@@ -723,13 +736,13 @@ ble_att_indicate_req_write(void *payload, int len,
 }
 
 void
-ble_att_indicate_req_log(struct ble_att_indicate_req *cmd)
+ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd)
 {
     BLE_HS_LOG(DEBUG, "handle=0x%04x", cmd->baiq_handle);
 }
 
 void
-ble_att_indicate_rsp_parse(void *payload, int len)
+ble_att_indicate_rsp_parse(const void *payload, int len)
 {
     ble_att_init_parse(BLE_ATT_OP_INDICATE_RSP, payload,
                        BLE_ATT_INDICATE_RSP_SZ, len);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/63531557/net/nimble/host/src/ble_att_cmd_priv.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_att_cmd_priv.h b/net/nimble/host/src/ble_att_cmd_priv.h
index 38af5f2..44989a1 100644
--- a/net/nimble/host/src/ble_att_cmd_priv.h
+++ b/net/nimble/host/src/ble_att_cmd_priv.h
@@ -304,103 +304,106 @@ struct ble_att_indicate_req {
  */
 #define BLE_ATT_INDICATE_RSP_SZ         1
 
-void ble_att_error_rsp_parse(void *payload, int len,
-                              struct ble_att_error_rsp *rsp);
+void ble_att_error_rsp_parse(const void *payload, int len,
+                             struct ble_att_error_rsp *rsp);
 void ble_att_error_rsp_write(void *payload, int len,
-                              struct ble_att_error_rsp *rsp);
-void ble_att_error_rsp_log(struct ble_att_error_rsp *cmd);
-void ble_att_mtu_cmd_parse(void *payload, int len,
-                            struct ble_att_mtu_cmd *cmd);
+                             const struct ble_att_error_rsp *rsp);
+void ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd);
+void ble_att_mtu_cmd_parse(const void *payload, int len,
+                           struct ble_att_mtu_cmd *cmd);
 void ble_att_mtu_req_write(void *payload, int len,
-                            struct ble_att_mtu_cmd *cmd);
+                           const struct ble_att_mtu_cmd *cmd);
 void ble_att_mtu_rsp_write(void *payload, int len,
-                           struct ble_att_mtu_cmd *cmd);
-void ble_att_mtu_cmd_log(struct ble_att_mtu_cmd *cmd);
-void ble_att_find_info_req_parse(void *payload, int len,
+                           const struct ble_att_mtu_cmd *cmd);
+void ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd);
+void ble_att_find_info_req_parse(const void *payload, int len,
                                  struct ble_att_find_info_req *req);
 void ble_att_find_info_req_write(void *payload, int len,
-                                 struct ble_att_find_info_req *req);
-void ble_att_find_info_req_log(struct ble_att_find_info_req *cmd);
-void ble_att_find_info_rsp_parse(void *payload, int len,
+                                 const struct ble_att_find_info_req *req);
+void ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd);
+void ble_att_find_info_rsp_parse(const void *payload, int len,
                                  struct ble_att_find_info_rsp *rsp);
 void ble_att_find_info_rsp_write(void *payload, int len,
-                                 struct ble_att_find_info_rsp *rsp);
-void ble_att_find_info_rsp_log(struct ble_att_find_info_rsp *cmd);
-void ble_att_find_type_value_req_parse(void *payload, int len,
-                                       struct ble_att_find_type_value_req *req);
-void ble_att_find_type_value_req_write(void *payload, int len,
-                                       struct ble_att_find_type_value_req *req);
-void ble_att_find_type_value_req_log(struct ble_att_find_type_value_req *cmd);
-void ble_att_read_type_req_parse(void *payload, int len,
+                                 const struct ble_att_find_info_rsp *rsp);
+void ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd);
+void ble_att_find_type_value_req_parse(
+    const void *payload, int len, struct ble_att_find_type_value_req *req);
+void ble_att_find_type_value_req_write(
+    void *payload, int len, const struct ble_att_find_type_value_req *req);
+void ble_att_find_type_value_req_log(
+    const struct ble_att_find_type_value_req *cmd);
+void ble_att_read_type_req_parse(const void *payload, int len,
                                  struct ble_att_read_type_req *req);
 void ble_att_read_type_req_write(void *payload, int len,
-                                 struct ble_att_read_type_req *req);
-void ble_att_read_type_req_log(struct ble_att_read_type_req *cmd);
-void ble_att_read_type_rsp_parse(void *payload, int len,
+                                 const struct ble_att_read_type_req *req);
+void ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd);
+void ble_att_read_type_rsp_parse(const void *payload, int len,
                                  struct ble_att_read_type_rsp *rsp);
 void ble_att_read_type_rsp_write(void *payload, int len,
-                                 struct ble_att_read_type_rsp *rsp);
-void ble_att_read_type_rsp_log(struct ble_att_read_type_rsp *cmd);
-void ble_att_read_req_parse(void *payload, int len,
+                                 const struct ble_att_read_type_rsp *rsp);
+void ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd);
+void ble_att_read_req_parse(const void *payload, int len,
                             struct ble_att_read_req *req);
 void ble_att_read_req_write(void *payload, int len,
-                            struct ble_att_read_req *req);
-void ble_att_read_req_log(struct ble_att_read_req *cmd);
-void ble_att_read_blob_req_parse(void *payload, int len,
+                            const struct ble_att_read_req *req);
+void ble_att_read_req_log(const struct ble_att_read_req *cmd);
+void ble_att_read_blob_req_parse(const void *payload, int len,
                                  struct ble_att_read_blob_req *req);
 void ble_att_read_blob_req_write(void *payload, int len,
-                                 struct ble_att_read_blob_req *req);
-void ble_att_read_blob_req_log(struct ble_att_read_blob_req *cmd);
-void ble_att_read_mult_req_parse(void *payload, int len);
+                                 const struct ble_att_read_blob_req *req);
+void ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd);
+void ble_att_read_mult_req_parse(const void *payload, int len);
 void ble_att_read_mult_req_write(void *payload, int len);
-void ble_att_read_mult_rsp_parse(void *payload, int len);
+void ble_att_read_mult_rsp_parse(const void *payload, int len);
 void ble_att_read_mult_rsp_write(void *payload, int len);
 void ble_att_read_group_type_req_parse(
-    void *payload, int len, struct ble_att_read_group_type_req *req);
+    const void *payload, int len, struct ble_att_read_group_type_req *req);
 void ble_att_read_group_type_req_write(
-    void *payload, int len, struct ble_att_read_group_type_req *req);
-void ble_att_read_group_type_req_log(struct ble_att_read_group_type_req *cmd);
+    void *payload, int len, const struct ble_att_read_group_type_req *req);
+void ble_att_read_group_type_req_log(
+    const struct ble_att_read_group_type_req *cmd);
 void ble_att_read_group_type_rsp_parse(
-    void *payload, int len, struct ble_att_read_group_type_rsp *rsp);
+    const void *payload, int len, struct ble_att_read_group_type_rsp *rsp);
 void ble_att_read_group_type_rsp_write(
-    void *payload, int len, struct ble_att_read_group_type_rsp *rsp);
-void ble_att_read_group_type_rsp_log(struct ble_att_read_group_type_rsp *cmd);
-void ble_att_write_req_parse(void *payload, int len,
+    void *payload, int len, const struct ble_att_read_group_type_rsp *rsp);
+void ble_att_read_group_type_rsp_log(
+    const struct ble_att_read_group_type_rsp *cmd);
+void ble_att_write_req_parse(const void *payload, int len,
                              struct ble_att_write_req *req);
 void ble_att_write_req_write(void *payload, int len,
-                             struct ble_att_write_req *req);
-void ble_att_write_cmd_parse(void *payload, int len,
+                             const struct ble_att_write_req *req);
+void ble_att_write_cmd_parse(const void *payload, int len,
                              struct ble_att_write_req *req);
 void ble_att_write_cmd_write(void *payload, int len,
-                             struct ble_att_write_req *req);
-void ble_att_write_cmd_log(struct ble_att_write_req *cmd);
-void ble_att_prep_write_req_parse(void *payload, int len,
+                             const struct ble_att_write_req *req);
+void ble_att_write_cmd_log(const struct ble_att_write_req *cmd);
+void ble_att_prep_write_req_parse(const void *payload, int len,
                                   struct ble_att_prep_write_cmd *cmd);
 void ble_att_prep_write_req_write(void *payload, int len,
-                                  struct ble_att_prep_write_cmd *cmd);
-void ble_att_prep_write_cmd_log(struct ble_att_prep_write_cmd *cmd);
-void ble_att_prep_write_rsp_parse(void *payload, int len,
+                                  const struct ble_att_prep_write_cmd *cmd);
+void ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd);
+void ble_att_prep_write_rsp_parse(const void *payload, int len,
                                   struct ble_att_prep_write_cmd *cmd);
 void ble_att_prep_write_rsp_write(void *payload, int len,
-                                  struct ble_att_prep_write_cmd *cmd);
-void ble_att_exec_write_req_parse(void *payload, int len,
+                                  const struct ble_att_prep_write_cmd *cmd);
+void ble_att_exec_write_req_parse(const void *payload, int len,
                                   struct ble_att_exec_write_req *req);
-void ble_att_exec_write_req_log(struct ble_att_exec_write_req *cmd);
+void ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd);
 void ble_att_exec_write_req_write(void *payload, int len,
-                                  struct ble_att_exec_write_req *req);
-void ble_att_exec_write_rsp_parse(void *payload, int len);
+                                  const struct ble_att_exec_write_req *req);
+void ble_att_exec_write_rsp_parse(const void *payload, int len);
 void ble_att_exec_write_rsp_write(void *payload, int len);
-void ble_att_notify_req_parse(void *payload, int len,
+void ble_att_notify_req_parse(const void *payload, int len,
                               struct ble_att_notify_req *req);
 void ble_att_notify_req_write(void *payload, int len,
-                              struct ble_att_notify_req *req);
-void ble_att_notify_req_log(struct ble_att_notify_req *cmd);
-void ble_att_indicate_req_parse(void *payload, int len,
+                              const struct ble_att_notify_req *req);
+void ble_att_notify_req_log(const struct ble_att_notify_req *cmd);
+void ble_att_indicate_req_parse(const void *payload, int len,
                                 struct ble_att_indicate_req *req);
 void ble_att_indicate_req_write(void *payload, int len,
-                                struct ble_att_indicate_req *req);
-void ble_att_indicate_rsp_parse(void *payload, int len);
+                                const struct ble_att_indicate_req *req);
+void ble_att_indicate_rsp_parse(const void *payload, int len);
 void ble_att_indicate_rsp_write(void *payload, int len);
-void ble_att_indicate_req_log(struct ble_att_indicate_req *cmd);
+void ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd);
 
 #endif