/******************************************************************************* ** ** Function nfc_process_timer_evt ** ** Description Process nfc GKI timer event ** ** Returns void ** *******************************************************************************/ void nfc_process_timer_evt (void) { TIMER_LIST_ENT *p_tle; GKI_update_timer_list (&nfc_cb.timer_queue, 1); while ((nfc_cb.timer_queue.p_first) && (!nfc_cb.timer_queue.p_first->ticks)) { p_tle = nfc_cb.timer_queue.p_first; GKI_remove_from_timer_list (&nfc_cb.timer_queue, p_tle); switch (p_tle->event) { case NFC_TTYPE_NCI_WAIT_RSP: nfc_ncif_cmd_timeout(); break; case NFC_TTYPE_WAIT_2_DEACTIVATE: nfc_wait_2_deactivate_timeout (); break; default: NFC_TRACE_DEBUG2 ("nfc_process_timer_evt: timer:0x%x event (0x%04x)", p_tle, p_tle->event); NFC_TRACE_DEBUG1 ("nfc_process_timer_evt: unhandled timer event (0x%04x)", p_tle->event); } } /* if timer list is empty stop periodic GKI timer */ if (nfc_cb.timer_queue.p_first == NULL) { GKI_stop_timer (NFC_TIMER_ID); } }
/******************************************************************************* ** ** Function nfc_process_timer_evt ** ** Description Process nfc GKI timer event ** ** Returns void ** *******************************************************************************/ void nfc_process_timer_evt (void) { TIMER_LIST_ENT *p_tle; GKI_update_timer_list (&nfc_cb.timer_queue, 1); while ((nfc_cb.timer_queue.p_first) && (!nfc_cb.timer_queue.p_first->ticks)) { p_tle = nfc_cb.timer_queue.p_first; GKI_remove_from_timer_list (&nfc_cb.timer_queue, p_tle); switch (p_tle->event) { case NFC_TTYPE_NCI_WAIT_RSP: nfc_ncif_cmd_timeout(); break; case NFC_TTYPE_WAIT_2_DEACTIVATE: nfc_wait_2_deactivate_timeout (); break; case NFC_TTYPE_NCI_WAIT_DATA_NTF: { nfc_cb.i2c_data_t.nci_cmd_channel_busy = 0; nfc_cb.i2c_data_t.data_stored = 0; nfc_ncif_credit_ntf_timeout(); break; } #if(NFC_NXP_NOT_OPEN_INCLUDED == TRUE) case NFC_TTYPE_LISTEN_ACTIVATION: { extern UINT8 sListenActivated; sListenActivated = FALSE; nfc_ncif_cmd_timeout(); } break; #endif default: NFC_TRACE_DEBUG2 ("nfc_process_timer_evt: timer:0x%x event (0x%04x)", p_tle, p_tle->event); NFC_TRACE_DEBUG1 ("nfc_process_timer_evt: unhandled timer event (0x%04x)", p_tle->event); } } /* if timer list is empty stop periodic GKI timer */ if (nfc_cb.timer_queue.p_first == NULL) { GKI_stop_timer (NFC_TIMER_ID); } }
/******************************************************************************* ** ** Function nci_proc_ee_management_ntf ** ** Description Process NCI notifications in the NFCEE Management group ** ** Returns void ** *******************************************************************************/ void nci_proc_ee_management_ntf (BT_HDR *p_msg) { UINT8 *p; UINT8 *pp, len, op_code; tNFC_RESPONSE_CBACK *p_cback = nfc_cb.p_resp_cback; tNFC_NFCEE_INFO_REVT nfcee_info; tNFC_RESPONSE *p_evt = (tNFC_RESPONSE *) &nfcee_info; tNFC_RESPONSE_EVT event = NFC_NFCEE_INFO_REVT; UINT8 xx; UINT8 yy; UINT8 ee_status; tNFC_NFCEE_TLV *p_tlv; /* find the start of the NCI message and parse the NCI header */ p = (UINT8 *) (p_msg + 1) + p_msg->offset; pp = p+1; NCI_MSG_PRS_HDR1 (pp, op_code); NFC_TRACE_DEBUG1 ("nci_proc_ee_management_ntf opcode:0x%x", op_code); len = *pp++; if (op_code == NCI_MSG_NFCEE_DISCOVER) { nfcee_info.nfcee_id = *pp++; ee_status = *pp++; nfcee_info.ee_status = ee_status; yy = *pp; nfcee_info.num_interface = *pp++; p = pp; if (nfcee_info.num_interface > NFC_MAX_EE_INTERFACE) nfcee_info.num_interface = NFC_MAX_EE_INTERFACE; for (xx = 0; xx < nfcee_info.num_interface; xx++) { nfcee_info.ee_interface[xx] = *pp++; } pp = p + yy; nfcee_info.num_tlvs = *pp++; NFC_TRACE_DEBUG4 ("nfcee_id: 0x%x num_interface:0x%x/0x%x, num_tlvs:0x%x", nfcee_info.nfcee_id, nfcee_info.num_interface, yy, nfcee_info.num_tlvs); if (nfcee_info.num_tlvs > NFC_MAX_EE_TLVS) nfcee_info.num_tlvs = NFC_MAX_EE_TLVS; p_tlv = &nfcee_info.ee_tlv[0]; for (xx = 0; xx < nfcee_info.num_tlvs; xx++, p_tlv++) { p_tlv->tag = *pp++; p_tlv->len = yy = *pp++; NFC_TRACE_DEBUG2 ("tag:0x%x, len:0x%x", p_tlv->tag, p_tlv->len); if (p_tlv->len > NFC_MAX_EE_INFO) p_tlv->len = NFC_MAX_EE_INFO; p = pp; STREAM_TO_ARRAY (p_tlv->info, pp, p_tlv->len); pp = p += yy; } } else { p_cback = NULL; NFC_TRACE_ERROR1 ("unknown opcode:0x%x", op_code); } if (p_cback) (*p_cback) (event, p_evt); }