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.

[参考译文] CCS/CC2650:示例外设、通知大小会影响 UUID 的读取

Guru**** 2582415 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/595119/ccs-cc2650-sample-peripheral-notification-size-impacts-reading-by-uuid

器件型号:CC2650

工具/软件:Code Composer Studio

大家好!

自从我上一篇文章以来,已经过去了很长时间,但这里却出现了一个新问题,这一次是一个恶性问题。

我正在使用 CCS v6.2开发 CC2650,最后一个堆栈版本是:2.2.1。

除此之外、我在计算机上连接了一个软件狗(主设备)、并由 Visual Studio 软件驱动。 我还有一个主设备、它是具有旧版 Android 4.4.2的手机。 在这部手机上、我有一个定制应用和 BLE 扫描仪应用。

我制作了一个可供所有这些人读取的传感器(2个应用于手机+计算机上的应用)。 CC2650上的软件是对原始 simple_peripheral 的改编。 我能够激活并读取3个软件上特征4的所有通知。 到目前为止、一切都很好、我可以读取具有不同长度的所有特征、我甚至创建了由20个字节组成的第6个特征、这也很有效。

但是、我现在更改了特征4、目标是通过1个字节以上的大量数据进行通知。 我实施得很好(我认为)、读取的通知在任何地方都能正常工作、但对特征1有一个奇怪的影响。 当我读取特征1时,它的长度与特征4相同:在特征1上读取0x01之前,当特征4的长度为5时,我读取0x0102030038。  当特征4的长度为5时、我读取0x0203003802、而不是在特征2上读取0x02。 如果我将特征的4个长度回1、它会很好地工作。  

您将同意、更改特征4的长度不应对特征1产生任何影响。 为了完成该技巧、我似乎只有在应用程序的手机上才有问题。 读取方式只有一个变化:电话正在从 UUID 读取值,但计算机应用程序正在从句柄读取值。

要继续、移动特征4的长度会使 UUID 读取其他仅具有1字节错误的特征。

我可以更改特征5和6的大小、它不会出现故障。 特征4和5/6的唯一区别是特性。 4正在处理通知

我没有看到任何不允许我在文档中这样做的东西、我应该能够将特征4的长度放置到20个字节、而不会产生这个问题。

这是我为了实现第4个特性而修改的代码的差分部分。

来自 simple_gatt_profile.c

来自 simple_gatt_profile.h

来自 simple_gatt_profile.c

来自 simple_gatt_profile.c

来自 simple_gatt_profile.c

来自 simple_gatt_profile.c

是否有其他人可以确认此问题?

此致、

John

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

    您是否修改了 simple_gatt_profile.c 中的代码以添加以下内容:

    Case SIMPLEPROFILE_CHAR1_UUID:
    *PLEN=1;
    pValue[0]=*pAttr->pValue;
    中断;
    Case SIMPLEPROFILE_CHAR2_UUID:
    Case SIMPLEPROFILE_CHAR4_UUID:

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

    谢谢,你找到了诀窍! 我没有注意到案例没有中断。

    此致、
    John