summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJizhou Liao <Jizhou.Liao@nxp.com>2015-08-03 11:54:48 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-03 11:54:48 +0000
commitd52ab3bebafd97a28e62d71c2f87cb586fb35449 (patch)
treecb0f871b5dfbbf34218fad0d59d6903ec18a3edd
parent92f0024f7e0fb1b0e8c0d2dd80dd83aa5c528cec (diff)
parent3e88d804d7601fe55332b124ce5efc4ed67d1572 (diff)
downloadandroid_packages_apps_Nfc-d52ab3bebafd97a28e62d71c2f87cb586fb35449.tar.gz
android_packages_apps_Nfc-d52ab3bebafd97a28e62d71c2f87cb586fb35449.tar.bz2
android_packages_apps_Nfc-d52ab3bebafd97a28e62d71c2f87cb586fb35449.zip
am 3e88d804: am 26e1bc78: Fix conflict vendor proprietary definitions.
* commit '3e88d804d7601fe55332b124ce5efc4ed67d1572': Fix conflict vendor proprietary definitions.
-rwxr-xr-xnci/jni/NativeNfcTag.cpp24
-rwxr-xr-xnci/jni/NfcTag.cpp431
2 files changed, 215 insertions, 240 deletions
diff --git a/nci/jni/NativeNfcTag.cpp b/nci/jni/NativeNfcTag.cpp
index 844e9cfc..268c1f6c 100755
--- a/nci/jni/NativeNfcTag.cpp
+++ b/nci/jni/NativeNfcTag.cpp
@@ -962,13 +962,11 @@ static jint nativeNfcTag_doGetNdefType (JNIEnv*, jobject, jint libnfcType, jint
case NFA_PROTOCOL_ISO_DEP:
ndefType = NDEF_TYPE4_TAG;
break;
- case NFA_PROTOCOL_ISO15693:
- ndefType = NDEF_UNKNOWN_TYPE;
- break;
case NFA_PROTOCOL_INVALID:
ndefType = NDEF_UNKNOWN_TYPE;
break;
default:
+ /* NFA_PROTOCOL_ISO15693 and others */
ndefType = NDEF_UNKNOWN_TYPE;
break;
}
@@ -1295,25 +1293,23 @@ static jboolean nativeNfcTag_doIsNdefFormatable (JNIEnv*,
jbyteArray)
{
jboolean isFormattable = JNI_FALSE;
-
- switch (NfcTag::getInstance().getProtocol())
+ tNFC_PROTOCOL protocol = NfcTag::getInstance().getProtocol();
+ if (NFA_PROTOCOL_T1T == protocol || NFA_PROTOCOL_ISO15693 == protocol)
{
- case NFA_PROTOCOL_T1T:
- case NFA_PROTOCOL_ISO15693:
isFormattable = JNI_TRUE;
- break;
-
- case NFA_PROTOCOL_T3T:
+ }
+ else if (NFA_PROTOCOL_T3T == protocol)
+ {
isFormattable = NfcTag::getInstance().isFelicaLite() ? JNI_TRUE : JNI_FALSE;
- break;
-
- case NFA_PROTOCOL_T2T:
+ }
+ else if (NFA_PROTOCOL_T2T == protocol)
+ {
isFormattable = ( NfcTag::getInstance().isMifareUltralight() |
NfcTag::getInstance().isInfineonMyDMove() |
NfcTag::getInstance().isKovioType2Tag() )
? JNI_TRUE : JNI_FALSE;
- break;
}
+
ALOGD("%s: is formattable=%u", __FUNCTION__, isFormattable);
return isFormattable;
}
diff --git a/nci/jni/NfcTag.cpp b/nci/jni/NfcTag.cpp
index 0cc4b429..d3948066 100755
--- a/nci/jni/NfcTag.cpp
+++ b/nci/jni/NfcTag.cpp
@@ -308,13 +308,12 @@ void NfcTag::discoverTechnologies (tNFA_ACTIVATED& activationData)
//save the stack's data structure for interpretation later
memcpy (&(mTechParams[mNumTechList]), &(rfDetail.rf_tech_param), sizeof(rfDetail.rf_tech_param));
- switch (rfDetail.protocol)
+ if (NFC_PROTOCOL_T1T == rfDetail.protocol)
{
- case NFC_PROTOCOL_T1T:
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_3A; //is TagTechnology.NFC_A by Java API
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == rfDetail.protocol)
+ {
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_3A; //is TagTechnology.NFC_A by Java API
// could be MifFare UL or Classic or Kovio
{
@@ -337,27 +336,26 @@ void NfcTag::discoverTechnologies (tNFA_ACTIVATED& activationData)
}
}
}
- break;
-
- case NFC_PROTOCOL_T3T:
- {
- UINT8 xx = 0;
+ }
+ else if (NFC_PROTOCOL_T3T == rfDetail.protocol)
+ {
+ UINT8 xx = 0;
- mTechList [mNumTechList] = TARGET_TYPE_FELICA;
+ mTechList [mNumTechList] = TARGET_TYPE_FELICA;
- //see if it is Felica Lite.
- while (xx < activationData.params.t3t.num_system_codes)
+ //see if it is Felica Lite.
+ while (xx < activationData.params.t3t.num_system_codes)
+ {
+ if (activationData.params.t3t.p_system_codes[xx++] == T3T_SYSTEM_CODE_FELICA_LITE)
{
- if (activationData.params.t3t.p_system_codes[xx++] == T3T_SYSTEM_CODE_FELICA_LITE)
- {
- mIsFelicaLite = true;
- break;
- }
+ mIsFelicaLite = true;
+ break;
}
}
- break;
-
- case NFC_PROTOCOL_ISO_DEP: //type-4 tag uses technology ISO-DEP and technology A or B
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == rfDetail.protocol)
+ {
+ //type-4 tag uses technology ISO-DEP and technology A or B
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_4; //is TagTechnology.ISO_DEP by Java API
if ( (rfDetail.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A) ||
(rfDetail.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A_ACTIVE) ||
@@ -383,21 +381,21 @@ void NfcTag::discoverTechnologies (tNFA_ACTIVATED& activationData)
//save the stack's data structure for interpretation later
memcpy (&(mTechParams[mNumTechList]), &(rfDetail.rf_tech_param), sizeof(rfDetail.rf_tech_param));
}
- break;
-
- case NFC_PROTOCOL_15693: //is TagTechnology.NFC_V by Java API
+ }
+ else if (NFC_PROTOCOL_15693 == rfDetail.protocol)
+ {
+ //is TagTechnology.NFC_V by Java API
mTechList [mNumTechList] = TARGET_TYPE_ISO15693;
- break;
-
- case NFC_PROTOCOL_KOVIO:
+ }
+ else if (NFC_PROTOCOL_KOVIO == rfDetail.protocol)
+ {
ALOGD ("%s: Kovio", fn);
mTechList [mNumTechList] = TARGET_TYPE_KOVIO_BARCODE;
- break;
-
- default:
+ }
+ else
+ {
ALOGE ("%s: unknown protocol ????", fn);
mTechList [mNumTechList] = TARGET_TYPE_UNKNOWN;
- break;
}
mNumTechList++;
@@ -438,13 +436,12 @@ void NfcTag::discoverTechnologies (tNFA_DISC_RESULT& discoveryData)
//save the stack's data structure for interpretation later
memcpy (&(mTechParams[mNumTechList]), &(discovery_ntf.rf_tech_param), sizeof(discovery_ntf.rf_tech_param));
- switch (discovery_ntf.protocol)
+ if (NFC_PROTOCOL_T1T == discovery_ntf.protocol)
{
- case NFC_PROTOCOL_T1T:
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_3A; //is TagTechnology.NFC_A by Java API
- break;
-
- case NFC_PROTOCOL_T2T:
+ }
+ else if (NFC_PROTOCOL_T2T == discovery_ntf.protocol)
+ {
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_3A; //is TagTechnology.NFC_A by Java API
//type-2 tags are identical to Mifare Ultralight, so Ultralight is also discovered
if ((discovery_ntf.rf_tech_param.param.pa.sel_rsp == 0) &&
@@ -459,13 +456,14 @@ void NfcTag::discoverTechnologies (tNFA_DISC_RESULT& discoveryData)
//save the stack's data structure for interpretation later
memcpy (&(mTechParams[mNumTechList]), &(discovery_ntf.rf_tech_param), sizeof(discovery_ntf.rf_tech_param));
- break;
-
- case NFC_PROTOCOL_T3T:
+ }
+ else if (NFC_PROTOCOL_T3T == discovery_ntf.protocol)
+ {
mTechList [mNumTechList] = TARGET_TYPE_FELICA;
- break;
-
- case NFC_PROTOCOL_ISO_DEP: //type-4 tag uses technology ISO-DEP and technology A or B
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == discovery_ntf.protocol)
+ {
+ //type-4 tag uses technology ISO-DEP and technology A or B
mTechList [mNumTechList] = TARGET_TYPE_ISO14443_4; //is TagTechnology.ISO_DEP by Java API
if ( (discovery_ntf.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A) ||
(discovery_ntf.rf_tech_param.mode == NFC_DISCOVERY_TYPE_POLL_A_ACTIVE) ||
@@ -497,16 +495,16 @@ void NfcTag::discoverTechnologies (tNFA_DISC_RESULT& discoveryData)
memcpy (&(mTechParams[mNumTechList]), &(discovery_ntf.rf_tech_param), sizeof(discovery_ntf.rf_tech_param));
}
}
- break;
-
- case NFC_PROTOCOL_15693: //is TagTechnology.NFC_V by Java API
+ }
+ else if (NFC_PROTOCOL_15693 == discovery_ntf.protocol)
+ {
+ //is TagTechnology.NFC_V by Java API
mTechList [mNumTechList] = TARGET_TYPE_ISO15693;
- break;
-
- default:
+ }
+ else
+ {
ALOGE ("%s: unknown protocol ????", fn);
mTechList [mNumTechList] = TARGET_TYPE_UNKNOWN;
- break;
}
mNumTechList++;
@@ -693,21 +691,20 @@ void NfcTag::fillNativeNfcTagMembers3 (JNIEnv* e, jclass tag_cls, jobject tag, t
for (int i = 0; i < mNumTechList; i++)
{
ALOGD ("%s: index=%d; rf tech params mode=%u", fn, i, mTechParams [i].mode);
- switch (mTechParams [i].mode)
+ if (NFC_DISCOVERY_TYPE_POLL_A == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_POLL_A_ACTIVE == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_A == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == mTechParams [i].mode)
{
- case NFC_DISCOVERY_TYPE_POLL_A:
- case NFC_DISCOVERY_TYPE_POLL_A_ACTIVE:
- case NFC_DISCOVERY_TYPE_LISTEN_A:
- case NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE:
ALOGD ("%s: tech A", fn);
pollBytes.reset(e->NewByteArray(2));
e->SetByteArrayRegion(pollBytes.get(), 0, 2, (jbyte*) mTechParams [i].param.pa.sens_res);
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_B:
- case NFC_DISCOVERY_TYPE_POLL_B_PRIME:
- case NFC_DISCOVERY_TYPE_LISTEN_B:
- case NFC_DISCOVERY_TYPE_LISTEN_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_POLL_B_PRIME == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_B == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_B_PRIME == mTechParams [i].mode)
+ {
if (mTechList [i] == TARGET_TYPE_ISO14443_3B) //is TagTechnology.NFC_B by Java API
{
/*****************
@@ -725,61 +722,56 @@ void NfcTag::fillNativeNfcTagMembers3 (JNIEnv* e, jclass tag_cls, jobject tag, t
{
pollBytes.reset(e->NewByteArray(0));
}
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_F:
- case NFC_DISCOVERY_TYPE_POLL_F_ACTIVE:
- case NFC_DISCOVERY_TYPE_LISTEN_F:
- case NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_POLL_F_ACTIVE == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_F == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE == mTechParams [i].mode)
+ {
+ /****************
+ see NFC Forum Type 3 Tag Operation Specification; sections 2.3.2, 2.3.1.2;
+ see NFC Forum Digital Protocol Specification; sections 6.6.2;
+ PMm: manufacture parameter; 8 bytes;
+ System Code: 2 bytes;
+ ****************/
+ ALOGD ("%s: tech F", fn);
+ UINT8 result [10]; //return result to NFC service
+ memset (result, 0, sizeof(result));
+ len = 10;
+
+ /****
+ for (int ii = 0; ii < mTechParams [i].param.pf.sensf_res_len; ii++)
{
- /****************
- see NFC Forum Type 3 Tag Operation Specification; sections 2.3.2, 2.3.1.2;
- see NFC Forum Digital Protocol Specification; sections 6.6.2;
- PMm: manufacture parameter; 8 bytes;
- System Code: 2 bytes;
- ****************/
- ALOGD ("%s: tech F", fn);
- UINT8 result [10]; //return result to NFC service
- memset (result, 0, sizeof(result));
- len = 10;
-
- /****
- for (int ii = 0; ii < mTechParams [i].param.pf.sensf_res_len; ii++)
- {
- ALOGD ("%s: tech F, sendf_res[%d]=%d (0x%x)",
- fn, ii, mTechParams [i].param.pf.sensf_res[ii],mTechParams [i].param.pf.sensf_res[ii]);
- }
- ***/
- memcpy (result, mTechParams [i].param.pf.sensf_res + 8, 8); //copy PMm
- if (activationData.params.t3t.num_system_codes > 0) //copy the first System Code
- {
- UINT16 systemCode = *(activationData.params.t3t.p_system_codes);
- result [8] = (UINT8) (systemCode >> 8);
- result [9] = (UINT8) systemCode;
- ALOGD ("%s: tech F; sys code=0x%X 0x%X", fn, result [8], result [9]);
- }
- pollBytes.reset(e->NewByteArray(len));
- e->SetByteArrayRegion(pollBytes.get(), 0, len, (jbyte*) result);
+ ALOGD ("%s: tech F, sendf_res[%d]=%d (0x%x)",
+ fn, ii, mTechParams [i].param.pf.sensf_res[ii],mTechParams [i].param.pf.sensf_res[ii]);
}
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_ISO15693:
- case NFC_DISCOVERY_TYPE_LISTEN_ISO15693:
+ ***/
+ memcpy (result, mTechParams [i].param.pf.sensf_res + 8, 8); //copy PMm
+ if (activationData.params.t3t.num_system_codes > 0) //copy the first System Code
{
- ALOGD ("%s: tech iso 15693", fn);
- //iso 15693 response flags: 1 octet
- //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
- //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
- uint8_t data [2]= {activationData.params.i93.afi, activationData.params.i93.dsfid};
- pollBytes.reset(e->NewByteArray(2));
- e->SetByteArrayRegion(pollBytes.get(), 0, 2, (jbyte *) data);
+ UINT16 systemCode = *(activationData.params.t3t.p_system_codes);
+ result [8] = (UINT8) (systemCode >> 8);
+ result [9] = (UINT8) systemCode;
+ ALOGD ("%s: tech F; sys code=0x%X 0x%X", fn, result [8], result [9]);
}
- break;
-
- default:
+ pollBytes.reset(e->NewByteArray(len));
+ e->SetByteArrayRegion(pollBytes.get(), 0, len, (jbyte*) result);
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == mTechParams [i].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == mTechParams [i].mode)
+ {
+ ALOGD ("%s: tech iso 15693", fn);
+ //iso 15693 response flags: 1 octet
+ //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
+ //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
+ uint8_t data [2]= {activationData.params.i93.afi, activationData.params.i93.dsfid};
+ pollBytes.reset(e->NewByteArray(2));
+ e->SetByteArrayRegion(pollBytes.get(), 0, 2, (jbyte *) data);
+ }
+ else
+ {
ALOGE ("%s: tech unknown ????", fn);
pollBytes.reset(e->NewByteArray(0));
- break;
} //switch: every type of technology
e->SetObjectArrayElement(techPollBytes.get(), i, pollBytes.get());
} //for: every technology in the array
@@ -813,107 +805,98 @@ void NfcTag::fillNativeNfcTagMembers4 (JNIEnv* e, jclass tag_cls, jobject tag, t
for (int i = 0; i < mNumTechList; i++)
{
ALOGD ("%s: index=%d", fn, i);
- switch (mTechLibNfcTypes[i])
+ if (NFC_PROTOCOL_T1T == mTechLibNfcTypes[i] || NFC_PROTOCOL_T2T == mTechLibNfcTypes[i])
{
- case NFC_PROTOCOL_T1T:
- case NFC_PROTOCOL_T2T:
- {
- if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T1T)
- ALOGD ("%s: T1T; tech A", fn);
- else if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T2T)
- ALOGD ("%s: T2T; tech A", fn);
- actBytes.reset(e->NewByteArray(1));
- e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
- }
- break;
-
- case NFC_PROTOCOL_T3T: //felica
- {
- ALOGD ("%s: T3T; felica; tech F", fn);
- //really, there is no data
- actBytes.reset(e->NewByteArray(0));
- }
- break;
-
- case NFC_PROTOCOL_ISO_DEP: //t4t
+ if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T1T)
+ ALOGD ("%s: T1T; tech A", fn);
+ else if (mTechLibNfcTypes[i] == NFC_PROTOCOL_T2T)
+ ALOGD ("%s: T2T; tech A", fn);
+ actBytes.reset(e->NewByteArray(1));
+ e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
+ }
+ else if (NFC_PROTOCOL_T3T == mTechLibNfcTypes[i])
+ {
+ //felica
+ ALOGD ("%s: T3T; felica; tech F", fn);
+ //really, there is no data
+ actBytes.reset(e->NewByteArray(0));
+ }
+ else if (NFC_PROTOCOL_ISO_DEP == mTechLibNfcTypes[i])
+ {
+ //t4t
+ if (mTechList [i] == TARGET_TYPE_ISO14443_4) //is TagTechnology.ISO_DEP by Java API
{
- if (mTechList [i] == TARGET_TYPE_ISO14443_4) //is TagTechnology.ISO_DEP by Java API
+ if ( (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_A) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_A_ACTIVE) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_A) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE) )
{
- if ( (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_A) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_A_ACTIVE) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_A) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE) )
+ //see NFC Forum Digital Protocol specification, section 11.6.2, "RATS Response"; search for "historical bytes";
+ //copy historical bytes into Java object;
+ //the public API, IsoDep.getHistoricalBytes(), returns this data;
+ if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
{
- //see NFC Forum Digital Protocol specification, section 11.6.2, "RATS Response"; search for "historical bytes";
- //copy historical bytes into Java object;
- //the public API, IsoDep.getHistoricalBytes(), returns this data;
- if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
- {
- tNFC_INTF_PA_ISO_DEP& pa_iso = activationData.activate_ntf.intf_param.intf_param.pa_iso;
- ALOGD ("%s: T4T; ISO_DEP for tech A; copy historical bytes; len=%u", fn, pa_iso.his_byte_len);
- actBytes.reset(e->NewByteArray(pa_iso.his_byte_len));
- if (pa_iso.his_byte_len > 0)
- e->SetByteArrayRegion(actBytes.get(), 0, pa_iso.his_byte_len, (jbyte*) (pa_iso.his_byte));
- }
- else
- {
- ALOGE ("%s: T4T; ISO_DEP for tech A; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
- actBytes.reset(e->NewByteArray(0));
- }
+ tNFC_INTF_PA_ISO_DEP& pa_iso = activationData.activate_ntf.intf_param.intf_param.pa_iso;
+ ALOGD ("%s: T4T; ISO_DEP for tech A; copy historical bytes; len=%u", fn, pa_iso.his_byte_len);
+ actBytes.reset(e->NewByteArray(pa_iso.his_byte_len));
+ if (pa_iso.his_byte_len > 0)
+ e->SetByteArrayRegion(actBytes.get(), 0, pa_iso.his_byte_len, (jbyte*) (pa_iso.his_byte));
}
- else if ( (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_B) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_B_PRIME) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_B) ||
- (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_B_PRIME) )
+ else
{
- //see NFC Forum Digital Protocol specification, section 12.6.2, "ATTRIB Response";
- //copy higher-layer response bytes into Java object;
- //the public API, IsoDep.getHiLayerResponse(), returns this data;
- if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
- {
- tNFC_INTF_PB_ISO_DEP& pb_iso = activationData.activate_ntf.intf_param.intf_param.pb_iso;
- ALOGD ("%s: T4T; ISO_DEP for tech B; copy response bytes; len=%u", fn, pb_iso.hi_info_len);
- actBytes.reset(e->NewByteArray(pb_iso.hi_info_len));
- if (pb_iso.hi_info_len > 0)
- e->SetByteArrayRegion(actBytes.get(), 0, pb_iso.hi_info_len, (jbyte*) (pb_iso.hi_info));
- }
- else
- {
- ALOGE ("%s: T4T; ISO_DEP for tech B; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
- actBytes.reset(e->NewByteArray(0));
- }
+ ALOGE ("%s: T4T; ISO_DEP for tech A; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
+ actBytes.reset(e->NewByteArray(0));
}
}
- else if (mTechList [i] == TARGET_TYPE_ISO14443_3A) //is TagTechnology.NFC_A by Java API
+ else if ( (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_B) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_POLL_B_PRIME) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_B) ||
+ (mTechParams[i].mode == NFC_DISCOVERY_TYPE_LISTEN_B_PRIME) )
{
- ALOGD ("%s: T4T; tech A", fn);
- actBytes.reset(e->NewByteArray(1));
- e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
- }
- else
- {
- actBytes.reset(e->NewByteArray(0));
+ //see NFC Forum Digital Protocol specification, section 12.6.2, "ATTRIB Response";
+ //copy higher-layer response bytes into Java object;
+ //the public API, IsoDep.getHiLayerResponse(), returns this data;
+ if (activationData.activate_ntf.intf_param.type == NFC_INTERFACE_ISO_DEP)
+ {
+ tNFC_INTF_PB_ISO_DEP& pb_iso = activationData.activate_ntf.intf_param.intf_param.pb_iso;
+ ALOGD ("%s: T4T; ISO_DEP for tech B; copy response bytes; len=%u", fn, pb_iso.hi_info_len);
+ actBytes.reset(e->NewByteArray(pb_iso.hi_info_len));
+ if (pb_iso.hi_info_len > 0)
+ e->SetByteArrayRegion(actBytes.get(), 0, pb_iso.hi_info_len, (jbyte*) (pb_iso.hi_info));
+ }
+ else
+ {
+ ALOGE ("%s: T4T; ISO_DEP for tech B; wrong interface=%u", fn, activationData.activate_ntf.intf_param.type);
+ actBytes.reset(e->NewByteArray(0));
+ }
}
- } //case NFC_PROTOCOL_ISO_DEP: //t4t
- break;
-
- case NFC_PROTOCOL_15693:
+ }
+ else if (mTechList [i] == TARGET_TYPE_ISO14443_3A) //is TagTechnology.NFC_A by Java API
{
- ALOGD ("%s: tech iso 15693", fn);
- //iso 15693 response flags: 1 octet
- //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
- //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
- uint8_t data [2]= {activationData.params.i93.afi, activationData.params.i93.dsfid};
- actBytes.reset(e->NewByteArray(2));
- e->SetByteArrayRegion(actBytes.get(), 0, 2, (jbyte *) data);
+ ALOGD ("%s: T4T; tech A", fn);
+ actBytes.reset(e->NewByteArray(1));
+ e->SetByteArrayRegion(actBytes.get(), 0, 1, (jbyte*) &mTechParams [i].param.pa.sel_rsp);
}
- break;
-
- default:
+ else
+ {
+ actBytes.reset(e->NewByteArray(0));
+ }
+ } //case NFC_PROTOCOL_ISO_DEP: //t4t
+ else if (NFC_PROTOCOL_15693 == mTechLibNfcTypes[i])
+ {
+ ALOGD ("%s: tech iso 15693", fn);
+ //iso 15693 response flags: 1 octet
+ //iso 15693 Data Structure Format Identifier (DSF ID): 1 octet
+ //used by public API: NfcV.getDsfId(), NfcV.getResponseFlags();
+ uint8_t data [2]= {activationData.params.i93.afi, activationData.params.i93.dsfid};
+ actBytes.reset(e->NewByteArray(2));
+ e->SetByteArrayRegion(actBytes.get(), 0, 2, (jbyte *) data);
+ }
+ else
+ {
ALOGD ("%s: tech unknown ????", fn);
actBytes.reset(e->NewByteArray(0));
- break;
- }//switch
+ }
e->SetObjectArrayElement(techActBytes.get(), i, actBytes.get());
} //for: every technology in the array
jfieldID f = e->GetFieldID (tag_cls, "mTechActBytes", "[[B");
@@ -942,20 +925,19 @@ void NfcTag::fillNativeNfcTagMembers5 (JNIEnv* e, jclass tag_cls, jobject tag, t
int len = 0;
ScopedLocalRef<jbyteArray> uid(e, NULL);
- switch (mTechParams [0].mode)
+ if (NFC_DISCOVERY_TYPE_POLL_KOVIO == mTechParams [0].mode)
{
- case NFC_DISCOVERY_TYPE_POLL_KOVIO:
ALOGD ("%s: Kovio", fn);
len = mTechParams [0].param.pk.uid_len;
uid.reset(e->NewByteArray(len));
e->SetByteArrayRegion(uid.get(), 0, len,
(jbyte*) &mTechParams [0].param.pk.uid);
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_A:
- case NFC_DISCOVERY_TYPE_POLL_A_ACTIVE:
- case NFC_DISCOVERY_TYPE_LISTEN_A:
- case NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_A == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_POLL_A_ACTIVE == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_A == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE == mTechParams [0].mode)
+ {
ALOGD ("%s: tech A", fn);
len = mTechParams [0].param.pa.nfcid1_len;
uid.reset(e->NewByteArray(len));
@@ -967,44 +949,41 @@ void NfcTag::fillNativeNfcTagMembers5 (JNIEnv* e, jclass tag_cls, jobject tag, t
//section 4.7.2 SDD_RES Response, Requirements 20).
mIsDynamicTagId = (mTechParams [0].param.pa.nfcid1_len == 4) &&
(mTechParams [0].param.pa.nfcid1 [0] == 0x08);
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_B:
- case NFC_DISCOVERY_TYPE_POLL_B_PRIME:
- case NFC_DISCOVERY_TYPE_LISTEN_B:
- case NFC_DISCOVERY_TYPE_LISTEN_B_PRIME:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_B == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_POLL_B_PRIME == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_B == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_B_PRIME == mTechParams [0].mode)
+ {
ALOGD ("%s: tech B", fn);
uid.reset(e->NewByteArray(NFC_NFCID0_MAX_LEN));
e->SetByteArrayRegion(uid.get(), 0, NFC_NFCID0_MAX_LEN,
(jbyte*) &mTechParams [0].param.pb.nfcid0);
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_F:
- case NFC_DISCOVERY_TYPE_POLL_F_ACTIVE:
- case NFC_DISCOVERY_TYPE_LISTEN_F:
- case NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE:
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_F == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_POLL_F_ACTIVE == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_F == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE == mTechParams [0].mode)
+ {
uid.reset(e->NewByteArray(NFC_NFCID2_LEN));
e->SetByteArrayRegion(uid.get(), 0, NFC_NFCID2_LEN,
(jbyte*) &mTechParams [0].param.pf.nfcid2);
ALOGD ("%s: tech F", fn);
- break;
-
- case NFC_DISCOVERY_TYPE_POLL_ISO15693:
- case NFC_DISCOVERY_TYPE_LISTEN_ISO15693:
- {
+ }
+ else if (NFC_DISCOVERY_TYPE_POLL_ISO15693 == mTechParams [0].mode
+ || NFC_DISCOVERY_TYPE_LISTEN_ISO15693 == mTechParams [0].mode)
+ {
ALOGD ("%s: tech iso 15693", fn);
jbyte data [I93_UID_BYTE_LEN]; //8 bytes
for (int i=0; i<I93_UID_BYTE_LEN; ++i) //reverse the ID
data[i] = activationData.params.i93.uid [I93_UID_BYTE_LEN - i - 1];
uid.reset(e->NewByteArray(I93_UID_BYTE_LEN));
e->SetByteArrayRegion(uid.get(), 0, I93_UID_BYTE_LEN, data);
- }
- break;
-
- default:
+ }
+ else
+ {
ALOGE ("%s: tech unknown ????", fn);
uid.reset(e->NewByteArray(0));
- break;
}
jfieldID f = e->GetFieldID(tag_cls, "mUid", "[B");
e->SetObjectField(tag, f, uid.get());