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

Commit a4f1c830 authored by Daniel Bright's avatar Daniel Bright Committed by Automerger Merge Worker
Browse files

Merge "Add S-NSSAI" am: 31f2eb37 am: af709809

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

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I46073ec4aaf16ed9099df7f6a357de78d8e44c82
parents 6cb2d700 af709809
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -117,6 +117,9 @@ interface IRadio extends @1.5::IRadio {
     * @param pduSessionId The pdu session id to be used for this data call.  A value of 0 means
     *     no pdu session id was attached to this call.
     *     Reference: 3GPP TS 24.007 section 11.2.3.1b
     * @param sliceInfo SliceInfo to be used for the data connection when a handover occurs from
     *     EPDG to 5G.  It is valid only when accessNetwork is AccessNetwork:NGRAN.  If the slice
     *     passed from EPDG is rejected, then the data failure cause must be DataCallFailCause:SLICE_REJECTED.
     *
     * Response function is IRadioResponse.setupDataCallResponse_1_6()
     *
@@ -125,7 +128,7 @@ interface IRadio extends @1.5::IRadio {
    oneway setupDataCall_1_6(int32_t serial, AccessNetwork accessNetwork,
            DataProfileInfo dataProfileInfo, bool roamingAllowed,
            DataRequestReason reason, vec<LinkAddress> addresses, vec<string> dnses,
            int32_t pduSessionId);
            int32_t pduSessionId, OptionalSliceInfo sliceInfo);

    /**
     * Send an SMS message
+83 −0
Original line number Diff line number Diff line
@@ -356,6 +356,12 @@ struct SetupDataCallResult {
     * Reference: 3GPP TS 24.007 section 11.2.3.1b
     */
    int32_t pduSessionId;

    /**
     * Slice used for this data call. It is valid only when this data call is on
     * AccessNetwork:NGRAN.
     */
    OptionalSliceInfo sliceInfo;
};

/**
@@ -804,3 +810,80 @@ enum NgranBands : @1.5::NgranBands {
    BAND_53 = 53,
    BAND_96 = 96,
};

/**
 * This safe_union represents an optional slice info
 */
safe_union OptionalSliceInfo {
    Monostate noinit;
    SliceInfo value;
};

/**
 * This struct represents a S-NSSAI as defined in 3GPP TS 24.501.
 */
struct SliceInfo {
    /**
     * The type of service provided by the slice.
     *
     * see: 3GPP TS 24.501 Section 9.11.2.8.
     */
    SliceServiceType sst;

    /**
     * Slice differentiator is the identifier of a slice that has
     * SliceServiceType as SST. A value of -1 indicates that there is
     * no corresponding SliceInfo of the HPLMN.
     *
     * see: 3GPP TS 24.501 Section 9.11.2.8.
     */
    int32_t sliceDifferentiator;

    /**
     * This SST corresponds to a SliceInfo (S-NSSAI) of the HPLMN; the SST is
     * mapped to this value.
     *
     * see: 3GPP TS 24.501 Section 9.11.2.8.
     */
    SliceServiceType mappedHplmnSst;

    /**
     * Present only if both sliceDifferentiator and mappedHplmnSst are also
     * present. This SD corresponds to a SliceInfo (S-NSSAI) of the HPLMN;
     * sliceDifferentiator is mapped to this value. A value of -1 indicates that
     * there is no corresponding SliceInfo of the HPLMN.
     *
     * see: 3GPP TS 24.501 Section 9.11.2.8.
     */
    int32_t mappedHplmnSD;
};

/**
 * Slice/Service Type as defined in 3GPP TS 23.501.
 */
enum SliceServiceType : uint8_t {
    /* Not specified */
    NONE = 0,

    /* Slice suitable for the handling of 5G enhanced Mobile Broadband */
    EMBB = 1,

    /**
     * Slice suitable for the handling of ultra-reliable low latency
     * communications
     */
    URLLC = 2,

    /* Slice suitable for the handling of massive IoT */
    MIOT = 3,
};

/**
 * Expose more setup data call failures.
 */
enum DataCallFailCause : @1.4::DataCallFailCause {
    /**
     * Data call fail due to the slice not being allowed for the data call.
     */
    SLICE_REJECTED = 0x8CC,
};
+6 −2
Original line number Diff line number Diff line
@@ -56,8 +56,12 @@ TEST_P(RadioHidlTest_v1_6, setupDataCall_1_6) {
    ::android::hardware::radio::V1_2::DataRequestReason reason =
            ::android::hardware::radio::V1_2::DataRequestReason::NORMAL;

    Return<void> res = radio_v1_6->setupDataCall_1_6(serial, accessNetwork, dataProfileInfo,
                                                     roamingAllowed, reason, addresses, dnses, -1);
    ::android::hardware::radio::V1_6::OptionalSliceInfo optionalSliceInfo;
    memset(&optionalSliceInfo, 0, sizeof(optionalSliceInfo));

    Return<void> res =
            radio_v1_6->setupDataCall_1_6(serial, accessNetwork, dataProfileInfo, roamingAllowed,
                                          reason, addresses, dnses, -1, optionalSliceInfo);
    ASSERT_OK(res);

    EXPECT_EQ(std::cv_status::no_timeout, wait());