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

Commit 49656895 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "New system api to get UICC terminal based on slot number" am:...

Merge "New system api to get UICC terminal based on slot number" am: 0d225be6 am: 7222dbc0 am: eb368aed

Change-Id: I4f94c604cf8e0e1f7a5b29260f532f18995ce43e
parents 9c7b6c80 eb368aed
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -41722,6 +41722,7 @@ package android.se.omapi {
  public final class SEService {
    ctor public SEService(@NonNull android.content.Context, @NonNull java.util.concurrent.Executor, @NonNull android.se.omapi.SEService.OnConnectedListener);
    method @NonNull public android.se.omapi.Reader[] getReaders();
    method @NonNull public android.se.omapi.Reader getUiccReader(int);
    method @NonNull public String getVersion();
    method public boolean isConnected();
    method public void shutdown();
+54 −25
Original line number Diff line number Diff line
@@ -98,6 +98,8 @@ public final class SEService {

    private static final String TAG = "OMAPI.SEService";

    private static final String UICC_TERMINAL = "SIM";

    private final Object mLock = new Object();

    /** The client context (e.g. activity). */
@@ -190,32 +192,33 @@ public final class SEService {
     * is of length 0.
     */
    public @NonNull Reader[] getReaders() {
        if (mSecureElementService == null) {
            throw new IllegalStateException("service not connected to system");
        }
        String[] readerNames;
        try {
            readerNames = mSecureElementService.getReaders();
        } catch (RemoteException e) {
            throw new RuntimeException(e);
        }
        loadReaders();

        Reader[] readers = new Reader[readerNames.length];
        int i = 0;
        for (String readerName : readerNames) {
            if (mReaders.get(readerName) == null) {
                try {
                    mReaders.put(readerName, new Reader(this, readerName,
                            getReader(readerName)));
                    readers[i++] = mReaders.get(readerName);
                } catch (Exception e) {
                    Log.e(TAG, "Error adding Reader: " + readerName, e);
        return mReaders.values().toArray(new Reader[0]);
    }
            } else {
                readers[i++] = mReaders.get(readerName);

    /**
      * Obtain a UICC Reader instance with specific slot number from the SecureElementService
      *
      * @param slotNumber The index of the uicc slot. The index starts from 1.
      * @throws IllegalArgumentException if the reader object corresponding to the uiccSlotNumber
      *         is not exist.
      * @return A Reader object for this uicc slot.
      */
     public @NonNull Reader getUiccReader(int slotNumber) {
         if (slotNumber < 1) {
             throw new IllegalArgumentException("slotNumber should be larger than 0");
         }
         loadReaders();

         String readerName = UICC_TERMINAL + slotNumber;
         Reader reader = mReaders.get(readerName);

         if (reader == null) {
            throw new IllegalArgumentException("Reader:" + readerName + " doesn't exist");
         }
        return readers;

         return reader;
    }

    /**
@@ -270,4 +273,30 @@ public final class SEService {
            throw new IllegalStateException(e.getMessage());
        }
    }

    /**
     * Load available Secure Element Readers
     */
    private void loadReaders() {
        if (mSecureElementService == null) {
            throw new IllegalStateException("service not connected to system");
        }
        String[] readerNames;
        try {
            readerNames = mSecureElementService.getReaders();
        } catch (RemoteException e) {
            throw e.rethrowAsRuntimeException();
        }

        for (String readerName : readerNames) {
            if (mReaders.get(readerName) == null) {
                try {
                    mReaders.put(readerName, new Reader(this, readerName,
                            getReader(readerName)));
                } catch (Exception e) {
                    Log.e(TAG, "Error adding Reader: " + readerName, e);
                }
            }
        }
    }
}