Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab8f48c2 authored by Jason parks's avatar Jason parks
Browse files

Implement teardown script.

Change-Id: I1a3feda3b1007b08fcaa24c3f8dd21abf1efd885
parent a482d83c
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 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;

parcelable ApduList;
 No newline at end of file
+68 −0
Original line number Diff line number Diff line
package android.nfc;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.List;

/**
 * @hide
 */
public class ApduList implements Parcelable {

    private ArrayList<byte[]> commands = new ArrayList<byte[]>();

    public ApduList() {
    }

    public void add(byte[] command) {
        commands.add(command);
    }

    public List<byte[]> get() {
        return commands;
    }

    public static final Parcelable.Creator<ApduList> CREATOR =
        new Parcelable.Creator<ApduList>() {
        @Override
        public ApduList createFromParcel(Parcel in) {
            return new ApduList(in);
        }

        @Override
        public ApduList[] newArray(int size) {
            return new ApduList[size];
        }
    };

    private ApduList(Parcel in) {
        int count = in.readInt();

        for (int i = 0 ; i < count ; i++) {

            int length = in.readInt();
            byte[] cmd = new byte[length];
            in.readByteArray(cmd);
            commands.add(cmd);
        }
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(commands.size());

        for (byte[] cmd : commands) {
            dest.writeInt(cmd.length);
            dest.writeByteArray(cmd);
        }
    }
}

+5 −1
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@

package android.nfc;

import android.nfc.ApduList;
import android.os.Bundle;


/**
 * {@hide}
 */
@@ -27,4 +29,6 @@ interface INfcAdapterExtras {
    Bundle transceive(in byte[] data_in);
    int getCardEmulationRoute();
    void setCardEmulationRoute(int route);
    void registerTearDownApdus(String packageName, in ApduList apdu);
    void unregisterTearDownApdus(String packageName);
}
+17 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.nfc_extras;

import android.annotation.SdkConstant;
import android.annotation.SdkConstant.SdkConstantType;
import android.nfc.ApduList;
import android.nfc.INfcAdapterExtras;
import android.nfc.NfcAdapter;
import android.os.RemoteException;
@@ -184,4 +185,20 @@ public final class NfcAdapterExtras {
    public NfcExecutionEnvironment getEmbeddedExecutionEnvironment() {
        return sEmbeddedEe;
    }

    public void registerTearDownApdus(String packageName, ApduList apdus) {
        try {
            sService.registerTearDownApdus(packageName, apdus);
        } catch (RemoteException e) {
            Log.e(TAG, "", e);
        }
    }

    public void unregisterTearDownApdus(String packageName) {
        try {
            sService.unregisterTearDownApdus(packageName);
        } catch (RemoteException e) {
            Log.e(TAG, "", e);
        }
    }
}