需求: 只需要发送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. 空中包抓包图 注意: 广播间隔还是得按照协议规定来。间隔太小容易发不出广播。 |