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

Commit f669dc45 authored by Garik Badalyan's avatar Garik Badalyan Committed by Gerrit - the friendly Code Review server
Browse files

IMS: Supplementary services

-Propagate IMS supplementary services to telephony framework
-Introduce call forwarding history info.

Change-Id: Idc3a433785e84a3d683cbcfc7fb90f0b89dced12
CRs-Fixed: 772163 786079
parent 7d9481d8
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above
 *     copyright notice, this list of conditions and the following
 *     disclaimer in the documentation and/or other materials provided
 *     with the distribution.
 *   * Neither the name of The Linux Foundation nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */


package com.android.ims;

parcelable ImsSuppServiceNotification;
+114 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2015, The Linux Foundation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *   * Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *   * Redistributions in binary form must reproduce the above
 *     copyright notice, this list of conditions and the following
 *     disclaimer in the documentation and/or other materials provided
 *     with the distribution.
 *   * Neither the name of The Linux Foundation nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */


package com.android.ims;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.Arrays;


/**
 * Parcelable object to handle IMS supplementary service notifications.
 *
 * @hide
 */
public class ImsSuppServiceNotification implements Parcelable {
    private static final String TAG = "ImsSuppServiceNotification";

    /** Type of notification: 0 = MO; 1 = MT */
    public int notificationType;
    /** TS 27.007 7.17 "code1" or "code2" */
    public int code;
    /** TS 27.007 7.17 "index" - Not used currently*/
    public int index;
    /** TS 27.007 7.17 "type" (MT only) - Not used currently */
    public int type;
    /** TS 27.007 7.17 "number" (MT only) */
    public String number;
    /** List of forwarded numbers, if any */
    public String[] history;

    public ImsSuppServiceNotification() {
    }

    public ImsSuppServiceNotification(Parcel in) {
        readFromParcel(in);
    }

    @Override
    public String toString() {
        return "{ notificationType=" + notificationType +
                ", code=" + code +
                ", index=" + index +
                ", type=" + type +
                ", number=" + number +
                ", history=" + Arrays.toString(history) +
                " }";
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(notificationType);
        out.writeInt(code);
        out.writeInt(index);
        out.writeInt(type);
        out.writeString(number);
        out.writeStringArray(history);
    }

    private void readFromParcel(Parcel in) {
        notificationType = in.readInt();
        code = in.readInt();
        index = in.readInt();
        type = in.readInt();
        number = in.readString();
        history = in.createStringArray();
    }

    public static final Creator<ImsSuppServiceNotification> CREATOR =
            new Creator<ImsSuppServiceNotification>() {
        @Override
        public ImsSuppServiceNotification createFromParcel(Parcel in) {
            return new ImsSuppServiceNotification(in);
        }

        @Override
        public ImsSuppServiceNotification[] newArray(int size) {
            return new ImsSuppServiceNotification[size];
        }
    };
}
+7 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import com.android.ims.ImsCallProfile;
import com.android.ims.ImsReasonInfo;
import com.android.ims.ImsConferenceState;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.ImsSuppServiceNotification;

/**
 * A listener type for receiving notification on IMS call session events.
@@ -121,4 +122,10 @@ interface IImsCallSessionListener {
     */
    void callSessionDeflected(in IImsCallSession session);
    void callSessionDeflectFailed(in IImsCallSession session, in ImsReasonInfo reasonInfo);

    /**
     * Notifies the supplementary service information for the current session.
     */
    void callSessionSuppServiceReceived(in IImsCallSession session,
         in ImsSuppServiceNotification suppSrvNotification);
}