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

Commit d6e31543 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Ability to configure NR dual connectivity" am: 974ddb9f am: 74b6ba9f

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

Change-Id: I4337de411dd7fadb2707c69419a80b5bc0e812b8
parents ed35d0c4 74b6ba9f
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -181,4 +181,28 @@ interface IRadio extends @1.5::IRadio {
     *
     */
    oneway sendCdmaSmsExpectMore_1_6(int32_t serial, CdmaSmsMessage sms);

    /**
     * Enable or disable E-UTRA-NR dual connectivity. If disabled then UE will not connect
     * to secondary carrier.
     *
     * @param serial Serial number of request.
     * @param nrDualConnectivityState expected NR dual connectivity state.
     * 1. Enable NR dual connectivity {NrDualConnectivityState:ENABLE}
     * 2. Disable NR dual connectivity {NrDualConnectivityState:DISABLE}
     * 3. Disable NR dual connectivity and force secondary cell to be released
     * {NrDualConnectivityState:DISABLE_IMMEDIATE}

     * Response callback is IRadioResponse.enableNRDualConnectivityResponse()
     */
    oneway enableNrDualConnectivity(int32_t serial,
            NrDualConnectivityState nrDualConnectivityState);

    /**
     * Is E-UTRA-NR Dual Connectivity enabled
     *
     * @param serial Serial number of request.
     * Response callback is IRadioResponse.isNRDualConnectivityEnabledResponse()
     */
    oneway isNrDualConnectivityEnabled(int32_t serial);
};
+22 −0
Original line number Diff line number Diff line
@@ -200,4 +200,26 @@ interface IRadioResponse extends @1.5::IRadioResponse {
     *   RadioError:BLOCKED_DUE_TO_CALL
     */
    oneway sendCdmaSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms);

    /**
     * @param info Response info struct containing response type, serial no. and error
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     */
    oneway enableNrDualConnectivityResponse(RadioResponseInfo info);

    /**
     * @param info Response info struct containing response type, serial no. and error
     *
     * @param isEnabled Indicates whether NR dual connectivity is enabled or not, True if enabled
     *        else false.
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     */
    oneway isNrDualConnectivityEnabledResponse(RadioResponseInfo info, bool isEnabled);
};
+21 −0
Original line number Diff line number Diff line
@@ -255,3 +255,24 @@ struct SetupDataCallResult {
    /** Specifies the fallback mode on an IWLAN handover failure. */
    HandoverFailureMode handoverFailureMode;
};

/**
 * NR Dual connectivity state
 */
enum NrDualConnectivityState: int32_t {
    /**
     * Enable NR dual connectivity. Enabled state does not mean dual connectivity
     * is active. It means device is allowed to connect to both primary and secondary.
     */
    ENABLE = 1,
    /**
     * Disable NR dual connectivity. Disabled state does not mean secondary cell is released.
     * Modem will release it only if current bearer is released to avoid radio link failure.
     */
    DISABLE = 2,
    /**
     * Disable NR dual connectivity and force secondary cell to be released if dual connectivity
     * was active. This may result in radio link failure.
     */
    DISABLE_IMMEDIATE= 3,
};
+37 −1
Original line number Diff line number Diff line
@@ -63,7 +63,6 @@ TEST_P(RadioHidlTest_v1_6, setupDataCall_1_6) {
    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);

    if (cardStatus.base.base.base.cardState == CardState::ABSENT) {
        ASSERT_TRUE(CheckAnyOfErrors(
                radioRsp_v1_6->rspInfo.error,
@@ -259,3 +258,40 @@ TEST_P(RadioHidlTest_v1_6, setRadioPower_1_6_emergencyCall_cancelled) {
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
    EXPECT_EQ(::android::hardware::radio::V1_6::RadioError::NONE, radioRsp_v1_6->rspInfo.error);
}

/*
 * Test IRadio.enableNrDualConnectivity() for the response returned.
 */
TEST_P(RadioHidlTest_v1_6, enableNrDualConnectivity) {
    serial = GetRandomSerialNumber();

    Return<void> res =
            radio_v1_6->enableNrDualConnectivity(serial, NrDualConnectivityState::DISABLE);
    ASSERT_OK(res);

    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error,
                                 {::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE,
                                  ::android::hardware::radio::V1_6::RadioError::INTERNAL_ERR,
                                  ::android::hardware::radio::V1_6::RadioError::NONE}));
}

/*
 * Test IRadio.isNrDualConnectivityEnabled() for the response returned.
 */
TEST_P(RadioHidlTest_v1_6, isNrDualConnectivityEnabled) {
    serial = GetRandomSerialNumber();

    Return<void> res = radio_v1_6->isNrDualConnectivityEnabled(serial);
    ASSERT_OK(res);

    EXPECT_EQ(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
    ASSERT_TRUE(CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error,
                                 {::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE,
                                  ::android::hardware::radio::V1_6::RadioError::INTERNAL_ERR,
                                  ::android::hardware::radio::V1_6::RadioError::NONE}));
}
+6 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
    // Modem
    bool isModemEnabled;
    bool enableModemResponseToggle;
    bool isNRDualConnectivityEnabled;

    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
            networkTypeBitmapResponse;
@@ -765,6 +766,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
    Return<void> sendCdmaSmsExpectMoreResponse_1_6(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
            const SendSmsResult& sms);

    Return<void> enableNrDualConnectivityResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
    Return<void> isNrDualConnectivityEnabledResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info, bool isEnabled);
};

/* Callback class for radio indication */
Loading