问题原因:在停止广播时候,由于BT协议栈没有停止开始广播时设置的timer,导致后面广播中timer时间到后被触发,导致广播停止。
修复方案:在停止广播时同时停止协议栈的timer。
参考文件:
在btm_ble_multi_adv.cc文件中Unregister()函数最后添加alarm_cancel(p_inst->timeout_timer);
btm_ble_multi_adv.cc - OpenGrok cross reference for /packages/modules/Bluetooth/system/stack/btm/btm_ble_multi_adv.cc
部分关键code
std::vector<AdvertisingInstance> adv_inst;
AdvertisingInstance* p_inst = &adv_inst[0];
92 AdvertisingInstance(int inst_id)
93 : inst_id(inst_id),
94 in_use(false),
95 advertising_event_properties(0),
96 tx_power(0),
97 duration(0),
98 timeo