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.

[参考译文] CC2652R7:无法重新广播 BLE

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1504896/cc2652r7-failed-to-re-advertise-ble

器件型号:CC2652R7

工具/软件:

尊敬的团队:

当前我正在尝试将 OAD 片上功能添加到 CC2652R7上的固件(基于简单外设示例)。 我使用的是 simplelink_cc13xx_cc26xx_sdk_7_40_00_77和 CCS 12.8-1、并  在 Simplelink Academy 上按照所有步骤操作。

现在我的 OAD 功能可以成功下载新映像、但我发现在执行以下代码时有问题:

状态= GapAdv_enable (advHandleLegacy、GAP_ADV_ENABLE_OPTIONS、USE_MAX、0);

这用于设备断开后的 BLE 自动广播、但现在它在断开后无法再次广播。

我只按照  Simplelink Academy 的建议添加了 OAD 代码、您能帮我解决这个问题吗? 是否有任何可能导致此问题?

感谢您发送编修。

此致、

Jermyn

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

    您好 Jermyn、

    感谢您联系我们! 我在使用 GapAdv_enable ()函数时没有看到任何错误。 但是、当发生断开连接时、设备会自动开始广播、如果未达到最大连接数、设备永远不会停止广播、那么为什么您需要再次开始广播? 另外、调用 GapAdv_enable ()后、您的状态是什么?

    此致、

    Tarek  

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

    尊敬的 Tarek:

    感谢您的回复、让我做更多解释、我将尝试在"implePeripheral_taskFxn (UArg a0、UArg A1)"的主循环中执行以下操作

    1)用户可在广播超时后通过按下按钮重新广播 BLE、

    2)当 BLE 连接到设备时、用户可以通过按下按钮来终止 BLE 连接。

    我发现可以通过按下按钮来终止 BLE 连接、但无法重新广播 BLE。

    这就是我尝试 在不同情况下使用 GapAdv_enable 函数进行调试的原因。

    最初、我没有在固件上添加片上 OAD 功能、我可以成功执行1)和2)。 但现在我没能做1)。

    请问是否有任何可能导致这个问题?

    感谢您发送编修。

    Jermyn

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

    尊敬的 Jermyn:

    感谢您的澄清! 您能否提供 GapAdv_enable 返回的状态代码? 它将帮助我找出问题。

    此致、

    Tarek

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

    尊敬的 Tarek:

    我发现这是 bleIncorrectMode (0x12)

    非常感谢。

    Jermyn  

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

    尊敬的 Jermyn:  

    您是否尝试在进行无线下载时进行广告宣传?  

    当 配置文件角色不正确或正在进行更新/准备时、会出现 bleIncorrectMode 错误代码

    此致、

    Tarek

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

    尊敬的 Tarek:

    当我进行 无线下载时、我没有尝试进行广告宣传。 我刚才在设备上电后尝试了这个功能。

    请问我是否可以放入这两行代码:

     GapAdv_enable (advHandleLegacy、GAP_ADV_ENABLE_OPTIONS、USE_MAX、0);

    GAP_TerminateLinkReq (connList[i]connHandleHCI_DISCONNECT_REMOTE_USER_TERM); 
    

    在"static void SimplePeripheral_taskFxn (UArg a0、UArg A1)的 for 循环内部。

    或者这不是执行这些代码的方法?

    非常感谢!

    Jermyn

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

    您好 Jermyn、

    我正在研究可能的原因,为什么这不适用于你的结束 关于它的简短问题、您使用的是什么广播集?

    至于您对您使用的功能的疑问、当前使用应该不会有问题。

    此致、

    Tarek  

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

    您好 Tarek、

    下面是我使用的内容:

    GapAdv_params_t advParams1 ={
    .eventProps = GAP_ADV_PROP_CONNECTED | GAP_ADV_PROP_legacy | GAP_ADV_PROP_scannable、
    .primIntMin = 160、
    .primIntMax = 160、
    .primChanMap = GAP_ADV_CHAN_ALL、
    .peerAddrType = peer_ADDRTYPE_PUBLICT_OR_PUBLICT_ID、
    .peerAddr ={0xAA、0xAA、0xAA、0xAA、0xAA、 0xAA }、
    filterPolicy = GAP_ADV_WL_POLICY_ANY_REQ、
    .txPower = GAP_ADV_TX_POWER_NO_Preference、
    .primPhy = GAP_ADV_PRIM_PHY_1_Mbps、
    .secPhy = GAP_ADV_SEC_PHY_1_Mbps、
    sid = 0
    };

    Uint8_t advData1[]=

    0x04、
    GAP_ADTYPE_LOCAL_NAME_SHORT、
    'G'、
    'O'、
    'O'、

    0x02、
    GAP_ADTYPE_FLAGS、
    GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED | GAP_ADTYPE_FLAGS_LIMITED、

    0x03、
    GAP_ADTYPE_16BIT_MORE、
    LO_UINT16 (0xfff0)、
    HI_UINT16 (0xfff0)、

    0x03、
    GAP_ADTYPE_ADV_INTERVAL、
    LO_UINT16 (32)、
    HI_UINT16 (32)、

    };

    uint8_t scanResData1[]=

    0x04、
    GAP_ADTYPE_LOCAL_NAME_COMPLETE、
    'G'、
    'O'、
    'O'、

    0x02、
    GAP_ADTYPE_POWER_LEVEL、
    0、


    0x05、
    GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE、
    LO_UINT16 (80)、
    HI_UINT16 (80)、
    LO_UINT16 (104)、
    HI_UINT16 (104)、

    };

    请检查一下、非常感谢!

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

    您好 Tarek、

    我来详细分享一下我使用的 SDK cc13xx_cc26xx_sdk_7_40_01_00。  整个程序中有4个任务、我实现 BLE 相关功能的任务设置为最高优先级(1)、用于控制某些 BLE 功能的按钮任务设置为较低优先级(3)。

    在我向程序添加片上 OAD 功能之前、该重新广播函数是有效的。 但现在它不起作用了。 我刚学习了 simplelink Academy (低功耗蓝牙无线下载(OAD)高级版—CC13XX CC26XX SimpleLink Academy)。 添加 OAD 功能后、我尝试将新映像上传到器件后就成功了。 但是、在 OAD 更新之前或之后、我的原始重新广播/终止功能都失败。

    感谢您的支持!

    此致、

    Jermyn

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

    您好 Jermyn、

    非常感谢您的澄清! 我认为问题是 在 BLE 任务之外调用 GapAdv_enable ()。 要执行此操作,您需要使用 BLEAPPUTIL_invokeFunction()或 BLEAPPUTIL_invokeFunctionNoData ()来包装函数。

    您可以在中找到头文件 /common/BLEAppUtil/inc/bleapputil_api.h.  

    我相信这应该能解决您的问题!

    此致、

    Tarek