1*7eba2f3bSAndroid Build Coastguard Worker #include "fuzz_cmn.h"
2*7eba2f3bSAndroid Build Coastguard Worker #include "rw_int.h"
3*7eba2f3bSAndroid Build Coastguard Worker
4*7eba2f3bSAndroid Build Coastguard Worker // These are the functions implemented elsewhere in the NFC code. Our fuzzing
5*7eba2f3bSAndroid Build Coastguard Worker // doesn't need them. To avoid pulling into more source code we simply stub
6*7eba2f3bSAndroid Build Coastguard Worker // them out.
7*7eba2f3bSAndroid Build Coastguard Worker
8*7eba2f3bSAndroid Build Coastguard Worker tNFA_PROPRIETARY_CFG nfa_proprietary_cfg = {
9*7eba2f3bSAndroid Build Coastguard Worker 0x80, /* NCI_PROTOCOL_18092_ACTIVE */
10*7eba2f3bSAndroid Build Coastguard Worker 0x81, /* NCI_PROTOCOL_B_PRIME */
11*7eba2f3bSAndroid Build Coastguard Worker 0x82, /* NCI_PROTOCOL_DUAL */
12*7eba2f3bSAndroid Build Coastguard Worker 0x83, /* NCI_PROTOCOL_15693 */
13*7eba2f3bSAndroid Build Coastguard Worker 0x8A, /* NCI_PROTOCOL_KOVIO */
14*7eba2f3bSAndroid Build Coastguard Worker 0xFF, /* NCI_PROTOCOL_MIFARE */
15*7eba2f3bSAndroid Build Coastguard Worker 0x77, /* NCI_DISCOVERY_TYPE_POLL_KOVIO */
16*7eba2f3bSAndroid Build Coastguard Worker 0x74, /* NCI_DISCOVERY_TYPE_POLL_B_PRIME */
17*7eba2f3bSAndroid Build Coastguard Worker 0xF4, /* NCI_DISCOVERY_TYPE_LISTEN_B_PRIME */
18*7eba2f3bSAndroid Build Coastguard Worker };
19*7eba2f3bSAndroid Build Coastguard Worker
20*7eba2f3bSAndroid Build Coastguard Worker tRW_CB rw_cb = {};
21*7eba2f3bSAndroid Build Coastguard Worker
22*7eba2f3bSAndroid Build Coastguard Worker tNFA_PROPRIETARY_CFG* p_nfa_proprietary_cfg =
23*7eba2f3bSAndroid Build Coastguard Worker (tNFA_PROPRIETARY_CFG*)&nfa_proprietary_cfg;
24*7eba2f3bSAndroid Build Coastguard Worker
nfc_start_quick_timer(TIMER_LIST_ENT *,uint16_t,uint32_t)25*7eba2f3bSAndroid Build Coastguard Worker void nfc_start_quick_timer(TIMER_LIST_ENT*, uint16_t, uint32_t) {}
nfc_stop_timer(TIMER_LIST_ENT *)26*7eba2f3bSAndroid Build Coastguard Worker void nfc_stop_timer(TIMER_LIST_ENT*) {}
nfc_stop_quick_timer(TIMER_LIST_ENT *)27*7eba2f3bSAndroid Build Coastguard Worker void nfc_stop_quick_timer(TIMER_LIST_ENT*) {}
NFC_GetNCIVersion()28*7eba2f3bSAndroid Build Coastguard Worker uint8_t NFC_GetNCIVersion() { return NCI_VERSION_2_0; }
29*7eba2f3bSAndroid Build Coastguard Worker
NFC_SendData(uint8_t conn_id,NFC_HDR * p_data)30*7eba2f3bSAndroid Build Coastguard Worker tNFC_STATUS NFC_SendData(uint8_t conn_id, NFC_HDR* p_data) {
31*7eba2f3bSAndroid Build Coastguard Worker uint8_t* p = (uint8_t*)(p_data + 1) + p_data->offset;
32*7eba2f3bSAndroid Build Coastguard Worker uint8_t len = (uint8_t)p_data->len;
33*7eba2f3bSAndroid Build Coastguard Worker
34*7eba2f3bSAndroid Build Coastguard Worker FUZZLOG("conn_id=%d, data=%s", conn_id, BytesToHex(p, len).c_str());
35*7eba2f3bSAndroid Build Coastguard Worker GKI_freebuf(p_data);
36*7eba2f3bSAndroid Build Coastguard Worker return NFC_STATUS_OK;
37*7eba2f3bSAndroid Build Coastguard Worker }
38*7eba2f3bSAndroid Build Coastguard Worker
nci_snd_t3t_polling(uint16_t system_code,uint8_t rc,uint8_t tsn)39*7eba2f3bSAndroid Build Coastguard Worker uint8_t nci_snd_t3t_polling(uint16_t system_code, uint8_t rc, uint8_t tsn) {
40*7eba2f3bSAndroid Build Coastguard Worker FUZZLOG("sc=%04X, rc=%02X, tsn=%02X", system_code, rc, tsn);
41*7eba2f3bSAndroid Build Coastguard Worker return NFC_STATUS_OK;
42*7eba2f3bSAndroid Build Coastguard Worker }
43*7eba2f3bSAndroid Build Coastguard Worker
44*7eba2f3bSAndroid Build Coastguard Worker tNFC_CONN_CBACK* rf_cback = nullptr;
NFC_SetStaticRfCback(tNFC_CONN_CBACK * p_cback)45*7eba2f3bSAndroid Build Coastguard Worker void NFC_SetStaticRfCback(tNFC_CONN_CBACK* p_cback) { rf_cback = p_cback; }
46*7eba2f3bSAndroid Build Coastguard Worker
NFC_ISODEPNakPresCheck()47*7eba2f3bSAndroid Build Coastguard Worker tNFC_STATUS NFC_ISODEPNakPresCheck() { return NFC_STATUS_OK; }
48*7eba2f3bSAndroid Build Coastguard Worker
NFC_GetStatusName(tNFC_STATUS status)49*7eba2f3bSAndroid Build Coastguard Worker std::string NFC_GetStatusName(tNFC_STATUS status) {
50*7eba2f3bSAndroid Build Coastguard Worker switch (status) {
51*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_OK:
52*7eba2f3bSAndroid Build Coastguard Worker return "OK";
53*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_REJECTED:
54*7eba2f3bSAndroid Build Coastguard Worker return "REJECTED";
55*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_MSG_CORRUPTED:
56*7eba2f3bSAndroid Build Coastguard Worker return "CORRUPTED";
57*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_BUFFER_FULL:
58*7eba2f3bSAndroid Build Coastguard Worker return "BUFFER_FULL";
59*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_FAILED:
60*7eba2f3bSAndroid Build Coastguard Worker return "FAILED";
61*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_NOT_INITIALIZED:
62*7eba2f3bSAndroid Build Coastguard Worker return "NOT_INITIALIZED";
63*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_SYNTAX_ERROR:
64*7eba2f3bSAndroid Build Coastguard Worker return "SYNTAX_ERROR";
65*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_SEMANTIC_ERROR:
66*7eba2f3bSAndroid Build Coastguard Worker return "SEMANTIC_ERROR";
67*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_UNKNOWN_GID:
68*7eba2f3bSAndroid Build Coastguard Worker return "UNKNOWN_GID";
69*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_UNKNOWN_OID:
70*7eba2f3bSAndroid Build Coastguard Worker return "UNKNOWN_OID";
71*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_INVALID_PARAM:
72*7eba2f3bSAndroid Build Coastguard Worker return "INVALID_PARAM";
73*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_MSG_SIZE_TOO_BIG:
74*7eba2f3bSAndroid Build Coastguard Worker return "MSG_SIZE_TOO_BIG";
75*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_ALREADY_STARTED:
76*7eba2f3bSAndroid Build Coastguard Worker return "ALREADY_STARTED";
77*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_ACTIVATION_FAILED:
78*7eba2f3bSAndroid Build Coastguard Worker return "ACTIVATION_FAILED";
79*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_TEAR_DOWN:
80*7eba2f3bSAndroid Build Coastguard Worker return "TEAR_DOWN";
81*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_RF_TRANSMISSION_ERR:
82*7eba2f3bSAndroid Build Coastguard Worker return "RF_TRANSMISSION_ERR";
83*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_RF_PROTOCOL_ERR:
84*7eba2f3bSAndroid Build Coastguard Worker return "RF_PROTOCOL_ERR";
85*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_TIMEOUT:
86*7eba2f3bSAndroid Build Coastguard Worker return "TIMEOUT";
87*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_EE_INTF_ACTIVE_FAIL:
88*7eba2f3bSAndroid Build Coastguard Worker return "EE_INTF_ACTIVE_FAIL";
89*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_EE_TRANSMISSION_ERR:
90*7eba2f3bSAndroid Build Coastguard Worker return "EE_TRANSMISSION_ERR";
91*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_EE_PROTOCOL_ERR:
92*7eba2f3bSAndroid Build Coastguard Worker return "EE_PROTOCOL_ERR";
93*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_EE_TIMEOUT:
94*7eba2f3bSAndroid Build Coastguard Worker return "EE_TIMEOUT";
95*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_CMD_STARTED:
96*7eba2f3bSAndroid Build Coastguard Worker return "CMD_STARTED";
97*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_HW_TIMEOUT:
98*7eba2f3bSAndroid Build Coastguard Worker return "HW_TIMEOUT";
99*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_CONTINUE:
100*7eba2f3bSAndroid Build Coastguard Worker return "CONTINUE";
101*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_REFUSED:
102*7eba2f3bSAndroid Build Coastguard Worker return "REFUSED";
103*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_BAD_RESP:
104*7eba2f3bSAndroid Build Coastguard Worker return "BAD_RESP";
105*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_CMD_NOT_CMPLTD:
106*7eba2f3bSAndroid Build Coastguard Worker return "CMD_NOT_CMPLTD";
107*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_NO_BUFFERS:
108*7eba2f3bSAndroid Build Coastguard Worker return "NO_BUFFERS";
109*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_WRONG_PROTOCOL:
110*7eba2f3bSAndroid Build Coastguard Worker return "WRONG_PROTOCOL";
111*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_BUSY:
112*7eba2f3bSAndroid Build Coastguard Worker return "BUSY";
113*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_LINK_LOSS:
114*7eba2f3bSAndroid Build Coastguard Worker return "LINK_LOSS";
115*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_BAD_LENGTH:
116*7eba2f3bSAndroid Build Coastguard Worker return "BAD_LENGTH";
117*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_BAD_HANDLE:
118*7eba2f3bSAndroid Build Coastguard Worker return "BAD_HANDLE";
119*7eba2f3bSAndroid Build Coastguard Worker case NFC_STATUS_CONGESTED:
120*7eba2f3bSAndroid Build Coastguard Worker return "CONGESTED";
121*7eba2f3bSAndroid Build Coastguard Worker default:
122*7eba2f3bSAndroid Build Coastguard Worker return "UNKNOWN";
123*7eba2f3bSAndroid Build Coastguard Worker }
124*7eba2f3bSAndroid Build Coastguard Worker }