Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c322894c authored by Amit Mahajan's avatar Amit Mahajan Committed by android-build-merger
Browse files

Merge "Add Emergency Uniform Resource Number (URN)" am: e01a358b

am: 888d87ac

Change-Id: I33be4bec015d71415456a9abbd69bc705556afa8
parents 454d6e56 888d87ac
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -43350,6 +43350,7 @@ package android.telephony.emergency {
    method public java.util.List<java.lang.Integer> getEmergencyNumberSources();
    method public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
    method public int getEmergencyServiceCategoryBitmask();
    method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
    method public String getMnc();
    method public String getNumber();
    method public boolean isFromSources(int);
+2 −0
Original line number Diff line number Diff line
@@ -6681,6 +6681,7 @@ package android.telephony.ims {
    method public static int getCallTypeFromVideoState(int);
    method public int getEmergencyCallRouting();
    method public int getEmergencyServiceCategories();
    method public java.util.List<java.lang.String> getEmergencyUrns();
    method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
    method public int getRestrictCause();
    method public int getServiceType();
@@ -6695,6 +6696,7 @@ package android.telephony.ims {
    method public void setCallRestrictCause(int);
    method public void setEmergencyCallRouting(int);
    method public void setEmergencyServiceCategories(int);
    method public void setEmergencyUrns(java.util.List<java.lang.String>);
    method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
    method public void updateCallType(android.telephony.ims.ImsCallProfile);
    method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);
+28 −1
Original line number Diff line number Diff line
@@ -232,18 +232,21 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
    private final String mCountryIso;
    private final String mMnc;
    private final int mEmergencyServiceCategoryBitmask;
    private final List<String> mEmergencyUrns;
    private final int mEmergencyNumberSourceBitmask;
    private final int mEmergencyCallRouting;

    /** @hide */
    public EmergencyNumber(@NonNull String number, @NonNull String countryIso, @NonNull String mnc,
                           @EmergencyServiceCategories int emergencyServiceCategories,
                           @NonNull List<String> emergencyUrns,
                           @EmergencyNumberSources int emergencyNumberSources,
                           @EmergencyCallRouting int emergencyCallRouting) {
        this.mNumber = number;
        this.mCountryIso = countryIso;
        this.mMnc = mnc;
        this.mEmergencyServiceCategoryBitmask = emergencyServiceCategories;
        this.mEmergencyUrns = emergencyUrns;
        this.mEmergencyNumberSourceBitmask = emergencyNumberSources;
        this.mEmergencyCallRouting = emergencyCallRouting;
    }
@@ -254,6 +257,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
        mCountryIso = source.readString();
        mMnc = source.readString();
        mEmergencyServiceCategoryBitmask = source.readInt();
        mEmergencyUrns = source.createStringArrayList();
        mEmergencyNumberSourceBitmask = source.readInt();
        mEmergencyCallRouting = source.readInt();
    }
@@ -265,6 +269,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
        dest.writeString(mCountryIso);
        dest.writeString(mMnc);
        dest.writeInt(mEmergencyServiceCategoryBitmask);
        dest.writeStringList(mEmergencyUrns);
        dest.writeInt(mEmergencyNumberSourceBitmask);
        dest.writeInt(mEmergencyCallRouting);
    }
@@ -344,6 +349,22 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
        return categories;
    }

    /**
     * Returns the list of emergency Uniform Resources Names (URN) of the emergency number.
     *
     * For example, {@code urn:service:sos} is the generic URN for contacting emergency services
     * of all type.
     *
     * Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
     *            RFC 5031
     *
     * @return list of emergency Uniform Resources Names (URN) or an empty list if the emergency
     *         number does not have a specified emergency Uniform Resource Name.
     */
    public @NonNull List<String> getEmergencyUrns() {
        return mEmergencyUrns;
    }

    /**
     * Checks if the emergency service category is unspecified for the emergency number
     * {@link #EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED}.
@@ -434,6 +455,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
        return "EmergencyNumber:" + "Number-" + mNumber + "|CountryIso-" + mCountryIso
                + "|Mnc-" + mMnc
                + "|ServiceCategories-" + Integer.toBinaryString(mEmergencyServiceCategoryBitmask)
                + "|Urns-" + mEmergencyUrns
                + "|Sources-" + Integer.toBinaryString(mEmergencyNumberSourceBitmask)
                + "|Routing-" + Integer.toBinaryString(mEmergencyCallRouting);
    }
@@ -448,6 +470,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
                && mCountryIso.equals(other.mCountryIso)
                && mMnc.equals(other.mMnc)
                && mEmergencyServiceCategoryBitmask == other.mEmergencyServiceCategoryBitmask
                && mEmergencyUrns.equals(other.mEmergencyUrns)
                && mEmergencyNumberSourceBitmask == other.mEmergencyNumberSourceBitmask
                && mEmergencyCallRouting == other.mEmergencyCallRouting;
    }
@@ -455,7 +478,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
    @Override
    public int hashCode() {
        return Objects.hash(mNumber, mCountryIso, mMnc, mEmergencyServiceCategoryBitmask,
                mEmergencyNumberSourceBitmask, mEmergencyCallRouting);
                mEmergencyUrns, mEmergencyNumberSourceBitmask, mEmergencyCallRouting);
    }

    /**
@@ -584,6 +607,9 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
                != second.getEmergencyServiceCategoryBitmask()) {
            return false;
        }
        if (first.getEmergencyUrns().equals(second.getEmergencyUrns())) {
            return false;
        }
        if (first.getEmergencyCallRouting() != second.getEmergencyCallRouting()) {
            return false;
        }
@@ -605,6 +631,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
        if (areSameEmergencyNumbers(first, second)) {
            return new EmergencyNumber(first.getNumber(), first.getCountryIso(), first.getMnc(),
                    first.getEmergencyServiceCategoryBitmask(),
                    first.getEmergencyUrns(),
                    first.getEmergencyNumberSourceBitmask()
                            | second.getEmergencyNumberSourceBitmask(),
                    first.getEmergencyCallRouting());
+40 −2
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import com.android.internal.telephony.PhoneConstants;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;

/**
 * Parcelable object to handle IMS call profile.
@@ -322,6 +324,15 @@ public final class ImsCallProfile implements Parcelable {
    private @EmergencyServiceCategories int mEmergencyServiceCategories =
            EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED;

    /**
     * The emergency Uniform Resource Names (URN), only valid if {@link #getServiceType} returns
     * {@link #SERVICE_TYPE_EMERGENCY}.
     *
     * Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
     *            3gpp 22.101, Section 10 - Emergency Calls.
     */
    private List<String> mEmergencyUrns = new ArrayList<>();

    /**
     * The emergency call routing, only valid if {@link #getServiceType} returns
     * {@link #SERVICE_TYPE_EMERGENCY}
@@ -524,6 +535,7 @@ public final class ImsCallProfile implements Parcelable {
                + ", restrictCause=" + mRestrictCause
                + ", mediaProfile=" + mMediaProfile.toString()
                + ", emergencyServiceCategories=" + mEmergencyCallRouting
                + ", emergencyUrns=" + mEmergencyUrns
                + ", emergencyCallRouting=" + mEmergencyCallRouting + " }";
    }

@@ -540,6 +552,7 @@ public final class ImsCallProfile implements Parcelable {
        out.writeBundle(filteredExtras);
        out.writeParcelable(mMediaProfile, 0);
        out.writeInt(mEmergencyServiceCategories);
        out.writeStringList(mEmergencyUrns);
        out.writeInt(mEmergencyCallRouting);
    }

@@ -549,6 +562,7 @@ public final class ImsCallProfile implements Parcelable {
        mCallExtras = in.readBundle();
        mMediaProfile = in.readParcelable(ImsStreamMediaProfile.class.getClassLoader());
        mEmergencyServiceCategories = in.readInt();
        mEmergencyUrns = in.createStringArrayList();
        mEmergencyCallRouting = in.readInt();
    }

@@ -760,20 +774,21 @@ public final class ImsCallProfile implements Parcelable {
    }

    /**
     * Set the emergency service categories and emergency call routing. The set value is valid
     * Set the emergency number information. The set value is valid
     * only if {@link #getServiceType} returns {@link #SERVICE_TYPE_EMERGENCY}
     *
     * Reference: 3gpp 23.167, Section 6 - Functional description;
     *            3gpp 24.503, Section 5.1.6.8.1 - General;
     *            3gpp 22.101, Section 10 - Emergency Calls.
     *
     * @hide
     */
    public void setEmergencyCallInfo(EmergencyNumber num) {
        setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmask());
        setEmergencyUrns(num.getEmergencyUrns());
        setEmergencyCallRouting(num.getEmergencyCallRouting());
    }


    /**
     * Set the emergency service categories. The set value is valid only if
     * {@link #getServiceType} returns {@link #SERVICE_TYPE_EMERGENCY}
@@ -799,6 +814,18 @@ public final class ImsCallProfile implements Parcelable {
        mEmergencyServiceCategories = emergencyServiceCategories;
    }

    /**
     * Set the emergency Uniform Resource Names (URN), only valid if {@link #getServiceType}
     * returns {@link #SERVICE_TYPE_EMERGENCY}.
     *
     * Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
     *            3gpp 22.101, Section 10 - Emergency Calls.
     */
    @VisibleForTesting
    public void setEmergencyUrns(List<String> emergencyUrns) {
        mEmergencyUrns = emergencyUrns;
    }

    /**
     * Set the emergency call routing, only valid if {@link #getServiceType} returns
     * {@link #SERVICE_TYPE_EMERGENCY}
@@ -840,6 +867,17 @@ public final class ImsCallProfile implements Parcelable {
        return mEmergencyServiceCategories;
    }

    /**
     * Get the emergency Uniform Resource Names (URN), only valid if {@link #getServiceType}
     * returns {@link #SERVICE_TYPE_EMERGENCY}.
     *
     * Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
     *            3gpp 22.101, Section 10 - Emergency Calls.
     */
    public List<String> getEmergencyUrns() {
        return mEmergencyUrns;
    }

    /**
     * Get the emergency call routing, only valid if {@link #getServiceType} returns
     * {@link #SERVICE_TYPE_EMERGENCY}