Merge "Add a new Config to map PIDF service-description to IMS Feature Tags"
This commit is contained in:
@@ -9356,6 +9356,10 @@ package android.telephony {
|
||||
field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool";
|
||||
}
|
||||
|
||||
public static final class CarrierConfigManager.Ims {
|
||||
field public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY = "ims.publish_service_desc_feature_tag_map_override_string_array";
|
||||
}
|
||||
|
||||
public static final class CarrierConfigManager.Wifi {
|
||||
field public static final String KEY_HOTSPOT_MAX_CLIENT_COUNT = "wifi.hotspot_maximum_client_count";
|
||||
field public static final String KEY_PREFIX = "wifi.";
|
||||
|
||||
@@ -33,7 +33,11 @@ import android.os.RemoteException;
|
||||
import android.service.carrier.CarrierService;
|
||||
import android.telecom.TelecomManager;
|
||||
import android.telephony.ims.ImsReasonInfo;
|
||||
import android.telephony.ims.ImsRegistrationAttributes;
|
||||
import android.telephony.ims.ImsSsData;
|
||||
import android.telephony.ims.SipDelegateManager;
|
||||
import android.telephony.ims.feature.MmTelFeature;
|
||||
import android.telephony.ims.feature.RcsFeature;
|
||||
|
||||
import com.android.internal.telephony.ICarrierConfigLoader;
|
||||
import com.android.telephony.Rlog;
|
||||
@@ -3940,6 +3944,43 @@ public class CarrierConfigManager {
|
||||
public static final String KEY_ENABLE_PRESENCE_PUBLISH_BOOL =
|
||||
KEY_PREFIX + "enable_presence_publish_bool";
|
||||
|
||||
/**
|
||||
* Each string in this array contains a mapping between the service-id and version portion
|
||||
* of the service-description element and the associated IMS feature tag(s) that are
|
||||
* associated with each element (see RCC.07 Table 7).
|
||||
* <p>
|
||||
* Each string contains 3 parts, which define the mapping between service-description and
|
||||
* feature tag(s) that must be present in the IMS REGISTER for the RCS service to be
|
||||
* published as part of the RCS PUBLISH procedure:
|
||||
* [service-id]|[version]|[desc]|[feature_tag];[feature_tag];...
|
||||
* <ul>
|
||||
* <li>[service-id]: the service-id element associated with the RCS capability.</li>
|
||||
* <li>[version]: The version element associated with that service-id</li>
|
||||
* <li>[desc]: The optional desecription element associated with that service-id</li>
|
||||
* <li>[feature_tag];[feature_tag]: The list of all feature tags associated with this
|
||||
* capability that MUST ALL be present in the IMS registration for this this
|
||||
* capability to be published to the network.</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* Features managed by the framework will be considered capable when the ImsService reports
|
||||
* that those services are capable via the
|
||||
* {@link MmTelFeature#notifyCapabilitiesStatusChanged(MmTelFeature.MmTelCapabilities)} or
|
||||
* {@link RcsFeature#notifyCapabilitiesStatusChanged(RcsFeature.RcsImsCapabilities)} APIs.
|
||||
* For RCS services not managed by the framework, the capability of these services are
|
||||
* determined by looking at the feature tags associated with the IMS registration using the
|
||||
* {@link ImsRegistrationAttributes} API and mapping them to the service-description map.
|
||||
* <p>
|
||||
* The framework contains a default value of this key, which is based off of RCC.07
|
||||
* specification. Capabilities based of carrier extensions may be added to this list on a
|
||||
* carrier-by-carrier basis as required in order to support additional services in the
|
||||
* PUBLISH. If this list contains a service-id and version that overlaps with the default,
|
||||
* it will override the framework default.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY =
|
||||
KEY_PREFIX + "publish_service_desc_feature_tag_map_override_string_array";
|
||||
|
||||
/**
|
||||
* Flag indicating whether or not this carrier supports the exchange of phone numbers with
|
||||
* the carrier's RCS presence server in order to retrieve the RCS capabilities of requested
|
||||
@@ -3999,6 +4040,8 @@ public class CarrierConfigManager {
|
||||
defaults.putInt(KEY_WIFI_OFF_DEFERRING_TIME_MILLIS_INT, 4000);
|
||||
defaults.putBoolean(KEY_IMS_SINGLE_REGISTRATION_REQUIRED_BOOL, false);
|
||||
defaults.putBoolean(KEY_ENABLE_PRESENCE_PUBLISH_BOOL, false);
|
||||
defaults.putStringArray(KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY,
|
||||
new String[] {});
|
||||
defaults.putBoolean(KEY_ENABLE_PRESENCE_CAPABILITY_EXCHANGE_BOOL, false);
|
||||
defaults.putBoolean(KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, false);
|
||||
defaults.putBoolean(KEY_ENABLE_PRESENCE_GROUP_SUBSCRIBE_BOOL, true);
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
|
||||
import android.annotation.StringDef;
|
||||
import android.annotation.SystemApi;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
@@ -45,6 +46,15 @@ public final class RcsContactPresenceTuple implements Parcelable {
|
||||
|
||||
private static final String LOG_TAG = "RcsContactPresenceTuple";
|
||||
|
||||
/**
|
||||
* The service ID used to indicate that service discovery via presence is available.
|
||||
* <p>
|
||||
* See RCC.07 v5.0 specification for more information.
|
||||
* @hide
|
||||
*/
|
||||
public static final String SERVICE_ID_PRESENCE =
|
||||
"org.3gpp.urn:urn-7:3gpp-application.ims.iari.rcse.dp";
|
||||
|
||||
/**
|
||||
* The service ID used to indicate that MMTEL service is available.
|
||||
* <p>
|
||||
@@ -336,6 +346,13 @@ public final class RcsContactPresenceTuple implements Parcelable {
|
||||
public @NonNull @DuplexMode List<String> getUnsupportedDuplexModes() {
|
||||
return Collections.unmodifiableList(mUnsupportedDuplexModeList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "servCaps{" + "a=" + mIsAudioCapable + ", v=" + mIsVideoCapable
|
||||
+ ", supported=" + mSupportedDuplexModeList + ", unsupported="
|
||||
+ mUnsupportedDuplexModeList + '}';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -539,4 +556,36 @@ public final class RcsContactPresenceTuple implements Parcelable {
|
||||
public @Nullable ServiceCapabilities getServiceCapabilities() {
|
||||
return mServiceCapabilities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("{");
|
||||
if (Build.IS_ENG) {
|
||||
builder.append("u=");
|
||||
builder.append(mContactUri);
|
||||
} else {
|
||||
builder.append("u=");
|
||||
builder.append(mContactUri != null ? "XXX" : "null");
|
||||
}
|
||||
builder.append(", id=");
|
||||
builder.append(mServiceId);
|
||||
builder.append(", v=");
|
||||
builder.append(mServiceVersion);
|
||||
builder.append(", s=");
|
||||
builder.append(mStatus);
|
||||
if (mTimestamp != null) {
|
||||
builder.append(", timestamp=");
|
||||
builder.append(mTimestamp);
|
||||
}
|
||||
if (mServiceDescription != null) {
|
||||
builder.append(", servDesc=");
|
||||
builder.append(mServiceDescription);
|
||||
}
|
||||
if (mServiceCapabilities != null) {
|
||||
builder.append(", servCaps=");
|
||||
builder.append(mServiceCapabilities);
|
||||
}
|
||||
builder.append("}");
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SystemApi;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
@@ -345,4 +346,39 @@ public final class RcsContactUceCapability implements Parcelable {
|
||||
public @NonNull Uri getContactUri() {
|
||||
return mContactUri;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder("RcsContactUceCapability");
|
||||
if (mCapabilityMechanism == CAPABILITY_MECHANISM_PRESENCE) {
|
||||
builder.append("(presence) {");
|
||||
} else if (mCapabilityMechanism == CAPABILITY_MECHANISM_OPTIONS) {
|
||||
builder.append("(options) {");
|
||||
} else {
|
||||
builder.append("(?) {");
|
||||
}
|
||||
if (Build.IS_ENG) {
|
||||
builder.append("uri=");
|
||||
builder.append(mContactUri);
|
||||
} else {
|
||||
builder.append("uri (isNull)=");
|
||||
builder.append(mContactUri != null ? "XXX" : "null");
|
||||
}
|
||||
builder.append(", sourceType=");
|
||||
builder.append(mSourceType);
|
||||
builder.append(", requestResult=");
|
||||
builder.append(mRequestResult);
|
||||
|
||||
if (mCapabilityMechanism == CAPABILITY_MECHANISM_PRESENCE) {
|
||||
builder.append(", presenceTuples={");
|
||||
builder.append(mPresenceTuples);
|
||||
builder.append("}");
|
||||
} else if (mCapabilityMechanism == CAPABILITY_MECHANISM_OPTIONS) {
|
||||
builder.append(", featureTags={");
|
||||
builder.append(mFeatureTags);
|
||||
builder.append("}");
|
||||
}
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user