【RF 事件】 6621E发送指定数量的广播包

wen sir · 109次点击 · 3个月前


需求: 只需要发送10轮广播,共10x3个广播包,如何实现

解决: 6621E SDK 并没有提供指定次数广播的实现,可以利用RF事件,对广播进行计数。 达到设定值后就停止广播,来实现此需求。


unsigned adv_event_counter = 0;
void rf_event(void)
{
    log_debug("%d.", adv_event_counter);
    if (adv_event_counter)
    {
        adv_event_counter--; //计数减1
        if (adv_event_counter == 0)
        {
            gap_adv_stop();//停止广播
        }
    }
}



int main(void)
{
    hardware_init();
.....
    adv_event_counter = 10;  //设置广播次数

    rf_event_register(rf_event); // 注册RF事件回调

    

 app_adv_restart(&gap_addr); //开始广播
.....
    // Enter main loop.
    co_sche();
    return 0;
}


运行Log

[20:09:41.246]收←◆8.

[20:09:41.270]收←◆7.6.5.

[20:09:41.340]收←◆4.

[20:09:41.364]收←◆3.2.

[20:09:41.420]收←◆1.

[20:09:46.552]收←◆running 0

10.9.



空中包抓包图

image.png


注意: 广播间隔还是得按照协议规定来。间隔太小容易发不出广播。

被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站