This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2640R2F:针对需要加密的特征调用 GATTServApp_ProcessCharCfg (发出通知)。 如何实现?

Guru**** 2553450 points
Other Parts Discussed in Thread: BLE-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/574862/cc2640r2f-calling-gattservapp_processcharcfg-making-a-notification-on-a-characteristic-that-demands-encryption-how

器件型号:CC2640R2F
Thread 中讨论的其他器件:BLE-STACK

我有一个具有这些属性的配置文件。

// OutBuf 特性值
{
{ATT_UUUUUUART_SIZE、IBLEHQSerialPortServiceOutbufUUID}、
GATT_permit_encrypt_read、
0、
HqvSerialPortServiceOutBuf
}、

// OutBuf Characteristic Client 配置
{
{ATT_BT_UUID_SIZE、clientCharCfgUUID}、
GATT_permit_encrypt_read | GATT_permit_encrypt_write、
0、
(uint8 *)&pSerialPortServiceOutbufConfTable,
}、 

当我要求加密时,应该将 GATTServApp_ProcessCharCfg()中的 Authenticated 参数设置为什么?

是否有任何示例应用程序在特征上使用 Encrypt 属性?

我是否需要做更多事情才能使其正常工作?

我没有尝试过:

1.删除 Encrypt 属性并将其设置为 GATT_permit_read | GATT_permit_write 一切正常。

2.将属性设置回 GATT_permit_encrypt_read | GATT_permit_encrypt_write 当使用 GATTServApp_ProcessCharCfg()时,我会成功,但没有任何内容通过无线发送。

在发送具有 Encrypt 属性的特征通知时是否需要执行其他操作? 我现在的步骤。

GATTServApp_InitCharCfg()

GATTServApp_RegisterService()

GATTServApp_ProcessCharCfg()

ReadAttrCb 将 pAttr->pValue 中的值复制到 pValue 中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否使用了监听器来查看没有任何内容通过无线电发送?

    此外、我认为您无需加密您的特征客户端配置。

    -弥敦
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Harsmar、

    此外,在使用加密时,应将 GATTServApp_ProcessCharCfg 中的 Authenticated 参数设置为 false。 原因是 GATT_permit_encrypt 不需要经过身份验证的配对(即 JustWorks)、而 GATT_permit_AUTHEN 确实需要身份验证(例如、密码条目)。

    BLE-Stack v2.2.1中的血糖传感器项目就是一个很好的示例。 这使用加密、但使用指示而不是通知。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供信息 JXS
    我可以确认它同时适用于 false 和0x02
    请注意,您在示例中使用 false,但如果我进一步向下执行代码,则函数将根据 API 0x00、0x01或0x02的要求(GATT_Notification () iCall API)结束。 因此、当您使用 false 时、它在您的示例代码中看起来有点奇怪。 它使用户相信,在0x02也是可能的时,false 或 true 是正确的输入....

    我还发现外设无法发送数据的主要原因。 配对完成后、中央设备注册通知的速度太快。 似乎堆栈需要一些时间来了解配对是在中央设备可以注册通知之前进行的。 如果在加密启动后200ms 中央完成注册、则它不起作用、但如果我增加了时间(default_noti_enable_delay)、并且让中央在1秒后启用通知、则它开始工作。

    是的、我使用空气日志确认了所有内容。