diff options
author | arunvoddu <arunvoddu@google.com> | 2022-03-20 02:18:22 +0000 |
---|---|---|
committer | arunvoddu <arunvoddu@google.com> | 2022-07-10 04:46:41 +0000 |
commit | 83c2ecbd706b854d6ac59a2f9e1b58459baf27c8 (patch) | |
tree | be5e52baeec68d7172f4b68b3b3be04f23091aa6 /src/java/com/android/internal/telephony/uicc | |
parent | 98b28f19bc02f011f88bae5b36df619ca24a8f8b (diff) | |
download | telephony-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')
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; + } } |