Skip to content
Snippets Groups Projects
Commit 1654ad1d authored by Brad Lassey's avatar Brad Lassey
Browse files

Provide information on whether a polling frame is auto-transact

Bug: b/326633946
Test: Added CTS test
Change-Id: I7b749368f4795b5f7e03f6945d0fdd66b4d97f18
parent 7d35bd5f
No related branches found
No related tags found
No related merge requests found
......@@ -265,10 +265,11 @@ package android.nfc.cardemulation {
}
@FlaggedApi("android.nfc.nfc_read_polling_loop") public final class PollingFrame implements android.os.Parcelable {
ctor public PollingFrame(int, @Nullable byte[], int, int);
ctor public PollingFrame(int, @Nullable byte[], int, int, boolean);
method public int describeContents();
method @NonNull public byte[] getData();
method public int getTimestamp();
method public boolean getTriggeredAutoTransact();
method public int getType();
method public int getVendorSpecificGain();
method public void writeToParcel(@NonNull android.os.Parcel, int);
......
......@@ -133,12 +133,23 @@ public final class PollingFrame implements Parcelable{
@FlaggedApi(android.nfc.Flags.FLAG_NFC_READ_POLLING_LOOP)
public 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 =
"android.nfc.cardemulation.TRIGGERED_AUTOTRANSACT";
@PollingFrameType
private final int mType;
private final byte[] mData;
private final int mGain;
private final int mTimestamp;
private final boolean mTriggeredAutoTransact;
public static final @NonNull Parcelable.Creator<PollingFrame> CREATOR =
new Parcelable.Creator<>() {
......@@ -159,14 +170,17 @@ public final class PollingFrame implements Parcelable{
mData = (data == null) ? new byte[0] : data;
mGain = frame.getInt(KEY_POLLING_LOOP_GAIN, -1);
mTimestamp = frame.getInt(KEY_POLLING_LOOP_TIMESTAMP);
mTriggeredAutoTransact = frame.containsKey(KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT)
&& frame.getBoolean(KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT);
}
public PollingFrame(@PollingFrameType int type, @Nullable byte[] data,
int gain, int timestamp) {
int gain, int timestamp, boolean triggeredAutoTransact) {
mType = type;
mData = data == null ? new byte[0] : data;
mGain = gain;
mTimestamp = timestamp;
mTriggeredAutoTransact = triggeredAutoTransact;
}
/**
......@@ -210,6 +224,14 @@ public final class PollingFrame implements Parcelable{
return mTimestamp;
}
/**
* Returns whether this frame triggered the device to automatically disable observe mode and
* allow one transaction.
*/
public boolean getTriggeredAutoTransact() {
return mTriggeredAutoTransact;
}
@Override
public int describeContents() {
return 0;
......@@ -233,6 +255,7 @@ public final class PollingFrame implements Parcelable{
}
frame.putByteArray(KEY_POLLING_LOOP_DATA, getData());
frame.putInt(KEY_POLLING_LOOP_TIMESTAMP, getTimestamp());
frame.putBoolean(KEY_POLLING_LOOP_TRIGGERED_AUTOTRANSACT, getTriggeredAutoTransact());
return frame;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment