Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 26908178 authored by John Wang's avatar John Wang
Browse files

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
parent 9a856f4e
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -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();
    }
}