1e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka/* 2e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Copyright (C) 2006, 2012 The Android Open Source Project 3e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 4e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Licensed under the Apache License, Version 2.0 (the "License"); 5e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * you may not use this file except in compliance with the License. 6e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * You may obtain a copy of the License at 7e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 8e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * http://www.apache.org/licenses/LICENSE-2.0 9e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * 10e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * Unless required by applicable law or agreed to in writing, software 11e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * distributed under the License is distributed on an "AS IS" BASIS, 12e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * See the License for the specific language governing permissions and 14e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * limitations under the License. 15e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 16e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 17d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkapackage com.android.internal.telephony.uicc; 18e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 19ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog; 20e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 21e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.CommandsInterface; 22d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkaimport com.android.internal.telephony.uicc.UiccCardApplication; 23e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 24e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka/** 25e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * {@hide} 26e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * This class should be used to access files in USIM ADF 27e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 28e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkapublic final class UsimFileHandler extends IccFileHandler implements IccConstants { 29cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville static final String LOG_TAG = "UsimFH"; 30e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 31e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public UsimFileHandler(UiccCardApplication app, String aid, CommandsInterface ci) { 32e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka super(app, aid, ci); 33e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 34e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 35e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 36e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected String getEFPath(int efid) { 37e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka switch(efid) { 38e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SMS: 39b66ae5f6334393d39becc860840ab42a90c9a926Preeti Ahuja case EF_EXT5: 40e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_EXT6: 41e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MWIS: 42e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MBI: 43e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN: 44e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_AD: 45e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MBDN: 46e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_PNN: 47e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_OPL: 48e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPDI: 49e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SST: 50e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CFIS: 51e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MAILBOX_CPHS: 52e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_VOICE_MAIL_INDICATOR_CPHS: 53e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CFF_CPHS: 54e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN_CPHS: 55e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN_SHORT_CPHS: 56e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_FDN: 57e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MSISDN: 58e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_EXT2: 59e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_INFO_CPHS: 60e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CSP_CPHS: 612f837b8058eba0bc59e983c67efbc00cd9a80eeeHyejin Kim case EF_GID1: 627234bd8664dbec97858f3f635eaa01c77d2f2881Junda Liu case EF_GID2: 63230e46bdd850306dcc54ab6038d4d3132f5032abnfjb case EF_LI: 64e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_ADF; 65e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 66e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_PBR: 67e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // we only support global phonebook. 68e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_TELECOM + DF_PHONEBOOK; 69e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 70e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka String path = getCommonIccEFPath(efid); 71e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (path == null) { 72e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // The EFids in USIM phone book entries are decided by the card manufacturer. 73e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // So if we don't match any of the cases above and if its a USIM return 74e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // the phone book path. 75e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_TELECOM + DF_PHONEBOOK; 76e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 77e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return path; 78e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 79e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 80e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 81e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected void logd(String msg) { 82ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.d(LOG_TAG, msg); 83e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 84e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 85e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 86e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected void loge(String msg) { 87ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville Rlog.e(LOG_TAG, msg); 88e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 89e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka} 90