diff options
author | Love Khanna <love.khanna@nxp.com> | 2017-04-10 17:43:15 +0530 |
---|---|---|
committer | Ruchi Kandoi <kandoiruchi@google.com> | 2017-07-06 11:49:38 -0700 |
commit | 195ebc69630febb1901a7ef650d5575e9fc0caaa (patch) | |
tree | 76a7eb5cec2e306b51f12e05e649b4bd65a4fd0d | |
parent | 09922d2d1dcb21cf7b0bf830efe577381f855c4b (diff) | |
download | android_packages_apps_Nfc-195ebc69630febb1901a7ef650d5575e9fc0caaa.tar.gz android_packages_apps_Nfc-195ebc69630febb1901a7ef650d5575e9fc0caaa.tar.bz2 android_packages_apps_Nfc-195ebc69630febb1901a7ef650d5575e9fc0caaa.zip |
NCI2.0 update LF_T3T_PARAMETERS of 18 byte.
As per NCI2.0 LF_T3T_PMM is a part of LF_T3T_IDENTIFIER.
Since it is required for each LF_T3T_IDENTIFIER entry,
It can be taken from application.
Test: Compiles.
Change-Id: I8732c23fa71019b53321bd1af1b8f89a14327cc6
(cherry picked from commit 81732cf40417bc6413971742394ce00cfd529b25)
5 files changed, 22 insertions, 16 deletions
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp index 101dc0c0..af1722f1 100755 --- a/nci/jni/RoutingManager.cpp +++ b/nci/jni/RoutingManager.cpp @@ -688,7 +688,7 @@ int RoutingManager::registerT3tIdentifier(uint8_t* t3tId, uint8_t t3tIdLen) ALOGV("%s: Start to register NFC-F system on DH", fn); - if (t3tIdLen != (2 + NCI_RF_F_UID_LEN)) + if (t3tIdLen != (2 + NCI_RF_F_UID_LEN + NCI_T3T_PMM_LEN)) { ALOGE("%s: Invalid length of T3T Identifier", fn); return NFA_HANDLE_INVALID; @@ -699,11 +699,13 @@ int RoutingManager::registerT3tIdentifier(uint8_t* t3tId, uint8_t t3tIdLen) int systemCode; uint8_t nfcid2[NCI_RF_F_UID_LEN]; + uint8_t t3tPmm[NCI_T3T_PMM_LEN]; systemCode = (((int)t3tId[0] << 8) | ((int)t3tId[1] << 0)); memcpy(nfcid2, t3tId + 2, NCI_RF_F_UID_LEN); + memcpy(t3tPmm, t3tId + 10, NCI_T3T_PMM_LEN); - tNFA_STATUS nfaStat = NFA_CeRegisterFelicaSystemCodeOnDH (systemCode, nfcid2, nfcFCeCallback); + tNFA_STATUS nfaStat = NFA_CeRegisterFelicaSystemCodeOnDH (systemCode, nfcid2, t3tPmm, nfcFCeCallback); if (nfaStat == NFA_STATUS_OK) { mRoutingEvent.wait (); diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java index a69143a3..43de15f6 100755 --- a/src/com/android/nfc/NfcService.java +++ b/src/com/android/nfc/NfcService.java @@ -1748,11 +1748,11 @@ public class NfcService implements DeviceHostListener { sendMessage(MSG_UNROUTE_AID, aid); } - private byte[] getT3tIdentifierBytes(String systemCode, String nfcId2) { - ByteBuffer buffer = ByteBuffer.allocate(2 + 8); + private byte[] getT3tIdentifierBytes(String systemCode, String nfcId2, String t3tPmm) { + ByteBuffer buffer = ByteBuffer.allocate(2 + 8 + 8); /* systemcode + nfcid2 + t3tpmm */ buffer.put(hexStringToBytes(systemCode)); buffer.put(hexStringToBytes(nfcId2)); - + buffer.put(hexStringToBytes(t3tPmm)); byte[] t3tIdBytes = new byte[buffer.position()]; buffer.position(0); buffer.get(t3tIdBytes); @@ -1760,17 +1760,17 @@ public class NfcService implements DeviceHostListener { return t3tIdBytes; } - public void registerT3tIdentifier(String systemCode, String nfcId2) { + public void registerT3tIdentifier(String systemCode, String nfcId2, String t3tPmm) { Log.d(TAG, "request to register LF_T3T_IDENTIFIER"); - byte[] t3tIdentifier = getT3tIdentifierBytes(systemCode, nfcId2); + byte[] t3tIdentifier = getT3tIdentifierBytes(systemCode, nfcId2, t3tPmm); sendMessage(MSG_REGISTER_T3T_IDENTIFIER, t3tIdentifier); } - public void deregisterT3tIdentifier(String systemCode, String nfcId2) { + public void deregisterT3tIdentifier(String systemCode, String nfcId2, String t3tPmm) { Log.d(TAG, "request to deregister LF_T3T_IDENTIFIER"); - byte[] t3tIdentifier = getT3tIdentifierBytes(systemCode, nfcId2); + byte[] t3tIdentifier = getT3tIdentifierBytes(systemCode, nfcId2, t3tPmm); sendMessage(MSG_DEREGISTER_T3T_IDENTIFIER, t3tIdentifier); } diff --git a/src/com/android/nfc/cardemulation/EnabledNfcFServices.java b/src/com/android/nfc/cardemulation/EnabledNfcFServices.java index 1d2acb58..c06ca26b 100644 --- a/src/com/android/nfc/cardemulation/EnabledNfcFServices.java +++ b/src/com/android/nfc/cardemulation/EnabledNfcFServices.java @@ -117,7 +117,8 @@ public class EnabledNfcFServices implements com.android.nfc.ForegroundUtils.Call return false; } else { if (serviceInfo.getSystemCode().equalsIgnoreCase("NULL") || - serviceInfo.getNfcid2().equalsIgnoreCase("NULL")) { + serviceInfo.getNfcid2().equalsIgnoreCase("NULL") || + serviceInfo.getT3tPmm().equalsIgnoreCase("NULL")) { return false; } } diff --git a/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java b/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java index de7ef8f4..6391a51f 100644 --- a/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java +++ b/src/com/android/nfc/cardemulation/RegisteredT3tIdentifiersCache.java @@ -46,10 +46,12 @@ public class RegisteredT3tIdentifiersCache { final class T3tIdentifier { public final String systemCode; public final String nfcid2; + public final String t3tPmm; - T3tIdentifier(String systemCode, String nfcid2) { + T3tIdentifier(String systemCode, String nfcid2, String t3tPmm) { this.systemCode = systemCode; this.nfcid2 = nfcid2; + this.t3tPmm = t3tPmm; } @Override @@ -138,7 +140,7 @@ public class RegisteredT3tIdentifiersCache { Map.Entry<String, NfcFServiceInfo> entry = (Map.Entry<String, NfcFServiceInfo>) it.next(); t3tIdentifiers.add(new T3tIdentifier( - entry.getValue().getSystemCode(), entry.getValue().getNfcid2())); + entry.getValue().getSystemCode(), entry.getValue().getNfcid2(), entry.getValue().getT3tPmm())); } mRoutingManager.configureRouting(t3tIdentifiers); } diff --git a/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java b/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java index 70195255..a2d2a777 100644 --- a/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java +++ b/src/com/android/nfc/cardemulation/SystemCodeRoutingManager.java @@ -59,25 +59,26 @@ public class SystemCodeRoutingManager { for (T3tIdentifier t3tIdentifier : toBeRemoved) { if (DBG) Log.d(TAG, "deregisterNfcFSystemCodeonDh:"); NfcService.getInstance().deregisterT3tIdentifier( - t3tIdentifier.systemCode, t3tIdentifier.nfcid2); + t3tIdentifier.systemCode, t3tIdentifier.nfcid2, t3tIdentifier.t3tPmm); } for (T3tIdentifier t3tIdentifier : toBeAdded) { if (DBG) Log.d(TAG, "registerNfcFSystemCodeonDh:"); NfcService.getInstance().registerT3tIdentifier( - t3tIdentifier.systemCode, t3tIdentifier.nfcid2); + t3tIdentifier.systemCode, t3tIdentifier.nfcid2 , t3tIdentifier.t3tPmm); } if (DBG) { Log.d(TAG, "(Before) mConfiguredT3tIdentifiers: size=" + mConfiguredT3tIdentifiers.size()); for (T3tIdentifier t3tIdentifier : mConfiguredT3tIdentifiers) { Log.d(TAG, " " + t3tIdentifier.systemCode + - "/" + t3tIdentifier.nfcid2); + "/" + t3tIdentifier.t3tPmm); } Log.d(TAG, "(After) mConfiguredT3tIdentifiers: size=" + t3tIdentifiers.size()); for (T3tIdentifier t3tIdentifier : t3tIdentifiers) { Log.d(TAG, " " + t3tIdentifier.systemCode + - "/" + t3tIdentifier.nfcid2); + "/" + t3tIdentifier.nfcid2 + + "/" + t3tIdentifier.t3tPmm); } } mConfiguredT3tIdentifiers = t3tIdentifiers; |