diff --git a/nimble/host/include/host/ble_gatt.h b/nimble/host/include/host/ble_gatt.h index 5a268c0c9c..229d99dda3 100644 --- a/nimble/host/include/host/ble_gatt.h +++ b/nimble/host/include/host/ble_gatt.h @@ -960,6 +960,12 @@ struct ble_gatt_access_ctxt { */ const struct ble_gatt_dsc_def *dsc; }; + + /** + * An offset in case of BLE_ATT_OP_READ_BLOB_REQ. + * If the value is greater than zero it's an indication of a long attribute read. + */ + uint16_t offset; }; /** diff --git a/nimble/host/src/ble_gatts.c b/nimble/host/src/ble_gatts.c index bf50305f4f..ae04f9931c 100644 --- a/nimble/host/src/ble_gatts.c +++ b/nimble/host/src/ble_gatts.c @@ -407,21 +407,19 @@ ble_gatts_chr_val_access(uint16_t conn_handle, uint16_t attr_handle, uint8_t att_op, uint16_t offset, struct os_mbuf **om, void *arg) { - const struct ble_gatt_chr_def *chr_def; struct ble_gatt_access_ctxt gatt_ctxt; - int rc; - chr_def = arg; + const struct ble_gatt_chr_def *chr_def = arg; BLE_HS_DBG_ASSERT(chr_def != NULL && chr_def->access_cb != NULL); gatt_ctxt.op = ble_gatts_chr_op(att_op); gatt_ctxt.chr = chr_def; + gatt_ctxt.offset = offset; ble_gatts_chr_inc_val_stat(gatt_ctxt.op); - rc = ble_gatts_val_access(conn_handle, attr_handle, offset, &gatt_ctxt, om, - chr_def->access_cb, chr_def->arg); - return rc; + return ble_gatts_val_access(conn_handle, attr_handle, offset, &gatt_ctxt, om, + chr_def->access_cb, chr_def->arg); } static int