1/*
2** Copyright 2007, The Android Open Source Project
3**
4** Licensed under the Apache License, Version 2.0 (the "License");
5** you may not use this file except in compliance with the License.
6** You may obtain a copy of the License at
7**
8**     http://www.apache.org/licenses/LICENSE-2.0
9**
10** Unless required by applicable law or agreed to in writing, software
11** distributed under the License is distributed on an "AS IS" BASIS,
12** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13** See the License for the specific language governing permissions and
14** limitations under the License.
15*/
16
17package com.android.internal.telephony.cdma;
18
19import java.util.concurrent.atomic.AtomicBoolean;
20
21import android.os.Message;
22import android.util.Log;
23
24import com.android.internal.telephony.IccFileHandler;
25import com.android.internal.telephony.IccPhoneBookInterfaceManager;
26
27/**
28 * RuimPhoneBookInterfaceManager to provide an inter-process communication to
29 * access ADN-like SIM records.
30 */
31
32
33public class RuimPhoneBookInterfaceManager extends IccPhoneBookInterfaceManager {
34    static final String LOG_TAG = "CDMA";
35
36    public RuimPhoneBookInterfaceManager(CDMAPhone phone) {
37        super(phone);
38        //NOTE service "simphonebook" added by IccSmsInterfaceManagerProxy
39    }
40
41    public void dispose() {
42        super.dispose();
43    }
44
45    protected void finalize() {
46        try {
47            super.finalize();
48        } catch (Throwable throwable) {
49            Log.e(LOG_TAG, "Error while finalizing:", throwable);
50        }
51        if(DBG) Log.d(LOG_TAG, "RuimPhoneBookInterfaceManager finalized");
52    }
53
54    public int[] getAdnRecordsSize(int efid) {
55        if (DBG) logd("getAdnRecordsSize: efid=" + efid);
56        synchronized(mLock) {
57            checkThread();
58            recordSize = new int[3];
59
60            //Using mBaseHandler, no difference in EVENT_GET_SIZE_DONE handling
61            AtomicBoolean status = new AtomicBoolean(false);
62            Message response = mBaseHandler.obtainMessage(EVENT_GET_SIZE_DONE, status);
63
64            IccFileHandler fh = phone.getIccFileHandler();
65            //IccFileHandler can be null if there is no icc card present.
66            if (fh != null) {
67                fh.getEFLinearRecordSize(efid, response);
68                waitForResult(status);
69            }
70        }
71
72        return recordSize;
73    }
74
75    protected void logd(String msg) {
76        Log.d(LOG_TAG, "[RuimPbInterfaceManager] " + msg);
77    }
78
79    protected void loge(String msg) {
80        Log.e(LOG_TAG, "[RuimPbInterfaceManager] " + msg);
81    }
82}
83
84