Methods Summary |
---|
public void | acceptCall(android.os.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
boolean success;
success = simulatedCallState.onAnswer();
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | acknowledgeLastIncomingSMS(boolean success, android.os.Message result)
unimplemented(result);
|
public void | cancelPendingUssd(android.os.Message response)
resultSuccess(response, null);
|
public void | changeBarringPassword(java.lang.String facility, java.lang.String oldPwd, java.lang.String newPwd, android.os.Message result)
unimplemented(result);
|
public void | changeSimPin(java.lang.String oldPin, java.lang.String newPin, android.os.Message result)
if (oldPin != null && oldPin.equals(mPinCode)) {
mPinCode = newPin;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
Log.i(LOG_TAG, "[SimCmd] changeSimPin: pin failed!");
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | changeSimPin2(java.lang.String oldPin2, java.lang.String newPin2, android.os.Message result)
if (oldPin2 != null && oldPin2.equals(mPin2Code)) {
mPin2Code = newPin2;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
Log.i(LOG_TAG, "[SimCmd] changeSimPin: pin2 failed!");
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | conference(android.os.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
boolean success;
success = simulatedCallState.onChld('3", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | deactivateDefaultPDP(int cid, android.os.Message result)unimplemented(result);
|
public void | deleteSmsOnSim(int index, android.os.Message response)
Log.d(LOG_TAG, "Delete message at index " + index);
unimplemented(response);
|
public void | dial(java.lang.String address, int clirMode, android.os.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)
simulatedCallState.onDial(address);
resultSuccess(result, null);
|
public void | explicitCallTransfer(android.os.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
boolean success;
success = simulatedCallState.onChld('4", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | getAvailableNetworks(android.os.Message result)Queries the currently available networks
((AsyncResult)response.obj).result is a List of NetworkInfo objectsunimplemented(result);
|
public void | getBasebandVersion(android.os.Message result)
resultSuccess(result, "SimulatedCommands");
|
public void | getCLIR(android.os.Message result)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 allowedunimplemented(result);
|
public void | getCurrentCalls(android.os.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
if (mState == RadioState.SIM_READY) {
//Log.i("GSM", "[SimCmds] getCurrentCalls");
resultSuccess(result, simulatedCallState.getDriverCalls());
} else {
//Log.i("GSM", "[SimCmds] getCurrentCalls: SIM not ready!");
resultFail(result,
new CommandException(
CommandException.Error.RADIO_NOT_AVAILABLE));
}
|
public void | getGPRSRegistrationState(android.os.Message result)response.obj.result is an String[4]
response.obj.result[0] is registration state 0-5 from TS 27.007 7.2
response.obj.result[1] is LAC if registered or NULL if not
response.obj.result[2] is CID if registered or NULL if not
response.obj.result[3] indicates the available radio technology, where:
0 == unknown
1 == GPRS only
2 == EDGE
3 == UMTS
valid LAC are 0x0000 - 0xffff
valid CID are 0x00000000 - 0xffffffff
Please note that registration state 4 ("unknown") is treated
as "out of service" in the Android telephony system
String ret[] = new String[4];
ret[0] = "5"; // registered roam
ret[1] = null;
ret[2] = null;
ret[3] = "2";
resultSuccess(result, ret);
|
public void | getIMEI(android.os.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
resultSuccess(result, "012345678901234");
|
public void | getIMEISV(android.os.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
resultSuccess(result, "99");
|
public void | getIMSI(android.os.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
resultSuccess(result, "012345678901234");
|
public void | getLastCallFailCause(android.os.Message result)cause code returned as Integer 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
int[] ret = new int[1];
ret[0] = nextCallFailCause;
resultSuccess(result, ret);
|
public void | getLastPdpFailCause(android.os.Message result)
unimplemented(result);
|
public void | getMute(android.os.Message result)unimplemented(result);
|
public void | getNeighboringCids(android.os.Message result)
int ret[] = new int[7];
ret[0] = 6;
for (int i = 1; i<7; i++) {
ret[i] = i;
}
resultSuccess(result, ret);
|
public void | getNetworkSelectionMode(android.os.Message result)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
int ret[] = new int[1];
ret[0] = 0;
resultSuccess(result, ret);
|
public void | getOperator(android.os.Message result)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
String[] ret = new String[3];
ret[0] = "El Telco Loco";
ret[1] = "Telco Loco";
ret[2] = "001001";
resultSuccess(result, ret);
|
public void | getPDPContextList(android.os.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 PDPContextState
resultSuccess(result, new ArrayList<PDPContextState>(0));
|
public void | getPreferredNetworkType(android.os.Message result)
int ret[] = new int[1];
ret[0] = mNetworkType;
resultSuccess(result, ret);
|
public void | getRegistrationState(android.os.Message result)response.obj.result is an String[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 NULL if not
response.obj.result[2] is CID if registered or NULL if not
valid LAC are 0x0000 - 0xffff
valid CID are 0x00000000 - 0xffffffff
Please note that registration state 4 ("unknown") is treated
as "out of service" above
String ret[] = new String[3];
ret[0] = "5"; // registered roam
ret[1] = null;
ret[2] = null;
resultSuccess(result, ret);
|
public void | getSignalStrength(android.os.Message result)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
int ret[] = new int[2];
ret[0] = 23;
ret[1] = 0;
resultSuccess(result, ret);
|
public void | getSimStatus(android.os.Message result)
switch (mState) {
case SIM_READY:
resultSuccess(result, SimStatus.SIM_READY);
break;
case SIM_LOCKED_OR_ABSENT:
returnSimLockedStatus(result);
break;
default:
resultSuccess(result, SimStatus.SIM_NOT_READY);
break;
}
|
public void | handleCallSetupRequestFromSim(boolean accept, android.os.Message response){@inheritDoc}
resultSuccess(response, null);
|
public void | hangupConnection(int gsmIndex, android.os.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"
boolean success;
success = simulatedCallState.onChld('1", (char)('0"+gsmIndex));
if (!success){
Log.i("GSM", "[SimCmd] hangupConnection: resultFail");
resultFail(result, new RuntimeException("Hangup Error"));
} else {
Log.i("GSM", "[SimCmd] hangupConnection: resultSuccess");
resultSuccess(result, null);
}
|
public void | hangupForegroundResumeBackground(android.os.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
boolean success;
success = simulatedCallState.onChld('1", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | hangupWaitingOrBackground(android.os.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
boolean success;
success = simulatedCallState.onChld('0", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | invokeOemRilRequestRaw(byte[] data, android.os.Message response)
// Just echo back data
if (response != null) {
AsyncResult.forMessage(response).result = data;
response.sendToTarget();
}
|
public void | invokeOemRilRequestStrings(java.lang.String[] strings, android.os.Message response)
// Just echo back data
if (response != null) {
AsyncResult.forMessage(response).result = strings;
response.sendToTarget();
}
|
private boolean | isSimLocked()
if (mSimLockedState != SimLockState.NONE) {
return true;
}
return false;
|
public void | pauseResponses()
pausedResponseCount++;
|
public void | progressConnectingCallState()
simulatedCallState.progressConnectingCallState();
mCallStateRegistrants.notifyRegistrants();
|
public void | progressConnectingToActive()If a call is DIALING or ALERTING, progress it all the way to ACTIVE
simulatedCallState.progressConnectingToActive();
mCallStateRegistrants.notifyRegistrants();
|
public void | queryAvailableBandMode(android.os.Message result)Query the list of band mode supported by RF.
int ret[] = new int [4];
ret[0] = 4;
ret[1] = Phone.BM_US_BAND;
ret[2] = Phone.BM_JPN_BAND;
ret[3] = Phone.BM_AUS_BAND;
resultSuccess(result, ret);
|
public void | queryCLIP(android.os.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". unimplemented(response);
|
public void | queryCallForwardStatus(int cfReason, int serviceClass, java.lang.String number, android.os.Message result)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"unimplemented(result);
|
public void | queryCallWaiting(int serviceClass, android.os.Message response)(AsyncResult)response.obj).result is an int[] with element [0] set to
0 for disabled, 1 for enabled.
unimplemented(response);
|
public void | queryFacilityLock(java.lang.String facility, java.lang.String pin, int serviceClass, android.os.Message result)(AsyncResult)response.obj).result will be an Integer representing
the sum of enabled serivice classes (sum of SERVICE_CLASS_*)
if (facility != null &&
facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) {
if (result != null) {
int[] r = new int[1];
r[0] = (mSimLockEnabled ? 1 : 0);
Log.i(LOG_TAG, "[SimCmd] queryFacilityLock: SIM is " +
(r[0] == 0 ? "unlocked" : "locked"));
AsyncResult.forMessage(result, r, null);
result.sendToTarget();
}
return;
} else if (facility != null &&
facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) {
if (result != null) {
int[] r = new int[1];
r[0] = (mSimFdnEnabled ? 1 : 0);
Log.i(LOG_TAG, "[SimCmd] queryFacilityLock: FDN is " +
(r[0] == 0 ? "disabled" : "enabled"));
AsyncResult.forMessage(result, r, null);
result.sendToTarget();
}
return;
}
unimplemented(result);
|
public void | rejectCall(android.os.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
boolean success;
success = simulatedCallState.onChld('0", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | resetRadio(android.os.Message result)
unimplemented(result);
|
private void | resultFail(android.os.Message result, java.lang.Throwable tr)
if (result != null) {
AsyncResult.forMessage(result).exception = tr;
if (pausedResponseCount > 0) {
pausedResponses.add(result);
} else {
result.sendToTarget();
}
}
|
private void | resultSuccess(android.os.Message result, java.lang.Object ret)
if (result != null) {
AsyncResult.forMessage(result).result = ret;
if (pausedResponseCount > 0) {
pausedResponses.add(result);
} else {
result.sendToTarget();
}
}
|
public void | resumeResponses()
pausedResponseCount--;
if (pausedResponseCount == 0) {
for (int i = 0, s = pausedResponses.size(); i < s ; i++) {
pausedResponses.get(i).sendToTarget();
}
pausedResponses.clear();
} else {
Log.e("GSM", "SimulatedCommands.resumeResponses < 0");
}
|
private void | returnSimLockedStatus(android.os.Message result)
switch (mSimLockedState) {
case REQUIRE_PIN:
Log.i(LOG_TAG, "[SimCmd] returnSimLockedStatus: SIM_PIN");
resultSuccess(result, SimStatus.SIM_PIN);
break;
case REQUIRE_PUK:
Log.i(LOG_TAG, "[SimCmd] returnSimLockedStatus: SIM_PUK");
resultSuccess(result, SimStatus.SIM_PUK);
break;
default:
Log.i(LOG_TAG,
"[SimCmd] returnSimLockedStatus: mSimLockedState==NONE !?");
break;
}
|
public void | sendDtmf(char c, android.os.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
resultSuccess(result, null);
|
public void | sendEnvelope(java.lang.String contents, android.os.Message response){@inheritDoc}
resultSuccess(response, null);
|
public void | sendSMS(java.lang.String smscPDU, java.lang.String pdu, android.os.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 addressunimplemented(result);
|
public void | sendTerminalResponse(java.lang.String contents, android.os.Message response){@inheritDoc}
resultSuccess(response, null);
|
public void | sendUSSD(java.lang.String ussdString, android.os.Message result)
// We simulate this particular sequence
if (ussdString.equals("#646#")) {
resultSuccess(result, null);
// 0 == USSD-Notify
triggerIncomingUssd("0", "You have NNN minutes remaining.");
} else {
resultSuccess(result, null);
triggerIncomingUssd("0", "All Done");
}
|
public void | separateConnection(int gsmIndex, android.os.Message result)3GPP 22.030 6.5.5
"Places all active calls on hold except call X with which
communication shall be supported."
boolean success;
char ch = (char)(gsmIndex + '0");
success = simulatedCallState.onChld('2", ch);
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | setAutoProgressConnectingCall(boolean b)automatically progress mobile originated calls to ACTIVE.
default to true
simulatedCallState.setAutoProgressConnectingCall(b);
|
public void | setBandMode(int bandMode, android.os.Message result)Assign a specified band for RF configuration.
resultSuccess(result, null);
|
public void | setCLIR(int clirMode, android.os.Message result)clirMode is one of the CLIR_* constants above
response.obj is nullunimplemented(result);
|
public void | setCallForward(int action, int cfReason, int serviceClass, java.lang.String number, int timeSeconds, android.os.Message result)unimplemented(result);
|
public void | setCallWaiting(boolean enable, int serviceClass, android.os.Message response)
unimplemented(response);
|
public void | setFacilityLock(java.lang.String facility, boolean lockEnabled, java.lang.String pin, int serviceClass, android.os.Message result)
if (facility != null &&
facility.equals(CommandsInterface.CB_FACILITY_BA_SIM)) {
if (pin != null && pin.equals(mPinCode)) {
Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin is valid");
mSimLockEnabled = lockEnabled;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin failed!");
CommandException ex = new CommandException(
CommandException.Error.GENERIC_FAILURE);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
return;
} else if (facility != null &&
facility.equals(CommandsInterface.CB_FACILITY_BA_FD)) {
if (pin != null && pin.equals(mPin2Code)) {
Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 is valid");
mSimFdnEnabled = lockEnabled;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
Log.i(LOG_TAG, "[SimCmd] setFacilityLock: pin2 failed!");
CommandException ex = new CommandException(
CommandException.Error.GENERIC_FAILURE);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
return;
}
unimplemented(result);
|
public void | setLocationUpdates(boolean enable, android.os.Message response)
unimplemented(response);
|
public void | setMute(boolean enableMute, android.os.Message result)unimplemented(result);
|
public void | setNetworkSelectionModeAutomatic(android.os.Message result)unimplemented(result);
|
public void | setNetworkSelectionModeManual(java.lang.String operatorNumeric, android.os.Message result)unimplemented(result);
|
public void | setNextCallFailCause(int gsmCause)
nextCallFailCause = gsmCause;
|
public void | setNextDialFailImmediately(boolean b)
simulatedCallState.setNextDialFailImmediately(b);
|
public void | setPreferredNetworkType(int networkType, android.os.Message result)
mNetworkType = networkType;
resultSuccess(result, null);
|
public void | setRadioPower(boolean on, android.os.Message result)
if(on) {
if (isSimLocked()) {
Log.i("SIM", "[SimCmd] setRadioPower: SIM locked! state=" +
mSimLockedState);
setRadioState(RadioState.SIM_LOCKED_OR_ABSENT);
}
else {
setRadioState(RadioState.SIM_READY);
}
} else {
setRadioState(RadioState.RADIO_OFF);
}
|
public void | setSuppServiceNotifications(boolean enable, android.os.Message result)
resultSuccess(result, null);
if (enable && mSsnNotifyOn) {
Log.w(LOG_TAG, "Supp Service Notifications already enabled!");
}
mSsnNotifyOn = enable;
|
public void | setupDefaultPDP(java.lang.String apn, java.lang.String user, java.lang.String password, android.os.Message result)
unimplemented(result);
|
public void | shutdown()
setRadioState(RadioState.RADIO_UNAVAILABLE);
Looper looper = mHandlerThread.getLooper();
if (looper != null) {
looper.quit();
}
|
public void | simIO(int command, int fileid, java.lang.String path, int p1, int p2, int p3, java.lang.String data, java.lang.String pin2, android.os.Message result)parameters equivilient to 27.007 AT+CRSM command
response.obj will be an AsyncResult
response.obj.userObj will be a SimIoResult on success
unimplemented(result);
|
public void | startDtmf(char c, android.os.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
resultSuccess(result, null);
|
public void | stopDtmf(android.os.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
resultSuccess(result, null);
|
public void | supplyNetworkDepersonalization(java.lang.String netpin, android.os.Message result)
unimplemented(result);
|
public void | supplySimPin(java.lang.String pin, android.os.Message result)
if (mSimLockedState != SimLockState.REQUIRE_PIN) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin: wrong state, state=" +
mSimLockedState);
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
return;
}
if (pin != null && pin.equals(mPinCode)) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin: success!");
setRadioState(RadioState.SIM_READY);
mPinUnlockAttempts = 0;
mSimLockedState = SimLockState.NONE;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
mPinUnlockAttempts ++;
Log.i(LOG_TAG, "[SimCmd] supplySimPin: failed! attempt=" +
mPinUnlockAttempts);
if (mPinUnlockAttempts >= 3) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin: set state to REQUIRE_PUK");
mSimLockedState = SimLockState.REQUIRE_PUK;
}
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | supplySimPin2(java.lang.String pin2, android.os.Message result)
if (mSimFdnEnabledState != SimFdnState.REQUIRE_PIN2) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin2: wrong state, state=" +
mSimFdnEnabledState);
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
return;
}
if (pin2 != null && pin2.equals(mPin2Code)) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin2: success!");
mPin2UnlockAttempts = 0;
mSimFdnEnabledState = SimFdnState.NONE;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
mPin2UnlockAttempts ++;
Log.i(LOG_TAG, "[SimCmd] supplySimPin2: failed! attempt=" +
mPin2UnlockAttempts);
if (mPin2UnlockAttempts >= 3) {
Log.i(LOG_TAG, "[SimCmd] supplySimPin2: set state to REQUIRE_PUK2");
mSimFdnEnabledState = SimFdnState.REQUIRE_PUK2;
}
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | supplySimPuk(java.lang.String puk, java.lang.String newPin, android.os.Message result)
if (mSimLockedState != SimLockState.REQUIRE_PUK) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk: wrong state, state=" +
mSimLockedState);
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
return;
}
if (puk != null && puk.equals(SIM_PUK_CODE)) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk: success!");
setRadioState(RadioState.SIM_READY);
mSimLockedState = SimLockState.NONE;
mPukUnlockAttempts = 0;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
mPukUnlockAttempts ++;
Log.i(LOG_TAG, "[SimCmd] supplySimPuk: failed! attempt=" +
mPukUnlockAttempts);
if (mPukUnlockAttempts >= 10) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk: set state to SIM_PERM_LOCKED");
mSimLockedState = SimLockState.SIM_PERM_LOCKED;
}
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | supplySimPuk2(java.lang.String puk2, java.lang.String newPin2, android.os.Message result)
if (mSimFdnEnabledState != SimFdnState.REQUIRE_PUK2) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk2: wrong state, state=" +
mSimLockedState);
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
return;
}
if (puk2 != null && puk2.equals(SIM_PUK2_CODE)) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk2: success!");
mSimFdnEnabledState = SimFdnState.NONE;
mPuk2UnlockAttempts = 0;
if (result != null) {
AsyncResult.forMessage(result, null, null);
result.sendToTarget();
}
return;
}
if (result != null) {
mPuk2UnlockAttempts ++;
Log.i(LOG_TAG, "[SimCmd] supplySimPuk2: failed! attempt=" +
mPuk2UnlockAttempts);
if (mPuk2UnlockAttempts >= 10) {
Log.i(LOG_TAG, "[SimCmd] supplySimPuk2: set state to SIM_PERM_LOCKED");
mSimFdnEnabledState = SimFdnState.SIM_PERM_LOCKED;
}
CommandException ex = new CommandException(
CommandException.Error.PASSWORD_INCORRECT);
AsyncResult.forMessage(result, null, ex);
result.sendToTarget();
}
|
public void | switchWaitingOrHoldingAndActive(android.os.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
boolean success;
success = simulatedCallState.onChld('2", '\0");
if (!success){
resultFail(result, new RuntimeException("Hangup Error"));
} else {
resultSuccess(result, null);
}
|
public void | triggerHangupAll()hangup all
simulatedCallState.triggerHangupAll();
mCallStateRegistrants.notifyRegistrants();
|
public void | triggerHangupBackground()hangup holding calls
simulatedCallState.triggerHangupBackground();
mCallStateRegistrants.notifyRegistrants();
|
public void | triggerHangupForeground()
simulatedCallState.triggerHangupForeground();
mCallStateRegistrants.notifyRegistrants();
|
public void | triggerIncomingSMS(java.lang.String message)
//TODO
|
public void | triggerIncomingUssd(java.lang.String statusCode, java.lang.String message)Simulates an incoming USSD message
if (mUSSDRegistrant != null) {
String[] result = {statusCode, message};
mUSSDRegistrant.notifyResult(result);
}
|
public void | triggerRing(java.lang.String number)Start the simulated phone ringing
simulatedCallState.triggerRing(number);
mCallStateRegistrants.notifyRegistrants();
|
public void | triggerSsn(int type, int code)
SuppServiceNotification not = new SuppServiceNotification();
not.notificationType = type;
not.code = code;
mSsnRegistrant.notifyRegistrant(new AsyncResult(null, not, null));
|
private void | unimplemented(android.os.Message result)
if (result != null) {
AsyncResult.forMessage(result).exception
= new RuntimeException("Unimplemented");
if (pausedResponseCount > 0) {
pausedResponses.add(result);
} else {
result.sendToTarget();
}
}
|
public void | writeSmsToSim(int status, java.lang.String smsc, java.lang.String pdu, android.os.Message response)
Log.d(LOG_TAG, "Write SMS to SIM with status " + status);
unimplemented(response);
|