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.

[参考译文] CC2541:OAD 通知

Guru**** 2553260 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/580562/cc2541-oad-notifications

器件型号:CC2541

你(们)好

我正在编写一个与 OAD 模块通信的主机程序、以便让我的客户可以选择从 Windows 计算机升级电路板。

我成功地从 PC 到 CC2541进行了通信、没有任何问题。

我有一个小问题、即我无法从 CC2541获取到 PC 的通知。

在执行一些调试后、我将问题缩小到一个特定的位置。

在 OAD_TARGET.C 中、例如在函数中:

静态空 oadImgIdentifyReq (uint16 connHandle、img_HDR_t * pImgHdr)

uint16 value = GATTServApp_ReadCharCfg (connHandle、oadImgIdentifyConfig);

//如果启用通知
if (value & GATT_CLIENT_CFG_NOTIY)

gattAttribute_t *pAttr = GATTServApp_FindAttr (oadAttrTbl、GATT_NUM_ATTRS (oadAttrTbl)、
oadCharVals+OAD_char_IMG_Identify);
if (pAttr!= NULL)

值未 打开 GATT_CLIENT_CFG_NOTIFY 位

如果我将该行替换为"if (1)" 、它始终允许继续、
我在 PC 端收到通知。

这也意味着 PC 端正常。

因此、我想知道"值"是在哪里设置的、为什么它没有正确的值?

谢谢!

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

    对于遇到相同问题的任何人:
    需要通过从 PC 向0x2902描述符发送写入命令来启用通知、而不是通过启用通知。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ophirti、

    很高兴听到您找到了它!

    谢谢、
    Fredrik