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

Commit eb368aed 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: 0d225be6 am: 7222dbc0

Change-Id: I6dfb70781fa94c518206f3e989fd810c5d9284d5
parents 420b9476 7222dbc0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40921,6 +40921,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);
                }
            }
        }
    }
}