STM BlueNRG-MS 最大特征长度
STM BlueNRG-MS Max Characteristic length
我的一般理解是BLE标准支持最大512字节的特性。我使用的是 STM 的 BlueNRG-MS 芯片,但是添加特性的函数调用的长度参数 uint8_t 值
tBleStatus aci_gatt_add_char(uint16_t serviceHandle,
uint8_t charUuidType,
const uint8_t* charUuid,
uint8_t charValueLen,
uint8_t charProperties,
uint8_t secPermissions,
uint8_t gattEvtMask,
uint8_t encryKeySize,
uint8_t isVariable,
uint16_t* charHandle);
因此这将只允许最大特征长度为 255 字节。
根据 this 文档,堆栈本身支持 FW 7.2 或更高版本的 2 个字节。
我有 7.23,所以这应该没问题,但我找不到任何支持 charValueLen
类型 uint16_t
调用的 BlueNRG-MS 中间件的参考或示例。我还下载了最新的 STSW-BLUENRG-DK,例子也只支持 uint8_t charValueLen
.
是的,它也支持 uint16_t 的 charValueLen。
示例函数如下:
tBleStatus aci_gatt_add_char(uint16_t serviceHandle,
uint8_t charUuidType,
const uint8_t* charUuid,
uint16_t charValueLen,
uint8_t charProperties,
uint8_t secPermissions,
uint8_t gattEvtMask,
uint8_t encryKeySize,
uint8_t isVariable,
uint16_t* charHandle)
{
struct hci_request rq;
gatt_add_serv_rp resp;
uint8_t buffer[26];
... // code omitted w/o needing modification
Osal_MemCpy(buffer + indx, charUuid, uuid_len);
indx += uuid_len;
charValueLen = htobs(charValueLen);
Osal_MemCpy(buffer + indx, &charValueLen, 2);
indx += 2;
buffer[indx] = charProperties;
indx++;
... // code omitted w/o needing modification
}
我的一般理解是BLE标准支持最大512字节的特性。我使用的是 STM 的 BlueNRG-MS 芯片,但是添加特性的函数调用的长度参数 uint8_t 值
tBleStatus aci_gatt_add_char(uint16_t serviceHandle,
uint8_t charUuidType,
const uint8_t* charUuid,
uint8_t charValueLen,
uint8_t charProperties,
uint8_t secPermissions,
uint8_t gattEvtMask,
uint8_t encryKeySize,
uint8_t isVariable,
uint16_t* charHandle);
因此这将只允许最大特征长度为 255 字节。
根据 this 文档,堆栈本身支持 FW 7.2 或更高版本的 2 个字节。
我有 7.23,所以这应该没问题,但我找不到任何支持 charValueLen
类型 uint16_t
调用的 BlueNRG-MS 中间件的参考或示例。我还下载了最新的 STSW-BLUENRG-DK,例子也只支持 uint8_t charValueLen
.
是的,它也支持 uint16_t 的 charValueLen。 示例函数如下:
tBleStatus aci_gatt_add_char(uint16_t serviceHandle,
uint8_t charUuidType,
const uint8_t* charUuid,
uint16_t charValueLen,
uint8_t charProperties,
uint8_t secPermissions,
uint8_t gattEvtMask,
uint8_t encryKeySize,
uint8_t isVariable,
uint16_t* charHandle)
{
struct hci_request rq;
gatt_add_serv_rp resp;
uint8_t buffer[26];
... // code omitted w/o needing modification
Osal_MemCpy(buffer + indx, charUuid, uuid_len);
indx += uuid_len;
charValueLen = htobs(charValueLen);
Osal_MemCpy(buffer + indx, &charValueLen, 2);
indx += 2;
buffer[indx] = charProperties;
indx++;
... // code omitted w/o needing modification
}