From e7ecebae11c4f7a7ac0cc17f77e287d0b4530657 Mon Sep 17 00:00:00 2001 From: Love Khanna Date: Mon, 10 Apr 2017 17:46:53 +0530 Subject: 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: Icc168592c292d869a4c331dd28fe43b4d75c9a41 --- .../android/nfc/cardemulation/HostNfcFService.java | 2 ++ .../android/nfc/cardemulation/NfcFServiceInfo.java | 35 +++++++++++++++++++--- core/res/res/values/attrs.xml | 7 +++++ 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/core/java/android/nfc/cardemulation/HostNfcFService.java b/core/java/android/nfc/cardemulation/HostNfcFService.java index 27c4976786f4..fd0d8adf2998 100644 --- a/core/java/android/nfc/cardemulation/HostNfcFService.java +++ b/core/java/android/nfc/cardemulation/HostNfcFService.java @@ -64,6 +64,7 @@ import android.util.Log; * android:description="@string/servicedesc"> * <system-code-filter android:name="4000"/> * <nfcid2-filter android:name="02FE000000000000"/> + <t3tPmm-filter android:name="FFFFFFFFFFFFFFFF"/> * </host-nfcf-service> * * @@ -76,6 +77,7 @@ import android.util.Log; * *

* diff --git a/core/java/android/nfc/cardemulation/NfcFServiceInfo.java b/core/java/android/nfc/cardemulation/NfcFServiceInfo.java index b93eec11c342..4201935241d9 100644 --- a/core/java/android/nfc/cardemulation/NfcFServiceInfo.java +++ b/core/java/android/nfc/cardemulation/NfcFServiceInfo.java @@ -18,9 +18,9 @@ package android.nfc.cardemulation; import android.content.ComponentName; import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; -import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; @@ -79,12 +79,17 @@ public final class NfcFServiceInfo implements Parcelable { */ final int mUid; + /** + * LF_T3T_PMM of the service + */ + final String mT3tPmm; + /** * @hide */ public NfcFServiceInfo(ResolveInfo info, String description, String systemCode, String dynamicSystemCode, String nfcid2, String dynamicNfcid2, - int uid) { + int uid, String t3tPmm) { this.mService = info; this.mDescription = description; this.mSystemCode = systemCode; @@ -92,6 +97,7 @@ public final class NfcFServiceInfo implements Parcelable { this.mNfcid2 = nfcid2; this.mDynamicNfcid2 = dynamicNfcid2; this.mUid = uid; + this.mT3tPmm = t3tPmm; } public NfcFServiceInfo(PackageManager pm, ResolveInfo info) @@ -130,6 +136,7 @@ public final class NfcFServiceInfo implements Parcelable { String systemCode = null; String nfcid2 = null; + String t3tPmm = null; final int depth = parser.getDepth(); while (((eventType = parser.next()) != XmlPullParser.END_TAG || @@ -160,10 +167,22 @@ public final class NfcFServiceInfo implements Parcelable { nfcid2 = null; } a.recycle(); + } else if (eventType == XmlPullParser.START_TAG && tagName.equals("t3tPmm-filter") + && t3tPmm == null) { + final TypedArray a = res.obtainAttributes(attrs, + com.android.internal.R.styleable.T3tPmmFilter); + t3tPmm = a.getString( + com.android.internal.R.styleable.T3tPmmFilter_name).toUpperCase(); + if (t3tPmm == null) { + String defaultT3tPmm = "FFFFFFFFFFFFFFFF"; + t3tPmm = defaultT3tPmm; + } + a.recycle(); } } mSystemCode = (systemCode == null ? "NULL" : systemCode); mNfcid2 = (nfcid2 == null ? "NULL" : nfcid2); + mT3tPmm = (t3tPmm == null ? "NULL" : t3tPmm); } catch (NameNotFoundException e) { throw new XmlPullParserException("Unable to create context for: " + si.packageName); } finally { @@ -202,6 +221,10 @@ public final class NfcFServiceInfo implements Parcelable { return mUid; } + public String getT3tPmm() { + return mT3tPmm; + } + public CharSequence loadLabel(PackageManager pm) { return mService.loadLabel(pm); } @@ -223,6 +246,7 @@ public final class NfcFServiceInfo implements Parcelable { if (mDynamicNfcid2 != null) { out.append(", dynamic NFCID2: " + mDynamicNfcid2); } + out.append(", T3T PMM:" + mT3tPmm); return out.toString(); } @@ -235,7 +259,7 @@ public final class NfcFServiceInfo implements Parcelable { if (!thatService.getComponent().equals(this.getComponent())) return false; if (!thatService.mSystemCode.equalsIgnoreCase(this.mSystemCode)) return false; if (!thatService.mNfcid2.equalsIgnoreCase(this.mNfcid2)) return false; - + if (!thatService.mT3tPmm.equalsIgnoreCase(this.mT3tPmm)) return false; return true; } @@ -264,6 +288,7 @@ public final class NfcFServiceInfo implements Parcelable { dest.writeString(mDynamicNfcid2); } dest.writeInt(mUid); + dest.writeString(mT3tPmm); }; public static final Parcelable.Creator CREATOR = @@ -283,8 +308,9 @@ public final class NfcFServiceInfo implements Parcelable { dynamicNfcid2 = source.readString(); } int uid = source.readInt(); + String t3tPmm = source.readString(); NfcFServiceInfo service = new NfcFServiceInfo(info, description, - systemCode, dynamicSystemCode, nfcid2, dynamicNfcid2, uid); + systemCode, dynamicSystemCode, nfcid2, dynamicNfcid2, uid, t3tPmm); return service; } @@ -299,6 +325,7 @@ public final class NfcFServiceInfo implements Parcelable { " (Description: " + getDescription() + ")"); pw.println(" System Code: " + getSystemCode()); pw.println(" NFCID2: " + getNfcid2()); + pw.println(" T3tPmm: " + getT3tPmm()); } } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 066a5381d56b..d51a304a74ac 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -3462,6 +3462,13 @@ i + + + + + + -- cgit v1.2.3-59-g8ed1b