1c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo/*
2c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * Copyright (C) 2011 The Android Open Source Project
3c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo *
4c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * Licensed under the Apache License, Version 2.0 (the "License");
5c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * you may not use this file except in compliance with the License.
6c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * You may obtain a copy of the License at
7c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo *
8c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo *      http://www.apache.org/licenses/LICENSE-2.0
9c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo *
10c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * Unless required by applicable law or agreed to in writing, software
11c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * distributed under the License is distributed on an "AS IS" BASIS,
12c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * See the License for the specific language governing permissions and
14c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * limitations under the License.
15c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo */
16c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
17c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondopackage com.android.internal.telephony.cdma;
18c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
19c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondoimport android.util.Log;
20c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondoimport com.android.internal.telephony.IccConstants;
21c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondoimport com.android.internal.telephony.IccFileHandler;
2253f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondoimport android.os.Message;
23c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
24c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo/**
25c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo * {@hide}
26c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo */
27c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondopublic final class CdmaLteUiccFileHandler extends IccFileHandler {
28c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    static final String LOG_TAG = "CDMA";
29c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
30c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    CdmaLteUiccFileHandler(CDMALTEPhone phone) {
31c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        super(phone);
32c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    }
33c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
34c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    protected String getEFPath(int efid) {
35c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        switch(efid) {
36c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        case EF_CSIM_SPN:
37c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        case EF_CSIM_LI:
3853f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        case EF_CSIM_MDN:
3953f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        case EF_CSIM_IMSIM:
4053f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        case EF_CSIM_CDMAHOME:
4153f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        case EF_CSIM_EPRL:
42c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo            return MF_SIM + DF_CDMA;
43c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        case EF_AD:
44c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo            return MF_SIM + DF_GSM;
45463f22114587344c96460179069a08d7381fbfd6Jake Hamby        case EF_IMPI:
46463f22114587344c96460179069a08d7381fbfd6Jake Hamby        case EF_DOMAIN:
47463f22114587344c96460179069a08d7381fbfd6Jake Hamby        case EF_IMPU:
48463f22114587344c96460179069a08d7381fbfd6Jake Hamby            return MF_SIM + DF_ADFISIM;
49c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        }
50c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        return getCommonIccEFPath(efid);
51c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    }
52c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
5353f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo    @Override
5453f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo    public void loadEFTransparent(int fileid, Message onLoaded) {
5553f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        if (fileid == EF_CSIM_EPRL) {
5653f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo            // Entire PRL could be huge. We are only interested in
5753f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo            // the first 4 bytes of the record.
5853f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo            phone.mCM.iccIO(COMMAND_READ_BINARY, fileid, getEFPath(fileid),
5953f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo                            0, 0, 4, null, null,
6053f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo                            obtainMessage(EVENT_READ_BINARY_DONE,
6153f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo                                          fileid, 0, onLoaded));
6253f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        } else {
6353f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo            super.loadEFTransparent(fileid, onLoaded);
6453f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo        }
6553f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo    }
6653f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo
6753f67f7e9d5534cc7d4fe882e100c221ce0b193bKazuhiro Ondo
68c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    protected void logd(String msg) {
69c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        Log.d(LOG_TAG, "[CdmaLteUiccFileHandler] " + msg);
70c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    }
71c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
72c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    protected void loge(String msg) {
73c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo        Log.e(LOG_TAG, "[CdmaLteUiccFileHandler] " + msg);
74c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo    }
75c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo
76c46a085eedef8c7c59df4b182d90d787f1ff0f04Kazuhiro Ondo}
77