Loading radio/1.6/IRadio.hal +18 −0 Original line number Original line Diff line number Diff line Loading @@ -365,4 +365,22 @@ interface IRadio extends @1.5::IRadio { * Response callback is IRadioResponse.getSystemSelectionChannelsResponse() * Response callback is IRadioResponse.getSystemSelectionChannelsResponse() */ */ oneway getSystemSelectionChannels(int32_t serial); 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); }; }; radio/1.6/IRadioResponse.hal +28 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.hardware.radio@1.6; import @1.0::SendSmsResult; import @1.0::SendSmsResult; import @1.6::RadioResponseInfo; import @1.6::RadioResponseInfo; import @1.5::IRadioResponse; import @1.5::IRadioResponse; import @1.6::RegStateResult; import @1.6::SetupDataCallResult; import @1.6::SetupDataCallResult; /** /** Loading Loading @@ -327,4 +328,31 @@ interface IRadioResponse extends @1.5::IRadioResponse { * RadioError:INVALID_ARGUMENTS * RadioError:INVALID_ARGUMENTS */ */ oneway getSystemSelectionChannelsResponse(RadioResponseInfo info); 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); }; }; radio/1.6/types.hal +144 −0 Original line number Original line Diff line number Diff line Loading @@ -18,10 +18,17 @@ package android.hardware.radio@1.6; import @1.0::RadioError; import @1.0::RadioError; import @1.0::RadioResponseType; import @1.0::RadioResponseType; import @1.0::RegState; import @1.4::DataCallFailCause; import @1.4::DataCallFailCause; import @1.4::DataConnActiveStatus; import @1.4::DataConnActiveStatus; import @1.4::PdpProtocolType; import @1.4::PdpProtocolType; import @1.4::RadioTechnology; import @1.5::CellIdentity; import @1.5::LinkAddress; 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; import android.hidl.safe_union@1.0::Monostate; Loading Loading @@ -417,3 +424,140 @@ enum DataThrottlingAction : int32_t { */ */ HOLD = 3 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; }; radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +8 −0 Original line number Original line Diff line number Diff line Loading @@ -798,6 +798,14 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon Return<void> getSystemSelectionChannelsResponse( Return<void> getSystemSelectionChannelsResponse( const ::android::hardware::radio::V1_6::RadioResponseInfo& info); 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 */ /* Callback class for radio indication */ Loading radio/1.6/vts/functional/radio_response.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -1170,3 +1170,19 @@ Return<void> RadioResponse_v1_6::getSystemSelectionChannelsResponse( parent_v1_6.notify(info.serial); parent_v1_6.notify(info.serial); return Void(); 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(); } Loading
radio/1.6/IRadio.hal +18 −0 Original line number Original line Diff line number Diff line Loading @@ -365,4 +365,22 @@ interface IRadio extends @1.5::IRadio { * Response callback is IRadioResponse.getSystemSelectionChannelsResponse() * Response callback is IRadioResponse.getSystemSelectionChannelsResponse() */ */ oneway getSystemSelectionChannels(int32_t serial); 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); }; };
radio/1.6/IRadioResponse.hal +28 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.hardware.radio@1.6; import @1.0::SendSmsResult; import @1.0::SendSmsResult; import @1.6::RadioResponseInfo; import @1.6::RadioResponseInfo; import @1.5::IRadioResponse; import @1.5::IRadioResponse; import @1.6::RegStateResult; import @1.6::SetupDataCallResult; import @1.6::SetupDataCallResult; /** /** Loading Loading @@ -327,4 +328,31 @@ interface IRadioResponse extends @1.5::IRadioResponse { * RadioError:INVALID_ARGUMENTS * RadioError:INVALID_ARGUMENTS */ */ oneway getSystemSelectionChannelsResponse(RadioResponseInfo info); 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); }; };
radio/1.6/types.hal +144 −0 Original line number Original line Diff line number Diff line Loading @@ -18,10 +18,17 @@ package android.hardware.radio@1.6; import @1.0::RadioError; import @1.0::RadioError; import @1.0::RadioResponseType; import @1.0::RadioResponseType; import @1.0::RegState; import @1.4::DataCallFailCause; import @1.4::DataCallFailCause; import @1.4::DataConnActiveStatus; import @1.4::DataConnActiveStatus; import @1.4::PdpProtocolType; import @1.4::PdpProtocolType; import @1.4::RadioTechnology; import @1.5::CellIdentity; import @1.5::LinkAddress; 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; import android.hidl.safe_union@1.0::Monostate; Loading Loading @@ -417,3 +424,140 @@ enum DataThrottlingAction : int32_t { */ */ HOLD = 3 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; };
radio/1.6/vts/functional/radio_hidl_hal_utils_v1_6.h +8 −0 Original line number Original line Diff line number Diff line Loading @@ -798,6 +798,14 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon Return<void> getSystemSelectionChannelsResponse( Return<void> getSystemSelectionChannelsResponse( const ::android::hardware::radio::V1_6::RadioResponseInfo& info); 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 */ /* Callback class for radio indication */ Loading
radio/1.6/vts/functional/radio_response.cpp +16 −0 Original line number Original line Diff line number Diff line Loading @@ -1170,3 +1170,19 @@ Return<void> RadioResponse_v1_6::getSystemSelectionChannelsResponse( parent_v1_6.notify(info.serial); parent_v1_6.notify(info.serial); return Void(); 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(); }