Home | History | Annotate | Download | only in cat
      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 /**
     20  * Interface for communication between STK App and CAT Telephony
     21  *
     22  * {@hide}
     23  */
     24 public 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     // This is used to send refresh-result when MSG_ID_ICC_REFRESH is received.
     36     public static final String REFRESH_RESULT = "refresh_result";
     37     //This is used to send card status from card to STK App.
     38     public static final String CARD_STATUS = "card_status";
     39     //Intent's actions are broadcasted by Telephony once IccRefresh occurs.
     40     public static final String CAT_ICC_STATUS_CHANGE =
     41                                     "android.intent.action.stk.icc_status_change";
     42 
     43     /*
     44      * Callback function from app to telephony to pass a result code and user's
     45      * input back to the ICC.
     46      */
     47     void onCmdResponse(CatResponseMessage resMsg);
     48 
     49     /*
     50      * Enumeration for representing "Type of Command" of proactive commands.
     51      * Those are the only commands which are supported by the Telephony. Any app
     52      * implementation should support those.
     53      * Refer to ETSI TS 102.223 section 9.4
     54      */
     55     public static enum CommandType {
     56         DISPLAY_TEXT(0x21),
     57         GET_INKEY(0x22),
     58         GET_INPUT(0x23),
     59         LAUNCH_BROWSER(0x15),
     60         PLAY_TONE(0x20),
     61         REFRESH(0x01),
     62         SELECT_ITEM(0x24),
     63         SEND_SS(0x11),
     64         SEND_USSD(0x12),
     65         SEND_SMS(0x13),
     66         SEND_DTMF(0x14),
     67         SET_UP_EVENT_LIST(0x05),
     68         SET_UP_IDLE_MODE_TEXT(0x28),
     69         SET_UP_MENU(0x25),
     70         SET_UP_CALL(0x10),
     71         PROVIDE_LOCAL_INFORMATION(0x26),
     72         OPEN_CHANNEL(0x40),
     73         CLOSE_CHANNEL(0x41),
     74         RECEIVE_DATA(0x42),
     75         SEND_DATA(0x43),
     76         GET_CHANNEL_STATUS(0x44);
     77 
     78         private int mValue;
     79 
     80         CommandType(int value) {
     81             mValue = value;
     82         }
     83 
     84         public int value() {
     85             return mValue;
     86         }
     87 
     88         /**
     89          * Create a CommandType object.
     90          *
     91          * @param value Integer value to be converted to a CommandType object.
     92          * @return CommandType object whose "Type of Command" value is {@code
     93          *         value}. If no CommandType object has that value, null is
     94          *         returned.
     95          */
     96         public static CommandType fromInt(int value) {
     97             for (CommandType e : CommandType.values()) {
     98                 if (e.mValue == value) {
     99                     return e;
    100                 }
    101             }
    102             return null;
    103         }
    104     }
    105 }
    106