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 17e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkapackage com.android.internal.telephony; 18e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 19e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport android.util.Log; 20e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 21e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.CommandsInterface; 22e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.IccConstants; 23e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.IccFileHandler; 24e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkaimport com.android.internal.telephony.UiccCardApplication; 25e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 26e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka/** 27e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * {@hide} 28e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka * This class should be used to access files in USIM ADF 29e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka */ 30e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenkapublic final class UsimFileHandler extends IccFileHandler implements IccConstants { 31e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka static final String LOG_TAG = "RIL_UsimFH"; 32e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 33e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka public UsimFileHandler(UiccCardApplication app, String aid, CommandsInterface ci) { 34e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka super(app, aid, ci); 35e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 36e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 37e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 38e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected String getEFPath(int efid) { 39e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka switch(efid) { 40e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SMS: 41e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_EXT6: 42e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MWIS: 43e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MBI: 44e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN: 45e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_AD: 46e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MBDN: 47e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_PNN: 48e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_OPL: 49e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPDI: 50e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SST: 51e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CFIS: 52e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MAILBOX_CPHS: 53e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_VOICE_MAIL_INDICATOR_CPHS: 54e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CFF_CPHS: 55e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN_CPHS: 56e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_SPN_SHORT_CPHS: 57e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_FDN: 58e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_MSISDN: 59e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_EXT2: 60e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_INFO_CPHS: 61e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_CSP_CPHS: 62e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_ADF; 63e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 64e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka case EF_PBR: 65e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // we only support global phonebook. 66e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_TELECOM + DF_PHONEBOOK; 67e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 68e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka String path = getCommonIccEFPath(efid); 69e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka if (path == null) { 70e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // The EFids in USIM phone book entries are decided by the card manufacturer. 71e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // So if we don't match any of the cases above and if its a USIM return 72e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka // the phone book path. 73e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return MF_SIM + DF_TELECOM + DF_PHONEBOOK; 74e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 75e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka return path; 76e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 77e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 78e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 79e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected void logd(String msg) { 80e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka Log.d(LOG_TAG, msg); 81e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 82e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka 83e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka @Override 84e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka protected void loge(String msg) { 85e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka Log.e(LOG_TAG, msg); 86e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka } 87e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka} 88