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

Commit 61a2c123 authored by Hui Wang's avatar Hui Wang Committed by Automerger Merge Worker
Browse files

Merge "Add VoNR network feature support information" am: f14d297d

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

Change-Id: I33c6405ed4e4adc313f946561860c410c9659808
parents 08d21abc f14d297d
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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);
};
+28 −0
Original line number Diff line number Diff line
@@ -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);
};
+144 −0
Original line number Diff line number Diff line
@@ -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;
};
+8 −0
Original line number Diff line number Diff line
@@ -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 */
+16 −0
Original line number Diff line number Diff line
@@ -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();
}