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