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

Commit eaeb071a authored by Sailesh Nepal's avatar Sailesh Nepal
Browse files

Add interface definitions for CallService/PhoneService

Interfaces are meant to replace ThirdParty*.aidl/java files in same
directory long term.  The differences in methods are on purpose and
reflect more recent design directions.

Change-Id: Ia98603a1d0b6d07a3393c5f7c5aa040f9e3916e4
parent 1bd7876d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -272,6 +272,8 @@ LOCAL_SRC_FILES += \
	media/java/android/media/IRemoteDisplayProvider.aidl \
	media/java/android/media/IRemoteVolumeObserver.aidl \
	media/java/android/media/IRingtonePlayer.aidl \
	telephony/java/com/android/internal/telephony/ICallService.aidl \
	telephony/java/com/android/internal/telephony/ICallServiceAdapter.aidl \
	telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl \
	telephony/java/com/android/internal/telephony/IPhoneSubInfo.aidl \
	telephony/java/com/android/internal/telephony/ITelephony.aidl \
+19 −0
Original line number Diff line number Diff line
/*
** Copyright 2013, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/

package com.android.internal.telephony;

parcelable CallInfo;
+77 −0
Original line number Diff line number Diff line
/*
** Copyright 2013, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/

package com.android.internal.telephony;

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

/**
 *  A parcelable holder class of Call information data.
 */
public class CallInfo implements Parcelable {

    /**
     * Endpoint to which the call is connected.
     * This could be the dialed value for outgoing calls or the caller id of incoming calls.
     */
    private String handle;

    public CallInfo(String handle) {
        this.handle = handle;
    }

    public String getHandle() {
        return handle;
    }

    //
    // Parcelling related code below here.
    //

    /**
     * Responsible for creating CallInfo objects for deserialized Parcels.
     */
    public static final Parcelable.Creator<CallInfo> CREATOR
            = new Parcelable.Creator<CallInfo> () {

        @Override
        public CallInfo createFromParcel(Parcel source) {
            return new CallInfo(source.readString());
        }

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

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

    /**
     * Writes CallInfo object into a serializeable Parcel.
     */
    @Override
    public void writeToParcel(Parcel destination, int flags) {
        destination.writeString(handle);
    }
}
+61 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony;

import com.android.internal.telephony.ICallServiceAdapter;

/**
 * Service interface for services which would like to provide calls to be
 * managed by the system in-call UI.
 *
 * This interface provides methods that the android framework can use to deliver commands
 * for calls provided by this call service including making new calls and disconnecting
 * existing ones. A binding to ICallService implementations exists for two conditions:
 * 1) There exists one or more live calls for that call service,
 * 2) Prior to an outbound call to test if this call service is compatible with the outgoing call.
 */
oneway interface ICallService {

    /**
     * Determines if the CallService can make calls to the handle.
     * TODO(santoscordon): Move this method into its own service interface long term.
     * TODO(santoscordon): Add response callback parameter.
     */
    void isCompatibleWith(String handle);

    /**
     * Attempts to call the relevant party using the specified handle, be it a phone number,
     * SIP address, or some other kind of user ID.  Note that the set of handle types is
     * dynamically extensible since call providers should be able to implement arbitrary
     * handle-calling systems.  See {@link #isCompatibleWith}.
     * TODO(santoscordon): Should this have a response attached to it to ensure that the call
     * service actually plans to make the call?
     */
    void call(String handle);

    /**
     * Disconnects the call identified by callId.
     */
    void disconnect(String callId);

    /**
     * Sets an implementation of ICallServiceAdapter which the call service can use to add new calls
     * and communicate state changes of existing calls. This is the first method that is called
     * after a the framework binds to the call service.
     */
    void setCallServiceAdapter(ICallServiceAdapter CallServiceAdapter);
}
+61 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony;

import com.android.internal.telephony.CallInfo;

/**
 * Provides methods for ICallService implementations to interact with the system phone app.
 */
oneway interface ICallServiceAdapter {

    /**
     * Retrieves a new unique call id for use with newOutgoingCall and newIncomingCall.
     */
    void getNextCallId(/* TODO(santoscordon): Needs response object */);

    /**
     * Tells CallsManager of a new incoming call.
     */
    void newIncomingCall(String callId, in CallInfo info);

    /**
     * Tells CallsManager of a new outgoing call.
     */
    void newOutgoingCall(String callId, in CallInfo info);

    /**
     * Sets a call's state to active (e.g., an ongoing call where two parties can actively
     * communicate).
     */
    void setActive(String callId);

    /**
     * Sets a call's state to ringing (e.g., an inbound ringing call).
     */
    void setRinging(String callId);

    /**
     * Sets a call's state to dialing (e.g., dialing an outbound call).
     */
    void setDialing(String callId);

    /**
     * Sets a call's state to disconnected.
     */
    void setDisconnected(String callId);
}