10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project
30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License");
50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License.
60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at
70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *      http://www.apache.org/licenses/LICENSE-2.0
90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software
110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS,
120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and
140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License.
150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.cat;
180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
19685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxuimport android.content.ComponentName;
20685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Interface for communication between STK App and CAT Telephony
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic interface AppInterface {
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Intent's actions which are broadcasted by the Telephony once a new CAT
3009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja     * proactive command, session end, ALPHA during STK CC arrive.
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final String CAT_CMD_ACTION =
33cbd31113dd5bd815cbddaa374573d9254b3de35bAmit Mahajan                                    "com.android.internal.stk.command";
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final String CAT_SESSION_END_ACTION =
35cbd31113dd5bd815cbddaa374573d9254b3de35bAmit Mahajan                                    "com.android.internal.stk.session_end";
3609b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public static final String CAT_ALPHA_NOTIFY_ACTION =
37cbd31113dd5bd815cbddaa374573d9254b3de35bAmit Mahajan                                    "com.android.internal.stk.alpha_notify";
3809b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja
3909b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    //This is used to send ALPHA string from card to STK App.
4009b65da3b46e18c8acc146d722047ba2fb161bfePreeti Ahuja    public static final String ALPHA_STRING = "alpha_string";
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
42eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    // This is used to send refresh-result when MSG_ID_ICC_REFRESH is received.
43eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    public static final String REFRESH_RESULT = "refresh_result";
44eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    //This is used to send card status from card to STK App.
45eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    public static final String CARD_STATUS = "card_status";
46eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    //Intent's actions are broadcasted by Telephony once IccRefresh occurs.
47eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta    public static final String CAT_ICC_STATUS_CHANGE =
48cbd31113dd5bd815cbddaa374573d9254b3de35bAmit Mahajan                                    "com.android.internal.stk.icc_status_change";
49eca4a2ab310bf8d96cf98b5e880e2f8eef7ffeb6Sandeep Gutta
50d607cf3bc9ac43900dd4c87b86b2dbe5fabc3249Amit Mahajan    // Permission required by STK command receiver
51d607cf3bc9ac43900dd4c87b86b2dbe5fabc3249Amit Mahajan    public static final String STK_PERMISSION = "android.permission.RECEIVE_STK_COMMANDS";
52d607cf3bc9ac43900dd4c87b86b2dbe5fabc3249Amit Mahajan
53685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu    // Only forwards cat broadcast to the system default stk app
54685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu    public static ComponentName getDefaultSTKApplication() {
55685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu        return ComponentName.unflattenFromString("com.android.stk/.StkCmdReceiver");
56685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu    }
57685aaba80c3dee5daf0df761ed100221cf9f7cd4fionaxu
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Callback function from app to telephony to pass a result code and user's
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * input back to the ICC.
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void onCmdResponse(CatResponseMessage resMsg);
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Enumeration for representing "Type of Command" of proactive commands.
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Those are the only commands which are supported by the Telephony. Any app
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * implementation should support those.
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Refer to ETSI TS 102.223 section 9.4
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static enum CommandType {
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        DISPLAY_TEXT(0x21),
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        GET_INKEY(0x22),
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        GET_INPUT(0x23),
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LAUNCH_BROWSER(0x15),
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        PLAY_TONE(0x20),
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        REFRESH(0x01),
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SELECT_ITEM(0x24),
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_SS(0x11),
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_USSD(0x12),
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_SMS(0x13),
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_DTMF(0x14),
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_EVENT_LIST(0x05),
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_IDLE_MODE_TEXT(0x28),
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_MENU(0x25),
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_CALL(0x10),
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        PROVIDE_LOCAL_INFORMATION(0x26),
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        OPEN_CHANNEL(0x40),
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CLOSE_CHANNEL(0x41),
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        RECEIVE_DATA(0x42),
9086968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada        SEND_DATA(0x43),
9186968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada        GET_CHANNEL_STATUS(0x44);
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        private int mValue;
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CommandType(int value) {
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mValue = value;
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int value() {
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return mValue;
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /**
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * Create a CommandType object.
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * @param value Integer value to be converted to a CommandType object.
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * @return CommandType object whose "Type of Command" value is {@code
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *         value}. If no CommandType object has that value, null is
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *         returned.
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         */
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public static CommandType fromInt(int value) {
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            for (CommandType e : CommandType.values()) {
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (e.mValue == value) {
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    return e;
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return null;
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
121