script-astra/Android/Sdk/sources/android-35/com/android/internal/telephony/DataIndication.java
localadmin 4380f00a78 init
2025-01-20 18:15:20 +03:00

144 lines
5.6 KiB
Java

/*
* Copyright (C) 2021 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 static android.telephony.TelephonyManager.HAL_SERVICE_DATA;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_DATA_CALL_LIST_CHANGED;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_KEEPALIVE_STATUS;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_PCO_DATA;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_SLICING_CONFIG_CHANGED;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_UNTHROTTLE_APN;
import android.hardware.radio.data.IRadioDataIndication;
import android.os.AsyncResult;
import android.os.RemoteException;
import android.telephony.PcoData;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataProfile;
import android.telephony.data.NetworkSlicingConfig;
import com.android.internal.telephony.data.KeepaliveStatus;
import java.util.ArrayList;
/**
* Interface declaring unsolicited radio indications for data APIs.
*/
public class DataIndication extends IRadioDataIndication.Stub {
private final RIL mRil;
public DataIndication(RIL ril) {
mRil = ril;
}
/**
* Indicates data call contexts have changed.
* @param indicationType Type of radio indication
* @param dcList List of SetupDataCallResult identical to that returned by getDataCallList.
* It is the complete list of current data contexts including new contexts that have
* been activated.
*/
public void dataCallListChanged(int indicationType,
android.hardware.radio.data.SetupDataCallResult[] dcList) {
mRil.processIndication(HAL_SERVICE_DATA, indicationType);
if (mRil.isLogOrTrace()) mRil.unsljLogRet(RIL_UNSOL_DATA_CALL_LIST_CHANGED, dcList);
ArrayList<DataCallResponse> response = RILUtils.convertHalDataCallResultList(dcList);
mRil.mDataCallListChangedRegistrants.notifyRegistrants(
new AsyncResult(null, response, null));
}
/**
* Indicates a status update for an ongoing Keepalive session.
* @param indicationType Type of radio indication
* @param halStatus Status of the ongoing Keepalive session
*/
public void keepaliveStatus(int indicationType,
android.hardware.radio.data.KeepaliveStatus halStatus) {
mRil.processIndication(HAL_SERVICE_DATA, indicationType);
if (mRil.isLogOrTrace()) {
mRil.unsljLogRet(
RIL_UNSOL_KEEPALIVE_STATUS,
"handle=" + halStatus.sessionHandle + " code=" + halStatus.code);
}
KeepaliveStatus ks = new KeepaliveStatus(
halStatus.sessionHandle, halStatus.code);
mRil.mNattKeepaliveStatusRegistrants.notifyRegistrants(new AsyncResult(null, ks, null));
}
/**
* Indicates when there is new Carrier PCO data received for a data call.
* @param indicationType Type of radio indication
* @param pco New PcoData
*/
public void pcoData(int indicationType, android.hardware.radio.data.PcoDataInfo pco) {
mRil.processIndication(HAL_SERVICE_DATA, indicationType);
PcoData response = new PcoData(pco.cid, pco.bearerProto, pco.pcoId, pco.contents);
if (mRil.isLogOrTrace()) mRil.unsljLogRet(RIL_UNSOL_PCO_DATA, response);
mRil.mPcoDataRegistrants.notifyRegistrants(new AsyncResult(null, response, null));
}
/**
* Stop throttling calls to setupDataCall for the given APN.
* @param indicationType Type of radio indication
* @param dpi DataProfileInfo associated with the APN to unthrottle
* @throws RemoteException
*/
public void unthrottleApn(int indicationType, android.hardware.radio.data.DataProfileInfo dpi)
throws RemoteException {
mRil.processIndication(HAL_SERVICE_DATA, indicationType);
DataProfile response = RILUtils.convertToDataProfile(dpi);
if (mRil.isLogOrTrace()) mRil.unsljLogRet(RIL_UNSOL_UNTHROTTLE_APN, response);
mRil.mApnUnthrottledRegistrants.notifyRegistrants(new AsyncResult(null, response, null));
}
/**
* Current slicing configuration including URSP rules and NSSAIs
* (configured, allowed and rejected).
* @param indicationType Type of radio indication
* @param slicingConfig Current slicing configuration
*/
public void slicingConfigChanged(int indicationType,
android.hardware.radio.data.SlicingConfig slicingConfig) throws RemoteException {
mRil.processIndication(HAL_SERVICE_DATA, indicationType);
if (mRil.isLogOrTrace()) {
mRil.unsljLogRet(RIL_UNSOL_SLICING_CONFIG_CHANGED, slicingConfig);
}
NetworkSlicingConfig ret = RILUtils.convertHalSlicingConfig(slicingConfig);
mRil.mSlicingConfigChangedRegistrants.notifyRegistrants(
new AsyncResult(null, ret, null));
}
@Override
public String getInterfaceHash() {
return IRadioDataIndication.HASH;
}
@Override
public int getInterfaceVersion() {
return IRadioDataIndication.VERSION;
}
}