1c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/*
2c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Copyright (C) 2008 The Android Open Source Project
3c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville *
4c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Licensed under the Apache License, Version 2.0 (the "License");
5c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * you may not use this file except in compliance with the License.
6c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * You may obtain a copy of the License at
7c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville *
8c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville *      http://www.apache.org/licenses/LICENSE-2.0
9c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville *
10c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * Unless required by applicable law or agreed to in writing, software
11c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * distributed under the License is distributed on an "AS IS" BASIS,
12c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * See the License for the specific language governing permissions and
14c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * limitations under the License.
15c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */
16c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
17d720945f2be5ea5fe0faf67e67d9ea0e184eba67Alex Yakavenkapackage com.android.internal.telephony.uicc;
18c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
19c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport android.os.*;
20ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Savilleimport android.telephony.Rlog;
21c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
22c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savilleimport com.android.internal.telephony.CommandsInterface;
23c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
24c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville/**
25c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville * {@hide}
26c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville */
27c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Savillepublic final class RuimFileHandler extends IccFileHandler {
28cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    static final String LOG_TAG = "RuimFH";
29c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
30c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    //***** Instance Variables
31c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
32c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    //***** Constructor
33e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka    public RuimFileHandler(UiccCardApplication app, String aid, CommandsInterface ci) {
34e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        super(app, aid, ci);
35c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    }
36c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
37c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    //***** Overridden from IccFileHandler
38c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
39c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    @Override
40c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    public void loadEFImgTransparent(int fileid, int highOffset, int lowOffset,
41c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville            int length, Message onLoaded) {
42c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        Message response = obtainMessage(EVENT_READ_ICON_DONE, fileid, 0,
43c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville                onLoaded);
44c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
451b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro        /* Per TS 31.102, for displaying of Icon, under
461b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro         * DF Telecom and DF Graphics , EF instance(s) (4FXX,transparent files)
471b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro         * are present. The possible image file identifiers (EF instance) for
481b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro         * EF img ( 4F20, linear fixed file) are : 4F01 ... 4F05.
491b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro         * It should be MF_SIM + DF_TELECOM + DF_GRAPHICS, same path as EF IMG
501b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro         */
511b0331d1901d63ac65efb200b0e19d7aa4eb2b8bduho.ro        mCi.iccIOForApp(COMMAND_GET_RESPONSE, fileid, getEFPath(EF_IMG), 0, 0,
52c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville                GET_RESPONSE_EF_IMG_SIZE_BYTES, null, null,
53c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville                mAid, response);
54c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    }
55c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
56c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    @Override
57c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    protected String getEFPath(int efid) {
58c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        switch(efid) {
59c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        case EF_SMS:
60c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        case EF_CST:
61c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        case EF_RUIM_SPN:
62e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        case EF_CSIM_LI:
63e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        case EF_CSIM_MDN:
64e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        case EF_CSIM_IMSIM:
65e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        case EF_CSIM_CDMAHOME:
66e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka        case EF_CSIM_EPRL:
672351b17aba5350004fc76707f3b3d2859ce773c8xinhe        case EF_CSIM_MIPUPP:
68c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville            return MF_SIM + DF_CDMA;
69c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        }
70c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville        return getCommonIccEFPath(efid);
71c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    }
72c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
73e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka    @Override
74c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    protected void logd(String msg) {
75ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.d(LOG_TAG, "[RuimFileHandler] " + msg);
76c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    }
77c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
78e287feac673ff68565b766e0e463d105fa9cef9dAlex Yakavenka    @Override
79c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    protected void loge(String msg) {
80ded9c0af7fa49504c047275ed34c2d3b22bf0c3aWink Saville        Rlog.e(LOG_TAG, "[RuimFileHandler] " + msg);
81c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville    }
82c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville
83c38bb60d867c5d61d90b7179a9ed2b2d1848124fWink Saville}
84