Man-Machine Interface (MMI) Codes and oFono =========================================== 1.0 Introduction 3GPP 22.030 describes the structure of MMI codes for User Equipment. All user equipment that wishes to be compliant with the Global Certification Forum (GCF) must recognize such codes in the dialer application. This document describes the basic design principles for how to handle MMI codes with oFono. 2.0 Basic MMI structure The MMI codes fall into two broad categories: codes that are followed by and standalone codes. oFono handles all codes that are followed by while the UI is expected to handle standalone codes. 2.1 Supplementary Service Control Codes The following codes are followed by and are handled by oFono. The general structure of the codes is as follows: * Activation - '*SC*SI#' * Registration - '*SC*SI#' and '**SC*SI#' * Erasure - '##SC*SI#' * Deactivation - '#SC*SI#' * Interrogation - '*#SC*SI#' Please refer to 3GPP 22.030 for detailed explanation of the structure of SI and SC. oFono currently handles the following SCs: * 33 - Call Barring - All Outgoing * 331 - Call Barring - Outgoing International * 332 - Call Barring - Outgoing International except Home Country * 35 - Call Barring - All Incoming * 351 - Call Barring - All Incoming when Roaming * 330 - Call Barring - All Barrring Services * 333 - Call Barring - All Outgoing Services (e.g. 33, 331, 332) * 335 - Call Barring - All Incoming Services (e.g. 35, 351) * 21 - Unconditional Call Forwarding * 67 - Call Forwarding on Busy * 61 - Call Forwarding on No Reply * 62 - Call Forwarding on Unreachable * 002 - Call Forwarding All Conditional * 004 - Call Forwarding All * 30 - CLIP * 31 - CLIR * 76 - COLP * 77 - COLR * 43 - Call Waiting * 300 - CNAP 2.2 Registration of a new password The following password change strings are followed by and are recognized by oFono: * 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # ** 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # * 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # ** 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD # NOTE: ZZ is the Call Barring supplementary service code. 2.3 Change of PIN/PIN2 The following string allows the user to change the PIN: PIN1: **04*OLD_PIN*NEW_PIN*NEW_PIN# PIN2: **042*OLD-PIN2*NEW_PIN2*NEW_PIN2# The following string allows the user to unblock the PIN: PIN1: **05*PIN_UNBLOCKING_KEY*NEW_PIN*NEW_PIN# PIN2: **052*PIN2_UNBLOCKING_KEY*NEW_PIN2*NEW_PIN2# Please note that this procedure is not followed by . It is up to the dialer to recognize this string and act accordingly by using the appropriate method on the SimManager interface. 2.4 IMEI Display The following string can be used to obtain the IMEI: *#06# Please note that this procedure is not followed by . It is up to the dialer to recognize this string and display the SerialNumber property of the Modem Interface. 3.0 General Application Guidelines When the application is taking user input it is expected to match the input against all possible strings that are not to be followed by . At a minimum the PIN change or unlock and the IMEI display strings must be handled by the application. Any additional manufacturer-specific strings are also to be handled by the application. Once the user presses the request should be sent to the SupplementaryServices.Initiate() method. If the string is recognized as a control string, then the return value will be interpreted according to structure specified in doc/supplementaryservices-api.txt. If the error NotRecognized is returned, then the string is not recognized as a supplementary service string and should be treated as a call setup request instead. In this case the application should forward the string to VoiceCallManager.Dial() method.