1767a662ecde33c3979bf02b793d392aca0403162Wink Saville/* 2767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Copyright (C) 2006 The Android Open Source Project 3767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 4767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5767a662ecde33c3979bf02b793d392aca0403162Wink Saville * you may not use this file except in compliance with the License. 6767a662ecde33c3979bf02b793d392aca0403162Wink Saville * You may obtain a copy of the License at 7767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 8767a662ecde33c3979bf02b793d392aca0403162Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 9767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 10767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Unless required by applicable law or agreed to in writing, software 11767a662ecde33c3979bf02b793d392aca0403162Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12767a662ecde33c3979bf02b793d392aca0403162Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13767a662ecde33c3979bf02b793d392aca0403162Wink Saville * See the License for the specific language governing permissions and 14767a662ecde33c3979bf02b793d392aca0403162Wink Saville * limitations under the License. 15767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 16767a662ecde33c3979bf02b793d392aca0403162Wink Saville 17767a662ecde33c3979bf02b793d392aca0403162Wink Savillepackage com.android.internal.telephony; 18767a662ecde33c3979bf02b793d392aca0403162Wink Saville 19767a662ecde33c3979bf02b793d392aca0403162Wink Saville 20767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.content.Context; 21767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.RegistrantList; 22767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Registrant; 23767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.Handler; 24767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.os.AsyncResult; 255e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Savilleimport android.os.SystemProperties; 26767a662ecde33c3979bf02b793d392aca0403162Wink Savilleimport android.util.Log; 27767a662ecde33c3979bf02b793d392aca0403162Wink Saville 28fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Savilleimport java.io.FileInputStream; 29fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Savilleimport java.io.IOException; 30fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Savilleimport java.util.regex.Matcher; 31fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Savilleimport java.util.regex.Pattern; 32fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 33767a662ecde33c3979bf02b793d392aca0403162Wink Saville/** 34767a662ecde33c3979bf02b793d392aca0403162Wink Saville * {@hide} 35767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 36767a662ecde33c3979bf02b793d392aca0403162Wink Savillepublic abstract class BaseCommands implements CommandsInterface { 37767a662ecde33c3979bf02b793d392aca0403162Wink Saville static final String LOG_TAG = "RILB"; 38767a662ecde33c3979bf02b793d392aca0403162Wink Saville 39767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Instance Variables 40767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Context mContext; 41767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RadioState mState = RadioState.RADIO_UNAVAILABLE; 429d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville protected RadioState mSimState = RadioState.RADIO_UNAVAILABLE; 439d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville protected RadioState mRuimState = RadioState.RADIO_UNAVAILABLE; 449d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville protected RadioState mNvState = RadioState.RADIO_UNAVAILABLE; 45767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Object mStateMonitor = new Object(); 46767a662ecde33c3979bf02b793d392aca0403162Wink Saville 47767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mRadioStateChangedRegistrants = new RegistrantList(); 48767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mOnRegistrants = new RegistrantList(); 49767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mAvailRegistrants = new RegistrantList(); 50767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mOffOrNotAvailRegistrants = new RegistrantList(); 51767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mNotAvailRegistrants = new RegistrantList(); 52767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mSIMReadyRegistrants = new RegistrantList(); 53767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mSIMLockedRegistrants = new RegistrantList(); 54767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mRUIMReadyRegistrants = new RegistrantList(); 55767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mRUIMLockedRegistrants = new RegistrantList(); 56767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mNVReadyRegistrants = new RegistrantList(); 57767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mCallStateRegistrants = new RegistrantList(); 585284090631e638b916d9a453212e9dc802656a67Wink Saville protected RegistrantList mVoiceNetworkStateRegistrants = new RegistrantList(); 595284090631e638b916d9a453212e9dc802656a67Wink Saville protected RegistrantList mDataNetworkStateRegistrants = new RegistrantList(); 60767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mRadioTechnologyChangedRegistrants = new RegistrantList(); 61767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mIccStatusChangedRegistrants = new RegistrantList(); 62767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mVoicePrivacyOnRegistrants = new RegistrantList(); 63767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected RegistrantList mVoicePrivacyOffRegistrants = new RegistrantList(); 642a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh protected Registrant mUnsolOemHookRawRegistrant; 65dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville protected RegistrantList mOtaProvisionRegistrants = new RegistrantList(); 66dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville protected RegistrantList mCallWaitingInfoRegistrants = new RegistrantList(); 67dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville protected RegistrantList mDisplayInfoRegistrants = new RegistrantList(); 68dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville protected RegistrantList mSignalInfoRegistrants = new RegistrantList(); 6922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected RegistrantList mNumberInfoRegistrants = new RegistrantList(); 7022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected RegistrantList mRedirNumInfoRegistrants = new RegistrantList(); 7122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected RegistrantList mLineControlInfoRegistrants = new RegistrantList(); 7222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected RegistrantList mT53ClirInfoRegistrants = new RegistrantList(); 7322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville protected RegistrantList mT53AudCntrlInfoRegistrants = new RegistrantList(); 74bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang protected RegistrantList mRingbackToneRegistrants = new RegistrantList(); 751ccc41ed938ff005ae3d621292580a90601242caJohn Wang protected RegistrantList mResendIncallMuteRegistrants = new RegistrantList(); 765284090631e638b916d9a453212e9dc802656a67Wink Saville protected RegistrantList mCdmaSubscriptionChangedRegistrants = new RegistrantList(); 775284090631e638b916d9a453212e9dc802656a67Wink Saville protected RegistrantList mCdmaPrlChangedRegistrants = new RegistrantList(); 785284090631e638b916d9a453212e9dc802656a67Wink Saville protected RegistrantList mExitEmergencyCallbackModeRegistrants = new RegistrantList(); 791dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville protected RegistrantList mRilConnectedRegistrants = new RegistrantList(); 80a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt protected RegistrantList mIccRefreshRegistrants = new RegistrantList(); 8122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 82b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby protected Registrant mGsmSmsRegistrant; 83b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby protected Registrant mCdmaSmsRegistrant; 84767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mNITZTimeRegistrant; 85767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mSignalStrengthRegistrant; 86767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mUSSDRegistrant; 87767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mSmsOnSimRegistrant; 88767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mSmsStatusRegistrant; 89767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mSsnRegistrant; 90a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka protected Registrant mCatSessionEndRegistrant; 91a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka protected Registrant mCatProCmdRegistrant; 92a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka protected Registrant mCatEventRegistrant; 93a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka protected Registrant mCatCallSetUpRegistrant; 94767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mIccSmsFullRegistrant; 95e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville protected Registrant mEmergencyCallbackModeRegistrant; 96767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mRingRegistrant; 97767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected Registrant mRestrictedStateRegistrant; 98e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang protected Registrant mGsmBroadcastSmsRegistrant; 99767a662ecde33c3979bf02b793d392aca0403162Wink Saville 10005d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // Preferred network type received from PhoneFactory. 10105d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // This is used when establishing a connection to the 10205d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville // vendor ril so it starts up in the correct mode. 10305d69edc0ba9b016a1bd7cb89a03b24c5659bf8dWink Saville protected int mPreferredNetworkType; 104e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // CDMA subscription received from PhoneFactory 105767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected int mCdmaSubscription; 106e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville // Type of Phone, GSM or CDMA. Set by CDMAPhone or GSMPhone. 107767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected int mPhoneType; 1081dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville // RIL Version 1091dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville protected int mRilVersion = -1; 110767a662ecde33c3979bf02b793d392aca0403162Wink Saville 111767a662ecde33c3979bf02b793d392aca0403162Wink Saville public BaseCommands(Context context) { 112767a662ecde33c3979bf02b793d392aca0403162Wink Saville mContext = context; // May be null (if so we won't log statistics) 113767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 114767a662ecde33c3979bf02b793d392aca0403162Wink Saville 115767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** CommandsInterface implementation 116767a662ecde33c3979bf02b793d392aca0403162Wink Saville 117767a662ecde33c3979bf02b793d392aca0403162Wink Saville public RadioState getRadioState() { 118767a662ecde33c3979bf02b793d392aca0403162Wink Saville return mState; 119767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 120767a662ecde33c3979bf02b793d392aca0403162Wink Saville 1219d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public RadioState getSimState() { 1229d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville return mSimState; 1239d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 1249d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 1259d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public RadioState getRuimState() { 1269d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville return mRuimState; 1279d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 1289d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 1299d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville public RadioState getNvState() { 1309d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville return mNvState; 1319d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 1329d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 133767a662ecde33c3979bf02b793d392aca0403162Wink Saville 134767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForRadioStateChanged(Handler h, int what, Object obj) { 135767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 136767a662ecde33c3979bf02b793d392aca0403162Wink Saville 137767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 138767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioStateChangedRegistrants.add(r); 139767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(); 140767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 141767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 142767a662ecde33c3979bf02b793d392aca0403162Wink Saville 143767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForRadioStateChanged(Handler h) { 144767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 145767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioStateChangedRegistrants.remove(h); 146767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 147767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 148767a662ecde33c3979bf02b793d392aca0403162Wink Saville 149767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForOn(Handler h, int what, Object obj) { 150767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 151767a662ecde33c3979bf02b793d392aca0403162Wink Saville 152767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 153767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOnRegistrants.add(r); 154767a662ecde33c3979bf02b793d392aca0403162Wink Saville 155767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isOn()) { 156767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 157767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 158767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 159767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 160767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForOn(Handler h) { 161767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 162767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOnRegistrants.remove(h); 163767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 164767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 165767a662ecde33c3979bf02b793d392aca0403162Wink Saville 166767a662ecde33c3979bf02b793d392aca0403162Wink Saville 167767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForAvailable(Handler h, int what, Object obj) { 168767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 169767a662ecde33c3979bf02b793d392aca0403162Wink Saville 170767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 171767a662ecde33c3979bf02b793d392aca0403162Wink Saville mAvailRegistrants.add(r); 172767a662ecde33c3979bf02b793d392aca0403162Wink Saville 173767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isAvailable()) { 174767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 175767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 176767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 177767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 178767a662ecde33c3979bf02b793d392aca0403162Wink Saville 179767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForAvailable(Handler h) { 180767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized(mStateMonitor) { 181767a662ecde33c3979bf02b793d392aca0403162Wink Saville mAvailRegistrants.remove(h); 182767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 183767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 184767a662ecde33c3979bf02b793d392aca0403162Wink Saville 185767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForNotAvailable(Handler h, int what, Object obj) { 186767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 187767a662ecde33c3979bf02b793d392aca0403162Wink Saville 188767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 189767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotAvailRegistrants.add(r); 190767a662ecde33c3979bf02b793d392aca0403162Wink Saville 191767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (!mState.isAvailable()) { 192767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 193767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 194767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 195767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 196767a662ecde33c3979bf02b793d392aca0403162Wink Saville 197767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForNotAvailable(Handler h) { 198767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 199767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotAvailRegistrants.remove(h); 200767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 201767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 202767a662ecde33c3979bf02b793d392aca0403162Wink Saville 203767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForOffOrNotAvailable(Handler h, int what, Object obj) { 204767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 205767a662ecde33c3979bf02b793d392aca0403162Wink Saville 206767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 207767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOffOrNotAvailRegistrants.add(r); 208767a662ecde33c3979bf02b793d392aca0403162Wink Saville 209767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState == RadioState.RADIO_OFF || !mState.isAvailable()) { 210767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 211767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 212767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 213767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 214767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForOffOrNotAvailable(Handler h) { 215767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized(mStateMonitor) { 216767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOffOrNotAvailRegistrants.remove(h); 217767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 218767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 219767a662ecde33c3979bf02b793d392aca0403162Wink Saville 220767a662ecde33c3979bf02b793d392aca0403162Wink Saville 221767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** Any transition into SIM_READY */ 222767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForSIMReady(Handler h, int what, Object obj) { 223767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 224767a662ecde33c3979bf02b793d392aca0403162Wink Saville 225767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 226767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMReadyRegistrants.add(r); 227767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2289d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if (mSimState.isSIMReady()) { 229767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 230767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 231767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 232767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 233767a662ecde33c3979bf02b793d392aca0403162Wink Saville 234767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForSIMReady(Handler h) { 235767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 236767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMReadyRegistrants.remove(h); 237767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 238767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 239767a662ecde33c3979bf02b793d392aca0403162Wink Saville 240767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** Any transition into RUIM_READY */ 241767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForRUIMReady(Handler h, int what, Object obj) { 242767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 243767a662ecde33c3979bf02b793d392aca0403162Wink Saville 244767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 245767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMReadyRegistrants.add(r); 246767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2479d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if (mRuimState.isRUIMReady()) { 248767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 249767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 250767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 251767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 252767a662ecde33c3979bf02b793d392aca0403162Wink Saville 253767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForRUIMReady(Handler h) { 254767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized(mStateMonitor) { 255767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMReadyRegistrants.remove(h); 256767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 257767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 258767a662ecde33c3979bf02b793d392aca0403162Wink Saville 259767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** Any transition into NV_READY */ 260767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForNVReady(Handler h, int what, Object obj) { 261767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 262767a662ecde33c3979bf02b793d392aca0403162Wink Saville 263767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 264767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNVReadyRegistrants.add(r); 265767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2669d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if (mNvState.isNVReady()) { 267767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 268767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 269767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 270767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 271767a662ecde33c3979bf02b793d392aca0403162Wink Saville 272767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForNVReady(Handler h) { 273767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 274767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNVReadyRegistrants.remove(h); 275767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 276767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 277767a662ecde33c3979bf02b793d392aca0403162Wink Saville 278767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForSIMLockedOrAbsent(Handler h, int what, Object obj) { 279767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 280767a662ecde33c3979bf02b793d392aca0403162Wink Saville 281767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 282767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMLockedRegistrants.add(r); 283767a662ecde33c3979bf02b793d392aca0403162Wink Saville 2849d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if (mSimState == RadioState.SIM_LOCKED_OR_ABSENT) { 285767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 286767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 287767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 288767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 289767a662ecde33c3979bf02b793d392aca0403162Wink Saville 290767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForSIMLockedOrAbsent(Handler h) { 291767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 292767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMLockedRegistrants.remove(h); 293767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 294767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 295767a662ecde33c3979bf02b793d392aca0403162Wink Saville 296767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForRUIMLockedOrAbsent(Handler h, int what, Object obj) { 297767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 298767a662ecde33c3979bf02b793d392aca0403162Wink Saville 299767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 300767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMLockedRegistrants.add(r); 301767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3029d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if (mRuimState == RadioState.RUIM_LOCKED_OR_ABSENT) { 303767a662ecde33c3979bf02b793d392aca0403162Wink Saville r.notifyRegistrant(new AsyncResult(null, null, null)); 304767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 305767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 306767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 307767a662ecde33c3979bf02b793d392aca0403162Wink Saville 308767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForRUIMLockedOrAbsent(Handler h) { 309767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 310767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMLockedRegistrants.remove(h); 311767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 312767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 313767a662ecde33c3979bf02b793d392aca0403162Wink Saville 314767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForCallStateChanged(Handler h, int what, Object obj) { 315767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 316767a662ecde33c3979bf02b793d392aca0403162Wink Saville 317767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCallStateRegistrants.add(r); 318767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 319767a662ecde33c3979bf02b793d392aca0403162Wink Saville 320767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForCallStateChanged(Handler h) { 321767a662ecde33c3979bf02b793d392aca0403162Wink Saville mCallStateRegistrants.remove(h); 322767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 323767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3245284090631e638b916d9a453212e9dc802656a67Wink Saville public void registerForVoiceNetworkStateChanged(Handler h, int what, Object obj) { 325767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 326767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3275284090631e638b916d9a453212e9dc802656a67Wink Saville mVoiceNetworkStateRegistrants.add(r); 328767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 329767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3305284090631e638b916d9a453212e9dc802656a67Wink Saville public void unregisterForVoiceNetworkStateChanged(Handler h) { 3315284090631e638b916d9a453212e9dc802656a67Wink Saville mVoiceNetworkStateRegistrants.remove(h); 332767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 333767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3345284090631e638b916d9a453212e9dc802656a67Wink Saville public void registerForDataNetworkStateChanged(Handler h, int what, Object obj) { 335767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 336767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3375284090631e638b916d9a453212e9dc802656a67Wink Saville mDataNetworkStateRegistrants.add(r); 338767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 339767a662ecde33c3979bf02b793d392aca0403162Wink Saville 3405284090631e638b916d9a453212e9dc802656a67Wink Saville public void unregisterForDataNetworkStateChanged(Handler h) { 3415284090631e638b916d9a453212e9dc802656a67Wink Saville mDataNetworkStateRegistrants.remove(h); 342767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 343767a662ecde33c3979bf02b793d392aca0403162Wink Saville 344767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForRadioTechnologyChanged(Handler h, int what, Object obj) { 345767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 346767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.add(r); 347767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 348767a662ecde33c3979bf02b793d392aca0403162Wink Saville 349767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForRadioTechnologyChanged(Handler h) { 350767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.remove(h); 351767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 352767a662ecde33c3979bf02b793d392aca0403162Wink Saville 353767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForIccStatusChanged(Handler h, int what, Object obj) { 354767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 355767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccStatusChangedRegistrants.add(r); 356767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 357767a662ecde33c3979bf02b793d392aca0403162Wink Saville 358767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForIccStatusChanged(Handler h) { 359767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccStatusChangedRegistrants.remove(h); 360767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 361767a662ecde33c3979bf02b793d392aca0403162Wink Saville 362b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby public void setOnNewGsmSms(Handler h, int what, Object obj) { 363b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mGsmSmsRegistrant = new Registrant (h, what, obj); 364767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 365767a662ecde33c3979bf02b793d392aca0403162Wink Saville 366b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby public void unSetOnNewGsmSms(Handler h) { 367b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mGsmSmsRegistrant.clear(); 368b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby } 369b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby 370b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby public void setOnNewCdmaSms(Handler h, int what, Object obj) { 371b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mCdmaSmsRegistrant = new Registrant (h, what, obj); 372b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby } 373b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby 374b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby public void unSetOnNewCdmaSms(Handler h) { 375b7945cae5ad0feaad09378d0db77f2b3105e5235Jake Hamby mCdmaSmsRegistrant.clear(); 376767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 377767a662ecde33c3979bf02b793d392aca0403162Wink Saville 378e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void setOnNewGsmBroadcastSms(Handler h, int what, Object obj) { 379e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang mGsmBroadcastSmsRegistrant = new Registrant (h, what, obj); 380e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 381e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 382e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang public void unSetOnNewGsmBroadcastSms(Handler h) { 383e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang mGsmBroadcastSmsRegistrant.clear(); 384e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang } 385e337d651a5199551ae3d3180176f8ac7d58c9acdjohnwang 386767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnSmsOnSim(Handler h, int what, Object obj) { 387767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSmsOnSimRegistrant = new Registrant (h, what, obj); 388767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 389767a662ecde33c3979bf02b793d392aca0403162Wink Saville 390767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnSmsOnSim(Handler h) { 391767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSmsOnSimRegistrant.clear(); 392767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 393767a662ecde33c3979bf02b793d392aca0403162Wink Saville 394767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnSmsStatus(Handler h, int what, Object obj) { 395767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSmsStatusRegistrant = new Registrant (h, what, obj); 396767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 397767a662ecde33c3979bf02b793d392aca0403162Wink Saville 398767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnSmsStatus(Handler h) { 399767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSmsStatusRegistrant.clear(); 400767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 401767a662ecde33c3979bf02b793d392aca0403162Wink Saville 402767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnSignalStrengthUpdate(Handler h, int what, Object obj) { 403767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSignalStrengthRegistrant = new Registrant (h, what, obj); 404767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 405767a662ecde33c3979bf02b793d392aca0403162Wink Saville 406767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnSignalStrengthUpdate(Handler h) { 407767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSignalStrengthRegistrant.clear(); 408767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 409767a662ecde33c3979bf02b793d392aca0403162Wink Saville 410767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnNITZTime(Handler h, int what, Object obj) { 411767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNITZTimeRegistrant = new Registrant (h, what, obj); 412767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 413767a662ecde33c3979bf02b793d392aca0403162Wink Saville 414767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnNITZTime(Handler h) { 415767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNITZTimeRegistrant.clear(); 416767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 417767a662ecde33c3979bf02b793d392aca0403162Wink Saville 418767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnUSSD(Handler h, int what, Object obj) { 419767a662ecde33c3979bf02b793d392aca0403162Wink Saville mUSSDRegistrant = new Registrant (h, what, obj); 420767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 421767a662ecde33c3979bf02b793d392aca0403162Wink Saville 422767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnUSSD(Handler h) { 423767a662ecde33c3979bf02b793d392aca0403162Wink Saville mUSSDRegistrant.clear(); 424767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 425767a662ecde33c3979bf02b793d392aca0403162Wink Saville 426767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnSuppServiceNotification(Handler h, int what, Object obj) { 427767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSsnRegistrant = new Registrant (h, what, obj); 428767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 429767a662ecde33c3979bf02b793d392aca0403162Wink Saville 430767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnSuppServiceNotification(Handler h) { 431767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSsnRegistrant.clear(); 432767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 433767a662ecde33c3979bf02b793d392aca0403162Wink Saville 434a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void setOnCatSessionEnd(Handler h, int what, Object obj) { 435a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatSessionEndRegistrant = new Registrant (h, what, obj); 436767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 437767a662ecde33c3979bf02b793d392aca0403162Wink Saville 438a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void unSetOnCatSessionEnd(Handler h) { 439a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatSessionEndRegistrant.clear(); 440767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 441767a662ecde33c3979bf02b793d392aca0403162Wink Saville 442a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void setOnCatProactiveCmd(Handler h, int what, Object obj) { 443a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatProCmdRegistrant = new Registrant (h, what, obj); 444767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 445767a662ecde33c3979bf02b793d392aca0403162Wink Saville 446a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void unSetOnCatProactiveCmd(Handler h) { 447a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatProCmdRegistrant.clear(); 448767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 449767a662ecde33c3979bf02b793d392aca0403162Wink Saville 450a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void setOnCatEvent(Handler h, int what, Object obj) { 451a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatEventRegistrant = new Registrant (h, what, obj); 452767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 453767a662ecde33c3979bf02b793d392aca0403162Wink Saville 454a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void unSetOnCatEvent(Handler h) { 455a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatEventRegistrant.clear(); 456767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 457767a662ecde33c3979bf02b793d392aca0403162Wink Saville 458a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void setOnCatCallSetUp(Handler h, int what, Object obj) { 459a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatCallSetUpRegistrant = new Registrant (h, what, obj); 460767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 461767a662ecde33c3979bf02b793d392aca0403162Wink Saville 462a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka public void unSetOnCatCallSetUp(Handler h) { 463a27353c1965911f69be8d02a01b15389189eab9dAlex Yakavenka mCatCallSetUpRegistrant.clear(); 464767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 465767a662ecde33c3979bf02b793d392aca0403162Wink Saville 466767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnIccSmsFull(Handler h, int what, Object obj) { 467767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant = new Registrant (h, what, obj); 468767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 469767a662ecde33c3979bf02b793d392aca0403162Wink Saville 470767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnIccSmsFull(Handler h) { 471767a662ecde33c3979bf02b793d392aca0403162Wink Saville mIccSmsFullRegistrant.clear(); 472767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 473767a662ecde33c3979bf02b793d392aca0403162Wink Saville 474a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt public void registerForIccRefresh(Handler h, int what, Object obj) { 475a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt Registrant r = new Registrant (h, what, obj); 476a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt mIccRefreshRegistrants.add(r); 477767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 478987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville public void setOnIccRefresh(Handler h, int what, Object obj) { 479987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville registerForIccRefresh(h, what, obj); 480987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville } 481767a662ecde33c3979bf02b793d392aca0403162Wink Saville 482e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville public void setEmergencyCallbackMode(Handler h, int what, Object obj) { 483e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville mEmergencyCallbackModeRegistrant = new Registrant (h, what, obj); 484e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 485e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 486a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt public void unregisterForIccRefresh(Handler h) { 487a142512a5009d7b4c422d23b1d7bab8d219eb50bRobert Greenwalt mIccRefreshRegistrants.remove(h); 488767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 489987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville public void unsetOnIccRefresh(Handler h) { 490987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville unregisterForIccRefresh(h); 491987cd49966d0b52088f1650176cb413e4ef4a39eWink Saville } 492767a662ecde33c3979bf02b793d392aca0403162Wink Saville 493767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnCallRing(Handler h, int what, Object obj) { 494767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRingRegistrant = new Registrant (h, what, obj); 495767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 496767a662ecde33c3979bf02b793d392aca0403162Wink Saville 497767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnCallRing(Handler h) { 498767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRingRegistrant.clear(); 499767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 500767a662ecde33c3979bf02b793d392aca0403162Wink Saville 501767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj) { 502767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 503767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOnRegistrants.add(r); 504767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 505767a662ecde33c3979bf02b793d392aca0403162Wink Saville 506767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForInCallVoicePrivacyOn(Handler h){ 507767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOnRegistrants.remove(h); 508767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 509767a662ecde33c3979bf02b793d392aca0403162Wink Saville 510767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj) { 511767a662ecde33c3979bf02b793d392aca0403162Wink Saville Registrant r = new Registrant (h, what, obj); 512767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOffRegistrants.add(r); 513767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 514767a662ecde33c3979bf02b793d392aca0403162Wink Saville 515767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unregisterForInCallVoicePrivacyOff(Handler h){ 516767a662ecde33c3979bf02b793d392aca0403162Wink Saville mVoicePrivacyOffRegistrants.remove(h); 517767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 518767a662ecde33c3979bf02b793d392aca0403162Wink Saville 519767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void setOnRestrictedStateChanged(Handler h, int what, Object obj) { 520767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRestrictedStateRegistrant = new Registrant (h, what, obj); 521767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 5222a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 523767a662ecde33c3979bf02b793d392aca0403162Wink Saville public void unSetOnRestrictedStateChanged(Handler h) { 524767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRestrictedStateRegistrant.clear(); 525767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 526767a662ecde33c3979bf02b793d392aca0403162Wink Saville 527dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForDisplayInfo(Handler h, int what, Object obj) { 528dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville Registrant r = new Registrant (h, what, obj); 529dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mDisplayInfoRegistrants.add(r); 5302a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh } 5312a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 532dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForDisplayInfo(Handler h) { 533dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mDisplayInfoRegistrants.remove(h); 5342a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh } 5352a34043d5578deb8d7f93830e13c4efc91eba583Jaikumar Ganesh 536dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForCallWaitingInfo(Handler h, int what, Object obj) { 537e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Registrant r = new Registrant (h, what, obj); 538dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCallWaitingInfoRegistrants.add(r); 539e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 540e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 541dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForCallWaitingInfo(Handler h) { 542dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mCallWaitingInfoRegistrants.remove(h); 543e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 544e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 545dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForSignalInfo(Handler h, int what, Object obj) { 546e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Registrant r = new Registrant (h, what, obj); 547dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mSignalInfoRegistrants.add(r); 548e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 549e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 550dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void setOnUnsolOemHookRaw(Handler h, int what, Object obj) { 551dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mUnsolOemHookRawRegistrant = new Registrant (h, what, obj); 552e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 553e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 554dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unSetOnUnsolOemHookRaw(Handler h) { 555dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mUnsolOemHookRawRegistrant.clear(); 556dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 557dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 558dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForSignalInfo(Handler h) { 559dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mSignalInfoRegistrants.remove(h); 560dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville } 5612563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville 562dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void registerForCdmaOtaProvision(Handler h,int what, Object obj){ 563e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville Registrant r = new Registrant (h, what, obj); 5642563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville mOtaProvisionRegistrants.add(r); 565e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 566e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 567dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville public void unregisterForCdmaOtaProvision(Handler h){ 568dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville mOtaProvisionRegistrants.remove(h); 569e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville } 570e9b06d754af03faf27012fbed1e7559ec1ba7c79Wink Saville 57122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void registerForNumberInfo(Handler h,int what, Object obj) { 57222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Registrant r = new Registrant (h, what, obj); 57322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mNumberInfoRegistrants.add(r); 57422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 57522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 57622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void unregisterForNumberInfo(Handler h){ 57722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mNumberInfoRegistrants.remove(h); 57822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 57922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 58022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void registerForRedirectedNumberInfo(Handler h,int what, Object obj) { 58122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Registrant r = new Registrant (h, what, obj); 58222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mRedirNumInfoRegistrants.add(r); 58322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 58422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 58522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void unregisterForRedirectedNumberInfo(Handler h) { 58622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mRedirNumInfoRegistrants.remove(h); 58722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 58822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 58922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void registerForLineControlInfo(Handler h, int what, Object obj) { 59022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Registrant r = new Registrant (h, what, obj); 59122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mLineControlInfoRegistrants.add(r); 59222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 59322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 59422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void unregisterForLineControlInfo(Handler h) { 59522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mLineControlInfoRegistrants.remove(h); 59622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 59722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 59822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void registerFoT53ClirlInfo(Handler h,int what, Object obj) { 59922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Registrant r = new Registrant (h, what, obj); 60022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53ClirInfoRegistrants.add(r); 60122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 60222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 60322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void unregisterForT53ClirInfo(Handler h) { 60422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53ClirInfoRegistrants.remove(h); 60522ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 60622ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 60722ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void registerForT53AudioControlInfo(Handler h,int what, Object obj) { 60822ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville Registrant r = new Registrant (h, what, obj); 60922ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53AudCntrlInfoRegistrants.add(r); 61022ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 61122ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville 61222ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville public void unregisterForT53AudioControlInfo(Handler h) { 61322ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville mT53AudCntrlInfoRegistrants.remove(h); 61422ccaf5321cf9d2df57cf0d686d1abcd74acb193Wink Saville } 615dda5391d5079537e275c9f4ed2637a1484d0e4e8Wink Saville 616bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang public void registerForRingbackTone(Handler h, int what, Object obj) { 617bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang Registrant r = new Registrant (h, what, obj); 618bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang mRingbackToneRegistrants.add(r); 619bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang } 620bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang 621bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang public void unregisterForRingbackTone(Handler h) { 622bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang mRingbackToneRegistrants.remove(h); 623bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang } 624bbd754b8fe7563234b5c4c8d1425a7417337f2f2John Wang 6251ccc41ed938ff005ae3d621292580a90601242caJohn Wang public void registerForResendIncallMute(Handler h, int what, Object obj) { 6261ccc41ed938ff005ae3d621292580a90601242caJohn Wang Registrant r = new Registrant (h, what, obj); 6271ccc41ed938ff005ae3d621292580a90601242caJohn Wang mResendIncallMuteRegistrants.add(r); 6281ccc41ed938ff005ae3d621292580a90601242caJohn Wang } 6291ccc41ed938ff005ae3d621292580a90601242caJohn Wang 6301ccc41ed938ff005ae3d621292580a90601242caJohn Wang public void unregisterForResendIncallMute(Handler h) { 6311ccc41ed938ff005ae3d621292580a90601242caJohn Wang mResendIncallMuteRegistrants.remove(h); 6321ccc41ed938ff005ae3d621292580a90601242caJohn Wang } 6331ccc41ed938ff005ae3d621292580a90601242caJohn Wang 6345284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6355284090631e638b916d9a453212e9dc802656a67Wink Saville public void registerForCdmaSubscriptionChanged(Handler h, int what, Object obj) { 6365284090631e638b916d9a453212e9dc802656a67Wink Saville Registrant r = new Registrant (h, what, obj); 6375284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaSubscriptionChangedRegistrants.add(r); 6385284090631e638b916d9a453212e9dc802656a67Wink Saville } 6395284090631e638b916d9a453212e9dc802656a67Wink Saville 6405284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6415284090631e638b916d9a453212e9dc802656a67Wink Saville public void unregisterForCdmaSubscriptionChanged(Handler h) { 6425284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaSubscriptionChangedRegistrants.remove(h); 6435284090631e638b916d9a453212e9dc802656a67Wink Saville } 6445284090631e638b916d9a453212e9dc802656a67Wink Saville 6455284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6465284090631e638b916d9a453212e9dc802656a67Wink Saville public void registerForCdmaPrlChanged(Handler h, int what, Object obj) { 6475284090631e638b916d9a453212e9dc802656a67Wink Saville Registrant r = new Registrant (h, what, obj); 6485284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaPrlChangedRegistrants.add(r); 6495284090631e638b916d9a453212e9dc802656a67Wink Saville } 6505284090631e638b916d9a453212e9dc802656a67Wink Saville 6515284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6525284090631e638b916d9a453212e9dc802656a67Wink Saville public void unregisterForCdmaPrlChanged(Handler h) { 6535284090631e638b916d9a453212e9dc802656a67Wink Saville mCdmaPrlChangedRegistrants.remove(h); 6545284090631e638b916d9a453212e9dc802656a67Wink Saville } 6555284090631e638b916d9a453212e9dc802656a67Wink Saville 6565284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6575284090631e638b916d9a453212e9dc802656a67Wink Saville public void registerForExitEmergencyCallbackMode(Handler h, int what, Object obj) { 6585284090631e638b916d9a453212e9dc802656a67Wink Saville Registrant r = new Registrant (h, what, obj); 6595284090631e638b916d9a453212e9dc802656a67Wink Saville mExitEmergencyCallbackModeRegistrants.add(r); 6605284090631e638b916d9a453212e9dc802656a67Wink Saville } 6615284090631e638b916d9a453212e9dc802656a67Wink Saville 6625284090631e638b916d9a453212e9dc802656a67Wink Saville @Override 6635284090631e638b916d9a453212e9dc802656a67Wink Saville public void unregisterForExitEmergencyCallbackMode(Handler h) { 6645284090631e638b916d9a453212e9dc802656a67Wink Saville mExitEmergencyCallbackModeRegistrants.remove(h); 6655284090631e638b916d9a453212e9dc802656a67Wink Saville } 6665284090631e638b916d9a453212e9dc802656a67Wink Saville 6671dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville /** 6681dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville * {@inheritDoc} 6691dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville */ 6701dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville @Override 6711dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville public void registerForRilConnected(Handler h, int what, Object obj) { 6721dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville Log.d(LOG_TAG, "registerForRilConnected h=" + h + " w=" + what); 6731dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville Registrant r = new Registrant (h, what, obj); 6741dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilConnectedRegistrants.add(r); 6751dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville if (mRilVersion != -1) { 6761dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville Log.d(LOG_TAG, "Notifying: ril connected mRilVersion=" + mRilVersion); 6771dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville r.notifyRegistrant(new AsyncResult(null, new Integer(mRilVersion), null)); 6781dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 6791dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 6801dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 6811dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville @Override 6821dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville public void unregisterForRilConnected(Handler h) { 6831dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville mRilConnectedRegistrants.remove(h); 6841dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville } 6851dd2ada5cf7d0c95afb4731d082473f34ee7f433Wink Saville 686975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville /** 687975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville * {@inheritDoc} 688975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville */ 689975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville @Override 690975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville public void setCurrentPreferredNetworkType() { 691975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville } 692975d348c18f7b9d378bebf3f69e6197b261705f0Wink Saville 693767a662ecde33c3979bf02b793d392aca0403162Wink Saville //***** Protected Methods 694767a662ecde33c3979bf02b793d392aca0403162Wink Saville /** 695767a662ecde33c3979bf02b793d392aca0403162Wink Saville * Store new RadioState and send notification based on the changes 696767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 697767a662ecde33c3979bf02b793d392aca0403162Wink Saville * This function is called only by RIL.java when receiving unsolicited 698767a662ecde33c3979bf02b793d392aca0403162Wink Saville * RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED 699767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 700767a662ecde33c3979bf02b793d392aca0403162Wink Saville * RadioState has 5 values : RADIO_OFF, RADIO_UNAVAILABLE, SIM_NOT_READY, 701767a662ecde33c3979bf02b793d392aca0403162Wink Saville * SIM_LOCKED_OR_ABSENT, and SIM_READY. 702767a662ecde33c3979bf02b793d392aca0403162Wink Saville * 703767a662ecde33c3979bf02b793d392aca0403162Wink Saville * @param newState new RadioState decoded from RIL_UNSOL_RADIO_STATE_CHANGED 704767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 705767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected void setRadioState(RadioState newState) { 706767a662ecde33c3979bf02b793d392aca0403162Wink Saville RadioState oldState; 707767a662ecde33c3979bf02b793d392aca0403162Wink Saville 708767a662ecde33c3979bf02b793d392aca0403162Wink Saville synchronized (mStateMonitor) { 709cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville if (false) { 710767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.v(LOG_TAG, "setRadioState old: " + mState 711767a662ecde33c3979bf02b793d392aca0403162Wink Saville + " new " + newState); 712767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 713767a662ecde33c3979bf02b793d392aca0403162Wink Saville 714767a662ecde33c3979bf02b793d392aca0403162Wink Saville oldState = mState; 715767a662ecde33c3979bf02b793d392aca0403162Wink Saville mState = newState; 716767a662ecde33c3979bf02b793d392aca0403162Wink Saville 717767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (oldState == mState) { 718767a662ecde33c3979bf02b793d392aca0403162Wink Saville // no state transition 719767a662ecde33c3979bf02b793d392aca0403162Wink Saville return; 720767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 721767a662ecde33c3979bf02b793d392aca0403162Wink Saville 7229d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville // FIXME: Use Constants or Enums 7239d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville if(mState.getType() == 0) { 7249d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mSimState = mState; 7259d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mRuimState = mState; 7269d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mNvState = mState; 7279d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 7289d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville else if (mState.getType() == 1) { 7299d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mSimState = mState; 7309d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 7319d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville else if (mState.getType() == 2) { 7329d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mRuimState = mState; 7339d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 7349d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville else if (mState.getType() == 3) { 7359d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville mNvState = mState; 7369d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville } 7379d7d62801ddb206d2ea96d74864a9edfe54d2eeeWink Saville 738767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioStateChangedRegistrants.notifyRegistrants(); 739767a662ecde33c3979bf02b793d392aca0403162Wink Saville 740767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isAvailable() && !oldState.isAvailable()) { 741767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio available"); 742767a662ecde33c3979bf02b793d392aca0403162Wink Saville mAvailRegistrants.notifyRegistrants(); 743767a662ecde33c3979bf02b793d392aca0403162Wink Saville onRadioAvailable(); 744767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 745767a662ecde33c3979bf02b793d392aca0403162Wink Saville 746767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (!mState.isAvailable() && oldState.isAvailable()) { 747767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio not available"); 748767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNotAvailRegistrants.notifyRegistrants(); 749767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 750767a662ecde33c3979bf02b793d392aca0403162Wink Saville 751767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isSIMReady() && !oldState.isSIMReady()) { 752767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: SIM ready"); 753767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMReadyRegistrants.notifyRegistrants(); 754767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 755767a662ecde33c3979bf02b793d392aca0403162Wink Saville 756767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState == RadioState.SIM_LOCKED_OR_ABSENT) { 757767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: SIM locked or absent"); 758767a662ecde33c3979bf02b793d392aca0403162Wink Saville mSIMLockedRegistrants.notifyRegistrants(); 759767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 760767a662ecde33c3979bf02b793d392aca0403162Wink Saville 761767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isRUIMReady() && !oldState.isRUIMReady()) { 762767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: RUIM ready"); 763767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMReadyRegistrants.notifyRegistrants(); 764767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 765767a662ecde33c3979bf02b793d392aca0403162Wink Saville 766767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState == RadioState.RUIM_LOCKED_OR_ABSENT) { 767767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: RUIM locked or absent"); 768767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRUIMLockedRegistrants.notifyRegistrants(); 769767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 770767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isNVReady() && !oldState.isNVReady()) { 771767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: NV ready"); 772767a662ecde33c3979bf02b793d392aca0403162Wink Saville mNVReadyRegistrants.notifyRegistrants(); 773767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 774767a662ecde33c3979bf02b793d392aca0403162Wink Saville 775767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isOn() && !oldState.isOn()) { 776767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: Radio On"); 777767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOnRegistrants.notifyRegistrants(); 778767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 779767a662ecde33c3979bf02b793d392aca0403162Wink Saville 780767a662ecde33c3979bf02b793d392aca0403162Wink Saville if ((!mState.isOn() || !mState.isAvailable()) 781767a662ecde33c3979bf02b793d392aca0403162Wink Saville && !((!oldState.isOn() || !oldState.isAvailable())) 782767a662ecde33c3979bf02b793d392aca0403162Wink Saville ) { 783767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio off or not available"); 784767a662ecde33c3979bf02b793d392aca0403162Wink Saville mOffOrNotAvailRegistrants.notifyRegistrants(); 785767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 786767a662ecde33c3979bf02b793d392aca0403162Wink Saville 787767a662ecde33c3979bf02b793d392aca0403162Wink Saville /* Radio Technology Change events 788767a662ecde33c3979bf02b793d392aca0403162Wink Saville * NOTE: isGsm and isCdma have no common states in RADIO_OFF or RADIO_UNAVAILABLE; the 789767a662ecde33c3979bf02b793d392aca0403162Wink Saville * current phone is determined by mPhoneType 790767a662ecde33c3979bf02b793d392aca0403162Wink Saville * NOTE: at startup no phone have been created and the RIL determines the mPhoneType 791767a662ecde33c3979bf02b793d392aca0403162Wink Saville * looking based on the networkMode set by the PhoneFactory in the constructor 792767a662ecde33c3979bf02b793d392aca0403162Wink Saville */ 793767a662ecde33c3979bf02b793d392aca0403162Wink Saville 794767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isGsm() && oldState.isCdma()) { 795767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio technology change CDMA to GSM"); 796767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.notifyRegistrants(); 797767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 798767a662ecde33c3979bf02b793d392aca0403162Wink Saville 7993cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink if (mState.isGsm() && !oldState.isOn() && (mPhoneType == Phone.PHONE_TYPE_CDMA)) { 800767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio technology change CDMA OFF to GSM"); 801767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.notifyRegistrants(); 802767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 803767a662ecde33c3979bf02b793d392aca0403162Wink Saville 804767a662ecde33c3979bf02b793d392aca0403162Wink Saville if (mState.isCdma() && oldState.isGsm()) { 805767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio technology change GSM to CDMA"); 806767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.notifyRegistrants(); 807767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 808767a662ecde33c3979bf02b793d392aca0403162Wink Saville 8093cc97f8dbc22eff56f17f30e1633084af507eff4Tammo Spalink if (mState.isCdma() && !oldState.isOn() && (mPhoneType == Phone.PHONE_TYPE_GSM)) { 810767a662ecde33c3979bf02b793d392aca0403162Wink Saville Log.d(LOG_TAG,"Notifying: radio technology change GSM OFF to CDMA"); 811767a662ecde33c3979bf02b793d392aca0403162Wink Saville mRadioTechnologyChangedRegistrants.notifyRegistrants(); 812767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 813767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 814767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 815767a662ecde33c3979bf02b793d392aca0403162Wink Saville 816767a662ecde33c3979bf02b793d392aca0403162Wink Saville protected void onRadioAvailable() { 817767a662ecde33c3979bf02b793d392aca0403162Wink Saville } 8185e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville 8195e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville /** 820fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville * The contents of the /proc/cmdline file 821fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville */ 822fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville private static String getProcCmdLine() 823fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville { 824fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville String cmdline = ""; 825fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville FileInputStream is = null; 826fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville try { 827fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville is = new FileInputStream("/proc/cmdline"); 828fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville byte [] buffer = new byte[2048]; 829fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville int count = is.read(buffer); 830fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville if (count > 0) { 831fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville cmdline = new String(buffer, 0, count); 832fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 833fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } catch (IOException e) { 834fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville Log.d(LOG_TAG, "No /proc/cmdline exception=" + e); 835fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } finally { 836fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville if (is != null) { 837fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville try { 838fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville is.close(); 839fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } catch (IOException e) { 840fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 841fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 842fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 843fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville Log.d(LOG_TAG, "/proc/cmdline=" + cmdline); 844fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville return cmdline; 845fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 846fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 847fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville /** 8485e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * {@inheritDoc} 8495e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville */ 8505e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville @Override 8515e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville public int getLteOnCdmaMode() { 8525e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville return getLteOnCdmaModeStatic(); 8535e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville } 8545e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville 855fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville /** Kernel command line */ 856fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville private static final String sKernelCmdLine = getProcCmdLine(); 857fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 858fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville /** Pattern for selecting the product type from the kernel command line */ 859fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville private static final Pattern sProductTypePattern = 860fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville Pattern.compile("\\sproduct_type\\s*=\\s*(\\w+)"); 861fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 862fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville /** The ProductType used for LTE on CDMA devices */ 863fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville private static final String sLteOnCdmaProductType = 864fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville SystemProperties.get(TelephonyProperties.PROPERTY_LTE_ON_CDMA_PRODUCT_TYPE, ""); 865fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 8665e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville /** 8675e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * Return if the current radio is LTE on CDMA. This 8685e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * is a tri-state return value as for a period of time 8695e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * the mode may be unknown. 8705e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * 8715e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * @return {@link Phone#LTE_ON_CDMA_UNKNOWN}, {@link Phone#LTE_ON_CDMA_FALSE} 8725e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville * or {@link Phone#LTE_ON_CDMA_TRUE} 8735e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville */ 8745e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville public static int getLteOnCdmaModeStatic() { 875fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville int retVal; 876cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville int curVal; 877cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville String productType = ""; 878cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville 879cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville curVal = SystemProperties.getInt(TelephonyProperties.PROPERTY_LTE_ON_CDMA_DEVICE, 880cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville Phone.LTE_ON_CDMA_UNKNOWN); 881cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville retVal = curVal; 882cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville if (retVal == Phone.LTE_ON_CDMA_UNKNOWN) { 883cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville Matcher matcher = sProductTypePattern.matcher(sKernelCmdLine); 884cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville if (matcher.find()) { 885cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville productType = matcher.group(1); 886cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville if (sLteOnCdmaProductType.equals(productType)) { 887cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville retVal = Phone.LTE_ON_CDMA_TRUE; 888cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville } else { 889cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville retVal = Phone.LTE_ON_CDMA_FALSE; 890cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville } 891fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } else { 892fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville retVal = Phone.LTE_ON_CDMA_FALSE; 893fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 894fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville } 895fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville 896cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville Log.d(LOG_TAG, "getLteOnCdmaMode=" + retVal + " curVal=" + curVal + 897cd4636ec08a50ab890acab0cf0c3c3f07f91896aWink Saville " product_type='" + productType + 898fe071d3d37c8b3e2f332b5ad8c30f02717501153Wink Saville "' lteOnCdmaProductType='" + sLteOnCdmaProductType + "'"); 8995e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville return retVal; 9005e9270bfd566c32a60dfeb34435a158eb4ceb9a9Wink Saville } 901767a662ecde33c3979bf02b793d392aca0403162Wink Saville} 902