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

Commit aee3a24d authored by Garik Badalyan's avatar Garik Badalyan Committed by Muhammed Siju
Browse files

CSVT: Introduce Circuit-Switch Video Telephony.

Introduce CSVT Service which provides necessary API
for Circuit-Switch Video Telephony.

Change-Id: Ic7337939f2c7e42a47840d8f9673a9f303584707

CSVT: Add an interface to check active CSVT calls.

CSVT clients need to check if there is an active CSVT call.
Add an interface to query CSVT service if it contains an active
CSVT call.

Change-Id: Icb1d4c88009daced629070b91da0400653da4dd4
(cherry picked from commit c9c5ed960a6527ec4e0bc9962fc2096a5c307746)
(cherry picked from commit aa7acf036f9474a4254edbac4b86c02afeeaac4a)
(cherry picked from commit e230f56ad9c5397d017d7f75c24ddda07e44211d)
parent 41afb061
Loading
Loading
Loading
Loading
+30 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013, 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
 * 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 org.codeaurora.ims.csvt;

parcelable CallForwardInfoP;
+82 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013, 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
 * 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 org.codeaurora.ims.csvt;

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

public class CallForwardInfoP implements Parcelable {

    public int             status;      /*1 = active, 0 = not active */
    public int             reason;      /* from TS 27.007 7.11 "reason" */
    public int             serviceClass; /*Sum of CommandsInterface.SERVICE_CLASS */
    public int             toa;         /* "type" from TS 27.007 7.11 */
    public String          number;      /* "number" from TS 27.007 7.11 */
    public int             timeSeconds; /* for CF no reply only */

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

    public CallForwardInfoP() {
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeInt(status);
        out.writeInt(reason);
        out.writeInt(toa);
        out.writeString(number);
        out.writeInt(timeSeconds);
        out.writeInt(serviceClass);
    }

    public static final Parcelable.Creator<CallForwardInfoP> CREATOR = new
            Parcelable.Creator<CallForwardInfoP>() {

                @Override
                public CallForwardInfoP createFromParcel(Parcel in) {
                    return new CallForwardInfoP(in);
                }

                @Override
                public CallForwardInfoP[] newArray(int size) {
                    return new CallForwardInfoP[size];
                }
            };

    public CallForwardInfoP(Parcel in) {
        status = in.readInt();
        reason = in.readInt();
        toa = in.readInt();
        number = in.readString();
        timeSeconds = in.readInt();
        serviceClass = in.readInt();
    }
}
+151 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013, 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
 * 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 org.codeaurora.ims.csvt;

import org.codeaurora.ims.csvt.ICsvtServiceListener;
import android.os.Message;

interface ICsvtService {

    /**
     * Initiate a new CSVT connection. This happens asynchronously, so you
     * cannot assume the audio path is connected (or a call index has been
     * assigned) until PhoneStateChanged notification has occurred.
     */
     void dial(String number);

    /**
     * Hang up the foreground call. Reject occurs asynchronously,
     * and final notification occurs via PhoneStateChanged callback.
     */
    void hangup();

    /**
     * Answers a ringing.
     * Answering occurs asynchronously, and final notification occurs via
     * PhoneStateChanged callback.
     */
    void acceptCall();

    /**
     * Reject (ignore) a ringing call. In GSM, this means UDUB
     * (User Determined User Busy). Reject occurs asynchronously,
     * and final notification occurs via  PhoneStateChanged callback.
     */
    void rejectCall();

    /**
     * Reject (ignore) a ringing call and sends Incompatible Destination
     * fail cause to the remote party. Reject occurs asynchronously,
     * and final notification occurs via  PhoneStateChanged callback.
     */
    void fallBack();

    /**
     * Checks if there is an active or ringing CSVT call.
     * @return true if there is an active or ringing CSVT call.
     */
    boolean isIdle();

    /**
    * Checks if there is an active Csvt call.
    * @return true if there is an active Csvt call.
    */
    boolean isActive();

    /**
     * Checks if all non-CSVT calls are idle.
     * @return true if all non-CSVT calls are idle.
     */
    boolean isNonCsvtIdle();

    /**
     * getCallForwardingOptions
     * Call Forwarding options are returned via
     * ICsvtServiceListener.onCallForwardingOptions callback.
     *
     * @param commandInterfaceCFReason is one of the valid call forwarding
     *        CF_REASONS, as defined in
     *        <code>com.android.internal.telephony.CommandsInterface.</code>
     * @param onComplete a callback message when the action is completed.
     *        onComplete.arg1 is set to zero (0) if the action is completed
     *        successfully.
     * @see   ICsvtServiceListener.onCallForwardingOptions
     */
    void getCallForwardingOption(int commandInterfaceCFReason,
                                 in Message onComplete);

    /**
     * setCallForwardingOptions
     * sets a call forwarding option.
     *
     * @param commandInterfaceCFReason is one of the valid call forwarding
     *        CF_REASONS, as defined in
     *        <code>com.android.internal.telephony.CommandsInterface.</code>
     * @param commandInterfaceCFAction is one of the valid call forwarding
     *        CF_ACTIONS, as defined in
     *        <code>com.android.internal.telephony.CommandsInterface.</code>
     * @param dialingNumber is the target phone number to forward calls to
     * @param timerSeconds is used by CFNRy to indicate the timeout before
     *        forwarding is attempted.
     * @param onComplete a callback message when the action is completed.
     *        onComplete.arg1 is set to zero (0) if the action is completed
     *        successfully.
     */
    void setCallForwardingOption(int commandInterfaceCFReason,
                                 int commandInterfaceCFAction,
                                 String dialingNumber,
                                 int timerSeconds,
                                 in Message onComplete);
    /**
     * getCallWaiting
     * gets call waiting activation state. The call waiting activation state
     * is returned via ICsvtServiceListener.onCallWaiting callback.
     *
     * @param onComplete a callback message when the action is completed.
     *        onComplete.arg1 is set to zero (0) if the action completed
     *        successfully.
     * @see   ICsvtServiceListener.onCallWaiting
     */
    void getCallWaiting(in Message onComplete);

    /**
     * setCallWaiting
     * sets a call forwarding option.
     *
     * @param enable is a boolean representing the state that you are
     *        requesting, true for enabled, false for disabled.
     * @param onComplete a callback message when the action is completed.
     *        onComplete.arg1 is set to zero (0) if the action is completed
     *        successfully.
     */
    void setCallWaiting(boolean enable, in Message onComplete);

    void registerListener(ICsvtServiceListener l);
    void unregisterListener(ICsvtServiceListener l);
}
+69 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2013, 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
 * 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 org.codeaurora.ims.csvt;

import org.codeaurora.ims.csvt.CallForwardInfoP;

/**
 * Listener interface for the clients of CSVT Service
 *
 * {@hide}
 */
oneway interface ICsvtServiceListener{

    /**
     * Called when phone state changed.
     * @param state, see TelephonyManager
     */
    void onPhoneStateChanged(int state);

    /**
     * Called to notify about video call status.
     * @param result, result cause
     */
    void onCallStatus(int status);

    /**
     * Called to notify about call waiting activation state.
     * @param enabled, if true call waiting is activated, false otherwise.
     * @see ICsvtService.getCallWaiting
     */
    void onCallWaiting(boolean enabled);

    /**
     * Called to notify about call forwarding options.
     * @param fi, Call Forwarding options.
     */
    void onCallForwardingOptions(in List<CallForwardInfoP> fi);

    /**
     * Called to notify about ringback tone state.
     * @param playTone, if true ringback tone will be played, false otherwise.
     */
    void onRingbackTone(boolean playTone);
}