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

Commit 974ddb9f authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Ability to configure NR dual connectivity"

parents 00df9012 a9d461b9
Loading
Loading
Loading
Loading
+24 −0
Original line number Original line Diff line number Diff line
@@ -181,4 +181,28 @@ interface IRadio extends @1.5::IRadio {
     *
     *
     */
     */
    oneway sendCdmaSmsExpectMore_1_6(int32_t serial, CdmaSmsMessage sms);
    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 Original line Diff line number Diff line
@@ -200,4 +200,26 @@ interface IRadioResponse extends @1.5::IRadioResponse {
     *   RadioError:BLOCKED_DUE_TO_CALL
     *   RadioError:BLOCKED_DUE_TO_CALL
     */
     */
    oneway sendCdmaSmsExpectMoreResponse_1_6(RadioResponseInfo info, SendSmsResult sms);
    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 Original line Diff line number Diff line
@@ -255,3 +255,24 @@ struct SetupDataCallResult {
    /** Specifies the fallback mode on an IWLAN handover failure. */
    /** Specifies the fallback mode on an IWLAN handover failure. */
    HandoverFailureMode handoverFailureMode;
    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 Original line 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(std::cv_status::no_timeout, wait());
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
    EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type);
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);
    EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial);

    if (cardStatus.base.base.base.cardState == CardState::ABSENT) {
    if (cardStatus.base.base.base.cardState == CardState::ABSENT) {
        ASSERT_TRUE(CheckAnyOfErrors(
        ASSERT_TRUE(CheckAnyOfErrors(
                radioRsp_v1_6->rspInfo.error,
                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(serial, radioRsp_v1_6->rspInfo.serial);
    EXPECT_EQ(::android::hardware::radio::V1_6::RadioError::NONE, radioRsp_v1_6->rspInfo.error);
    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 Original line Diff line number Diff line
@@ -78,6 +78,7 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
    // Modem
    // Modem
    bool isModemEnabled;
    bool isModemEnabled;
    bool enableModemResponseToggle;
    bool enableModemResponseToggle;
    bool isNRDualConnectivityEnabled;


    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
            networkTypeBitmapResponse;
            networkTypeBitmapResponse;
@@ -765,6 +766,11 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
    Return<void> sendCdmaSmsExpectMoreResponse_1_6(
    Return<void> sendCdmaSmsExpectMoreResponse_1_6(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info,
            const SendSmsResult& sms);
            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 */
/* Callback class for radio indication */
Loading