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.

[参考译文] CC2745R10-Q1:cc2745重新广播

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1511739/cc2745r10-q1-cc2745-re-broadcasting

器件型号:CC2745R10-Q1
主题:SysConfig 中讨论的其他器件

工具/软件:

您好、TI

  我使用 TI\simplelink_lowpower_f3_SDK_8_40_00_61\examples\rtos\LP_EM_CC2745R10-Q1\ble5stack\basic_ble 作为外设。

我要 在 计时器回调时运行 BLEAppUtil_advStop (peripheralAdvHandle_1)以停止广播。   运行  BLEAppUtil_advStart (peripheralAdvHandle_1、&advSetStartParamsSet_1);以 BLEAPPUTIL_ADV_END_AFTER_DISABLE 为情况:将其设为 Re 广播。

但未能成功实现,广播停止但无法重新启动。我想这是否正常?如果这不正常,我如何使它停止 然后重新开始定期广播?

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

    您好:

    您是否想提供相关代码?

    此致、

    Nima Behmanesh

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

    您好:

    这是我的代码。

    void ad_timeout_callback(TimerHandle_t xTimer)
    {
        BLEAppUtil_advStop(peripheralAdvHandle_1);
    }
    
    void Peripheral_AdvEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
    {
        switch(event)
        {
            case BLEAPPUTIL_ADV_START_AFTER_ENABLE:
            {
                ad_timeout_handle = xTimerCreate("Timer all timeout", pdMS_TO_TICKS(3000), pdFALSE, (void *)1, &ad_timeout_callback);
                xTimerStart(ad_timeout_handle, 0);
    
                MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Started - handle: "
                                  MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
                                  ((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
    
                break;
            }
    
            case BLEAPPUTIL_ADV_END_AFTER_DISABLE:
            {
                if(linkDB_NumActive() < linkDB_NumConns())
                {
                    BLEAppUtil_advStart(peripheralAdvHandle_1, &advSetStartParamsSet_1);
                }
                MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Ended - handle: "
                                  MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
                                  ((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
    
                break;
            }
    
            default:
            {
                break;
            }
        }
    }
    
    void Peripheral_GAPConnEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
    {
        switch(event)
        {
            case BLEAPPUTIL_LINK_ESTABLISHED_EVENT:
            {
                /* Check if we reach the maximum allowed number of connections */
                if(linkDB_NumActive() < linkDB_NumConns())
                {
                    /* Start advertising since there is room for more connections */
                    BLEAppUtil_advStart(peripheralAdvHandle_1, &advSetStartParamsSet_1);
                }
                else
                {
                    xTimerStop(ad_timeout_handle, 0);
                    /* Stop advertising since there is no room for more connections */
                    BLEAppUtil_advStop(peripheralAdvHandle_1);
                }
                break;
            }
        ...
    }

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

    您好:

    检查代码后、这似乎是正确的。

    您是否也会向我发送有关连接数量的 SysConfig 设置?  

    此外、还要尝试将广播结束代码包装在以下位置:

    void my_wrapper()
    {
        BLEAppUtil_advStop(peripheralAdvHandle_1);
    }
    
    void ad_timeout_callback(TimerHandle_t xTimer)
    {
        BLEAppUtil_invokeFunctionNoData(my_wrapper);
    }
    

    如果这不起作用、请告诉我。  

    此致、

    Nima Behmanesh

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

    您好:

     我的连接数设置为1。

     我尝试了你给的代码,它解决了我的问题。谢谢你 Nima。