This fixes an event handling issue in the cc26xx BLE driver. Currently, the rf_ble_beacon_process triggers the BLE beacon upon receiving any event, rather than verifying that the event timer has expired. This means that any PROCESS_BROADCAST (e.g. any sensor event) will fire the beacon. This commit adds logic to prevent this.

This commit is contained in:
Phil Rhinehart 2016-04-18 17:02:07 +08:00
parent c9baf0cb57
commit 2a07dc0e0a

View File

@ -256,7 +256,7 @@ PROCESS_THREAD(rf_ble_beacon_process, ev, data)
while(1) {
etimer_set(&ble_adv_et, beacond_config.interval);
PROCESS_WAIT_EVENT();
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&ble_adv_et) || ev == PROCESS_EVENT_EXIT);
if(ev == PROCESS_EVENT_EXIT) {
PROCESS_EXIT();
@ -374,7 +374,7 @@ PROCESS_THREAD(rf_ble_beacon_process, ev, data)
/* Wait unless this is the last burst */
if(i < BLE_ADV_MESSAGES - 1) {
PROCESS_WAIT_EVENT();
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&ble_adv_et));
}
}