Merge "Add VoNR network feature support information" am: f14d297d7c am: 61a2c1237d

Original change: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1498118

Change-Id: I4c3925e8e10d1365a3c076c562e7029bc162546f
This commit is contained in:
Hui Wang 2020-12-03 01:21:34 +00:00 committed by Automerger Merge Worker
commit 391cb96e53
5 changed files with 214 additions and 0 deletions

View file

@ -365,4 +365,22 @@ interface IRadio extends @1.5::IRadio {
* Response callback is IRadioResponse.getSystemSelectionChannelsResponse()
*/
oneway getSystemSelectionChannels(int32_t serial);
/**
* Request current voice registration state.
*
* @param serial Serial number of request.
*
* Response function is IRadioResponse.getVoiceRegistrationStateResponse_1_6()
*/
oneway getVoiceRegistrationState_1_6(int32_t serial);
/**
* Request current data registration state.
*
* @param serial Serial number of request.
*
* Response function is IRadioResponse.getDataRegistrationStateResponse_1_6()
*/
oneway getDataRegistrationState_1_6(int32_t serial);
};

View file

@ -19,6 +19,7 @@ package android.hardware.radio@1.6;
import @1.0::SendSmsResult;
import @1.6::RadioResponseInfo;
import @1.5::IRadioResponse;
import @1.6::RegStateResult;
import @1.6::SetupDataCallResult;
/**
@ -327,4 +328,31 @@ interface IRadioResponse extends @1.5::IRadioResponse {
* RadioError:INVALID_ARGUMENTS
*/
oneway getSystemSelectionChannelsResponse(RadioResponseInfo info);
/**
* @param info Response info struct containing response type, serial no. and error
* @param voiceRegResponse Current Voice registration response as defined by RegStateResult
* in types.hal
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
*/
oneway getVoiceRegistrationStateResponse_1_6(RadioResponseInfo info,
RegStateResult voiceRegResponse);
/**
* @param info Response info struct containing response type, serial no. and error
* @param dataRegResponse Current Data registration response as defined by RegStateResult in
* types.hal
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INTERNAL_ERR
* RadioError:NOT_PROVISIONED
*/
oneway getDataRegistrationStateResponse_1_6(RadioResponseInfo info,
RegStateResult dataRegResponse);
};

View file

@ -18,10 +18,17 @@ package android.hardware.radio@1.6;
import @1.0::RadioError;
import @1.0::RadioResponseType;
import @1.0::RegState;
import @1.4::DataCallFailCause;
import @1.4::DataConnActiveStatus;
import @1.4::PdpProtocolType;
import @1.4::RadioTechnology;
import @1.5::CellIdentity;
import @1.5::LinkAddress;
import @1.5::RegStateResult.AccessTechnologySpecificInfo.Cdma2000RegistrationInfo;
import @1.5::RegStateResult.AccessTechnologySpecificInfo.EutranRegistrationInfo;
import @1.5::RegistrationFailCause;
import @1.5::SetupDataCallResult;
import android.hidl.safe_union@1.0::Monostate;
@ -417,3 +424,140 @@ enum DataThrottlingAction : int32_t {
*/
HOLD = 3
};
/**
* Defines the values for VoPS indicator of NR as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum VopsIndicator : uint8_t {
/** IMS voice over PS session not supported */
VOPS_NOT_SUPPORTED = 0,
/** IMS voice over PS session supported over 3GPP access */
VOPS_OVER_3GPP = 1,
/** IMS voice over PS session supported over non-3GPP access */
VOPS_OVER_NON_3GPP = 2,
};
/**
* Defines the values for emergency service indicator of NR
* as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum EmcIndicator : uint8_t {
/** Emergency services not supported */
EMC_NOT_SUPPORTED = 0,
/** Emergency services supported in NR connected to 5GCN only */
EMC_NR_CONNECTED_TO_5GCN = 1,
/** Emergency services supported in E-UTRA connected to 5GCN only */
EMC_EUTRA_CONNECTED_TO_5GCN = 2,
/** Emergency services supported in NR connected to 5GCN and E-UTRA connected to 5GCN */
EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3
};
/**
* Defines the values for emergency service fallback indicator of NR
* as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum EmfIndicator : uint8_t {
/** Emergency services fallback not supported */
EMF_NOT_SUPPORTED = 0,
/** Emergency services fallback supported in NR connected to 5GCN only */
EMF_NR_CONNECTED_TO_5GCN = 1,
/** Emergency services fallback supported in E-UTRA connected to 5GCN only */
EMF_EUTRA_CONNECTED_TO_5GCN = 2,
/**
* Emergency services fallback supported in NR connected to 5GCN and E-UTRA
* connected to 5GCN.
*/
EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3
};
/**
* Type to define the NR specific network capabilities for voice over PS including
* emergency and normal voice calls.
*/
struct NrVopsInfo {
/**
* This indicates if the camped network supports VoNR services, and what kind of services
* it supports. This information is received from NR network during NR NAS registration
* procedure through NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> IMS VoPS
*/
VopsIndicator vopsSupported;
/**
* This indicates if the camped network supports VoNR emergency service. This information
* is received from NR network through two sources:
* a. During NR NAS registration procedure through NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> EMC
* b. In case the device is not registered on the network.
* Refer 3GPP 38.331 SIB1 : ims-EmergencySupport
* If device is registered on NR, then this field indicates whether the cell
* supports IMS emergency bearer services for UEs in limited service mode.
*/
EmcIndicator emcSupported;
/**
* This indicates if the camped network supports VoNR emergency service fallback. This
* information is received from NR network during NR NAS registration procedure through
* NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> EMF
*/
EmfIndicator emfSupported;
};
/**
* Overwritten from @1.5::RegStateResult to 1.6 to support NrRegistrationInfo
* version.
*/
struct RegStateResult {
/**
* Registration state
*
* If the RAT is indicated as a GERAN, UTRAN, or CDMA2000 technology, this value reports
* registration in the Circuit-switched domain.
* If the RAT is indicated as an EUTRAN, NGRAN, or another technology that does not support
* circuit-switched services, this value reports registration in the Packet-switched domain.
*/
RegState regState;
/**
* Indicates the available voice radio technology, valid values as
* defined by RadioTechnology.
*/
RadioTechnology rat;
/**
* Cause code reported by the network in case registration fails. This will be a mobility
* management cause code defined for MM, GMM, MME or equivalent as appropriate for the RAT.
*/
RegistrationFailCause reasonForDenial;
/** CellIdentity */
CellIdentity cellIdentity;
/**
* The most-recent PLMN-ID upon which the UE registered (or attempted to register if a failure
* is reported in the reasonForDenial field). This PLMN shall be in standard format consisting
* of a 3 digit MCC concatenated with a 2 or 3 digit MNC.
*/
string registeredPlmn;
/**
* Access-technology-specific registration information, such as for CDMA2000.
*/
safe_union AccessTechnologySpecificInfo {
Monostate noinit;
Cdma2000RegistrationInfo cdmaInfo;
EutranRegistrationInfo eutranInfo;
struct NgranRegistrationInfo {
/**
* Network capabilities for voice over PS services. This info is valid only on NR
* network and must be present when the device is camped on NR. VopsInfo must be
* empty when the device is not camped on NR.
*/
NrVopsInfo nrVopsInfo;
} ngranInfo;
} accessTechnologySpecificInfo;
};

View file

@ -798,6 +798,14 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
Return<void> getSystemSelectionChannelsResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
Return<void> getVoiceRegistrationStateResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::radio::V1_6::RegStateResult& regResponse);
Return<void> getDataRegistrationStateResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::radio::V1_6::RegStateResult& regResponse);
};
/* Callback class for radio indication */

View file

@ -1170,3 +1170,19 @@ Return<void> RadioResponse_v1_6::getSystemSelectionChannelsResponse(
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::getVoiceRegistrationStateResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::radio::V1_6::RegStateResult& /*regResponse*/) {
rspInfo = info;
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::getDataRegistrationStateResponse_1_6(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
const ::android::hardware::radio::V1_6::RegStateResult& /*regResponse*/) {
rspInfo = info;
parent_v1_6.notify(info.serial);
return Void();
}