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; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 19cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Savilleimport java.util.ArrayList; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.util.List; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2299c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Savilleimport android.telephony.Rlog; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * {@hide} 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic abstract class Call { 2822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville protected final String LOG_TAG = "Call"; 2922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* Enums */ 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public enum State { 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING; 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isAlive() { 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING); 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isRinging() { 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return this == INCOMING || this == WAITING; 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isDialing() { 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return this == DIALING || this == ALERTING; 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 484be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam public static State 494be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam stateFromDCState (DriverCall.State dcState) { 504be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam switch (dcState) { 514be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case ACTIVE: return State.ACTIVE; 524be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case HOLDING: return State.HOLDING; 534be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case DIALING: return State.DIALING; 544be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case ALERTING: return State.ALERTING; 554be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case INCOMING: return State.INCOMING; 564be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam case WAITING: return State.WAITING; 574be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam default: throw new RuntimeException ("illegal call state:" + dcState); 584be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam } 594be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam } 604be56374921b52d54b80889540d982f39d26e3abUma Maheswari Ramalingam 61a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public enum SrvccState { 62a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville NONE, STARTED, COMPLETED, FAILED, CANCELED; 63a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* Instance Variables */ 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville public State mState = State.IDLE; 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 6922d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville public ArrayList<Connection> mConnections = new ArrayList<Connection>(); 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Flag to indicate if the current calling/caller information 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // is accurate. If false the information is known to be accurate. 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // For CDMA, during call waiting/3 way, there is no network response 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // if call waiting is answered, network timed out, dropped, 3 way 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // merged, etc. 7722d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville protected boolean mIsGeneric = false; 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /* Instance Methods */ 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** Do not modify the List result!!! This list is not yours to keep 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * It will change across event loop iterations top 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public abstract List<Connection> getConnections(); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public abstract Phone getPhone(); 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public abstract boolean isMultiparty(); 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public abstract void hangup() throws CallStateException; 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * hasConnection 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @param c a Connection object 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return true if the call contains the connection object passed in 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean hasConnection(Connection c) { 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return c.getCall() == this; 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * hasConnections 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return true if the call contains one or more connections 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean hasConnections() { 106cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville List<Connection> connections = getConnections(); 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (connections == null) { 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return false; 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return connections.size() > 0; 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * getState 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return state of class call 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public State getState() { 12022d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mState; 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * isIdle 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * FIXME rename 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @return true if the call contains only disconnected connections (if any) 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isIdle() { 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return !getState().isAlive(); 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns the Connection associated with this Call that was created 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * first, or null if there are no Connections in this Call 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public Connection 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getEarliestConnection() { 139cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville List<Connection> l; 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long time = Long.MAX_VALUE; 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Connection c; 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Connection earliest = null; 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville l = getConnections(); 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (l.size() == 0) { 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = l.size() ; i < s ; i++) { 151cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville c = l.get(i); 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long t; 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville t = c.getCreateTime(); 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (t < time) { 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville earliest = c; 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = t; 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return earliest; 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public long 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getEarliestCreateTime() { 167cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville List<Connection> l; 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long time = Long.MAX_VALUE; 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville l = getConnections(); 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (l.size() == 0) { 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = l.size() ; i < s ; i++) { 177cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Connection c = l.get(i); 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long t; 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville t = c.getCreateTime(); 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = t < time ? t : time; 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return time; 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public long 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getEarliestConnectTime() { 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long time = Long.MAX_VALUE; 191cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville List<Connection> l = getConnections(); 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (l.size() == 0) { 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return 0; 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = l.size() ; i < s ; i++) { 198cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Connection c = l.get(i); 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long t; 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville t = c.getConnectTime(); 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = t < time ? t : time; 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return time; 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville isDialingOrAlerting() { 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return getState().isDialing(); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville isRinging() { 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return getState().isRinging(); 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Returns the Connection associated with this Call that was created 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * last, or null if there are no Connections in this Call 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public Connection 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville getLatestConnection() { 226cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville List<Connection> l = getConnections(); 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (l.size() == 0) { 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return null; 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long time = 0; 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Connection latest = null; 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville for (int i = 0, s = l.size() ; i < s ; i++) { 234cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville Connection c = l.get(i); 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville long t = c.getCreateTime(); 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (t > time) { 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville latest = c; 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville time = t; 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return latest; 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * To indicate if the connection information is accurate 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * or not. false means accurate. Only used for CDMA. 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public boolean isGeneric() { 25122d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville return mIsGeneric; 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Set the generic instance variable 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void setGeneric(boolean generic) { 25822d85a8e3a575a6d01d2c788587971657dfe20c6Wink Saville mIsGeneric = generic; 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Hangup call if it is alive 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void hangupIfAlive() { 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (getState().isAlive()) { 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangup(); 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (CallStateException ex) { 26999c2e1d6749cfad2a8ca94a47857d8c3bfc09454Wink Saville Rlog.w(LOG_TAG, " hangupIfActive: caught " + ex); 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 274