1/*
2 * Copyright (C) 2006 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.internal.telephony.cat;
18
19/**
20 * Interface for communication between STK App and CAT Telephony
21 *
22 * {@hide}
23 */
24public interface AppInterface {
25
26    /*
27     * Intent's actions which are broadcasted by the Telephony once a new CAT
28     * proactive command, session end arrive.
29     */
30    public static final String CAT_CMD_ACTION =
31                                    "android.intent.action.stk.command";
32    public static final String CAT_SESSION_END_ACTION =
33                                    "android.intent.action.stk.session_end";
34
35    /*
36     * Callback function from app to telephony to pass a result code and user's
37     * input back to the ICC.
38     */
39    void onCmdResponse(CatResponseMessage resMsg);
40
41    /*
42     * Enumeration for representing "Type of Command" of proactive commands.
43     * Those are the only commands which are supported by the Telephony. Any app
44     * implementation should support those.
45     * Refer to ETSI TS 102.223 section 9.4
46     */
47    public static enum CommandType {
48        DISPLAY_TEXT(0x21),
49        GET_INKEY(0x22),
50        GET_INPUT(0x23),
51        LAUNCH_BROWSER(0x15),
52        PLAY_TONE(0x20),
53        REFRESH(0x01),
54        SELECT_ITEM(0x24),
55        SEND_SS(0x11),
56        SEND_USSD(0x12),
57        SEND_SMS(0x13),
58        SEND_DTMF(0x14),
59        SET_UP_EVENT_LIST(0x05),
60        SET_UP_IDLE_MODE_TEXT(0x28),
61        SET_UP_MENU(0x25),
62        SET_UP_CALL(0x10),
63        PROVIDE_LOCAL_INFORMATION(0x26),
64        OPEN_CHANNEL(0x40),
65        CLOSE_CHANNEL(0x41),
66        RECEIVE_DATA(0x42),
67        SEND_DATA(0x43);
68
69        private int mValue;
70
71        CommandType(int value) {
72            mValue = value;
73        }
74
75        public int value() {
76            return mValue;
77        }
78
79        /**
80         * Create a CommandType object.
81         *
82         * @param value Integer value to be converted to a CommandType object.
83         * @return CommandType object whose "Type of Command" value is {@code
84         *         value}. If no CommandType object has that value, null is
85         *         returned.
86         */
87        public static CommandType fromInt(int value) {
88            for (CommandType e : CommandType.values()) {
89                if (e.mValue == value) {
90                    return e;
91                }
92            }
93            return null;
94        }
95    }
96}
97