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

Commit ffcda5c1 authored by Jack Yu's avatar Jack Yu
Browse files

Added data service interface

The interface for mobile data service. This is the base class
for vendor or first party data service provider to implement
the data service for cellular or IWLAN data support.

Test: Manual
bug: 64132030
Change-Id: I3e5f48b88905f4533cac60975802d4da3746e7f8
parent 106a9152
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -455,6 +455,8 @@ java_library {
        "telecomm/java/com/android/internal/telecom/IInCallService.aidl",
        "telecomm/java/com/android/internal/telecom/ITelecomService.aidl",
        "telecomm/java/com/android/internal/telecom/RemoteServiceCallback.aidl",
	"telephony/java/android/telephony/data/IDataService.aidl",
	"telephony/java/android/telephony/data/IDataServiceCallback.aidl",
        "telephony/java/android/telephony/ims/internal/aidl/IImsCallSessionListener.aidl",
        "telephony/java/android/telephony/ims/internal/aidl/IImsCapabilityCallback.aidl",
        "telephony/java/android/telephony/ims/internal/aidl/IImsConfig.aidl",
+32 −0
Original line number Diff line number Diff line
@@ -4123,6 +4123,38 @@ package android.telephony.data {
    field public static final int TYPE_COMMON = 0; // 0x0
  }

  public abstract class DataService extends android.app.Service {
    method public abstract android.telephony.data.DataService.DataServiceProvider createDataServiceProvider(int);
    field public static final java.lang.String DATA_SERVICE_EXTRA_SLOT_ID = "android.telephony.data.extra.SLOT_ID";
    field public static final java.lang.String DATA_SERVICE_INTERFACE = "android.telephony.data.DataService";
  }

  public class DataService.DataServiceProvider {
    ctor public DataService.DataServiceProvider(int);
    method public void deactivateDataCall(int, boolean, boolean, android.telephony.data.DataServiceCallback);
    method public void getDataCallList(android.telephony.data.DataServiceCallback);
    method public final int getSlotId();
    method public final void notifyDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
    method protected void onDestroy();
    method public void setDataProfile(java.util.List<android.telephony.data.DataProfile>, boolean, android.telephony.data.DataServiceCallback);
    method public void setInitialAttachApn(android.telephony.data.DataProfile, boolean, android.telephony.data.DataServiceCallback);
    method public void setupDataCall(int, android.telephony.data.DataProfile, boolean, boolean, boolean, android.net.LinkProperties, android.telephony.data.DataServiceCallback);
  }

  public class DataServiceCallback {
    method public void onDataCallListChanged(java.util.List<android.telephony.data.DataCallResponse>);
    method public void onDeactivateDataCallComplete(int);
    method public void onGetDataCallListComplete(int, java.util.List<android.telephony.data.DataCallResponse>);
    method public void onSetDataProfileComplete(int);
    method public void onSetInitialAttachApnComplete(int);
    method public void onSetupDataCallComplete(int, android.telephony.data.DataCallResponse);
    field public static final int RESULT_ERROR_BUSY = 3; // 0x3
    field public static final int RESULT_ERROR_ILLEGAL_STATE = 4; // 0x4
    field public static final int RESULT_ERROR_INVALID_ARG = 2; // 0x2
    field public static final int RESULT_ERROR_UNSUPPORTED = 1; // 0x1
    field public static final int RESULT_SUCCESS = 0; // 0x0
  }

}

package android.telephony.ims {
+540 −0

File added.

Preview size limit exceeded, changes collapsed.

+172 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 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 android.telephony.data;

import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.os.RemoteException;
import android.telephony.Rlog;
import android.telephony.data.DataService.DataServiceProvider;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
import java.util.List;

/**
 * Data service callback, which is for bound data service to invoke for solicited and unsolicited
 * response. The caller is responsible to create a callback object for each single asynchronous
 * request.
 *
 * @hide
 */
@SystemApi
public class DataServiceCallback {

    private static final String mTag = DataServiceCallback.class.getSimpleName();

    /**
     * Result of data requests
     * @hide
     */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({RESULT_SUCCESS, RESULT_ERROR_UNSUPPORTED, RESULT_ERROR_INVALID_ARG, RESULT_ERROR_BUSY,
            RESULT_ERROR_ILLEGAL_STATE})
    public @interface Result {}

    /** Request is completed successfully */
    public static final int RESULT_SUCCESS              = 0;
    /** Request is not support */
    public static final int RESULT_ERROR_UNSUPPORTED    = 1;
    /** Request contains invalid arguments */
    public static final int RESULT_ERROR_INVALID_ARG    = 2;
    /** Service is busy */
    public static final int RESULT_ERROR_BUSY           = 3;
    /** Request sent in illegal state */
    public static final int RESULT_ERROR_ILLEGAL_STATE  = 4;

    private final WeakReference<IDataServiceCallback> mCallback;

    /** @hide */
    public DataServiceCallback(IDataServiceCallback callback) {
        mCallback = new WeakReference<>(callback);
    }

    /**
     * Called to indicate result for the request {@link DataServiceProvider#setupDataCall(int,
     * DataProfile, boolean, boolean, boolean, DataServiceCallback)}.
     *
     * @param result The result code. Must be one of the {@link Result}.
     * @param response Setup data call response.
     */
    public void onSetupDataCallComplete(@Result int result, DataCallResponse response) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onSetupDataCallComplete(result, response);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onSetupDataCallComplete on the remote");
            }
        }
    }

    /**
     * Called to indicate result for the request {@link DataServiceProvider#deactivateDataCall(int,
     * boolean, boolean, DataServiceCallback)}.
     *
     * @param result The result code. Must be one of the {@link Result}.
     */
    public void onDeactivateDataCallComplete(@Result int result) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onDeactivateDataCallComplete(result);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onDeactivateDataCallComplete on the remote");
            }
        }
    }

    /**
     * Called to indicate result for the request {@link DataServiceProvider#setInitialAttachApn(
     * DataProfile, boolean, DataServiceCallback)}.
     *
     * @param result The result code. Must be one of the {@link Result}.
     */
    public void onSetInitialAttachApnComplete(@Result int result) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onSetInitialAttachApnComplete(result);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onSetInitialAttachApnComplete on the remote");
            }
        }
    }

    /**
     * Called to indicate result for the request {@link DataServiceProvider#setDataProfile(List,
     * boolean, DataServiceCallback)}.
     *
     * @param result The result code. Must be one of the {@link Result}.
     */
    @SystemApi
    public void onSetDataProfileComplete(@Result int result) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onSetDataProfileComplete(result);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onSetDataProfileComplete on the remote");
            }
        }
    }

    /**
     * Called to indicate result for the request {@link DataServiceProvider#getDataCallList(
     * DataServiceCallback)}.
     *
     * @param result The result code. Must be one of the {@link Result}.
     * @param dataCallList List of the current active data connection.
     */
    public void onGetDataCallListComplete(@Result int result, List<DataCallResponse> dataCallList) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onGetDataCallListComplete(result, dataCallList);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onGetDataCallListComplete on the remote");
            }
        }
    }

    /**
     * Called to indicate that data connection list changed.
     *
     * @param dataCallList List of the current active data connection.
     */
    public void onDataCallListChanged(List<DataCallResponse> dataCallList) {
        IDataServiceCallback callback = mCallback.get();
        if (callback != null) {
            try {
                callback.onDataCallListChanged(dataCallList);
            } catch (RemoteException e) {
                Rlog.e(mTag, "Failed to onDataCallListChanged on the remote");
            }
        }
    }
}
+39 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 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 android.telephony.data;

import android.net.LinkProperties;
import android.telephony.data.DataProfile;
import android.telephony.data.IDataServiceCallback;

/**
 * {@hide}
 */
oneway interface IDataService
{
    void setupDataCall(int accessNetwork, in DataProfile dataProfile, boolean isRoaming,
                       boolean allowRoaming, boolean isHandover, in LinkProperties linkProperties,
                       IDataServiceCallback callback);
    void deactivateDataCall(int cid, boolean reasonRadioShutDown, boolean isHandover,
                            IDataServiceCallback callback);
    void setInitialAttachApn(in DataProfile dataProfile, boolean isRoaming,
                             IDataServiceCallback callback);
    void setDataProfile(in List<DataProfile> dps, boolean isRoaming, IDataServiceCallback callback);
    void getDataCallList(IDataServiceCallback callback);
    void registerForDataCallListChanged(IDataServiceCallback callback);
    void unregisterForDataCallListChanged(IDataServiceCallback callback);
}
Loading