/******************************************************************************* ** ** Function bta_pan_sm_execute ** ** Description State machine event handling function for PAN ** ** ** Returns void ** *******************************************************************************/ static void bta_pan_sm_execute(tBTA_PAN_SCB *p_scb, UINT16 event, tBTA_PAN_DATA *p_data) { tBTA_PAN_ST_TBL state_table; UINT8 action; int i; APPL_TRACE_EVENT3("PAN scb=%d event=0x%x state=%d", bta_pan_scb_to_idx(p_scb), event, p_scb->state); /* look up the state table for the current state */ state_table = bta_pan_st_tbl[p_scb->state]; event &= 0x00FF; /* set next state */ p_scb->state = state_table[event][BTA_PAN_NEXT_STATE]; /* execute action functions */ for (i = 0; i < BTA_PAN_ACTIONS; i++) { if ((action = state_table[event][i]) != BTA_PAN_IGNORE) { (*bta_pan_action[action])(p_scb, p_data); } else { break; } } }
/******************************************************************************* ** ** Function bta_pan_scb_dealloc ** ** Description Deallocate a link control block. ** ** ** Returns void ** *******************************************************************************/ void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb) { APPL_TRACE_DEBUG("bta_pan_scb_dealloc %d", bta_pan_scb_to_idx(p_scb)); if (p_scb->is_idle_timer_started == TRUE) { /* Ensure that timer is stopped */ btu_stop_timer (&p_scb->idle_tle); } memset(p_scb, 0, sizeof(tBTA_PAN_SCB)); }
/******************************************************************************* ** ** Function bta_pan_scb_dealloc ** ** Description Deallocate a link control block. ** ** ** Returns void ** *******************************************************************************/ void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb) { APPL_TRACE_DEBUG1("bta_pan_scb_dealloc %d", bta_pan_scb_to_idx(p_scb)); memset(p_scb, 0, sizeof(tBTA_PAN_SCB)); }