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