GsmInboundSmsHandler mGsmInboundSmsHandler;
+ // Create Cfu (Call forward unconditional) so that dialling number &
+ // mOnComplete (Message object passed by client) can be packed &
+ // given as a single Cfu object as user data to RIL.
+ private static class Cfu {
+ final String mSetCfNumber;
+ final Message mOnComplete;
+
+ Cfu(String cfNumber, Message onComplete) {
+ mSetCfNumber = cfNumber;
+ mOnComplete = onComplete;
+ }
+ }
+
// Constructors
public
Message resp;
if (commandInterfaceCFReason == CF_REASON_UNCONDITIONAL) {
+ Cfu cfu = new Cfu(dialingNumber, onComplete);
resp = obtainMessage(EVENT_SET_CALL_FORWARD_DONE,
- isCfEnable(commandInterfaceCFAction) ? 1 : 0, 0, onComplete);
+ isCfEnable(commandInterfaceCFAction) ? 1 : 0, 0, cfu);
} else {
resp = onComplete;
}
case EVENT_SET_CALL_FORWARD_DONE:
ar = (AsyncResult)msg.obj;
IccRecords r = mIccRecords.get();
+ Cfu cfu = (Cfu) ar.userObj;
if (ar.exception == null && r != null) {
- r.setVoiceCallForwardingFlag(1, msg.arg1 == 1);
+ r.setVoiceCallForwardingFlag(1, msg.arg1 == 1, cfu.mSetCfNumber);
}
- onComplete = (Message) ar.userObj;
- if (onComplete != null) {
- AsyncResult.forMessage(onComplete, ar.result, ar.exception);
- onComplete.sendToTarget();
+ if (cfu.mOnComplete != null) {
+ AsyncResult.forMessage(cfu.mOnComplete, ar.result, ar.exception);
+ cfu.mOnComplete.sendToTarget();
}
break;
if (infos == null || infos.length == 0) {
// Assume the default is not active
// Set unconditional CFF in SIM to false
- r.setVoiceCallForwardingFlag(1, false);
+ r.setVoiceCallForwardingFlag(1, false, null);
} else {
for (int i = 0, s = infos.length; i < s; i++) {
if ((infos[i].serviceClass & SERVICE_CLASS_VOICE) != 0) {
- r.setVoiceCallForwardingFlag(1, (infos[i].status == 1));
+ r.setVoiceCallForwardingFlag(1, (infos[i].status == 1),
+ infos[i].number);
// should only have the one
break;
}