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 
17 package com.android.internal.telephony.cat;
18 
19 import android.content.ComponentName;
20 
21 /**
22  * Interface for communication between STK App and CAT Telephony
23  *
24  * {@hide}
25  */
26 public interface AppInterface {
27 
28     /*
29      * Intent's actions which are broadcasted by the Telephony once a new CAT
30      * proactive command, session end, ALPHA during STK CC arrive.
31      */
32     public static final String CAT_CMD_ACTION =
33                                     "com.android.internal.stk.command";
34     public static final String CAT_SESSION_END_ACTION =
35                                     "com.android.internal.stk.session_end";
36     public static final String CAT_ALPHA_NOTIFY_ACTION =
37                                     "com.android.internal.stk.alpha_notify";
38 
39     //This is used to send ALPHA string from card to STK App.
40     public static final String ALPHA_STRING = "alpha_string";
41 
42     // This is used to send refresh-result when MSG_ID_ICC_REFRESH is received.
43     public static final String REFRESH_RESULT = "refresh_result";
44     //This is used to send card status from card to STK App.
45     public static final String CARD_STATUS = "card_status";
46     //Intent's actions are broadcasted by Telephony once IccRefresh occurs.
47     public static final String CAT_ICC_STATUS_CHANGE =
48                                     "com.android.internal.stk.icc_status_change";
49 
50     // Permission required by STK command receiver
51     public static final String STK_PERMISSION = "android.permission.RECEIVE_STK_COMMANDS";
52 
53     // Only forwards cat broadcast to the system default stk app
getDefaultSTKApplication()54     public static ComponentName getDefaultSTKApplication() {
55         return ComponentName.unflattenFromString("com.android.stk/.StkCmdReceiver");
56     }
57 
58     /*
59      * Callback function from app to telephony to pass a result code and user's
60      * input back to the ICC.
61      */
onCmdResponse(CatResponseMessage resMsg)62     void onCmdResponse(CatResponseMessage resMsg);
63 
64     /*
65      * Enumeration for representing "Type of Command" of proactive commands.
66      * Those are the only commands which are supported by the Telephony. Any app
67      * implementation should support those.
68      * Refer to ETSI TS 102.223 section 9.4
69      */
70     public static enum CommandType {
71         DISPLAY_TEXT(0x21),
72         GET_INKEY(0x22),
73         GET_INPUT(0x23),
74         LAUNCH_BROWSER(0x15),
75         PLAY_TONE(0x20),
76         REFRESH(0x01),
77         SELECT_ITEM(0x24),
78         SEND_SS(0x11),
79         SEND_USSD(0x12),
80         SEND_SMS(0x13),
81         SEND_DTMF(0x14),
82         SET_UP_EVENT_LIST(0x05),
83         SET_UP_IDLE_MODE_TEXT(0x28),
84         SET_UP_MENU(0x25),
85         SET_UP_CALL(0x10),
86         PROVIDE_LOCAL_INFORMATION(0x26),
87         OPEN_CHANNEL(0x40),
88         CLOSE_CHANNEL(0x41),
89         RECEIVE_DATA(0x42),
90         SEND_DATA(0x43),
91         GET_CHANNEL_STATUS(0x44);
92 
93         private int mValue;
94 
CommandType(int value)95         CommandType(int value) {
96             mValue = value;
97         }
98 
value()99         public int value() {
100             return mValue;
101         }
102 
103         /**
104          * Create a CommandType object.
105          *
106          * @param value Integer value to be converted to a CommandType object.
107          * @return CommandType object whose "Type of Command" value is {@code
108          *         value}. If no CommandType object has that value, null is
109          *         returned.
110          */
fromInt(int value)111         public static CommandType fromInt(int value) {
112             for (CommandType e : CommandType.values()) {
113                 if (e.mValue == value) {
114                     return e;
115                 }
116             }
117             return null;
118         }
119     }
120 }
121