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