Loading nfc/java/android/nfc/INfcAdapter.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.nfc.INfcDta; import android.nfc.INfcWlcStateListener; import android.nfc.NfcAntennaInfo; import android.nfc.WlcListenerDeviceInfo; import android.nfc.cardemulation.PollingFrame; import android.os.Bundle; /** Loading Loading @@ -101,7 +102,7 @@ interface INfcAdapter void updateDiscoveryTechnology(IBinder b, int pollFlags, int listenFlags); void notifyPollingLoop(in Bundle frame); void notifyPollingLoop(in PollingFrame frame); void notifyHceDeactivated(); int sendVendorNciMessage(int mt, int gid, int oid, in byte[] payload); void registerVendorExtensionCallback(in INfcVendorNciCallback callbacks); Loading nfc/java/android/nfc/NfcAdapter.java +2 −3 Original line number Diff line number Diff line Loading @@ -2803,12 +2803,11 @@ public final class NfcAdapter { @TestApi @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP) public void notifyPollingLoop(@NonNull PollingFrame pollingFrame) { Bundle frame = pollingFrame.toBundle(); try { if (sService == null) { attemptDeadServiceRecovery(null); } sService.notifyPollingLoop(frame); sService.notifyPollingLoop(pollingFrame); } catch (RemoteException e) { attemptDeadServiceRecovery(e); // Try one more time Loading @@ -2817,7 +2816,7 @@ public final class NfcAdapter { return; } try { sService.notifyPollingLoop(frame); sService.notifyPollingLoop(pollingFrame); } catch (RemoteException ee) { Log.e(TAG, "Failed to recover NFC Service."); } Loading nfc/java/android/nfc/cardemulation/HostApduService.java +5 −8 Original line number Diff line number Diff line Loading @@ -325,15 +325,12 @@ public abstract class HostApduService extends Service { } break; case MSG_POLLING_LOOP: ArrayList<Bundle> frames = msg.getData().getParcelableArrayList(KEY_POLLING_LOOP_FRAMES_BUNDLE, Bundle.class); if (android.nfc.Flags.nfcReadPollingLoop()) { ArrayList<PollingFrame> pollingFrames = new ArrayList<PollingFrame>(frames.size()); for (Bundle frame : frames) { pollingFrames.add(new PollingFrame(frame)); } msg.getData().getParcelableArrayList( KEY_POLLING_LOOP_FRAMES_BUNDLE, PollingFrame.class); processPollingFrames(pollingFrames); } break; default: super.handleMessage(msg); Loading nfc/java/android/nfc/cardemulation/PollingFrame.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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. */ package android.nfc.cardemulation; parcelable PollingFrame; No newline at end of file nfc/java/android/nfc/cardemulation/PollingFrame.java +18 −23 Original line number Diff line number Diff line Loading @@ -101,47 +101,37 @@ public final class PollingFrame implements Parcelable{ /** * KEY_POLLING_LOOP_TYPE is the Bundle key for the type of * polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TYPE = "android.nfc.cardemulation.TYPE"; private static final String KEY_POLLING_LOOP_TYPE = "android.nfc.cardemulation.TYPE"; /** * KEY_POLLING_LOOP_DATA is the Bundle key for the raw data of captured from * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_DATA = "android.nfc.cardemulation.DATA"; private static final String KEY_POLLING_LOOP_DATA = "android.nfc.cardemulation.DATA"; /** * KEY_POLLING_LOOP_GAIN is the Bundle key for the field strength of * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_GAIN = "android.nfc.cardemulation.GAIN"; private static final String KEY_POLLING_LOOP_GAIN = "android.nfc.cardemulation.GAIN"; /** * KEY_POLLING_LOOP_TIMESTAMP is the Bundle key for the timestamp of * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TIMESTAMP = "android.nfc.cardemulation.TIMESTAMP"; private static final String KEY_POLLING_LOOP_TIMESTAMP = "android.nfc.cardemulation.TIMESTAMP"; /** * KEY_POLLING_LOOP_TIMESTAMP is the Bundle key for whether this polling frame triggered * autoTransact in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT = private static final String KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT = "android.nfc.cardemulation.TRIGGERED_AUTOTRANSACT"; Loading @@ -151,7 +141,7 @@ public final class PollingFrame implements Parcelable{ private final int mGain; @DurationMillisLong private final long mTimestamp; private final boolean mTriggeredAutoTransact; private boolean mTriggeredAutoTransact; public static final @NonNull Parcelable.Creator<PollingFrame> CREATOR = new Parcelable.Creator<>() { Loading @@ -166,7 +156,7 @@ public final class PollingFrame implements Parcelable{ } }; PollingFrame(Bundle frame) { private PollingFrame(Bundle frame) { mType = frame.getInt(KEY_POLLING_LOOP_TYPE); byte[] data = frame.getByteArray(KEY_POLLING_LOOP_DATA); mData = (data == null) ? new byte[0] : data; Loading Loading @@ -238,6 +228,13 @@ public final class PollingFrame implements Parcelable{ return mTimestamp; } /** * @hide */ public void setTriggeredAutoTransact(boolean triggeredAutoTransact) { mTriggeredAutoTransact = triggeredAutoTransact; } /** * Returns whether this frame triggered the device to automatically disable observe mode and * allow one transaction. Loading @@ -257,11 +254,9 @@ public final class PollingFrame implements Parcelable{ } /** * * @hide * @return a Bundle representing this frame */ public Bundle toBundle() { private Bundle toBundle() { Bundle frame = new Bundle(); frame.putInt(KEY_POLLING_LOOP_TYPE, getType()); if (getVendorSpecificGain() != -1) { Loading Loading
nfc/java/android/nfc/INfcAdapter.aidl +2 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.nfc.INfcDta; import android.nfc.INfcWlcStateListener; import android.nfc.NfcAntennaInfo; import android.nfc.WlcListenerDeviceInfo; import android.nfc.cardemulation.PollingFrame; import android.os.Bundle; /** Loading Loading @@ -101,7 +102,7 @@ interface INfcAdapter void updateDiscoveryTechnology(IBinder b, int pollFlags, int listenFlags); void notifyPollingLoop(in Bundle frame); void notifyPollingLoop(in PollingFrame frame); void notifyHceDeactivated(); int sendVendorNciMessage(int mt, int gid, int oid, in byte[] payload); void registerVendorExtensionCallback(in INfcVendorNciCallback callbacks); Loading
nfc/java/android/nfc/NfcAdapter.java +2 −3 Original line number Diff line number Diff line Loading @@ -2803,12 +2803,11 @@ public final class NfcAdapter { @TestApi @FlaggedApi(Flags.FLAG_NFC_READ_POLLING_LOOP) public void notifyPollingLoop(@NonNull PollingFrame pollingFrame) { Bundle frame = pollingFrame.toBundle(); try { if (sService == null) { attemptDeadServiceRecovery(null); } sService.notifyPollingLoop(frame); sService.notifyPollingLoop(pollingFrame); } catch (RemoteException e) { attemptDeadServiceRecovery(e); // Try one more time Loading @@ -2817,7 +2816,7 @@ public final class NfcAdapter { return; } try { sService.notifyPollingLoop(frame); sService.notifyPollingLoop(pollingFrame); } catch (RemoteException ee) { Log.e(TAG, "Failed to recover NFC Service."); } Loading
nfc/java/android/nfc/cardemulation/HostApduService.java +5 −8 Original line number Diff line number Diff line Loading @@ -325,15 +325,12 @@ public abstract class HostApduService extends Service { } break; case MSG_POLLING_LOOP: ArrayList<Bundle> frames = msg.getData().getParcelableArrayList(KEY_POLLING_LOOP_FRAMES_BUNDLE, Bundle.class); if (android.nfc.Flags.nfcReadPollingLoop()) { ArrayList<PollingFrame> pollingFrames = new ArrayList<PollingFrame>(frames.size()); for (Bundle frame : frames) { pollingFrames.add(new PollingFrame(frame)); } msg.getData().getParcelableArrayList( KEY_POLLING_LOOP_FRAMES_BUNDLE, PollingFrame.class); processPollingFrames(pollingFrames); } break; default: super.handleMessage(msg); Loading
nfc/java/android/nfc/cardemulation/PollingFrame.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 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. */ package android.nfc.cardemulation; parcelable PollingFrame; No newline at end of file
nfc/java/android/nfc/cardemulation/PollingFrame.java +18 −23 Original line number Diff line number Diff line Loading @@ -101,47 +101,37 @@ public final class PollingFrame implements Parcelable{ /** * KEY_POLLING_LOOP_TYPE is the Bundle key for the type of * polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TYPE = "android.nfc.cardemulation.TYPE"; private static final String KEY_POLLING_LOOP_TYPE = "android.nfc.cardemulation.TYPE"; /** * KEY_POLLING_LOOP_DATA is the Bundle key for the raw data of captured from * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_DATA = "android.nfc.cardemulation.DATA"; private static final String KEY_POLLING_LOOP_DATA = "android.nfc.cardemulation.DATA"; /** * KEY_POLLING_LOOP_GAIN is the Bundle key for the field strength of * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_GAIN = "android.nfc.cardemulation.GAIN"; private static final String KEY_POLLING_LOOP_GAIN = "android.nfc.cardemulation.GAIN"; /** * KEY_POLLING_LOOP_TIMESTAMP is the Bundle key for the timestamp of * the polling loop frame in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TIMESTAMP = "android.nfc.cardemulation.TIMESTAMP"; private static final String KEY_POLLING_LOOP_TIMESTAMP = "android.nfc.cardemulation.TIMESTAMP"; /** * KEY_POLLING_LOOP_TIMESTAMP is the Bundle key for whether this polling frame triggered * autoTransact in the Bundle included in MSG_POLLING_LOOP. * * @hide */ @FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP) public static final String KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT = private static final String KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT = "android.nfc.cardemulation.TRIGGERED_AUTOTRANSACT"; Loading @@ -151,7 +141,7 @@ public final class PollingFrame implements Parcelable{ private final int mGain; @DurationMillisLong private final long mTimestamp; private final boolean mTriggeredAutoTransact; private boolean mTriggeredAutoTransact; public static final @NonNull Parcelable.Creator<PollingFrame> CREATOR = new Parcelable.Creator<>() { Loading @@ -166,7 +156,7 @@ public final class PollingFrame implements Parcelable{ } }; PollingFrame(Bundle frame) { private PollingFrame(Bundle frame) { mType = frame.getInt(KEY_POLLING_LOOP_TYPE); byte[] data = frame.getByteArray(KEY_POLLING_LOOP_DATA); mData = (data == null) ? new byte[0] : data; Loading Loading @@ -238,6 +228,13 @@ public final class PollingFrame implements Parcelable{ return mTimestamp; } /** * @hide */ public void setTriggeredAutoTransact(boolean triggeredAutoTransact) { mTriggeredAutoTransact = triggeredAutoTransact; } /** * Returns whether this frame triggered the device to automatically disable observe mode and * allow one transaction. Loading @@ -257,11 +254,9 @@ public final class PollingFrame implements Parcelable{ } /** * * @hide * @return a Bundle representing this frame */ public Bundle toBundle() { private Bundle toBundle() { Bundle frame = new Bundle(); frame.putInt(KEY_POLLING_LOOP_TYPE, getType()); if (getVendorSpecificGain() != -1) { Loading