mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-07-28 21:57:55 +00:00
NimBLE: Added support for writing data more than BLE_ATT_ATTR_MAX_LEN
This commit is contained in:
@@ -769,10 +769,17 @@ ble_att_clt_tx_prep_write(uint16_t conn_handle, uint16_t handle,
|
||||
goto err;
|
||||
}
|
||||
|
||||
#if MYNEWT_VAL(BLE_GATT_BLOB_TRANSFER)
|
||||
if (OS_MBUF_PKTLEN(txom) > BLE_ATT_ATTR_MAX_LEN) {
|
||||
rc = BLE_HS_EINVAL;
|
||||
goto err;
|
||||
}
|
||||
#else
|
||||
if (offset + OS_MBUF_PKTLEN(txom) > BLE_ATT_ATTR_MAX_LEN) {
|
||||
rc = BLE_HS_EINVAL;
|
||||
goto err;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (OS_MBUF_PKTLEN(txom) >
|
||||
ble_att_mtu(conn_handle) - BLE_ATT_PREP_WRITE_CMD_BASE_SZ) {
|
||||
|
||||
@@ -2169,12 +2169,13 @@ ble_att_svr_prep_validate(struct ble_att_prep_entry_list *prep_list,
|
||||
}
|
||||
}
|
||||
|
||||
#if !MYNEWT_VAL(BLE_GATT_BLOB_TRANSFER)
|
||||
cur_len = entry->bape_offset + OS_MBUF_PKTLEN(entry->bape_value);
|
||||
if (cur_len > BLE_ATT_ATTR_MAX_LEN) {
|
||||
*err_handle = entry->bape_handle;
|
||||
return BLE_ATT_ERR_INVALID_ATTR_VALUE_LEN;
|
||||
}
|
||||
|
||||
#endif
|
||||
prev = entry;
|
||||
}
|
||||
|
||||
|
||||
@@ -124,6 +124,10 @@ syscfg.defs:
|
||||
description: >
|
||||
This enables LE Connection Subrating feature
|
||||
value: 0
|
||||
BLE_GATT_BLOB_TRANSFER:
|
||||
description: >
|
||||
This enables write blob feature
|
||||
value: 1
|
||||
|
||||
# Allow periodic sync transfer only if 5.1 or higher
|
||||
syscfg.restrictions:
|
||||
|
||||
@@ -659,6 +659,10 @@
|
||||
#define MYNEWT_VAL_BLE_GATT_WRITE_RELIABLE (MYNEWT_VAL_BLE_ROLE_CENTRAL)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER
|
||||
#define MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER (0)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HOST
|
||||
#define MYNEWT_VAL_BLE_HOST (1)
|
||||
#endif
|
||||
|
||||
@@ -660,6 +660,10 @@
|
||||
#define MYNEWT_VAL_BLE_GATT_WRITE_RELIABLE (MYNEWT_VAL_BLE_ROLE_CENTRAL)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER
|
||||
#define MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER (0)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HOST
|
||||
#define MYNEWT_VAL_BLE_HOST (1)
|
||||
#endif
|
||||
|
||||
@@ -659,6 +659,10 @@
|
||||
#define MYNEWT_VAL_BLE_GATT_WRITE_RELIABLE (MYNEWT_VAL_BLE_ROLE_CENTRAL)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER
|
||||
#define MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER (0)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HOST
|
||||
#define MYNEWT_VAL_BLE_HOST (1)
|
||||
#endif
|
||||
|
||||
@@ -662,6 +662,10 @@
|
||||
#define MYNEWT_VAL_BLE_GATT_WRITE_RELIABLE (MYNEWT_VAL_BLE_ROLE_CENTRAL)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER
|
||||
#define MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER (0)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_HOST
|
||||
#define MYNEWT_VAL_BLE_HOST (1)
|
||||
#endif
|
||||
|
||||
@@ -883,6 +883,14 @@
|
||||
#define MYNEWT_VAL_BLE_WHITELIST (1)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_POWER_CONTROL
|
||||
#define MYNEWT_VAL_BLE_POWER_CONTROL (0)
|
||||
#endif
|
||||
|
||||
#ifndef MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER
|
||||
#define MYNEWT_VAL_BLE_GATT_BLOB_TRANSFER (0)
|
||||
#endif
|
||||
|
||||
/*** @apache-mynewt-nimble/nimble/controller */
|
||||
#ifndef MYNEWT_VAL_BLE_CONTROLLER
|
||||
#define MYNEWT_VAL_BLE_CONTROLLER (1)
|
||||
|
||||
Reference in New Issue
Block a user