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.

[参考译文] CC2650STK:在连接和未连接时修改广播周期

Guru**** 2445440 points
Other Parts Discussed in Thread: CC2650STK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/632888/cc2650stk-modify-advertising-period-when-connected-and-not-connected

器件型号:CC2650STK

你(们)好

在基于 Sensortag CC2650STK 的设计中、我需要降低功耗、并尝试修改广播周期:

连接时为200ms、断开时为2s

我尝试使用 :default_advertising_interval (在 sensortag.c 中定义)。

我在 peripheral.c 文件中找到函数"static void gapRole_processGAPMsg (gapEventHdr_t *pMsg)"、其中我们找到了我感兴趣的两个事件:GAP_LINK_established _event 和 GAP_LINK_TERMINATED_EVENT。

我曾尝试修改同步两个事件的广播间隔、但它似乎不起作用...

是否可以修改广播间隔?

感谢您的帮助、建议、代码示例

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

    有关如何更改广播数据的信息、请参阅简单的 eddystone 信标项目

    github.com/.../simple_eddystone
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经检查了您指示的项目(简单的 eddystone 信标项目)、但通常只有有关广播的信息、我看不到在使用期间根据我的需要进行修改的机制、在连接 Dnot connect 时使用不同的间隔

    静态空 SensorTag_init (空)


    //设置广播间隔

    uint16_t advInt = default_advertising_interval;

    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MAX、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MAX、advInt);




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

    啊,我明白,很抱歉,这种混乱。

    simple_peripheral.c 的+_Broadcaster 配置在连接时将从可连接广播切换到非可连接广播。

    这是在运行时完成的、我相信关键是广播停止、参数更新、然后重新启动。

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

    我不理解您指定的源代码:出于节能考虑,我需要将连接时的广播间隔从100ms 修改为断开时的2s

    我尝试在以下字体中进行这些修改:static void SensorTag_processStateChangeEvt (gaprole_states_t newState),方法是修改两种情况的代码:

    案例 GAPROLE_等待:

    if (first_time_waiting=0)

    SensorTagait_reset ();

    //设置广播间隔

    uint16_t advInt = 8000;

    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MAX、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MAX、advInt);

    first_time_waiting=1;
    first_time_connected = 0;


    中断;



    案例 GAPROLE_Connected:

    如果(first_time_connected = 0)

    //设置广播间隔

    uint16_t advInt = default_advertising_interval;

    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_LIM_DISC_ADV_INT_MAX、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MIN、advInt);
    GAP_SetParamValue (TGAP_GEN_DISC_ADV_INT_MAX、advInt);

    first_time_connected = 1;
    first_time_waiting=0;


    //启动时钟
    if (!Util_isActive (周期时钟))

    Util_startClock (周期时钟);


    //启动 sendClock
    如果(!Util_isActive (&sendPeriodicClock)))

    Util_startClock (&sendPeriodicClock);


    // LED 和蜂鸣器的转动
    PIN_setOutputValue (hGpioPin、Board_LED1、Board_LED_OFF);
    PIN_setOutputValue (hGpioPin、Board_LED2、Board_LED_OFF);

    中断;

    您对此方法有何看法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我指的是简单外设项目。 假设您使用的是最新的2.2.x SDK、可在此处找到:
    C:\ti\simplelink\ble_sdk_2_02_01_18\src\examples\simple_peripheral\cc26xx\app\simple_peripheral.c

    具体而言、我指的是 PLUS_Broadcaster define。 它在连接时处理广播。

    关键点是、您需要停止并重新启动广播以更改广播参数。