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:如何编写 Server#39的 MTU Exchange 代码?

Guru**** 2551040 points
Other Parts Discussed in Thread: CC2541, CC2640R2F, CC2640, BLE-STACK, CC2540, LAUNCHXL-CC2650, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/565812/cc2541-how-to-write-server-s-mtu-exchange-code

器件型号:CC2541
主题中讨论的其他器件: CC2640R2FCC2640BLE-STACKCC2540LAUNCHXL-CC2650CC2650

大家好、我是芯片 cc2541的新产品。 我需要你的帮助。

我的问题是:  

在哪里可以找到 一些有关如何编写服务器(CC2541作为服务器) 的 MTU Exchange 代码的演示?  

1从器件如何 接收主器件的 MTU 交换请求?  我们可以接收并处理哪个系统事件?

2如何响应对等主设备的 MTU 大小?我们可以调用哪个 API?

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

    CC2541/BLE-Stack v1.4.x 不支持 ATT MTU 大小大于默认23字节。 因此,此平台上没有用于交换 MTU 过程的代码示例。 对于 CC2640/CC2640R2F 器件、BLE-Stack v2.1.x 和更高版本上提供了更大的 MTU 尺寸支持。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 JXS、
    我使用的 BLE 堆栈版本是1.3.2。 现在我知道 CC2541对 MTU 大小的限制(即23字节)。 我使用 SimpleBLEPeripheral 演示作为要更改的模板。 问题是从设备(cc2541)如何接收主设备(其他 BLE 芯片)的 MTU 交换请求? 我需要对对对等器件响应 CC2541的 MTU 大小。 因此,我在 func simpleBLEPeripheral_ProcessOSALMsg()中添加一些代码,如下所示:

    静态空 simpleBLEPeripheral_ProcessOSALMsg (osal_event_hdr_t *pMsg)

    switch ( pMsg->event )

    #if defined (CC2540_MINIDK)
    大小写键_更改:
    simpleBLEPeripheral_HandleKeys((((keyChange_t *)pMsg)--> state (((keyChange_t *)pMsg)--> keys);
    中断;
    #endif //#if defined (CC2540_MINIDK)

    案例 GATT_MSG_EVENT://自行添加
    simpleBLEPeripheralProcessGATTMsg((GattMsgEvent_t *) pMsg );//自己添加
    中断;

    默认值:
    //不执行任何操作
    中断;




    函数(simpleBLEPeripheralProcessGATTMsg)的详细信息如下:


    //自行添加
    静态空 simpleBLEPeripheralProcessGATTMsg( gattMsgEvent_t *pMsg )


    if ((pMsg->method == ATT_EXCHANGE_MTU_REQ)||
    ((pMsg->method =ATT_ERROR_RSP)&&
    (pMsg->msg.errorRsp.reqOpcode == ATT_EXCHANGE_MTU_REQ))

    uint16句柄;
    attExchangeMTURsp_t mtursp;
    GAPRole_GetParameter (GAPROLE_CONNNANDLE、Handle);

    mtursp.serverRxMTU = 23;
    ATT_ExchangeMTURsp (句柄、mtursp);




    但实际上,从设备不接收 GATT_MSG_EVENT,而主设备成功发送 MTU Exchange 请求。 为什么?
    请帮我、谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    没问题、Richard。

    关于 MTU 交换、无需响应 Exchange MTU 请求;堆栈将自动处理此请求、值为23。

    您应该能够通过获取监听器捕获来进行确认。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    是否有 MTU 大小大于23字节的任何加密狗可用。

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

    您好、Siva、

    您可以使用具有 USB 连接的 LAUNCHXL-CC2650 LaunchPad。 它可以运行与 CC2540USB 软件狗相同的 HostTest 项目、并支持高达247字节的 ATT_MTU。

    祝你一切顺利

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

    感谢您的支持。 它是否支持所有功能(例如:BLE Device Monitor、BTool 等) 应用?

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

    是的、它们受支持。

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

    我正在尝试使用具有 SmartRF06板的 CC2650开发套件。
    我正在使用 IAR 工作平台尝试 host_test 应用程序。 我需要在项目中进行哪些更改、以便 CC2650可用作 BLE Device Monitor 应用的 UART 端口、并且能够读取60字节的特征。

    提前感谢您的支持。

    谢谢、
    Siva。