首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STM BlueNRG-MS最大特征长度

STM BlueNRG-MS最大特征长度
EN

Stack Overflow用户
提问于 2021-04-02 00:19:28
回答 1查看 78关注 0票数 0

我的一般理解是,BLE标准支持最大长度为512字节的特征。我使用的是来自STM的BlueNRG-MS芯片,但是用于添加特征的函数调用的长度参数有一个uint8_t值

代码语言:javascript
复制
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,所以这应该很好,但我找不到任何支持使用uint16_t类型的charValueLen调用的BlueNRG-MS中间件的参考或示例。我还下载了最新的STSW-BLUENRG-DK,示例也只支持uint8_t charValueLen

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-19 11:58:41

是的,它也支持带有uint16_t的charValueLen。示例函数如下:

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66908163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档