CatCmdMessage.java revision 22d85a8e3a575a6d01d2c788587971657dfe20c6
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2007 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 Savilleimport android.os.Parcel;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Parcelable;
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Class used to pass CAT messages from telephony to application. Application
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * should call getXXX() to get commands's specific values.
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class CatCmdMessage implements Parcelable {
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    // members
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    CommandDetails mCmdDet;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private TextMessage mTextMsg;
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private Menu mMenu;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private Input mInput;
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private BrowserSettings mBrowserSettings = null;
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private ToneSettings mToneSettings = null;
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private CallSettings mCallSettings = null;
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Container for Launch Browser command settings.
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public class BrowserSettings {
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public String url;
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public LaunchBrowserMode mode;
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Container for Call Setup command settings.
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public class CallSettings {
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public TextMessage confirmMsg;
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public TextMessage callMsg;
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    CatCmdMessage(CommandParams cmdParams) {
5422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mCmdDet = cmdParams.mCmdDet;
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch(getCmdType()) {
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_MENU:
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SELECT_ITEM:
5822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mMenu = ((SelectItemParams) cmdParams).mMenu;
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case DISPLAY_TEXT:
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_IDLE_MODE_TEXT:
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SEND_DTMF:
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SEND_SMS:
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SEND_SS:
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SEND_USSD:
6622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg = ((DisplayTextParams) cmdParams).mTextMsg;
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case GET_INPUT:
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case GET_INKEY:
7022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mInput = ((GetInputParams) cmdParams).mInput;
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
7322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg = ((LaunchBrowserParams) cmdParams).mConfirmMsg;
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings = new BrowserSettings();
7522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mBrowserSettings.url = ((LaunchBrowserParams) cmdParams).mUrl;
7622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mBrowserSettings.mode = ((LaunchBrowserParams) cmdParams).mMode;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PlayToneParams params = (PlayToneParams) cmdParams;
8022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mToneSettings = params.mSettings;
8122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg = params.mTextMsg;
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
8386968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada        case GET_CHANNEL_STATUS:
8422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg = ((CallSetupParams) cmdParams).mConfirmMsg;
8586968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada            break;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings = new CallSettings();
8822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mCallSettings.confirmMsg = ((CallSetupParams) cmdParams).mConfirmMsg;
8922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mCallSettings.callMsg = ((CallSetupParams) cmdParams).mCallMsg;
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case OPEN_CHANNEL:
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case CLOSE_CHANNEL:
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case RECEIVE_DATA:
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SEND_DATA:
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            BIPClientParams param = (BIPClientParams) cmdParams;
9622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg = param.mTextMsg;
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
98cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        case PROVIDE_LOCAL_INFORMATION:
99cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        case REFRESH:
100cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        case SET_UP_EVENT_LIST:
101cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        default:
102cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville            break;
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CatCmdMessage(Parcel in) {
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCmdDet = in.readParcelable(null);
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mTextMsg = in.readParcelable(null);
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mMenu = in.readParcelable(null);
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mInput = in.readParcelable(null);
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (getCmdType()) {
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings = new BrowserSettings();
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.url = in.readString();
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.mode = LaunchBrowserMode.values()[in.readInt()];
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mToneSettings = in.readParcelable(null);
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings = new CallSettings();
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.confirmMsg = in.readParcelable(null);
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.callMsg = in.readParcelable(null);
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
125cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        default:
126cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville            break;
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
130cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void writeToParcel(Parcel dest, int flags) {
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mCmdDet, 0);
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mTextMsg, 0);
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mMenu, 0);
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mInput, 0);
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch(getCmdType()) {
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeString(mBrowserSettings.url);
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeInt(mBrowserSettings.mode.ordinal());
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mToneSettings, 0);
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mCallSettings.confirmMsg, 0);
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mCallSettings.callMsg, 0);
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
148cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        default:
149cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville            break;
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final Parcelable.Creator<CatCmdMessage> CREATOR = new Parcelable.Creator<CatCmdMessage>() {
154cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        @Override
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public CatCmdMessage createFromParcel(Parcel in) {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new CatCmdMessage(in);
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
159cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville        @Override
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public CatCmdMessage[] newArray(int size) {
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new CatCmdMessage[size];
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    };
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
165cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int describeContents() {
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return 0;
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /* external API to be used by application */
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public AppInterface.CommandType getCmdType() {
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return AppInterface.CommandType.fromInt(mCmdDet.typeOfCommand);
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Menu getMenu() {
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mMenu;
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Input geInput() {
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mInput;
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public TextMessage geTextMessage() {
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mTextMsg;
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public BrowserSettings getBrowserSettings() {
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mBrowserSettings;
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public ToneSettings getToneSettings() {
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mToneSettings;
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CallSettings getCallSettings() {
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mCallSettings;
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
199