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

Commit f14d297d authored by Hui Wang's avatar Hui Wang Committed by Gerrit Code Review
Browse files

Merge "Add VoNR network feature support information"

parents bc4f8456 fb202506
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -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);
};
};
+28 −0
Original line number Original line Diff line number Diff line
@@ -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;


/**
/**
@@ -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);
};
};
+144 −0
Original line number Original line Diff line number Diff line
@@ -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;


@@ -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;
};
+8 −0
Original line number Original line Diff line number Diff line
@@ -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 */
+16 −0
Original line number Original line Diff line number Diff line
@@ -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();
}