Skip to content

Commit e81932e

Browse files
dujin.chaJohn Wang
authored andcommitted
[maguro] Fix STK issues
1. Fix Bug 5574160 (Abnormal Setup menu) 2. Fix Bug 5558273 (GetInkey issue) 3. Fix BUg 5558612 (No default alpha id) 4. Fix Vodafone UK ALS issue. Bug : 5574160, 5558273, 5558612 Change-Id: Ief74d0e4f4f28dff7a435e9dab1fab1ca1d9bfaf Signed-off-by: dujin.cha <dujin.cha@samsung.com>
1 parent cde433c commit e81932e

5 files changed

Lines changed: 68 additions & 27 deletions

File tree

core/res/res/values/strings.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<!--
33
/* //device/apps/common/assets/res/any/strings.xml
44
**
@@ -3365,4 +3365,13 @@
33653365
<!-- Delimeter used between each item in a textual list; for example "Alpha, Beta". [CHAR LIMIT=3] -->
33663366
<string name="list_delimeter">", "</string>
33673367

3368+
<!-- STK sending DTMF, SMS, USSD, SS -->
3369+
<string name="sending">Sending...</string>
3370+
3371+
<!-- STK launch Browser -->
3372+
<string name="launchBrowserDefault">Launch Browser?</string>
3373+
3374+
<!-- STK setup Call -->
3375+
<string name="SetupCallDefault">Accept Call?</string>
3376+
33683377
</resources>

telephony/java/com/android/internal/telephony/cat/CatService.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ public class CatService extends Handler implements AppInterface {
9494
private static final int DEV_ID_TERMINAL = 0x82;
9595
private static final int DEV_ID_NETWORK = 0x83;
9696

97+
static final String STK_DEFAULT = "Defualt Message";
98+
9799
/* Intentionally private for singleton */
98100
private CatService(CommandsInterface ci, IccRecords ir, Context context,
99101
IccFileHandler fh, IccCard ic) {
@@ -157,7 +159,15 @@ private void handleRilMsg(RilMessage rilMsg) {
157159
}
158160
break;
159161
case MSG_ID_PROACTIVE_COMMAND:
160-
cmdParams = (CommandParams) rilMsg.mData;
162+
try {
163+
cmdParams = (CommandParams) rilMsg.mData;
164+
} catch (ClassCastException e) {
165+
// for error handling : cast exception
166+
CatLog.d(this, "Fail to parse proactive command");
167+
sendTerminalResponse(mCurrntCmd.mCmdDet, ResultCode.CMD_DATA_NOT_UNDERSTOOD,
168+
false, 0x00, null);
169+
break;
170+
}
161171
if (cmdParams != null) {
162172
if (rilMsg.mResCode == ResultCode.OK) {
163173
handleProactiveCommand(cmdParams);
@@ -194,6 +204,7 @@ private void handleRilMsg(RilMessage rilMsg) {
194204
private void handleProactiveCommand(CommandParams cmdParams) {
195205
CatLog.d(this, cmdParams.getCommandType().name());
196206

207+
CharSequence message;
197208
CatCmdMessage cmdMsg = new CatCmdMessage(cmdParams);
198209
switch (cmdParams.getCommandType()) {
199210
case SET_UP_MENU:
@@ -224,26 +235,44 @@ private void handleProactiveCommand(CommandParams cmdParams) {
224235
case CommandParamsFactory.DTTZ_SETTING:
225236
resp = new DTTZResponseData(null);
226237
sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp);
227-
break;
238+
return;
228239
case CommandParamsFactory.LANGUAGE_SETTING:
229240
resp = new LanguageResponseData(Locale.getDefault().getLanguage());
230241
sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, resp);
231-
break;
242+
return;
232243
default:
233244
sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null);
234245
return;
235246
}
236247
case LAUNCH_BROWSER:
248+
if ((((LaunchBrowserParams) cmdParams).confirmMsg.text != null)
249+
&& (((LaunchBrowserParams) cmdParams).confirmMsg.text.equals(STK_DEFAULT))) {
250+
message = mContext.getText(com.android.internal.R.string.launchBrowserDefault);
251+
((LaunchBrowserParams) cmdParams).confirmMsg.text = message.toString();
252+
}
253+
break;
237254
case SELECT_ITEM:
238255
case GET_INPUT:
239256
case GET_INKEY:
257+
break;
240258
case SEND_DTMF:
241259
case SEND_SMS:
242260
case SEND_SS:
243261
case SEND_USSD:
262+
if ((((DisplayTextParams)cmdParams).textMsg.text != null)
263+
&& (((DisplayTextParams)cmdParams).textMsg.text.equals(STK_DEFAULT))) {
264+
message = mContext.getText(com.android.internal.R.string.sending);
265+
((DisplayTextParams)cmdParams).textMsg.text = message.toString();
266+
}
267+
break;
244268
case PLAY_TONE:
269+
break;
245270
case SET_UP_CALL:
246-
// nothing to do on telephony!
271+
if ((((CallSetupParams) cmdParams).confirmMsg.text != null)
272+
&& (((CallSetupParams) cmdParams).confirmMsg.text.equals(STK_DEFAULT))) {
273+
message = mContext.getText(com.android.internal.R.string.SetupCallDefault);
274+
((CallSetupParams) cmdParams).confirmMsg.text = message.toString();
275+
}
247276
break;
248277
default:
249278
CatLog.d(this, "Unsupported command");

telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ private boolean processGetInkey(CommandDetails cmdDet,
403403
input.ucs2 = (cmdDet.commandQualifier & 0x02) != 0;
404404
input.yesNo = (cmdDet.commandQualifier & 0x04) != 0;
405405
input.helpAvailable = (cmdDet.commandQualifier & 0x80) != 0;
406+
input.echo = true;
406407

407408
mCmdParams = new GetInputParams(cmdDet, input);
408409

@@ -625,11 +626,7 @@ private boolean processEventNotify(CommandDetails cmdDet,
625626

626627
ComprehensionTlv ctlv = searchForTag(ComprehensionTlvTag.ALPHA_ID,
627628
ctlvs);
628-
if (ctlv != null) {
629-
textMsg.text = ValueParser.retrieveAlphaId(ctlv);
630-
} else {
631-
throw new ResultException(ResultCode.REQUIRED_VALUES_MISSING);
632-
}
629+
textMsg.text = ValueParser.retrieveAlphaId(ctlv);
633630

634631
ctlv = searchForTag(ComprehensionTlvTag.ICON_ID, ctlvs);
635632
if (ctlv != null) {
@@ -714,9 +711,8 @@ private boolean processLaunchBrowser(CommandDetails cmdDet,
714711

715712
// parse alpha identifier.
716713
ctlv = searchForTag(ComprehensionTlvTag.ALPHA_ID, ctlvs);
717-
if (ctlv != null) {
718-
confirmMsg.text = ValueParser.retrieveAlphaId(ctlv);
719-
}
714+
confirmMsg.text = ValueParser.retrieveAlphaId(ctlv);
715+
720716
// parse icon identifier
721717
ctlv = searchForTag(ComprehensionTlvTag.ICON_ID, ctlvs);
722718
if (ctlv != null) {
@@ -841,9 +837,7 @@ private boolean processSetupCall(CommandDetails cmdDet,
841837

842838
// get confirmation message string.
843839
ctlv = searchForNextTag(ComprehensionTlvTag.ALPHA_ID, iter);
844-
if (ctlv != null) {
845-
confirmMsg.text = ValueParser.retrieveAlphaId(ctlv);
846-
}
840+
confirmMsg.text = ValueParser.retrieveAlphaId(ctlv);
847841

848842
ctlv = searchForTag(ComprehensionTlvTag.ICON_ID, ctlvs);
849843
if (ctlv != null) {

telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public static List<ComprehensionTlv> decodeMany(byte[] data, int startIndex)
9494
startIndex = ctlv.mValueIndex + ctlv.mLength;
9595
} else {
9696
CatLog.d(LOG_TAG, "decodeMany: ctlv is null, stop decoding");
97+
items.clear();
9798
break;
9899
}
99100
}
@@ -123,7 +124,10 @@ public static ComprehensionTlv decode(byte[] data, int startIndex)
123124
case 0:
124125
case 0xff:
125126
case 0x80:
126-
throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
127+
// for error handling
128+
// these one make exception while decoding the abnormal command.
129+
// (in case of Ghana MTN simcard , JDI simcard)
130+
return null;
127131

128132
case 0x7f: // tag is in three-byte format
129133
tag = ((data[curIndex] & 0xff) << 8)

telephony/java/com/android/internal/telephony/cat/ValueParser.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -273,18 +273,23 @@ static List<TextAttribute> retrieveTextAttribute(ComprehensionTlv ctlv)
273273
*/
274274
static String retrieveAlphaId(ComprehensionTlv ctlv) throws ResultException {
275275

276-
byte[] rawValue = ctlv.getRawValue();
277-
int valueIndex = ctlv.getValueIndex();
278-
int length = ctlv.getLength();
279-
if (length != 0) {
280-
try {
281-
return IccUtils.adnStringFieldToString(rawValue, valueIndex,
282-
length);
283-
} catch (IndexOutOfBoundsException e) {
284-
throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
276+
if (ctlv != null) {
277+
byte[] rawValue = ctlv.getRawValue();
278+
int valueIndex = ctlv.getValueIndex();
279+
int length = ctlv.getLength();
280+
if (length != 0) {
281+
try {
282+
return IccUtils.adnStringFieldToString(rawValue, valueIndex,
283+
length);
284+
} catch (IndexOutOfBoundsException e) {
285+
throw new ResultException(ResultCode.CMD_DATA_NOT_UNDERSTOOD);
286+
}
287+
} else {
288+
return CatService.STK_DEFAULT;
285289
}
290+
} else {
291+
return CatService.STK_DEFAULT;
286292
}
287-
return null;
288293
}
289294

290295
/**

0 commit comments

Comments
 (0)