Adding capabilities to Call objects
Change-Id: I80687dd064bfb5b1aeea4e5d0b6c397c401a0b48
diff --git a/common/src/com/android/services/telephony/common/Call.java b/common/src/com/android/services/telephony/common/Call.java
index 470381d..09874d5 100644
--- a/common/src/com/android/services/telephony/common/Call.java
+++ b/common/src/com/android/services/telephony/common/Call.java
@@ -36,27 +36,22 @@
/* Defines different states of this call */
public static class State {
public static final int INVALID = 0;
+ public static final int IDLE = 1; /* The call is idle. Nothing active */
+ public static final int ACTIVE = 2; /* There is an active call */
+ public static final int INCOMING = 3; /* A normal incoming phone call */
+ public static final int CALL_WAITING = 4; /* Incoming call while another is active */
+ public static final int DIALING = 5; /* An outgoing call during dial phase */
+ public static final int ONHOLD = 6; /* An active phone call placed on hold */
+ public static final int DISCONNECTED = 7; /* State after a call disconnects */
+ }
- // The call is idle. Nothing active.
- public static final int IDLE = 1;
+ /**
+ * Defines a set of capabilities that a call can have as a bit mask.
+ */
+ public static class Capabilities {
+ public static final int MERGE = 0x00000001; /* has ability to merge with another call. */
- // There is an active call.
- public static final int ACTIVE = 2;
-
- // A normal incoming phone call.
- public static final int INCOMING = 3;
-
- // An incoming phone call while another call is active.
- public static final int CALL_WAITING = 4;
-
- // A Mobile-originating (MO) call. This call is dialing out.
- public static final int DIALING = 5;
-
- // An active phone call placed on hold.
- public static final int ONHOLD = 6;
-
- // State after a call disconnects.
- public static final int DISCONNECTED = 7;
+ public static final int ALL = MERGE;
}
/**
@@ -137,6 +132,7 @@
private int mCnapNamePresentation = PRESENTATION_ALLOWED;
private String mCnapName = "";
private DisconnectCause mDisconnectCause;
+ private int mCapabilities;
public Call(int callId) {
mCallId = callId;
@@ -198,6 +194,22 @@
mDisconnectCause = cause;
}
+ public int getCapabilities() {
+ return mCapabilities;
+ }
+
+ public void setCapabilities(int capabilities) {
+ mCapabilities = (Capabilities.ALL & capabilities);
+ }
+
+ public boolean can(int capabilities) {
+ return (capabilities == (capabilities & mCapabilities));
+ }
+
+ public void addCapabilities(int capabilities) {
+ setCapabilities(capabilities | mCapabilities);
+ }
+
/**
* Parcelable implementation
*/
@@ -211,6 +223,7 @@
dest.writeInt(mCnapNamePresentation);
dest.writeString(mCnapName);
dest.writeString(getDisconnectCause().toString());
+ dest.writeInt(getCapabilities());
}
@Override
@@ -218,18 +231,26 @@
return 0;
}
+ /**
+ * Creates Call objects for Parcelable implementation.
+ */
public static final Parcelable.Creator<Call> CREATOR
= new Parcelable.Creator<Call>() {
+ @Override
public Call createFromParcel(Parcel in) {
return new Call(in);
}
+ @Override
public Call[] newArray(int size) {
return new Call[size];
}
};
+ /**
+ * Constructor for Parcelable implementation.
+ */
private Call(Parcel in) {
mCallId = in.readInt();
mNumber = in.readString();
@@ -238,6 +259,7 @@
mCnapNamePresentation = in.readInt();
mCnapName = in.readString();
mDisconnectCause = DisconnectCause.valueOf(in.readString());
+ mCapabilities = in.readInt();
}
@Override