Correct the dialing number of structured MMI.

According to TS 22.030 6.5.2 "Structure of the MMI", the dialing number
can not end with #. The format is like *SC*SI#DN. Correct the mmi pattern
to exclude DN# case. With this fix, processCode() will tread *NNN#DN#,
e.g. *400#16 digit number# in bug 5622718, as USSD and send via
RIL_REQUEST_SEND_USSD.

bug:5622718
Change-Id: Ifc8d0edff4308602a5f3fc651cf116bf6bad3cbc
This commit is contained in:
John Wang
2011-12-07 16:38:56 -08:00
parent 9a856f4ee7
commit 2690817815

View File

@ -132,7 +132,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
// See TS 22.030 6.5.2 "Structure of the MMI"
static Pattern sPatternSuppService = Pattern.compile(
"((\\*|#|\\*#|\\*\\*|##)(\\d{2,3})(\\*([^*#]*)(\\*([^*#]*)(\\*([^*#]*)(\\*([^*#]*))?)?)?)?#)(.*)");
"((\\*|#|\\*#|\\*\\*|##)(\\d{2,3})(\\*([^*#]*)(\\*([^*#]*)(\\*([^*#]*)(\\*([^*#]*))?)?)?)?#)([^#]*)");
/* 1 2 3 4 5 6 7 8 9 10 11 12
1 = Full string up to and including #
@ -141,7 +141,7 @@ public final class GsmMmiCode extends Handler implements MmiCode {
5 = SIA
7 = SIB
9 = SIC
10 = dialing number
10 = dialing number which must not include #, e.g. *SCn*SI#DN format
*/
static final int MATCH_GROUP_POUND_STRING = 1;
@ -1338,4 +1338,20 @@ public final class GsmMmiCode extends Handler implements MmiCode {
* SpecialCharSequenceMgr class.
*/
@Override
public String toString() {
StringBuilder sb = new StringBuilder("GsmMmiCode {");
sb.append("State=" + getState());
if (action != null) sb.append(" action=" + action);
if (sc != null) sb.append(" sc=" + sc);
if (sia != null) sb.append(" sia=" + sia);
if (sib != null) sb.append(" sib=" + sib);
if (sic != null) sb.append(" sic=" + sic);
if (poundString != null) sb.append(" poundString=" + poundString);
if (dialingNumber != null) sb.append(" dialingNumber=" + dialingNumber);
if (pwd != null) sb.append(" pwd=" + pwd);
sb.append("}");
return sb.toString();
}
}