/******************************************************************************* ** ** Function rw_t2t_conn_cback ** ** Description This callback function receives events/data from NFCC. ** ** Returns none ** *******************************************************************************/ void rw_t2t_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data) { tRW_T2T_CB *p_t2t = &rw_cb.tcb.t2t; tRW_READ_DATA evt_data; RW_TRACE_DEBUG2 ("rw_t2t_conn_cback: conn_id=%i, evt=%i", conn_id, event); /* Only handle static conn_id */ if (conn_id != NFC_RF_CONN_ID) { return; } switch (event) { case NFC_CONN_CREATE_CEVT: case NFC_CONN_CLOSE_CEVT: break; case NFC_DEACTIVATE_CEVT: #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) /* Display stats */ rw_main_log_stats (); #endif /* Stop t2t timer (if started) */ nfc_stop_quick_timer (&p_t2t->t2_timer); /* Free cmd buf for retransmissions */ if (p_t2t->p_cur_cmd_buf) { GKI_freebuf (p_t2t->p_cur_cmd_buf); p_t2t->p_cur_cmd_buf = NULL; } /* Free cmd buf used to hold command before sector change */ if (p_t2t->p_sec_cmd_buf) { GKI_freebuf (p_t2t->p_sec_cmd_buf); p_t2t->p_sec_cmd_buf = NULL; } p_t2t->state = RW_T2T_STATE_NOT_ACTIVATED; NFC_SetStaticRfCback (NULL); break; case NFC_DATA_CEVT: if ( (p_data != NULL) &&( (p_data->data.status == NFC_STATUS_OK) ||(p_data->data.status == NFC_STATUS_CONTINUE) ) ) { rw_t2t_proc_data (conn_id, &(p_data->data)); break; } /* Data event with error status...fall through to NFC_ERROR_CEVT case */ case NFC_ERROR_CEVT: if ( (p_t2t->state == RW_T2T_STATE_NOT_ACTIVATED) ||(p_t2t->state == RW_T2T_STATE_IDLE) ||(p_t2t->state == RW_T2T_STATE_HALT) ) { #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) rw_main_update_trans_error_stats (); #endif /* RW_STATS_INCLUDED */ if (event == NFC_ERROR_CEVT) evt_data.status = (tNFC_STATUS) (*(UINT8*) p_data); else if (p_data) evt_data.status = p_data->status; else evt_data.status = NFC_STATUS_FAILED; evt_data.p_data = NULL; (*rw_cb.p_cback) (RW_T2T_INTF_ERROR_EVT, (tRW_DATA *) &evt_data); break; } nfc_stop_quick_timer (&p_t2t->t2_timer); #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) rw_main_update_trans_error_stats (); #endif if (p_t2t->state == RW_T2T_STATE_CHECK_PRESENCE) { if (p_t2t->check_tag_halt) { p_t2t->state = RW_T2T_STATE_HALT; rw_t2t_handle_presence_check_rsp (NFC_STATUS_REJECTED); } else { /* Move back to idle state */ rw_t2t_handle_presence_check_rsp (NFC_STATUS_FAILED); } } else { rw_t2t_process_error (); } #if(NFC_NXP_NOT_OPEN_INCLUDED == TRUE) /* Free the response buffer in case of invalid response*/ if (p_data != NULL) { GKI_freebuf((BT_HDR *) (p_data->data.p_data)); } #endif break; default: break; } }
/******************************************************************************* ** ** Function rw_t1t_conn_cback ** ** Description This callback function receives the events/data from NFCC. ** ** Returns none ** *******************************************************************************/ void rw_t1t_conn_cback (UINT8 conn_id, tNFC_CONN_EVT event, tNFC_CONN *p_data) { tRW_T1T_CB *p_t1t = &rw_cb.tcb.t1t; tRW_READ_DATA evt_data; RW_TRACE_DEBUG2 ("rw_t1t_conn_cback: conn_id=%i, evt=0x%x", conn_id, event); /* Only handle static conn_id */ if (conn_id != NFC_RF_CONN_ID) { RW_TRACE_WARNING1 ("rw_t1t_conn_cback - Not static connection id: =%i", conn_id); return; } switch (event) { case NFC_CONN_CREATE_CEVT: case NFC_CONN_CLOSE_CEVT: break; case NFC_DEACTIVATE_CEVT: #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) /* Display stats */ rw_main_log_stats (); #endif /* RW_STATS_INCLUDED */ /* Stop t1t timer (if started) */ nfc_stop_quick_timer (&p_t1t->timer); /* Free cmd buf for retransmissions */ if (p_t1t->p_cur_cmd_buf) { GKI_freebuf (p_t1t->p_cur_cmd_buf); p_t1t->p_cur_cmd_buf = NULL; } p_t1t->state = RW_T1T_STATE_NOT_ACTIVATED; NFC_SetStaticRfCback (NULL); break; case NFC_DATA_CEVT: if ( (p_data != NULL) &&(p_data->data.status == NFC_STATUS_OK) ) { rw_t1t_data_cback (conn_id, event, p_data); break; } /* Data event with error status...fall through to NFC_ERROR_CEVT case */ case NFC_ERROR_CEVT: if ( (p_t1t->state == RW_T1T_STATE_NOT_ACTIVATED) ||(p_t1t->state == RW_T1T_STATE_IDLE) ) { #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) rw_main_update_trans_error_stats (); #endif /* RW_STATS_INCLUDED */ if (event == NFC_ERROR_CEVT) evt_data.status = (tNFC_STATUS) (*(UINT8*) p_data); else if (p_data) evt_data.status = p_data->status; else evt_data.status = NFC_STATUS_FAILED; evt_data.p_data = NULL; (*rw_cb.p_cback) (RW_T1T_INTF_ERROR_EVT, (tRW_DATA *) &evt_data); break; } nfc_stop_quick_timer (&p_t1t->timer); #if (defined (RW_STATS_INCLUDED) && (RW_STATS_INCLUDED == TRUE)) rw_main_update_trans_error_stats (); #endif /* RW_STATS_INCLUDED */ if (p_t1t->state == RW_T1T_STATE_CHECK_PRESENCE) { rw_t1t_handle_presence_check_rsp (NFC_STATUS_FAILED); } else { rw_t1t_process_error (); } break; default: break; } }