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:蓝牙 PTS 测试失败(GATT/SR/UNS/BI-01-C)

Guru**** 2618415 points

Other Parts Discussed in Thread: LAUNCHXL-CC2640R2, CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1169580/cc2640r2f-bluetooth-pts-test-fail-gatt-sr-uns-bi-01-c

器件型号:CC2640R2F
主题中讨论的其他器件:LAUNCHXL-CC2640R2

蓝牙 PTS 测试 GATT/SR/UNS/BI-01-C 的实现失败。 对于 Simplelink 产品、这似乎是几次出现的情况:

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/729164/cc2650-bluetooth-pts-test-fail-gatt-sr-uns-bi-01-c

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/709798/cc2640r2f-bluetooth-pts-test-fail-gatt-sr-uns-bi-01-c

但似乎没有得到充分解决。 在第二种情况下、用户被告知无法重现此问题、因此我在未修改的 simple_peripheral 和 project_zero 示例上尝试了该问题、但两者都未通过测试。 这是在 LAUNCHXL 开发板上安装的最新 SDK 版本5.30.00.03。

出现故障的原因是 DUT 未向不受支持的操作码发送正确的响应:它接收到的值不同、而不是请求句柄0x0000、该值会随测试运行而变化。 测试失败部分的日志如下所示。  

是否有任何关于如何配置器件以通过此测试的想法?

Jamie

+14390 ms
Send Event: ATT!ATT_RAW_COMMAND{
lcid=0x1205,
length=0x0005,
040302010C
}


+14390 ms
Preliminary Verdict: PASS


+14390 ms
Verdict Description: Sending an ATT request with an unsupported opcode.


+14515 ms
Receive Event: ATT?ATT_READ_BLOB_ERR_RSP{
lcid=0x1205,
result=0x0301,
errorHandle=0xA211
}


+14515 ms
Verdict Description: ATT Read Blob returned an error.


+14515 ms
Preliminary Verdict: PASS


+14515 ms
Verdict Description: Invalid request handle received. Expected=0x0000 Received =0xa211.


+15812 ms
Send Event: HCI!GET_CONNECTION_HANDLE{
addr=0x546C0E9B6982,
addr_type=0x00,
conn_handle=0x0000
}


+15812 ms
Send Event: HCI!HCI_DISCONNECT{
connectionHandle=0x0000,
reason=HCI_REMOTE_USER_TERMINATED_CONNECTION
}


+15812 ms
Receive Event: HCI?HCI_DISCONNECT_STATUS_EVENT{
status=HCI_OK
}


+15844 ms
Receive Event: ATT?ATT_DISCONNECT_IND{
lcid=0x1205
}


+15844 ms
Receive Event: HCI?HCI_DISCONNECTION_COMPLETE_EVENT{
status=HCI_OK,
connectionHandle=0x0000,
reason=HCI_CONNECTION_TERMINATED_BY_LOCAL_HOST
}


+15844 ms
Verdict Description: Received HCI disconnection event. Handle = 0x0000


+15844 ms
Verdict Description: Connection terminated successfully.


+15844 ms
Send Event: HCI!HCI_RESET


+15844 ms
Receive Event: HCI?HCI_RESET_COMPLETE_EVENT{
status=HCI_OK
}


+16844 ms
Receive Event: HCI?HCI_RESET_COMPLETE_EVENT{
status=HCI_OK
}


+18359 ms
Final Verdict: FAIL


+18359 ms
Encrypted Verdict: A1#ZWY4MzQ5MDg3MmQwNTIxOGQzMzQ5YjY2ODA5M2MzNjQ5ZDY4NmY0Yjc2MzIzM2VkNTUyNTFhNGU4Mjg1MjI0NA==#KmusmDjDxFuj+PKkJOFzJkeUi7LbNi5nOprHp67hx7jrRJtg91IbF2/gkidur6XK


+18359 ms
Test Case Ended: GATT/SR/UNS/BI-01-C

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

    您好!

    我指派了一名专家来帮助您的查询。 同时、您能否验证您是否能够在 host_test 示例中看到相同的行为?

    此致、

    1月

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

    您好、Jan、

    尽管对 ATT 请求的响应不同、但使用 host_test 和 BTool (blestack)时的结果是相同的:

    +8125 ms
    Receive Event:           ATT?ATT_PREPARE_WRITE_ERR_RSP{
                               lcid=0x1205,
                               attributeHandle=0xEC30,
                               result=0x0301
                             }
    
    
    +8125 ms
    Verdict Description:     ATT Prepare Write returned an error.
    
    
    +8125 ms
    Preliminary Verdict:     PASS
    
    
    +8125 ms
    Verdict Description:     Invalid request handle received. Expected=0x0000 Received =0xec30.
    

    BTool 日志(如下所示)不记录 ATT 请求、仅记录 PTS 连接和断开事件。

    此致、

    Jamie

    --------------------------------------------------------------------
    [75] : <Rx> - 12:07:52.578
    -Type           : 0x04 (Event)
    -EventCode      : 0x00FF (HCI_LE_ExtEvent)
    -Data Length    : 0x14 (20) bytes(s)
     Event          : 0x0605 (1541) (GAP_EstablishLink)
     Status         : 0x00 (0) (SUCCESS)
     DevAddrType    : 0x00 (0) (ADDRTYPE_PUBLIC)
     DevAddr        : C0:07:E8:7D:14:9A
     ConnHandle     : 0x0000 (0)
     ConnRole       : 0x04 (4) (
                      Peripheral)
     ConnInterval   : 0x0038 (56)
     ConnLatency    : 0x0000 (0)
     ConnTimeout    : 0x07D0 (2000)
     ClockAccuracy  : 0x07 (7)
    Dump(Rx):
    0000:04 FF 14 05 06 00 00 9A 14 7D E8 07 C0 00 00 04 .........}......
    0010:38 00 00 00 D0 07 07                            8......
    --------------------------------------------------------------------
    [76] : <Tx> - 12:07:52.581
    -Type           : 0x01 (Command)
    -OpCode         : 0x2022 (HCI_LE_SetDataLength)
    -Data Length    : 0x06 (6) byte(s)
     Handle         : 0x0000 (0)
     TxOctets       : 0x00FB (251)
     TxTime         : 0x0848 (2120)
    Dump(Tx):
    0000:01 22 20 06 00 00 FB 00 48 08                   ." .....H.
    --------------------------------------------------------------------
    [77] : <Rx> - 12:07:52.624
    -Type           : 0x04 (Event)
    -EventCode      : 0x000E (HCI_CommandCompleteEvent)
    -Data Length    : 0x06 (6) bytes(s)
     Packets        : 0x01 (1)
     OpCode         : 0x2022 (HCI_LE_SetDataLength)
     Status         : 0x00 (0) (SUCCESS)
     Handle         : 0x0000 (0)
    Dump(Rx):
    0000:04 0E 06 01 22 20 00 00 00                      ...." ...
    --------------------------------------------------------------------
    [78] : <Info> - 12:07:52.790
    Device Connected
    Handle = 0x0000
    Addr Type = 0x00 (ADDRTYPE_PUBLIC)
    BDAddr = C0:07:E8:7D:14:9A
    --------------------------------------------------------------------
    [79] : <Rx> - 12:07:52.782
    -Type           : 0x04 (Event)
    -EventCode      : 0x003E (HCI_LE_GenericReportEvent)
    -Data Length    : 0x0B (11) bytes(s)
     LE Event Code  : 0x07 (7) (HCI_LE_DataLengthChangeEvent)
     LE Event Code  : 0x07 (7) (HCI_LE_DataLengthChangeEvent)
     Handle         : 0x0000 (0)
     MaxTxOctets    : 0x00FB (251)
     MaxTxTime      : 0x0848 (2120)
     MaxRxOctets    : 0x001B (27)
     MaxRxTime      : 0x0148 (328)
    Dump(Rx):
    0000:04 3E 0B 07 00 00 FB 00 48 08 1B 00 48 01       .>......H...H.
    --------------------------------------------------------------------
    [80] : <Info> - 12:07:57.051
    Device Disconnected
    Handle = 0x0000
    Addr Type = 0x00 (ADDRTYPE_PUBLIC)
    BDAddr = C0:07:E8:7D:14:9A
    --------------------------------------------------------------------
    [81] : <Rx> - 12:07:57.051
    -Type           : 0x04 (Event)
    -EventCode      : 0x00FF (HCI_LE_ExtEvent)
    -Data Length    : 0x06 (6) bytes(s)
     Event          : 0x0606 (1542) (GAP_TerminateLink)
     Status         : 0x00 (0) (SUCCESS)
     ConnHandle     : 0x0000 (0)
     Reason         : 0x13 (19) (PEER_REQUESTED_TERM)
    Dump(Rx):
    0000:04 FF 06 06 06 00 00 00 13                      .........
    --------------------------------------------------------------------
    

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

    您好!

    您可以考虑截取 HostTestApp_handleNPIxInterceptEvent()中的命令,或修改 ICallBLE/iCall_HCI_tl.c 中的函数 processExtMsgATT ()

    请告诉我它是否有用。

    此致、

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

    您好 Clement、

    这些引用是特定于 host_test 的代码、很显然、我们希望在独立应用中使用该代码。 为什么 TI 不首先提供补丁(例如 simple_peripheral)或蓝牙兼容示例代码?

    此致、

    Jamie

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

    您好 Jamie、

    使用 PTM 时、simple_peripheral 也是如此。

    此致、

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

    您好 Clement、

    SDK 5.30的 blestack simple_peripheral 示例不包含文件 ICallBLE/iCall_HCI_tl.c,也不包含代码中任何位置的名为*handleNPIRxInterceptEvent*的函数。  

    同样、您为什么不为不合规问题提供解决方案?

    此致、

    Jamie

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

    您好 Jamie、

    很抱歉、我以为您正在使用 BLE5Stack -在这种情况下、启用 PTM 时、可以在 simple_peripheral_handleNPIxInterceptEvent 中找到函数 simple_peripheral.c

    我将检查 BLEStack。

    此致、

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

    您好!

    我想您已经按照以下文档在 simple_peripheral 示例中启用了 PTM: https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_5_30_00_03/docs/blestack/ble_user_guide/html/ble-stack-3.x/creating-a-custom-bluetooth-low-energy-application.html#using-production-test-mode-ptm

    如果您已经这么做、那么您应该已经定义了函数 simple_peripheral_handleNPIxInterceptEvent (正如 这里的一个列表中定义的那样)。

    如果您需要更多详细信息、请告诉我。

    此致、

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

    您好 Clement、

    否、我尚未启用 PTM、因为我们能够通过主机处理器上的专有接口运行 HCI 和其他命令。 不过、我不知道这是如何相关的、因为器件将需要在现场以及生产测试环境中通过此蓝牙合规性测试。 生产代码中有哪些步骤可让器件返回正确的 ATT 响应?

    此致、

    Jamie

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

    您好 Jamie、

    假设命令被发送到主机处理器、您可以截取不正确的命令(例如导致问题的命令)并发回正确的事件。 我可能在这里遗漏了一些东西、请告诉我您的想法。

    此致、

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

    您好 Clement、

    我认为有一个假设、即普通用户对 SDK 中的所有代码都有透彻的了解、实际上、SDK 和相关示例项目是为使用户不受此详细信息的影响而提供的。

    您能否指向代码中可以截取此特定 ATT 命令并实现响应的特定位置(例如、simple_peripheral)?

    此致、

    Jamie

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

    您好 Jamie、

    目前、我不了解命令是如何执行的、因此我很难回答。

    我的意思是、您好像正在使用 simple_peripheral、但尚未启用 PTM。 因此、我不了解如何在器件中输入命令、也不知道如何截取命令。

    此致、

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

    您好 Clement、

    在这项要求中,我们没有具体的执行情况。 这是 TI 提供的 SDK 与 Bluetooth SIG 提供的合规性流程的直接不合规问题。 复制步骤仅为:

    • 将未修改 的 simple_peripheral 项目(SDK 5.30、BLEstack)加载到 LAUNCHXL-CC2640R2或类似器件上
    • 从 Bluetooth SIG 打开 Profile Tuning Suite、创建一个新的工作区、连接到开发板
    • 导入为低功耗蓝牙外设创建的 IC (如果您没有该 IC、我可以发送该 IC)
    • 在工作区工具窗口中、导航到 GATT -> SR -> UNS -> BI-01-C、然后双击以运行测试

    测试 GATT/SR/UNS/BI-01-C 将失败、并生成与我原始帖子中包含的输出类似的输出。 此测试对于低功耗蓝牙外设是强制性的、因此故障表明此实现不符合规范。  

    因此、简单的请求是对 simple_peripheral 项目进行补丁/更新/代码更改、使其能够在独立的 BLE 实施中通过该测试。

    此致、

    Jamie

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

    您好 Jamie、

    感谢您报告此问题。

    我们的研发团队正在努力重现此问题、并在将来的版本中解决此问题。

    此致、

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

    您好 Clement、

    我们稍后将解决它、这不是一个解决方案。 如果我们现在需要蓝牙兼容产品、请使用其他供应商、我们该怎么办?

    此致、

    Jamie

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

    您好 Jamie、

    我理解您的沮丧。 但是、该器件用于数百种设计中、并且之前已经通过认证、因此我很难证明将该线程设置为我们的绝对优先级。

    为了帮助解决问题、我正在与我们的研发团队一起寻找回归过程中获得的结果。 我希望他们能在本周结束前给我一个答案。

    同时、您可能需要评估您正在处理的个人资料资格在您的案例中是否为必填项。 假设您满足 RF-PHY 认证要求(或允许您利用我们的最终产品清单 QDID)、则应允许您使用蓝牙的名称。 为了避免延迟产品部署、还可以稍后添加配置文件鉴定。  

    我希望这将有所帮助、

    此致、

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

    您好 Clement、

    如果设置正确、不应花时间第二次猜测问题、为什么不只运行我所概述的一组非常简单的步骤、所需的时间不应超过10分钟。

    作为蓝牙最终产品、需要使用 CC2640R2F 器件专用的 TI 组件 QDID 176642进行认证:

    对于 LE 外设、GATT 服务器当然是必需的:

    由于   上面的 GATT 1/2、生成的测试计划要求 GATT/SR/UNS/BI-01-C 通过:

    因此、除非您指出我缺少的内容、否则当前的 SDK/示例项目不符合 LE 外设;即该器件的绝大多数目标实现。

    此致、

    Jamie

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

    您好 Jamie、

    首先、很抱歉造成混淆、您答对了、您所指的 GATT/SR/UNS/BI-01-C 测试绝对是核心规范的一部分。 我一直在回答这个整个线程、就像它不是(或者、就像测试是配置文件测试一样)。 我对这种混乱深感抱歉。

    我从一开始就应该提供以下答案:

    "为了使用 CC2640R2F 和 BLEStack 验证您的产品、我建议您使用 最终产品清单 QDID 180401。 然后、您的蓝牙资格认证顾问(BQC)将评估是否请求额外的 RF-PHY 测试-不应假设您在集成系统时遵循了 TI 的指南。
    在所有情况下、
    - 您不需要从一侧进行堆栈测试(如 GATT/SR/UNS/BI-01-C)  
    -堆栈测试(如 GATT/SR/UNS/BI-01-C)无法使用公开可用的代码运行

    最后、我建议您查看蓝牙资格认证应用手册、该手册可从 以下网址获得:https://www.ti.com/ble-qualification。 第§2.1.1.2节提供 了有关使用最终产品清单 QDID 创建产品清单的详细信息。 表2-2提供了有关适用 QDID 的详细信息。"

    我要再次对你迟迟未能得到这一答复表示歉意,并感谢你的耐心。

    此致、

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

    您好 Clement、

    谢谢、就是这样。 很抱歉、我没有意识到对组件使用最终产品 QDID 甚至是蓝牙认证的选项-看起来有些不合常理。 这无论如何会让我们进入下一步、从而解决问题!

    此致、

    Jamie

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

    您好 Jamie、

    太棒了! 感谢您的确认。

    祝您顺利完成项目的后续步骤。

    此致、