19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Copyright 2007, The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project** limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project*/ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.internal.telephony.gsm; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19d7784628368404ff53caf080640cd9ff32775fd3David Sobreira Marquesimport java.util.concurrent.atomic.AtomicBoolean; 20d7784628368404ff53caf080640cd9ff32775fd3David Sobreira Marques 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Message; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savilleimport com.android.internal.telephony.IccPhoneBookInterfaceManager; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * SimPhoneBookInterfaceManager to provide an inter-process communication to 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * access ADN-like SIM records. 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepublic class SimPhoneBookInterfaceManager extends IccPhoneBookInterfaceManager { 3304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville static final String LOG_TAG = "GSM"; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public SimPhoneBookInterfaceManager(GSMPhone phone) { 3604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville super(phone); 371f3278e111c8abadedf71a9bcdbbaffe154be738Wink Saville adnCache = phone.mIccRecords.getAdnCache(); 3804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville //NOTE service "simphonebook" added by IccSmsInterfaceManagerProxy 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville public void dispose() { 4204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville super.dispose(); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville protected void finalize() { 46a1303e0193aeb32131572fb0dfe8e595a908b4e0Romain Guy try { 47a1303e0193aeb32131572fb0dfe8e595a908b4e0Romain Guy super.finalize(); 48a1303e0193aeb32131572fb0dfe8e595a908b4e0Romain Guy } catch (Throwable throwable) { 49a1303e0193aeb32131572fb0dfe8e595a908b4e0Romain Guy Log.e(LOG_TAG, "Error while finalizing:", throwable); 50a1303e0193aeb32131572fb0dfe8e595a908b4e0Romain Guy } 5104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville if(DBG) Log.d(LOG_TAG, "SimPhoneBookInterfaceManager finalized"); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int[] getAdnRecordsSize(int efid) { 5504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville if (DBG) logd("getAdnRecordsSize: efid=" + efid); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized(mLock) { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project checkThread(); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project recordSize = new int[3]; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville //Using mBaseHandler, no difference in EVENT_GET_SIZE_DONE handling 61d7784628368404ff53caf080640cd9ff32775fd3David Sobreira Marques AtomicBoolean status = new AtomicBoolean(false); 62d7784628368404ff53caf080640cd9ff32775fd3David Sobreira Marques Message response = mBaseHandler.obtainMessage(EVENT_GET_SIZE_DONE, status); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville phone.getIccFileHandler().getEFLinearRecordSize(efid, response); 65d7784628368404ff53caf080640cd9ff32775fd3David Sobreira Marques waitForResult(status); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 6804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville return recordSize; 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville protected void logd(String msg) { 7204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville Log.d(LOG_TAG, "[SimPbInterfaceManager] " + msg); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville protected void loge(String msg) { 7604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville Log.e(LOG_TAG, "[SimPbInterfaceManager] " + msg); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville 80