aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal/telephony/uicc
diff options
context:
space:
mode:
authorarunvoddu <arunvoddu@google.com>2022-03-20 02:18:22 +0000
committerarunvoddu <arunvoddu@google.com>2022-07-10 04:46:41 +0000
commit83c2ecbd706b854d6ac59a2f9e1b58459baf27c8 (patch)
treebe5e52baeec68d7172f4b68b3b3be04f23091aa6 /src/java/com/android/internal/telephony/uicc
parent98b28f19bc02f011f88bae5b36df619ca24a8f8b (diff)
downloadtelephony-83c2ecbd706b854d6ac59a2f9e1b58459baf27c8.tar.gz
Fetches sim service table from the EF_SST elementary file of the sim
Bug: 217794026 Test: Atest Verification completed Change-Id: I2445a8a419cc5abf9c602e1cd25536cc681604a6
Diffstat (limited to 'src/java/com/android/internal/telephony/uicc')
-rw-r--r--src/java/com/android/internal/telephony/uicc/IsimServiceTable.java56
-rw-r--r--src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java15
-rw-r--r--src/java/com/android/internal/telephony/uicc/SIMRecords.java14
-rw-r--r--src/java/com/android/internal/telephony/uicc/UsimServiceTable.java4
4 files changed, 87 insertions, 2 deletions
diff --git a/src/java/com/android/internal/telephony/uicc/IsimServiceTable.java b/src/java/com/android/internal/telephony/uicc/IsimServiceTable.java
new file mode 100644
index 0000000000..289229cc90
--- /dev/null
+++ b/src/java/com/android/internal/telephony/uicc/IsimServiceTable.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2022 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 com.android.internal.telephony.uicc;
+
+public final class IsimServiceTable extends IccServiceTable {
+ private static final String TAG = "IsimServiceTable";
+ public enum IsimService {
+ PCSCF_ADDRESS,
+ GBA, // Generic Bootstrapping Architecture (GBA)
+ HTTP_DIGEST,
+ GBA_LOCALKEY_ESTABLISHMENT, // GBA-based Local Key Establishment Mechanism
+ PCSCF_DISCOVERY_FOR_IMS, // Support of P-CSCF discovery for IMS Local Break Out
+ SMS,
+ SMSR, // Short Message Status Reports
+ SM_OVERIP_AND_DATA_DL_VIA_SMS_PP, // Support for SM-over-IP including data download via
+ // SMS-PP
+ COMMUNICATION_CONTROL_FOR_IMS_BY_ISIM,
+ UICC_ACCESS_TO_IMS
+ }
+
+ public IsimServiceTable(byte[] table) {
+ super(table);
+ }
+
+ public boolean isAvailable(IsimService service) {
+ return super.isAvailable(service.ordinal());
+ }
+
+ @Override
+ protected String getTag() {
+ return TAG;
+ }
+
+ @Override
+ protected Object[] getValues() {
+ return IsimService.values();
+ }
+
+ public byte[] getISIMServiceTable() {
+ return mServiceTable;
+ }
+}
diff --git a/src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java b/src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java
index 7cd59c74ea..b2206efe13 100644
--- a/src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java
+++ b/src/java/com/android/internal/telephony/uicc/IsimUiccRecords.java
@@ -225,6 +225,11 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords {
}
}
+ @VisibleForTesting
+ public EfIsimIstLoaded getIsimIstObject() {
+ return new EfIsimIstLoaded();
+ }
+
private class EfIsimSmssLoaded implements IccRecords.IccRecordLoaded {
@Override
@@ -484,11 +489,11 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords {
pw.println("IsimRecords: " + this);
pw.println(" extends:");
super.dump(fd, pw, args);
+ pw.println(" mIsimServiceTable=" + getIsimServiceTable());
if (DUMP_RECORDS) {
pw.println(" mIsimImpi=" + mIsimImpi);
pw.println(" mIsimDomain=" + mIsimDomain);
pw.println(" mIsimImpu[]=" + Arrays.toString(mIsimImpu));
- pw.println(" mIsimIst" + mIsimIst);
pw.println(" mIsimPcscf" + mIsimPcscf);
pw.println(" mPsismsc=" + mPsiSmsc);
pw.println(" mSmss TPMR=" + getSmssTpmrValue());
@@ -496,6 +501,14 @@ public class IsimUiccRecords extends IccRecords implements IsimRecords {
pw.flush();
}
+ // Just to return the Enums of service table to print in DUMP
+ private IsimServiceTable getIsimServiceTable() {
+ if (mIsimIst != null) {
+ byte[] istTable = IccUtils.hexStringToBytes(mIsimIst);
+ return new IsimServiceTable(istTable);
+ }
+ return null;
+ }
@Override
public int getVoiceMessageCount() {
return 0; // Not applicable to Isim
diff --git a/src/java/com/android/internal/telephony/uicc/SIMRecords.java b/src/java/com/android/internal/telephony/uicc/SIMRecords.java
index f84cf8a8bc..39336c6c0c 100644
--- a/src/java/com/android/internal/telephony/uicc/SIMRecords.java
+++ b/src/java/com/android/internal/telephony/uicc/SIMRecords.java
@@ -167,7 +167,7 @@ public class SIMRecords extends IccRecords {
private static final int EVENT_UPDATE_DONE = 14 + SIM_RECORD_EVENT_BASE;
protected static final int EVENT_GET_PNN_DONE = 15 + SIM_RECORD_EVENT_BASE;
protected static final int EVENT_GET_OPL_DONE = 16 + SIM_RECORD_EVENT_BASE;
- private static final int EVENT_GET_SST_DONE = 17 + SIM_RECORD_EVENT_BASE;
+ protected static final int EVENT_GET_SST_DONE = 17 + SIM_RECORD_EVENT_BASE;
private static final int EVENT_GET_ALL_SMS_DONE = 18 + SIM_RECORD_EVENT_BASE;
private static final int EVENT_MARK_SMS_READ_DONE = 19 + SIM_RECORD_EVENT_BASE;
private static final int EVENT_SET_MBDN_DONE = 20 + SIM_RECORD_EVENT_BASE;
@@ -279,6 +279,18 @@ public class SIMRecords extends IccRecords {
return mUsimServiceTable;
}
+ /**
+ * Fetches the USIM service table from UsimServiceTable
+ *
+ * @return HexString representation of USIM service table
+ */
+ public String getSimServiceTable() {
+ if (mUsimServiceTable != null) {
+ return IccUtils.bytesToHexString(mUsimServiceTable.getUSIMServiceTable());
+ }
+ return null;
+ }
+
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
private int getExtFromEf(int ef) {
int ext;
diff --git a/src/java/com/android/internal/telephony/uicc/UsimServiceTable.java b/src/java/com/android/internal/telephony/uicc/UsimServiceTable.java
index fc58d3cec3..ea2bf42dce 100644
--- a/src/java/com/android/internal/telephony/uicc/UsimServiceTable.java
+++ b/src/java/com/android/internal/telephony/uicc/UsimServiceTable.java
@@ -157,4 +157,8 @@ public final class UsimServiceTable extends IccServiceTable {
protected Object[] getValues() {
return UsimService.values();
}
+
+ public byte[] getUSIMServiceTable() {
+ return mServiceTable;
+ }
}