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.graphics.Bitmap;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Container class for proactive command parameters.
230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass CommandParams {
2622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    CommandDetails mCmdDet;
275767ae41f516736b666062091d4f1948eccca8f4Preeti Ahuja    // Variable to track if an optional icon load has failed.
285767ae41f516736b666062091d4f1948eccca8f4Preeti Ahuja    boolean mLoadIconFailed = false;
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    CommandParams(CommandDetails cmdDet) {
3122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mCmdDet = cmdDet;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    AppInterface.CommandType getCommandType() {
3522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        return AppInterface.CommandType.fromInt(mCmdDet.typeOfCommand);
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) { return true; }
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    @Override
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public String toString() {
4222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        return mCmdDet.toString();
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass DisplayTextParams extends CommandParams {
4722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mTextMsg;
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    DisplayTextParams(CommandDetails cmdDet, TextMessage textMsg) {
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
5122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mTextMsg = textMsg;
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
54cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
5622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mTextMsg != null) {
5722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg.icon = icon;
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
624cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal
634cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    @Override
644cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    public String toString() {
654cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal        return "TextMessage=" + mTextMsg + " " + super.toString();
664cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    }
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass LaunchBrowserParams extends CommandParams {
7022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mConfirmMsg;
7122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    LaunchBrowserMode mMode;
7222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    String mUrl;
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    LaunchBrowserParams(CommandDetails cmdDet, TextMessage confirmMsg,
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            String url, LaunchBrowserMode mode) {
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
7722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mConfirmMsg = confirmMsg;
7822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mMode = mode;
7922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mUrl = url;
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
82cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
8422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mConfirmMsg != null) {
8522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mConfirmMsg.icon = icon;
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
904cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal
914cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    @Override
924cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    public String toString() {
934cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal        return "TextMessage=" + mConfirmMsg + " " + super.toString();
944cdf0a453fa3df6015032ec5cbb8d3253b6f81daShishir Agrawal    }
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
97734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahujaclass SetEventListParams extends CommandParams {
98734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja    int[] mEventInfo;
99734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja    SetEventListParams(CommandDetails cmdDet, int[] eventInfo) {
100734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja        super(cmdDet);
101734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja        this.mEventInfo = eventInfo;
102734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja    }
103734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja}
104734900afa3a8e35d3a75786dc59f91b6f3136157Preeti Ahuja
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass PlayToneParams extends CommandParams {
10622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mTextMsg;
10722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    ToneSettings mSettings;
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    PlayToneParams(CommandDetails cmdDet, TextMessage textMsg,
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            Tone tone, Duration duration, boolean vibrate) {
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
11222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mTextMsg = textMsg;
11322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mSettings = new ToneSettings(duration, tone, vibrate);
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
116cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
11822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mTextMsg != null) {
11922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg.icon = icon;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass CallSetupParams extends CommandParams {
12722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mConfirmMsg;
12822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mCallMsg;
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    CallSetupParams(CommandDetails cmdDet, TextMessage confirmMsg,
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            TextMessage callMsg) {
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
13322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mConfirmMsg = confirmMsg;
13422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mCallMsg = callMsg;
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
137cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (icon == null) {
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return false;
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
14222d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (mConfirmMsg != null && mConfirmMsg.icon == null) {
14322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mConfirmMsg.icon = icon;
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
14522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        } else if (mCallMsg != null && mCallMsg.icon == null) {
14622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mCallMsg.icon = icon;
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass SelectItemParams extends CommandParams {
15422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    Menu mMenu = null;
15522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    boolean mLoadTitleIcon = false;
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    SelectItemParams(CommandDetails cmdDet, Menu menu, boolean loadTitleIcon) {
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
15922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mMenu = menu;
16022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mLoadTitleIcon = loadTitleIcon;
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
163cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
16522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mMenu != null) {
16622d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            if (mLoadTitleIcon && mMenu.titleIcon == null) {
16722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville                mMenu.titleIcon = icon;
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            } else {
16922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville                for (Item item : mMenu.items) {
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    if (item.icon != null) {
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                        continue;
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    }
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    item.icon = icon;
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    break;
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                }
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass GetInputParams extends CommandParams {
18422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    Input mInput = null;
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    GetInputParams(CommandDetails cmdDet, Input input) {
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
18822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mInput = input;
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
191cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
19322d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mInput != null) {
19422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mInput.icon = icon;
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return true;
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/*
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * BIP (Bearer Independent Protocol) is the mechanism for SIM card applications
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * to access data connection through the mobile device.
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville *
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * SIM utilizes proactive commands (OPEN CHANNEL, CLOSE CHANNEL, SEND DATA and
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * RECEIVE DATA to control/read/write data for BIP. Refer to ETSI TS 102 223 for
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * the details of proactive commands procedures and their structures.
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleclass BIPClientParams extends CommandParams {
20922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    TextMessage mTextMsg;
21022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville    boolean mHasAlphaId;
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    BIPClientParams(CommandDetails cmdDet, TextMessage textMsg, boolean has_alpha_id) {
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        super(cmdDet);
21422d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mTextMsg = textMsg;
21522d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        mHasAlphaId = has_alpha_id;
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
218cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    boolean setIcon(Bitmap icon) {
22022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville        if (icon != null && mTextMsg != null) {
22122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville            mTextMsg.icon = icon;
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            return true;
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        return false;
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
227