Fix conflict vendor proprietary Protocol and Discovery technology definitions
A new configuration option is added.
Vendor should provide their own definition in libnfc-brcm.conf file.
Change-Id: I8204fbb97bcb59ecf7b450b701546646e1952a78
diff --git a/src/adaptation/NfcAdaptation.cpp b/src/adaptation/NfcAdaptation.cpp
index 99bc87d..841c04a 100644
--- a/src/adaptation/NfcAdaptation.cpp
+++ b/src/adaptation/NfcAdaptation.cpp
@@ -22,6 +22,7 @@
#include "gki.h"
#include "nfa_api.h"
#include "nfc_int.h"
+ #include "vendor_cfg.h"
}
#include "config.h"
#include "android_logmsg.h"
@@ -47,7 +48,9 @@
char nci_hal_module[64];
static UINT8 nfa_dm_cfg[sizeof ( tNFA_DM_CFG ) ];
+static UINT8 nfa_proprietary_cfg[sizeof ( tNFA_PROPRIETARY_CFG )];
extern tNFA_DM_CFG *p_nfa_dm_cfg;
+extern tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg;
extern UINT8 nfa_ee_max_ee_cfg;
extern const UINT8 nfca_version_string [];
extern const UINT8 nfa_version_string [];
@@ -148,6 +151,11 @@
ALOGD("%s: Overriding NFA_POLL_BAIL_OUT_MODE to use %d", func, nfa_poll_bail_out_mode);
}
+ if ( GetStrValue ( NAME_NFA_PROPRIETARY_CFG, (char*)nfa_proprietary_cfg, sizeof ( tNFA_PROPRIETARY_CFG ) ) )
+ {
+ p_nfa_proprietary_cfg = (tNFA_PROPRIETARY_CFG*) &nfa_proprietary_cfg[0];
+ }
+
//configure device host whitelist of HCI host ID's; see specification ETSI TS 102 622 V11.1.10
//(2012-10), section 6.1.3.1
num = GetStrValue ( NAME_DEVICE_HOST_WHITE_LIST, (char*) deviceHostWhiteList, sizeof ( deviceHostWhiteList ) );
diff --git a/src/hal/include/nci_defs.h b/src/hal/include/nci_defs.h
index 2ff50a7..027dd21 100644
--- a/src/hal/include/nci_defs.h
+++ b/src/hal/include/nci_defs.h
@@ -377,25 +377,6 @@
#define NCI_PROTOCOL_T3T 0x03
#define NCI_PROTOCOL_ISO_DEP 0x04
#define NCI_PROTOCOL_NFC_DEP 0x05
-/**********************************************
- * Proprietary Protocols
- **********************************************/
-#ifndef NCI_PROTOCOL_18092_ACTIVE
-#define NCI_PROTOCOL_18092_ACTIVE 0x80
-#endif
-#ifndef NCI_PROTOCOL_B_PRIME
-#define NCI_PROTOCOL_B_PRIME 0x81
-#endif
-#ifndef NCI_PROTOCOL_DUAL
-#define NCI_PROTOCOL_DUAL 0x82
-#endif
-#ifndef NCI_PROTOCOL_15693
-#define NCI_PROTOCOL_15693 0x83
-#endif
-#ifndef NCI_PROTOCOL_KOVIO
-#define NCI_PROTOCOL_KOVIO 0x8a
-#endif
-
/* Discovery Types/Detected Technology and Mode */
#define NCI_DISCOVERY_TYPE_POLL_A 0x00
@@ -403,14 +384,11 @@
#define NCI_DISCOVERY_TYPE_POLL_F 0x02
#define NCI_DISCOVERY_TYPE_POLL_A_ACTIVE 0x03
#define NCI_DISCOVERY_TYPE_POLL_F_ACTIVE 0x05
-#define NCI_DISCOVERY_TYPE_POLL_B_PRIME 0x74
-#define NCI_DISCOVERY_TYPE_POLL_KOVIO 0x77
#define NCI_DISCOVERY_TYPE_LISTEN_A 0x80
#define NCI_DISCOVERY_TYPE_LISTEN_B 0x81
#define NCI_DISCOVERY_TYPE_LISTEN_F 0x82
#define NCI_DISCOVERY_TYPE_LISTEN_A_ACTIVE 0x83
#define NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE 0x85
-#define NCI_DISCOVERY_TYPE_LISTEN_B_PRIME 0xF4
#define NCI_DISCOVERY_TYPE_POLL_ISO15693 0x06
#define NCI_DISCOVERY_TYPE_LISTEN_ISO15693 0x86
#define NCI_DISCOVERY_TYPE_MAX NCI_DISCOVERY_TYPE_LISTEN_ISO15693
diff --git a/src/include/config.h b/src/include/config.h
index 6b108dc..b41023b 100644
--- a/src/include/config.h
+++ b/src/include/config.h
@@ -89,6 +89,7 @@
#define NAME_GLOBAL_RESET "DO_GLOBAL_RESET"
#define NAME_NCI_HAL_MODULE "NCI_HAL_MODULE"
#define NAME_NFA_POLL_BAIL_OUT_MODE "NFA_POLL_BAIL_OUT_MODE"
+#define NAME_NFA_PROPRIETARY_CFG "NFA_PROPRIETARY_CFG"
#define LPTD_PARAM_LEN (40)
diff --git a/src/include/vendor_cfg.h b/src/include/vendor_cfg.h
new file mode 100644
index 0000000..8d30325
--- /dev/null
+++ b/src/include/vendor_cfg.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/******************************************************************************
+ *
+ * This file contains compile-time configurable constants for vendor specific proprietary protocols
+ *
+ ******************************************************************************/
+#ifndef __NFC_VENDOR_CFG_H__
+#define __NFC_VENDOR_CFG_H__
+
+/* compile-time configuration structure for proprietary protocol and discovery value */
+typedef struct
+{
+ UINT8 pro_protocol_18092_active;
+ UINT8 pro_protocol_b_prime;
+ UINT8 pro_protocol_dual;
+ UINT8 pro_protocol_15693;
+ UINT8 pro_protocol_kovio;
+
+ UINT8 pro_discovery_kovio_poll;
+ UINT8 pro_discovery_b_prime_poll;
+ UINT8 pro_discovery_b_prime_listen;
+} tNFA_PROPRIETARY_CFG;
+
+
+extern tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg;
+
+ /**********************************************
+ * Proprietary Protocols
+ **********************************************/
+#ifndef NCI_PROTOCOL_18092_ACTIVE
+#define NCI_PROTOCOL_18092_ACTIVE (p_nfa_proprietary_cfg->pro_protocol_18092_active)
+#endif
+#ifndef NCI_PROTOCOL_B_PRIME
+#define NCI_PROTOCOL_B_PRIME (p_nfa_proprietary_cfg->pro_protocol_b_prime)
+#endif
+#ifndef NCI_PROTOCOL_DUAL
+#define NCI_PROTOCOL_DUAL (p_nfa_proprietary_cfg->pro_protocol_dual)
+#endif
+#ifndef NCI_PROTOCOL_15693
+#define NCI_PROTOCOL_15693 (p_nfa_proprietary_cfg->pro_protocol_15693)
+#endif
+#ifndef NCI_PROTOCOL_KOVIO
+#define NCI_PROTOCOL_KOVIO (p_nfa_proprietary_cfg->pro_protocol_kovio)
+#endif
+
+ /**********************************************
+ * Proprietary Discovery technology and mode
+ **********************************************/
+#ifndef NCI_DISCOVERY_TYPE_POLL_KOVIO
+#define NCI_DISCOVERY_TYPE_POLL_KOVIO (p_nfa_proprietary_cfg->pro_discovery_kovio_poll)
+#endif
+
+#ifndef NCI_DISCOVERY_TYPE_POLL_B_PRIME
+#define NCI_DISCOVERY_TYPE_POLL_B_PRIME (p_nfa_proprietary_cfg->pro_discovery_b_prime_poll)
+#endif
+
+#ifndef NCI_DISCOVERY_TYPE_LISTEN_B_PRIME
+#define NCI_DISCOVERY_TYPE_LISTEN_B_PRIME (p_nfa_proprietary_cfg->pro_discovery_b_prime_listen)
+#endif
+
+#endif /* __NFC_VENDOR_CFG_H__ */
diff --git a/src/nfa/dm/nfa_dm_cfg.c b/src/nfa/dm/nfa_dm_cfg.c
index 285573e..a6d3173 100644
--- a/src/nfa/dm/nfa_dm_cfg.c
+++ b/src/nfa/dm/nfa_dm_cfg.c
@@ -123,3 +123,16 @@
tNFA_HCI_CFG *p_nfa_hci_cfg = (tNFA_HCI_CFG *) &nfa_hci_cfg;
BOOLEAN nfa_poll_bail_out_mode = FALSE;
+const tNFA_PROPRIETARY_CFG nfa_proprietary_cfg =
+{
+ 0x80, /* NCI_PROTOCOL_18092_ACTIVE */
+ 0x81, /* NCI_PROTOCOL_B_PRIME */
+ 0x82, /* NCI_PROTOCOL_DUAL */
+ 0x83, /* NCI_PROTOCOL_15693 */
+ 0x8A, /* NCI_PROTOCOL_KOVIO */
+ 0x77, /* NCI_DISCOVERY_TYPE_POLL_KOVIO */
+ 0x74, /* NCI_DISCOVERY_TYPE_POLL_B_PRIME */
+ 0xF4, /* NCI_DISCOVERY_TYPE_LISTEN_B_PRIME */
+};
+
+tNFA_PROPRIETARY_CFG *p_nfa_proprietary_cfg = (tNFA_PROPRIETARY_CFG *) &nfa_proprietary_cfg;
diff --git a/src/nfa/dm/nfa_dm_discover.c b/src/nfa/dm/nfa_dm_discover.c
index d0f5fd5..d0c4fe0 100644
--- a/src/nfa/dm/nfa_dm_discover.c
+++ b/src/nfa/dm/nfa_dm_discover.c
@@ -655,9 +655,8 @@
/* Set initial disc_mask to legacy poll or listen */
tNFA_DM_DISC_TECH_PROTO_MASK disc_mask = ((tech_n_mode & 0x80) ? NFA_DM_DISC_MASK_L_LEGACY : NFA_DM_DISC_MASK_P_LEGACY);
- switch (tech_n_mode)
+ if (NFC_DISCOVERY_TYPE_POLL_A == tech_n_mode)
{
- case NFC_DISCOVERY_TYPE_POLL_A:
switch (protocol)
{
case NFC_PROTOCOL_T1T:
@@ -673,34 +672,41 @@
disc_mask = NFA_DM_DISC_MASK_PA_NFC_DEP;
break;
}
- break;
- case NFC_DISCOVERY_TYPE_POLL_B:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_ISO_DEP)
disc_mask = NFA_DM_DISC_MASK_PB_ISO_DEP;
- break;
- case NFC_DISCOVERY_TYPE_POLL_F:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_T3T)
disc_mask = NFA_DM_DISC_MASK_PF_T3T;
else if (protocol == NFC_PROTOCOL_NFC_DEP)
disc_mask = NFA_DM_DISC_MASK_PF_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_POLL_ISO15693:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_ISO15693;
- break;
- case NFC_DISCOVERY_TYPE_POLL_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B_PRIME == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_B_PRIME;
- break;
- case NFC_DISCOVERY_TYPE_POLL_KOVIO:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_KOVIO == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_P_KOVIO;
- break;
- case NFC_DISCOVERY_TYPE_POLL_A_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_A_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_PAA_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_POLL_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_PFA_NFC_DEP;
- break;
-
- case NFC_DISCOVERY_TYPE_LISTEN_A:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_A == tech_n_mode)
+ {
switch (protocol)
{
case NFC_PROTOCOL_T1T:
@@ -716,29 +722,34 @@
disc_mask = NFA_DM_DISC_MASK_LA_NFC_DEP;
break;
}
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_B:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_B == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_ISO_DEP)
disc_mask = NFA_DM_DISC_MASK_LB_ISO_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_F:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_F == tech_n_mode)
+ {
if (protocol == NFC_PROTOCOL_T3T)
disc_mask = NFA_DM_DISC_MASK_LF_T3T;
else if (protocol == NFC_PROTOCOL_NFC_DEP)
disc_mask = NFA_DM_DISC_MASK_LF_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_ISO15693:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_L_ISO15693;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_B_PRIME == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_L_B_PRIME;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_LAA_NFC_DEP;
- break;
- case NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE == tech_n_mode)
+ {
disc_mask = NFA_DM_DISC_MASK_LFA_NFC_DEP;
- break;
}
NFA_TRACE_DEBUG3 ("nfa_dm_disc_get_disc_mask (): tech_n_mode:0x%X, protocol:0x%X, disc_mask:0x%X",
diff --git a/src/nfa/rw/nfa_rw_act.c b/src/nfa/rw/nfa_rw_act.c
index 465f457..bcb10e5 100644
--- a/src/nfa/rw/nfa_rw_act.c
+++ b/src/nfa/rw/nfa_rw_act.c
@@ -1487,33 +1487,33 @@
tNFC_PROTOCOL protocol = nfa_rw_cb.protocol;
tNFC_STATUS status = NFC_STATUS_FAILED;
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ /* Type1Tag - NFC-A */
status = RW_T1tDetectNDef();
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tDetectNDef(nfa_rw_cb.skip_dyn_locks);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tDetectNDef();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tDetectNDef();
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
status = RW_I93DetectNDef();
- break;
-
- default:
- break;
}
return(status);
@@ -1563,34 +1563,35 @@
}
nfa_rw_cb.ndef_rd_offset = 0;
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ /* Type1Tag - NFC-A */
status = RW_T1tReadNDef(nfa_rw_cb.p_ndef_buf,(UINT16)nfa_rw_cb.ndef_cur_size);
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tReadNDef(nfa_rw_cb.p_ndef_buf,(UINT16)nfa_rw_cb.ndef_cur_size);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
- status = RW_T3tCheckNDef();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
- status = RW_T4tReadNDef();
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
- status = RW_I93ReadNDef();
- break;
-
- default:
- break;
}
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
+ status = RW_T3tCheckNDef();
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
+ status = RW_T4tReadNDef();
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
+ status = RW_I93ReadNDef();
+ }
+
return(status);
}
@@ -1649,34 +1650,33 @@
}
else
{
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ /* Type1Tag - NFC-A */
status = RW_T1tWriteNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
-
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tWriteNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tUpdateNDef(nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tUpdateNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
status = RW_I93UpdateNDef((UINT16)nfa_rw_cb.ndef_wr_len, nfa_rw_cb.p_ndef_wr_buf);
- break;
-
- default:
- break;
}
}
@@ -1817,17 +1817,28 @@
UINT8 option = NFA_RW_OPTION_INVALID;
tNFA_RW_PRES_CHK_OPTION op_param = NFA_RW_PRES_CHK_DEFAULT;
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ /* Type1Tag - NFC-A */
status = RW_T1tPresenceCheck();
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* If T2T NFC-Forum, then let RW handle presence check; otherwise fall through */
+ if (sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
+ {
+ /* Type 2 tag have not sent NACK after activation */
+ status = RW_T2tPresenceCheck();
+ }
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tPresenceCheck();
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
if (p_data)
{
op_param = p_data->op_req.params.option;
@@ -1892,27 +1903,16 @@
/* use sleep/wake for presence check */
unsupported = TRUE;
}
-
-
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
status = RW_I93PresenceCheck();
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
- /* If T2T NFC-Forum, then let RW handle presence check; otherwise fall through */
- if (sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
- {
- /* Type 2 tag have not sent NACK after activation */
- status = RW_T2tPresenceCheck();
- break;
- }
-
- default:
+ }
+ else
+ {
/* Protocol unsupported by RW module... */
unsupported = TRUE;
- break;
}
if (unsupported)
@@ -2065,9 +2065,9 @@
NFA_TRACE_DEBUG0 ("nfa_rw_config_tag_ro ()");
- switch (protocol)
+ if (NFC_PROTOCOL_T1T == protocol)
{
- case NFC_PROTOCOL_T1T:
+ /* Type1Tag - NFC-A */
if( (nfa_rw_cb.tlv_st == NFA_RW_TLV_DETECT_ST_OP_NOT_STARTED)
||(nfa_rw_cb.tlv_st == NFA_RW_TLV_DETECT_ST_MEM_TLV_OP_COMPLETE) )
{
@@ -2078,30 +2078,29 @@
{
status = RW_T1tSetTagReadOnly(b_hard_lock);
}
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == protocol)
+ {
+ /* Type2Tag - NFC-A */
if (nfa_rw_cb.pa_sel_res == NFC_SEL_RES_NFC_FORUM_T2T)
{
status = RW_T2tSetTagReadOnly(b_hard_lock);
}
- break;
-
- case NFC_PROTOCOL_T3T:
+ }
+ else if (NFC_PROTOCOL_T3T == protocol)
+ {
+ /* Type3Tag - NFC-F */
status = RW_T3tSetReadOnly(b_hard_lock);
- break;
-
- case NFC_PROTOCOL_ISO_DEP:
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
status = RW_T4tSetNDefReadOnly();
- break;
-
- case NFC_PROTOCOL_15693:
+ }
+ else if (NFC_PROTOCOL_15693 == protocol)
+ {
+ /* ISO 15693 */
status = RW_I93SetTagReadOnly();
- break;
-
- default:
- break;
-
}
if (status == NFC_STATUS_OK)
@@ -2700,30 +2699,29 @@
}
/* Perform protocol-specific actions */
- switch (nfa_rw_cb.protocol)
+ if (NFC_PROTOCOL_T1T == nfa_rw_cb.protocol)
{
- case NFC_PROTOCOL_T1T:
/* Retrieve HR and UID fields from activation notification */
memcpy (tag_params.t1t.hr, p_activate_params->intf_param.intf_param.frame.param, NFA_T1T_HR_LEN);
memcpy (tag_params.t1t.uid, p_activate_params->rf_tech_param.param.pa.nfcid1, p_activate_params->rf_tech_param.param.pa.nfcid1_len);
msg.op = NFA_RW_OP_T1T_RID;
nfa_rw_handle_op_req ((tNFA_RW_MSG *)&msg);
activate_notify = FALSE; /* Delay notifying upper layer of NFA_ACTIVATED_EVT until HR0/HR1 is received */
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == nfa_rw_cb.protocol)
+ {
/* Retrieve UID fields from activation notification */
memcpy (tag_params.t2t.uid, p_activate_params->rf_tech_param.param.pa.nfcid1, p_activate_params->rf_tech_param.param.pa.nfcid1_len);
- break;
-
- case NFC_PROTOCOL_T3T:
+ }
+ else if (NFC_PROTOCOL_T3T == nfa_rw_cb.protocol)
+ {
/* Issue command to get Felica system codes */
activate_notify = FALSE; /* Delay notifying upper layer of NFA_ACTIVATED_EVT until system codes are retrieved */
msg.op = NFA_RW_OP_T3T_GET_SYSTEM_CODES;
nfa_rw_handle_op_req((tNFA_RW_MSG *)&msg);
- break;
-
- case NFC_PROTOCOL_15693:
+ }
+ else if (NFC_PROTOCOL_15693 == nfa_rw_cb.protocol)
+ {
/* Delay notifying upper layer of NFA_ACTIVATED_EVT to retrieve additional tag infomation */
nfa_rw_cb.flags |= NFA_RW_FL_ACTIVATION_NTF_PENDING;
activate_notify = FALSE;
@@ -2790,12 +2788,6 @@
nfa_rw_cb.i93_num_block = 0;
}
}
- break;
-
-
- default:
- /* No action needed for other protocols */
- break;
}
/* Notify upper layer of NFA_ACTIVATED_EVT if needed, and start presence check timer */
diff --git a/src/nfc/include/nfc_api.h b/src/nfc/include/nfc_api.h
index cfd0c79..f9cc864 100644
--- a/src/nfc/include/nfc_api.h
+++ b/src/nfc/include/nfc_api.h
@@ -32,6 +32,8 @@
#include "nfc_hal_api.h"
#include "gki.h"
+#include "vendor_cfg.h"
+
/* NFC application return status codes */
#define NFC_STATUS_OK NCI_STATUS_OK /* Command succeeded */
#define NFC_STATUS_REJECTED NCI_STATUS_REJECTED /* Command is rejected. */
diff --git a/src/nfc/nfc/nfc_ncif.c b/src/nfc/nfc/nfc_ncif.c
index 4316807..ad64930 100644
--- a/src/nfc/nfc/nfc_ncif.c
+++ b/src/nfc/nfc/nfc_ncif.c
@@ -624,10 +624,10 @@
len = *p++;
p_start = p;
memset ( &p_param->param, 0, sizeof (tNFC_RF_TECH_PARAMU));
- switch (p_param->mode)
+
+ if ( NCI_DISCOVERY_TYPE_POLL_A == p_param->mode
+ || NCI_DISCOVERY_TYPE_POLL_A_ACTIVE == p_param->mode )
{
- case NCI_DISCOVERY_TYPE_POLL_A:
- case NCI_DISCOVERY_TYPE_POLL_A_ACTIVE:
p_pa = &p_param->param.pa;
/*
SENS_RES Response 2 bytes Defined in [DIGPROT] Available after Technology Detection
@@ -654,9 +654,9 @@
p_pa->hr[1] = *p;
}
}
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_B:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_B == p_param->mode)
+ {
/*
SENSB_RES Response length (n) 1 byte Length of SENSB_RES Response (Byte 2 - Byte 12 or 13)Available after Technology Detection
SENSB_RES Response Byte 2 - Byte 12 or 13 11 or 12 bytes Defined in [DIGPROT] Available after Technology Detection
@@ -667,10 +667,10 @@
p_pb->sensb_res_len = NCI_MAX_SENSB_RES_LEN;
STREAM_TO_ARRAY (p_pb->sensb_res, p, p_pb->sensb_res_len);
memcpy (p_pb->nfcid0, p_pb->sensb_res, NFC_NFCID0_MAX_LEN);
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_F:
- case NCI_DISCOVERY_TYPE_POLL_F_ACTIVE:
+ }
+ else if ( NCI_DISCOVERY_TYPE_POLL_F == p_param->mode
+ || NCI_DISCOVERY_TYPE_POLL_F_ACTIVE == p_param->mode )
+ {
/*
Bit Rate 1 byte 1 212 kbps/2 424 kbps/0 and 3 to 255 RFU
SENSF_RES Response length.(n) 1 byte Length of SENSF_RES (Byte 2 - Byte 17 or 19).Available after Technology Detection
@@ -685,26 +685,26 @@
memcpy (p_pf->nfcid2, p_pf->sensf_res, NCI_NFCID2_LEN);
p_pf->mrti_check = p_pf->sensf_res[NCI_MRTI_CHECK_INDEX];
p_pf->mrti_update = p_pf->sensf_res[NCI_MRTI_UPDATE_INDEX];
- break;
-
- case NCI_DISCOVERY_TYPE_LISTEN_F:
- case NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if ( NCI_DISCOVERY_TYPE_LISTEN_F == p_param->mode
+ || NCI_DISCOVERY_TYPE_LISTEN_F_ACTIVE == p_param->mode )
+ {
p_lf = &p_param->param.lf;
u8 = *p++;
if (u8)
{
STREAM_TO_ARRAY (p_lf->nfcid2, p, NCI_NFCID2_LEN);
}
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_ISO15693:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_ISO15693 == p_param->mode)
+ {
p_i93 = &p_param->param.pi93;
p_i93->flag = *p++;
p_i93->dsfid = *p++;
STREAM_TO_ARRAY (p_i93->uid, p, NFC_ISO15693_UID_LEN);
- break;
-
- case NCI_DISCOVERY_TYPE_POLL_KOVIO:
+ }
+ else if (NCI_DISCOVERY_TYPE_POLL_KOVIO == p_param->mode)
+ {
p_param->param.pk.uid_len = *p++;
if (p_param->param.pk.uid_len > NFC_KOVIO_MAX_LEN)
{
@@ -712,7 +712,6 @@
p_param->param.pk.uid_len = NFC_KOVIO_MAX_LEN;
}
STREAM_TO_ARRAY (p_param->param.pk.uid, p, p_param->param.pk.uid_len);
- break;
}
return (p_start + len);
diff --git a/src/nfc/tags/rw_main.c b/src/nfc/tags/rw_main.c
index c11f592..d9fe097 100644
--- a/src/nfc/tags/rw_main.c
+++ b/src/nfc/tags/rw_main.c
@@ -227,51 +227,55 @@
#endif /* RW_STATS_INCLUDED */
rw_cb.p_cback = p_cback;
- switch (p_activate_params->protocol)
- {
/* not a tag NFC_PROTOCOL_NFCIP1: NFCDEP/LLCP - NFC-A or NFC-F */
- case NFC_PROTOCOL_T1T: /* Type1Tag - NFC-A */
+ if (NFC_PROTOCOL_T1T == p_activate_params->protocol)
+ {
+ /* Type1Tag - NFC-A */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A)
{
status = rw_t1t_select (p_activate_params->rf_tech_param.param.pa.hr,
p_activate_params->rf_tech_param.param.pa.nfcid1);
}
- break;
-
- case NFC_PROTOCOL_T2T: /* Type2Tag - NFC-A */
+ }
+ else if (NFC_PROTOCOL_T2T == p_activate_params->protocol)
+ {
+ /* Type2Tag - NFC-A */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A)
{
if (p_activate_params->rf_tech_param.param.pa.sel_rsp == NFC_SEL_RES_NFC_FORUM_T2T)
status = rw_t2t_select ();
}
- break;
-
- case NFC_PROTOCOL_T3T: /* Type3Tag - NFC-F */
+ }
+ else if (NFC_PROTOCOL_T3T == p_activate_params->protocol)
+ {
+ /* Type3Tag - NFC-F */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_F)
{
status = rw_t3t_select (p_activate_params->rf_tech_param.param.pf.nfcid2,
p_activate_params->rf_tech_param.param.pf.mrti_check,
p_activate_params->rf_tech_param.param.pf.mrti_update);
}
- break;
-
- case NFC_PROTOCOL_ISO_DEP: /* ISODEP/4A,4B- NFC-A or NFC-B */
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == p_activate_params->protocol)
+ {
+ /* ISODEP/4A,4B- NFC-A or NFC-B */
if ( (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_B)
||(p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A) )
{
status = rw_t4t_select ();
}
- break;
-
- case NFC_PROTOCOL_15693: /* ISO 15693 */
+ }
+ else if (NFC_PROTOCOL_15693 == p_activate_params->protocol)
+ {
+ /* ISO 15693 */
if (p_activate_params->rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_ISO15693)
{
status = rw_i93_select (p_activate_params->rf_tech_param.param.pi93.uid);
}
- break;
+ }
/* TODO set up callback for proprietary protocol */
-
- default:
+ else
+ {
RW_TRACE_ERROR0 ("RW_SetActivatedTagType Invalid protocol");
}