CatCmdMessage.java revision 86968438e444728053137c764cc37cf9c0a15d16
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) {
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCmdDet = cmdParams.cmdDet;
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch(getCmdType()) {
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_MENU:
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SELECT_ITEM:
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mMenu = ((SelectItemParams) cmdParams).menu;
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:
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mTextMsg = ((DisplayTextParams) cmdParams).textMsg;
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case GET_INPUT:
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case GET_INKEY:
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mInput = ((GetInputParams) cmdParams).input;
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mTextMsg = ((LaunchBrowserParams) cmdParams).confirmMsg;
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings = new BrowserSettings();
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.url = ((LaunchBrowserParams) cmdParams).url;
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.mode = ((LaunchBrowserParams) cmdParams).mode;
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PlayToneParams params = (PlayToneParams) cmdParams;
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mToneSettings = params.settings;
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mTextMsg = params.textMsg;
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
8386968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada        case GET_CHANNEL_STATUS:
8486968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada            mTextMsg = ((CallSetupParams) cmdParams).confirmMsg;
8586968438e444728053137c764cc37cf9c0a15d16Siddartha Pothapragada            break;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings = new CallSettings();
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.confirmMsg = ((CallSetupParams) cmdParams).confirmMsg;
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.callMsg = ((CallSetupParams) cmdParams).callMsg;
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;
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mTextMsg = param.textMsg;
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CatCmdMessage(Parcel in) {
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mCmdDet = in.readParcelable(null);
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mTextMsg = in.readParcelable(null);
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mMenu = in.readParcelable(null);
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mInput = in.readParcelable(null);
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (getCmdType()) {
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings = new BrowserSettings();
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.url = in.readString();
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mBrowserSettings.mode = LaunchBrowserMode.values()[in.readInt()];
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mToneSettings = in.readParcelable(null);
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings = new CallSettings();
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.confirmMsg = in.readParcelable(null);
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mCallSettings.callMsg = in.readParcelable(null);
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void writeToParcel(Parcel dest, int flags) {
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mCmdDet, 0);
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mTextMsg, 0);
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mMenu, 0);
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        dest.writeParcelable(mInput, 0);
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch(getCmdType()) {
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case LAUNCH_BROWSER:
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeString(mBrowserSettings.url);
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeInt(mBrowserSettings.mode.ordinal());
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case PLAY_TONE:
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mToneSettings, 0);
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        case SET_UP_CALL:
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mCallSettings.confirmMsg, 0);
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            dest.writeParcelable(mCallSettings.callMsg, 0);
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            break;
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static final Parcelable.Creator<CatCmdMessage> CREATOR = new Parcelable.Creator<CatCmdMessage>() {
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public CatCmdMessage createFromParcel(Parcel in) {
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new CatCmdMessage(in);
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        public CatCmdMessage[] newArray(int size) {
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return new CatCmdMessage[size];
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    };
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public int describeContents() {
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return 0;
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /* external API to be used by application */
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public AppInterface.CommandType getCmdType() {
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return AppInterface.CommandType.fromInt(mCmdDet.typeOfCommand);
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Menu getMenu() {
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mMenu;
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public Input geInput() {
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mInput;
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public TextMessage geTextMessage() {
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mTextMsg;
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public BrowserSettings getBrowserSettings() {
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mBrowserSettings;
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public ToneSettings getToneSettings() {
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mToneSettings;
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public CallSettings getCallSettings() {
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return mCallSettings;
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
186