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
190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Interface for communication between STK App and CAT Telephony
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide}
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic interface AppInterface {
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Intent's actions which are broadcasted by the Telephony once a new CAT
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * proactive command, session end arrive.
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final String CAT_CMD_ACTION =
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                    "android.intent.action.stk.command";
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final String CAT_SESSION_END_ACTION =
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                                    "android.intent.action.stk.session_end";
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Callback function from app to telephony to pass a result code and user's
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * input back to the ICC.
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    void onCmdResponse(CatResponseMessage resMsg);
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Enumeration for representing "Type of Command" of proactive commands.
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Those are the only commands which are supported by the Telephony. Any app
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * implementation should support those.
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Refer to ETSI TS 102.223 section 9.4
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static enum CommandType {
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        DISPLAY_TEXT(0x21),
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        GET_INKEY(0x22),
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        GET_INPUT(0x23),
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LAUNCH_BROWSER(0x15),
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        PLAY_TONE(0x20),
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        REFRESH(0x01),
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SELECT_ITEM(0x24),
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_SS(0x11),
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_USSD(0x12),
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_SMS(0x13),
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_DTMF(0x14),
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_EVENT_LIST(0x05),
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_IDLE_MODE_TEXT(0x28),
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_MENU(0x25),
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SET_UP_CALL(0x10),
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        PROVIDE_LOCAL_INFORMATION(0x26),
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        OPEN_CHANNEL(0x40),
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CLOSE_CHANNEL(0x41),
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        RECEIVE_DATA(0x42),
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        SEND_DATA(0x43);
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        private int mValue;
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        CommandType(int value) {
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mValue = value;
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public int value() {
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return mValue;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        /**
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * Create a CommandType object.
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * @param value Integer value to be converted to a CommandType object.
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         * @return CommandType object whose "Type of Command" value is {@code
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *         value}. If no CommandType object has that value, null is
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         *         returned.
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville         */
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public static CommandType fromInt(int value) {
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            for (CommandType e : CommandType.values()) {
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                if (e.mValue == value) {
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    return e;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return null;
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
97