在一些特定场合或者测试要求,需要送特定数量的广播包,6626实现方式之一,利用RF事件回调进行计数。 //----------- unsigned adv_event_counter = 0; void bb_frame_handle(bool ongoing) { if (ongoing) { OM_LOG_DEBUG("ADV cntter =%d \r\n", adv_event_counter); if (adv_event_counter) { adv_event_counter--; if (adv_event_counter == 0) { app_adv_stop(0); } } } } //当然,还要加一些状态区分判断 ,如连接时,不应该计入广播包 在开启广播前,注册RF回调,并设置期望的广播次数。 ......... __enable_irq(); adv_event_counter = 10; //设定广播次数 obc_bb_frame_ongoing_callback_register(bb_frame_handle); //注册RF事件回调 user_ads_set(true); //开启广播 ........ while (1) { evt_schedule(); OM_CRITICAL_BEGIN(); if (evt_get_all() == 0) { pm_power_manage(); } OM_CRITICAL_END(); } 输出Log 空中包可见,进行了10 轮/次的广播包发射。 |