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