| /* |
| * Copyright (C) 2006 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.internal.telephony; |
| |
| import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; |
| |
| import android.os.Message; |
| import android.os.Handler; |
| |
| |
| /** |
| * {@hide} |
| */ |
| public interface CommandsInterface { |
| enum RadioState { |
| RADIO_OFF, /* Radio explictly powered off (eg CFUN=0) */ |
| RADIO_UNAVAILABLE, /* Radio unavailable (eg, resetting or not booted) */ |
| SIM_NOT_READY, /* Radio is on, but the SIM interface is not ready */ |
| SIM_LOCKED_OR_ABSENT, /* SIM PIN locked, PUK required, network |
| personalization, or SIM absent */ |
| SIM_READY, /* Radio is on and SIM interface is available */ |
| RUIM_NOT_READY, /* Radio is on, but the RUIM interface is not ready */ |
| RUIM_READY, /* Radio is on and the RUIM interface is available */ |
| RUIM_LOCKED_OR_ABSENT, /* RUIM PIN locked, PUK required, network |
| personalization locked, or RUIM absent */ |
| NV_NOT_READY, /* Radio is on, but the NV interface is not available */ |
| NV_READY; /* Radio is on and the NV interface is available */ |
| |
| public boolean isOn() /* and available...*/ { |
| return this == SIM_NOT_READY |
| || this == SIM_LOCKED_OR_ABSENT |
| || this == SIM_READY |
| || this == RUIM_NOT_READY |
| || this == RUIM_READY |
| || this == RUIM_LOCKED_OR_ABSENT |
| || this == NV_NOT_READY |
| || this == NV_READY; |
| } |
| |
| public boolean isAvailable() { |
| return this != RADIO_UNAVAILABLE; |
| } |
| |
| public boolean isSIMReady() { |
| return this == SIM_READY; |
| } |
| |
| public boolean isRUIMReady() { |
| return this == RUIM_READY; |
| } |
| |
| public boolean isNVReady() { |
| return this == NV_READY; |
| } |
| |
| public boolean isGsm() { |
| return this == SIM_NOT_READY |
| || this == SIM_LOCKED_OR_ABSENT |
| || this == SIM_READY; |
| } |
| |
| public boolean isCdma() { |
| return this == RUIM_NOT_READY |
| || this == RUIM_READY |
| || this == RUIM_LOCKED_OR_ABSENT |
| || this == NV_NOT_READY |
| || this == NV_READY; |
| } |
| } |
| |
| //***** Constants |
| |
| // Used as parameter to dial() and setCLIR() below |
| static final int CLIR_DEFAULT = 0; // "use subscription default value" |
| static final int CLIR_INVOCATION = 1; // (restrict CLI presentation) |
| static final int CLIR_SUPPRESSION = 2; // (allow CLI presentation) |
| |
| |
| // Used as parameters for call forward methods below |
| static final int CF_ACTION_DISABLE = 0; |
| static final int CF_ACTION_ENABLE = 1; |
| // static final int CF_ACTION_UNUSED = 2; |
| static final int CF_ACTION_REGISTRATION = 3; |
| static final int CF_ACTION_ERASURE = 4; |
| |
| static final int CF_REASON_UNCONDITIONAL = 0; |
| static final int CF_REASON_BUSY = 1; |
| static final int CF_REASON_NO_REPLY = 2; |
| static final int CF_REASON_NOT_REACHABLE = 3; |
| static final int CF_REASON_ALL = 4; |
| static final int CF_REASON_ALL_CONDITIONAL = 5; |
| |
| // Used for call barring methods below |
| static final String CB_FACILITY_BAOC = "AO"; |
| static final String CB_FACILITY_BAOIC = "OI"; |
| static final String CB_FACILITY_BAOICxH = "OX"; |
| static final String CB_FACILITY_BAIC = "AI"; |
| static final String CB_FACILITY_BAICr = "IR"; |
| static final String CB_FACILITY_BA_ALL = "AB"; |
| static final String CB_FACILITY_BA_MO = "AG"; |
| static final String CB_FACILITY_BA_MT = "AC"; |
| static final String CB_FACILITY_BA_SIM = "SC"; |
| static final String CB_FACILITY_BA_FD = "FD"; |
| |
| |
| // Used for various supp services apis |
| // See 27.007 +CCFC or +CLCK |
| static final int SERVICE_CLASS_NONE = 0; // no user input |
| static final int SERVICE_CLASS_VOICE = (1 << 0); |
| static final int SERVICE_CLASS_DATA = (1 << 1); //synoym for 16+32+64+128 |
| static final int SERVICE_CLASS_FAX = (1 << 2); |
| static final int SERVICE_CLASS_SMS = (1 << 3); |
| static final int SERVICE_CLASS_DATA_SYNC = (1 << 4); |
| static final int SERVICE_CLASS_DATA_ASYNC = (1 << 5); |
| static final int SERVICE_CLASS_PACKET = (1 << 6); |
| static final int SERVICE_CLASS_PAD = (1 << 7); |
| static final int SERVICE_CLASS_MAX = (1 << 7); // Max SERVICE_CLASS value |
| |
| // Numeric representation of string values returned |
| // by messages sent to setOnUSSD handler |
| static final int USSD_MODE_NOTIFY = 0; |
| static final int USSD_MODE_REQUEST = 1; |
| |
| // SIM Refresh results, passed up from RIL. |
| static final int SIM_REFRESH_FILE_UPDATED = 0; // Single file updated |
| static final int SIM_REFRESH_INIT = 1; // SIM initialized; reload all |
| static final int SIM_REFRESH_RESET = 2; // SIM reset; may be locked |
| |
| // GSM SMS fail cause for acknowledgeLastIncomingSMS. From TS 23.040, 9.2.3.22. |
| static final int GSM_SMS_FAIL_CAUSE_MEMORY_CAPACITY_EXCEEDED = 0xD3; |
| static final int GSM_SMS_FAIL_CAUSE_UNSPECIFIED_ERROR = 0xFF; |
| |
| // CDMA SMS fail cause for acknowledgeLastIncomingCdmaSms. From TS N.S0005, 6.5.2.125. |
| static final int CDMA_SMS_FAIL_CAUSE_INVALID_TELESERVICE_ID = 4; |
| static final int CDMA_SMS_FAIL_CAUSE_RESOURCE_SHORTAGE = 35; |
| static final int CDMA_SMS_FAIL_CAUSE_OTHER_TERMINAL_PROBLEM = 39; |
| static final int CDMA_SMS_FAIL_CAUSE_ENCODING_PROBLEM = 96; |
| |
| //***** Methods |
| |
| RadioState getRadioState(); |
| |
| /** |
| * Fires on any RadioState transition |
| * Always fires immediately as well |
| * |
| * do not attempt to calculate transitions by storing getRadioState() values |
| * on previous invocations of this notification. Instead, use the other |
| * registration methods |
| */ |
| void registerForRadioStateChanged(Handler h, int what, Object obj); |
| void unregisterForRadioStateChanged(Handler h); |
| |
| /** |
| * Fires on any transition into RadioState.isOn() |
| * Fires immediately if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForOn(Handler h, int what, Object obj); |
| void unregisterForOn(Handler h); |
| |
| /** |
| * Fires on any transition out of RadioState.isAvailable() |
| * Fires immediately if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForAvailable(Handler h, int what, Object obj); |
| void unregisterForAvailable(Handler h); |
| |
| /** |
| * Fires on any transition into !RadioState.isAvailable() |
| * Fires immediately if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForNotAvailable(Handler h, int what, Object obj); |
| void unregisterForNotAvailable(Handler h); |
| |
| /** |
| * Fires on any transition into RADIO_OFF or !RadioState.isAvailable() |
| * Fires immediately if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForOffOrNotAvailable(Handler h, int what, Object obj); |
| void unregisterForOffOrNotAvailable(Handler h); |
| |
| /** |
| * Fires on any transition into SIM_READY |
| * Fires immediately if if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForSIMReady(Handler h, int what, Object obj); |
| void unregisterForSIMReady(Handler h); |
| |
| /** Any transition into SIM_LOCKED_OR_ABSENT */ |
| void registerForSIMLockedOrAbsent(Handler h, int what, Object obj); |
| void unregisterForSIMLockedOrAbsent(Handler h); |
| |
| void registerForCallStateChanged(Handler h, int what, Object obj); |
| void unregisterForCallStateChanged(Handler h); |
| void registerForNetworkStateChanged(Handler h, int what, Object obj); |
| void unregisterForNetworkStateChanged(Handler h); |
| void registerForDataStateChanged(Handler h, int what, Object obj); |
| void unregisterForDataStateChanged(Handler h); |
| |
| void registerForRadioTechnologyChanged(Handler h, int what, Object obj); |
| void unregisterForRadioTechnologyChanged(Handler h); |
| void registerForNVReady(Handler h, int what, Object obj); |
| void unregisterForNVReady(Handler h); |
| void registerForRUIMLockedOrAbsent(Handler h, int what, Object obj); |
| void unregisterForRUIMLockedOrAbsent(Handler h); |
| |
| /** InCall voice privacy notifications */ |
| void registerForInCallVoicePrivacyOn(Handler h, int what, Object obj); |
| void unregisterForInCallVoicePrivacyOn(Handler h); |
| void registerForInCallVoicePrivacyOff(Handler h, int what, Object obj); |
| void unregisterForInCallVoicePrivacyOff(Handler h); |
| |
| /** |
| * Fires on any transition into RUIM_READY |
| * Fires immediately if if currently in that state |
| * In general, actions should be idempotent. State may change |
| * before event is received. |
| */ |
| void registerForRUIMReady(Handler h, int what, Object obj); |
| void unregisterForRUIMReady(Handler h); |
| |
| /** |
| * unlike the register* methods, there's only one new SMS handler |
| * if you need to unregister, you should also tell the radio to stop |
| * sending SMS's to you (via AT+CNMI) |
| * |
| * AsyncResult.result is a String containing the SMS PDU |
| */ |
| void setOnNewSMS(Handler h, int what, Object obj); |
| void unSetOnNewSMS(Handler h); |
| |
| /** |
| * Register for NEW_SMS_ON_SIM unsolicited message |
| * |
| * AsyncResult.result is an int array containing the index of new SMS |
| */ |
| void setOnSmsOnSim(Handler h, int what, Object obj); |
| void unSetOnSmsOnSim(Handler h); |
| |
| /** |
| * Register for NEW_SMS_STATUS_REPORT unsolicited message |
| * |
| * AsyncResult.result is a String containing the status report PDU |
| */ |
| void setOnSmsStatus(Handler h, int what, Object obj); |
| void unSetOnSmsStatus(Handler h); |
| |
| /** |
| * unlike the register* methods, there's only one NITZ time handler |
| * |
| * AsyncResult.result is an Object[] |
| * ((Object[])AsyncResult.result)[0] is a String containing the NITZ time string |
| * ((Object[])AsyncResult.result)[1] is a Long containing the milliseconds since boot as |
| * returned by elapsedRealtime() when this NITZ time |
| * was posted. |
| * |
| * Please note that the delivery of this message may be delayed several |
| * seconds on system startup |
| */ |
| void setOnNITZTime(Handler h, int what, Object obj); |
| void unSetOnNITZTime(Handler h); |
| |
| /** |
| * unlike the register* methods, there's only one USSD notify handler |
| * |
| * Represents the arrival of a USSD "notify" message, which may |
| * or may not have been triggered by a previous USSD send |
| * |
| * AsyncResult.result is a String[] |
| * ((String[])(AsyncResult.result))[0] contains status code |
| * "0" USSD-Notify -- text in ((const char **)data)[1] |
| * "1" USSD-Request -- text in ((const char **)data)[1] |
| * "2" Session terminated by network |
| * "3" other local client (eg, SIM Toolkit) has responded |
| * "4" Operation not supported |
| * "5" Network timeout |
| * |
| * ((String[])(AsyncResult.result))[1] contains the USSD message |
| * The numeric representations of these are in USSD_MODE_* |
| */ |
| |
| void setOnUSSD(Handler h, int what, Object obj); |
| void unSetOnUSSD(Handler h); |
| |
| /** |
| * unlike the register* methods, there's only one signal strength handler |
| * AsyncResult.result is an int[2] |
| * response.obj.result[0] is received signal strength (0-31, 99) |
| * response.obj.result[1] is bit error rate (0-7, 99) |
| * as defined in TS 27.007 8.5 |
| */ |
| |
| void setOnSignalStrengthUpdate(Handler h, int what, Object obj); |
| void unSetOnSignalStrengthUpdate(Handler h); |
| |
| /** |
| * Sets the handler for SIM/RUIM SMS storage full unsolicited message. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnIccSmsFull(Handler h, int what, Object obj); |
| void unSetOnIccSmsFull(Handler h); |
| |
| /** |
| * Sets the handler for SIM Refresh notifications. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnIccRefresh(Handler h, int what, Object obj); |
| void unSetOnIccRefresh(Handler h); |
| |
| /** |
| * Sets the handler for RING notifications. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnCallRing(Handler h, int what, Object obj); |
| void unSetOnCallRing(Handler h); |
| |
| /** |
| * Sets the handler for RESTRICTED_STATE changed notification, |
| * eg, for Domain Specific Access Control |
| * unlike the register* methods, there's only one signal strength handler |
| * |
| * AsyncResult.result is an int[1] |
| * response.obj.result[0] is a bitmask of RIL_RESTRICTED_STATE_* values |
| */ |
| |
| void setOnRestrictedStateChanged(Handler h, int what, Object obj); |
| void unSetOnRestrictedStateChanged(Handler h); |
| |
| /** |
| * Sets the handler for Supplementary Service Notifications. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnSuppServiceNotification(Handler h, int what, Object obj); |
| void unSetOnSuppServiceNotification(Handler h); |
| |
| /** |
| * Sets the handler for Session End Notifications for STK. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnStkSessionEnd(Handler h, int what, Object obj); |
| void unSetOnStkSessionEnd(Handler h); |
| |
| /** |
| * Sets the handler for Proactive Commands for STK. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnStkProactiveCmd(Handler h, int what, Object obj); |
| void unSetOnStkProactiveCmd(Handler h); |
| |
| /** |
| * Sets the handler for Event Notifications for STK. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnStkEvent(Handler h, int what, Object obj); |
| void unSetOnStkEvent(Handler h); |
| |
| /** |
| * Sets the handler for Call Set Up Notifications for STK. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void setOnStkCallSetUp(Handler h, int what, Object obj); |
| void unSetOnStkCallSetUp(Handler h); |
| |
| /** |
| * Enables/disbables supplementary service related notifications from |
| * the network. |
| * |
| * @param enable true to enable notifications, false to disable. |
| * @param result Message to be posted when command completes. |
| */ |
| void setSuppServiceNotifications(boolean enable, Message result); |
| //void unSetSuppServiceNotifications(Handler h); |
| |
| /** |
| * Sets the handler for Event Notifications for CDMA Display Info. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForDisplayInfo(Handler h, int what, Object obj); |
| void unregisterForDisplayInfo(Handler h); |
| |
| /** |
| * Sets the handler for Event Notifications for CallWaiting Info. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForCallWaitingInfo(Handler h, int what, Object obj); |
| void unregisterForCallWaitingInfo(Handler h); |
| |
| /** |
| * Sets the handler for Event Notifications for Signal Info. |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForSignalInfo(Handler h, int what, Object obj); |
| void unregisterForSignalInfo(Handler h); |
| |
| /** |
| * Registers the handler for CDMA number information record |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForNumberInfo(Handler h, int what, Object obj); |
| void unregisterForNumberInfo(Handler h); |
| |
| /** |
| * Registers the handler for CDMA redirected number Information record |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForRedirectedNumberInfo(Handler h, int what, Object obj); |
| void unregisterForRedirectedNumberInfo(Handler h); |
| |
| /** |
| * Registers the handler for CDMA line control information record |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForLineControlInfo(Handler h, int what, Object obj); |
| void unregisterForLineControlInfo(Handler h); |
| |
| /** |
| * Registers the handler for CDMA T53 CLIR information record |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerFoT53ClirlInfo(Handler h, int what, Object obj); |
| void unregisterForT53ClirInfo(Handler h); |
| |
| /** |
| * Registers the handler for CDMA T53 audio control information record |
| * Unlike the register* methods, there's only one notification handler |
| * |
| * @param h Handler for notification message. |
| * @param what User-defined message code. |
| * @param obj User object. |
| */ |
| void registerForT53AudioControlInfo(Handler h, int what, Object obj); |
| void unregisterForT53AudioControlInfo(Handler h); |
| |
| /** |
| * Fires on if Modem enters Emergency Callback mode |
| */ |
| void setEmergencyCallbackMode(Handler h, int what, Object obj); |
| |
| /** |
| * Fires on any CDMA OTA provision status change |
| */ |
| void registerForCdmaOtaProvision(Handler h,int what, Object obj); |
| void unregisterForCdmaOtaProvision(Handler h); |
| |
| /** |
| * Registers the handler when out-band ringback tone is needed.<p> |
| * |
| * Messages received from this: |
| * Message.obj will be an AsyncResult |
| * AsyncResult.userObj = obj |
| * AsyncResult.result = boolean. <p> |
| */ |
| void registerForRingbackTone(Handler h, int what, Object obj); |
| void unregisterForRingbackTone(Handler h); |
| |
| /** |
| * Supply the ICC PIN to the ICC card |
| * |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * This exception is CommandException with an error of PASSWORD_INCORRECT |
| * if the password is incorrect |
| * |
| * ar.exception and ar.result are null on success |
| */ |
| |
| void supplyIccPin(String pin, Message result); |
| |
| /** |
| * Supply the ICC PUK to the ICC card |
| * |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * This exception is CommandException with an error of PASSWORD_INCORRECT |
| * if the password is incorrect |
| * |
| * ar.exception and ar.result are null on success |
| */ |
| |
| void supplyIccPuk(String puk, String newPin, Message result); |
| |
| /** |
| * Supply the ICC PIN2 to the ICC card |
| * Only called following operation where ICC_PIN2 was |
| * returned as a a failure from a previous operation |
| * |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * This exception is CommandException with an error of PASSWORD_INCORRECT |
| * if the password is incorrect |
| * |
| * ar.exception and ar.result are null on success |
| */ |
| |
| void supplyIccPin2(String pin2, Message result); |
| |
| /** |
| * Supply the SIM PUK2 to the SIM card |
| * Only called following operation where SIM_PUK2 was |
| * returned as a a failure from a previous operation |
| * |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * This exception is CommandException with an error of PASSWORD_INCORRECT |
| * if the password is incorrect |
| * |
| * ar.exception and ar.result are null on success |
| */ |
| |
| void supplyIccPuk2(String puk2, String newPin2, Message result); |
| |
| void changeIccPin(String oldPin, String newPin, Message result); |
| void changeIccPin2(String oldPin2, String newPin2, Message result); |
| |
| void changeBarringPassword(String facility, String oldPwd, String newPwd, Message result); |
| |
| void supplyNetworkDepersonalization(String netpin, Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result contains a List of DriverCall |
| * The ar.result List is sorted by DriverCall.index |
| */ |
| void getCurrentCalls (Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result contains a List of DataCallState |
| * @deprecated Do not use. |
| */ |
| @Deprecated |
| void getPDPContextList(Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result contains a List of DataCallState |
| */ |
| void getDataCallList(Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| * |
| * CLIR_DEFAULT == on "use subscription default value" |
| * CLIR_SUPPRESSION == on "CLIR suppression" (allow CLI presentation) |
| * CLIR_INVOCATION == on "CLIR invocation" (restrict CLI presentation) |
| */ |
| void dial (String address, int clirMode, Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is String containing IMSI on success |
| */ |
| void getIMSI(Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is String containing IMEI on success |
| */ |
| void getIMEI(Message result); |
| |
| /** |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is String containing IMEISV on success |
| */ |
| void getIMEISV(Message result); |
| |
| /** |
| * Hang up one individual connection. |
| * returned message |
| * retMsg.obj = AsyncResult ar |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| * |
| * 3GPP 22.030 6.5.5 |
| * "Releases a specific active call X" |
| */ |
| void hangupConnection (int gsmIndex, Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Releases all held calls or sets User Determined User Busy (UDUB) |
| * for a waiting call." |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void hangupWaitingOrBackground (Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Releases all active calls (if any exist) and accepts |
| * the other (held or waiting) call." |
| * |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void hangupForegroundResumeBackground (Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Places all active calls (if any exist) on hold and accepts |
| * the other (held or waiting) call." |
| * |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void switchWaitingOrHoldingAndActive (Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Adds a held call to the conversation" |
| * |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void conference (Message result); |
| |
| /** |
| * Set preferred Voice Privacy (VP). |
| * |
| * @param enable true is enhanced and false is normal VP |
| * @param result is a callback message |
| */ |
| void setPreferredVoicePrivacy(boolean enable, Message result); |
| |
| /** |
| * Get currently set preferred Voice Privacy (VP) mode. |
| * |
| * @param result is a callback message |
| */ |
| void getPreferredVoicePrivacy(Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Places all active calls on hold except call X with which |
| * communication shall be supported." |
| */ |
| void separateConnection (int gsmIndex, Message result); |
| |
| /** |
| * |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void acceptCall (Message result); |
| |
| /** |
| * also known as UDUB |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void rejectCall (Message result); |
| |
| /** |
| * 3GPP 22.030 6.5.5 |
| * "Connects the two calls and disconnects the subscriber from both calls" |
| * |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void explicitCallTransfer (Message result); |
| |
| /** |
| * cause code returned as int[0] in Message.obj.response |
| * Returns integer cause code defined in TS 24.008 |
| * Annex H or closest approximation. |
| * Most significant codes: |
| * - Any defined in 22.001 F.4 (for generating busy/congestion) |
| * - Cause 68: ACM >= ACMMax |
| */ |
| void getLastCallFailCause (Message result); |
| |
| |
| /** |
| * Reason for last PDP context deactivate or failure to activate |
| * cause code returned as int[0] in Message.obj.response |
| * returns an integer cause code defined in TS 24.008 |
| * section 6.1.3.1.3 or close approximation |
| * @deprecated Do not use. |
| */ |
| @Deprecated |
| void getLastPdpFailCause (Message result); |
| |
| /** |
| * The preferred new alternative to getLastPdpFailCause |
| * that is also CDMA-compatible. |
| */ |
| void getLastDataCallFailCause (Message result); |
| |
| void setMute (boolean enableMute, Message response); |
| |
| void getMute (Message response); |
| |
| /** |
| * response.obj is an AsyncResult |
| * response.obj.result is an int[2] |
| * response.obj.result[0] is received signal strength (0-31, 99) |
| * response.obj.result[1] is bit error rate (0-7, 99) |
| * as defined in TS 27.007 8.5 |
| */ |
| void getSignalStrength (Message response); |
| |
| |
| /** |
| * response.obj.result is an int[3] |
| * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 |
| * response.obj.result[1] is LAC if registered or -1 if not |
| * response.obj.result[2] is CID if registered or -1 if not |
| * valid LAC and CIDs are 0x0000 - 0xffff |
| * |
| * Please note that registration state 4 ("unknown") is treated |
| * as "out of service" above |
| */ |
| void getRegistrationState (Message response); |
| |
| /** |
| * response.obj.result is an int[3] |
| * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 |
| * response.obj.result[1] is LAC if registered or -1 if not |
| * response.obj.result[2] is CID if registered or -1 if not |
| * valid LAC and CIDs are 0x0000 - 0xffff |
| * |
| * Please note that registration state 4 ("unknown") is treated |
| * as "out of service" above |
| */ |
| void getGPRSRegistrationState (Message response); |
| |
| /** |
| * response.obj.result is a String[3] |
| * response.obj.result[0] is long alpha or null if unregistered |
| * response.obj.result[1] is short alpha or null if unregistered |
| * response.obj.result[2] is numeric or null if unregistered |
| */ |
| void getOperator(Message response); |
| |
| /** |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void sendDtmf(char c, Message result); |
| |
| |
| /** |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void startDtmf(char c, Message result); |
| |
| /** |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void stopDtmf(Message result); |
| |
| /** |
| * ar.exception carries exception on failure |
| * ar.userObject contains the orignal value of result.obj |
| * ar.result is null on success and failure |
| */ |
| void sendBurstDtmf(String dtmfString, int on, int off, Message result); |
| |
| /** |
| * smscPDU is smsc address in PDU form GSM BCD format prefixed |
| * by a length byte (as expected by TS 27.005) or NULL for default SMSC |
| * pdu is SMS in PDU format as an ASCII hex string |
| * less the SMSC address |
| */ |
| void sendSMS (String smscPDU, String pdu, Message response); |
| |
| /** |
| * @param pdu is CDMA-SMS in internal pseudo-PDU format |
| * @param response sent when operation completes |
| */ |
| void sendCdmaSms(byte[] pdu, Message response); |
| |
| /** |
| * Deletes the specified SMS record from SIM memory (EF_SMS). |
| * |
| * @param index index of the SMS record to delete |
| * @param response sent when operation completes |
| */ |
| void deleteSmsOnSim(int index, Message response); |
| |
| /** |
| * Deletes the specified SMS record from RUIM memory (EF_SMS in DF_CDMA). |
| * |
| * @param index index of the SMS record to delete |
| * @param response sent when operation completes |
| */ |
| void deleteSmsOnRuim(int index, Message response); |
| |
| /** |
| * Writes an SMS message to SIM memory (EF_SMS). |
| * |
| * @param status status of message on SIM. One of: |
| * SmsManger.STATUS_ON_ICC_READ |
| * SmsManger.STATUS_ON_ICC_UNREAD |
| * SmsManger.STATUS_ON_ICC_SENT |
| * SmsManger.STATUS_ON_ICC_UNSENT |
| * @param pdu message PDU, as hex string |
| * @param response sent when operation completes. |
| * response.obj will be an AsyncResult, and will indicate |
| * any error that may have occurred (eg, out of memory). |
| */ |
| void writeSmsToSim(int status, String smsc, String pdu, Message response); |
| |
| void writeSmsToRuim(int status, String pdu, Message response); |
| |
| /** |
| * @deprecated |
| * @param apn |
| * @param user |
| * @param password |
| * @param response |
| */ |
| void setupDefaultPDP(String apn, String user, String password, Message response); |
| |
| /** |
| * @deprecated |
| * @param cid |
| * @param response |
| */ |
| void deactivateDefaultPDP(int cid, Message response); |
| |
| void setRadioPower(boolean on, Message response); |
| |
| void acknowledgeLastIncomingGsmSms(boolean success, int cause, Message response); |
| |
| void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response); |
| |
| /** |
| * parameters equivilient to 27.007 AT+CRSM command |
| * response.obj will be an AsyncResult |
| * response.obj.userObj will be a IccIoResult on success |
| */ |
| void iccIO (int command, int fileid, String path, int p1, int p2, int p3, |
| String data, String pin2, Message response); |
| |
| /** |
| * (AsyncResult)response.obj).result is an int[] with element [0] set to |
| * 1 for "CLIP is provisioned", and 0 for "CLIP is not provisioned". |
| * |
| * @param response is callback message |
| */ |
| |
| void queryCLIP(Message response); |
| |
| /** |
| * response.obj will be a an int[2] |
| * |
| * response.obj[0] will be TS 27.007 +CLIR parameter 'n' |
| * 0 presentation indicator is used according to the subscription of the CLIR service |
| * 1 CLIR invocation |
| * 2 CLIR suppression |
| * |
| * response.obj[1] will be TS 27.007 +CLIR parameter 'm' |
| * 0 CLIR not provisioned |
| * 1 CLIR provisioned in permanent mode |
| * 2 unknown (e.g. no network, etc.) |
| * 3 CLIR temporary mode presentation restricted |
| * 4 CLIR temporary mode presentation allowed |
| */ |
| |
| void getCLIR(Message response); |
| |
| /** |
| * clirMode is one of the CLIR_* constants above |
| * |
| * response.obj is null |
| */ |
| |
| void setCLIR(int clirMode, Message response); |
| |
| /** |
| * (AsyncResult)response.obj).result is an int[] with element [0] set to |
| * 0 for disabled, 1 for enabled. |
| * |
| * @param serviceClass is a sum of SERVICE_CLASS_* |
| * @param response is callback message |
| */ |
| |
| void queryCallWaiting(int serviceClass, Message response); |
| |
| /** |
| * @param enable is true to enable, false to disable |
| * @param serviceClass is a sum of SERVICE_CLASS_* |
| * @param response is callback message |
| */ |
| |
| void setCallWaiting(boolean enable, int serviceClass, Message response); |
| |
| /** |
| * @param action is one of CF_ACTION_* |
| * @param cfReason is one of CF_REASON_* |
| * @param serviceClass is a sum of SERVICE_CLASSS_* |
| */ |
| void setCallForward(int action, int cfReason, int serviceClass, |
| String number, int timeSeconds, Message response); |
| |
| /** |
| * cfReason is one of CF_REASON_* |
| * |
| * ((AsyncResult)response.obj).result will be an array of |
| * CallForwardInfo's |
| * |
| * An array of length 0 means "disabled for all codes" |
| */ |
| void queryCallForwardStatus(int cfReason, int serviceClass, |
| String number, Message response); |
| |
| void setNetworkSelectionModeAutomatic(Message response); |
| |
| void setNetworkSelectionModeManual(String operatorNumeric, Message response); |
| |
| /** |
| * Queries whether the current network selection mode is automatic |
| * or manual |
| * |
| * ((AsyncResult)response.obj).result is an int[] with element [0] being |
| * a 0 for automatic selection and a 1 for manual selection |
| */ |
| |
| void getNetworkSelectionMode(Message response); |
| |
| /** |
| * Queries the currently available networks |
| * |
| * ((AsyncResult)response.obj).result is a List of NetworkInfo objects |
| */ |
| void getAvailableNetworks(Message response); |
| |
| void getBasebandVersion (Message response); |
| |
| |
| /** |
| * (AsyncResult)response.obj).result will be an Integer representing |
| * the sum of enabled serivice classes (sum of SERVICE_CLASS_*) |
| * |
| * @param facility one of CB_FACILTY_* |
| * @param password password or "" if not required |
| * @param serviceClass is a sum of SERVICE_CLASS_* |
| * @param response is callback message |
| */ |
| |
| void queryFacilityLock (String facility, String password, int serviceClass, |
| Message response); |
| |
| /** |
| * @param facility one of CB_FACILTY_* |
| * @param lockState true means lock, false means unlock |
| * @param password password or "" if not required |
| * @param serviceClass is a sum of SERVICE_CLASS_* |
| * @param response is callback message |
| */ |
| void setFacilityLock (String facility, boolean lockState, String password, |
| int serviceClass, Message response); |
| |
| |
| void sendUSSD (String ussdString, Message response); |
| |
| /** |
| * Cancels a pending USSD session if one exists. |
| * @param response callback message |
| */ |
| void cancelPendingUssd (Message response); |
| |
| void resetRadio(Message result); |
| |
| /** |
| * Assign a specified band for RF configuration. |
| * |
| * @param bandMode one of BM_*_BAND |
| * @param response is callback message |
| */ |
| void setBandMode (int bandMode, Message response); |
| |
| /** |
| * Query the list of band mode supported by RF. |
| * |
| * @param response is callback message |
| * ((AsyncResult)response.obj).result is an int[] with every |
| * element representing one avialable BM_*_BAND |
| */ |
| void queryAvailableBandMode (Message response); |
| |
| /** |
| * Requests to set the preferred network type for searching and registering |
| * (CS/PS domain, RAT, and operation mode) |
| * @param networkType one of NT_*_TYPE |
| * @param response is callback message |
| */ |
| void setPreferredNetworkType(int networkType , Message response); |
| |
| /** |
| * Query the preferred network type setting |
| * |
| * @param response is callback message to report one of NT_*_TYPE |
| */ |
| void getPreferredNetworkType(Message response); |
| |
| /** |
| * Query neighboring cell ids |
| * |
| * @param response s callback message to cell ids |
| */ |
| void getNeighboringCids(Message response); |
| |
| /** |
| * Request to enable/disable network state change notifications when |
| * location informateion (lac and/or cid) has changed. |
| * |
| * @param enable true to enable, false to disable |
| * @param response callback message |
| */ |
| void setLocationUpdates(boolean enable, Message response); |
| |
| /** |
| * Gets the default SMSC address. |
| * |
| * @param result Callback message contains the SMSC address. |
| */ |
| void getSmscAddress(Message result); |
| |
| /** |
| * Sets the default SMSC address. |
| * |
| * @param address new SMSC address |
| * @param result Callback message is empty on completion |
| */ |
| void setSmscAddress(String address, Message result); |
| |
| /** |
| * Indicates whether there is storage available for new SMS messages. |
| * @param available true if storage is available |
| * @param result callback message |
| */ |
| void reportSmsMemoryStatus(boolean available, Message result); |
| |
| /** |
| * Indicates to the vendor ril that StkService is running |
| * rand is eady to receive RIL_UNSOL_STK_XXXX commands. |
| * |
| * @param result callback message |
| */ |
| void reportStkServiceIsRunning(Message result); |
| |
| void invokeOemRilRequestRaw(byte[] data, Message response); |
| |
| void invokeOemRilRequestStrings(String[] strings, Message response); |
| |
| |
| /** |
| * Send TERMINAL RESPONSE to the SIM, after processing a proactive command |
| * sent by the SIM. |
| * |
| * @param contents String containing SAT/USAT response in hexadecimal |
| * format starting with first byte of response data. See |
| * TS 102 223 for details. |
| * @param response Callback message |
| */ |
| public void sendTerminalResponse(String contents, Message response); |
| |
| /** |
| * Send ENVELOPE to the SIM, after processing a proactive command sent by |
| * the SIM. |
| * |
| * @param contents String containing SAT/USAT response in hexadecimal |
| * format starting with command tag. See TS 102 223 for |
| * details. |
| * @param response Callback message |
| */ |
| public void sendEnvelope(String contents, Message response); |
| |
| /** |
| * Accept or reject the call setup request from SIM. |
| * |
| * @param accept true if the call is to be accepted, false otherwise. |
| * @param response Callback message |
| */ |
| public void handleCallSetupRequestFromSim(boolean accept, Message response); |
| |
| /** |
| * Activate or deactivate cell broadcast SMS for GSM. |
| * |
| * @param activate |
| * true = activate, false = deactivate |
| * @param result Callback message is empty on completion |
| */ |
| public void setGsmBroadcastActivation(boolean activate, Message result); |
| |
| /** |
| * Configure cell broadcast SMS for GSM. |
| * |
| * @param response Callback message is empty on completion |
| */ |
| public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response); |
| |
| /** |
| * Query the current configuration of cell broadcast SMS of GSM. |
| * |
| * @param response |
| * Callback message contains the configuration from the modem |
| * on completion |
| */ |
| public void getGsmBroadcastConfig(Message response); |
| |
| //***** new Methods for CDMA support |
| |
| /** |
| * Request the device ESN / MEID / IMEI / IMEISV. |
| * "response" is const char ** |
| * [0] is IMEI if GSM subscription is available |
| * [1] is IMEISV if GSM subscription is available |
| * [2] is ESN if CDMA subscription is available |
| * [3] is MEID if CDMA subscription is available |
| */ |
| public void getDeviceIdentity(Message response); |
| |
| /** |
| * Request the device MDN / H_SID / H_NID / MIN. |
| * "response" is const char ** |
| * [0] is MDN if CDMA subscription is available |
| * [1] is a comma separated list of H_SID (Home SID) in decimal format |
| * if CDMA subscription is available |
| * [2] is a comma separated list of H_NID (Home NID) in decimal format |
| * if CDMA subscription is available |
| * [3] is MIN (10 digits, MIN2+MIN1) if CDMA subscription is available |
| */ |
| public void getCDMASubscription(Message response); |
| |
| /** |
| * Send Flash Code. |
| * "response" is is NULL |
| * [0] is a FLASH string |
| */ |
| public void sendCDMAFeatureCode(String FeatureCode, Message response); |
| |
| /** Set the Phone type created */ |
| void setPhoneType(int phoneType); |
| |
| /** |
| * Query the CDMA roaming preference setting |
| * |
| * @param response is callback message to report one of CDMA_RM_* |
| */ |
| void queryCdmaRoamingPreference(Message response); |
| |
| /** |
| * Requests to set the CDMA roaming preference |
| * @param cdmaRoamingType one of CDMA_RM_* |
| * @param response is callback message |
| */ |
| void setCdmaRoamingPreference(int cdmaRoamingType, Message response); |
| |
| /** |
| * Requests to set the CDMA subscription mode |
| * @param cdmaSubscriptionType one of CDMA_SUBSCRIPTION_* |
| * @param response is callback message |
| */ |
| void setCdmaSubscription(int cdmaSubscriptionType, Message response); |
| |
| /** |
| * Set the TTY mode for the CDMA phone |
| * |
| * @param enable is true to enable, false to disable |
| * @param response is callback message |
| */ |
| void setTTYMode(int ttyMode, Message response); |
| |
| /** |
| * Query the TTY mode for the CDMA phone |
| * (AsyncResult)response.obj).result is an int[] with element [0] set to |
| * 0 for disabled, 1 for enabled. |
| * |
| * @param response is callback message |
| */ |
| void queryTTYMode(Message response); |
| |
| /** |
| * Setup a packet data connection On successful completion, the result |
| * message will return the following: [0] indicating PDP CID, which is |
| * generated by RIL. This Connection ID is used in both GSM/UMTS and CDMA |
| * modes [1] indicating the network interface name for GSM/UMTS or CDMA [2] |
| * indicating the IP address for this interface for GSM/UMTS and NULL in the |
| * case of CDMA |
| * |
| * @param radioTechnology |
| * indicates whether to setup connection on radio technology CDMA |
| * (0) or GSM/UMTS (1) |
| * @param profile |
| * Profile Number or NULL to indicate default profile |
| * @param apn |
| * the APN to connect to if radio technology is GSM/UMTS. |
| * Otherwise null for CDMA. |
| * @param user |
| * the username for APN, or NULL |
| * @param password |
| * the password for APN, or NULL |
| * @param authType |
| * the PAP / CHAP auth type. Values is one of SETUP_DATA_AUTH_* |
| * @param result |
| * Callback message |
| */ |
| public void setupDataCall(String radioTechnology, String profile, String apn, |
| String user, String password, String authType, Message result); |
| |
| /** |
| * Deactivate packet data connection |
| * |
| * @param cid |
| * The connection ID |
| * @param result |
| * Callback message is empty on completion |
| */ |
| public void deactivateDataCall(int cid, Message result); |
| |
| /** |
| * Activate or deactivate cell broadcast SMS for CDMA. |
| * |
| * @param activate |
| * true = activate, false = deactivate |
| * @param result |
| * Callback message is empty on completion |
| */ |
| public void setCdmaBroadcastActivation(boolean activate, Message result); |
| |
| /** |
| * Configure cdma cell broadcast SMS. |
| * |
| * @param result |
| * Callback message is empty on completion |
| */ |
| // TODO: Change the configValuesArray to a RIL_BroadcastSMSConfig |
| public void setCdmaBroadcastConfig(int[] configValuesArray, Message result); |
| |
| /** |
| * Query the current configuration of cdma cell broadcast SMS. |
| * |
| * @param result |
| * Callback message contains the configuration from the modem on completion |
| */ |
| public void getCdmaBroadcastConfig(Message result); |
| |
| /** |
| * Requests the radio's system selection module to exit emergency callback mode. |
| * This function should only be called from CDMAPHone.java. |
| * |
| * @param response callback message |
| */ |
| public void exitEmergencyCallbackMode(Message response); |
| |
| /** |
| * Request the status of the ICC and UICC cards. |
| * |
| * @param response |
| * Callback message containing {@link IccCardStatus} structure for the card. |
| */ |
| public void getIccCardStatus(Message result); |
| } |