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

Commit 2c51ab2e authored by Daniel Bright's avatar Daniel Bright Committed by Android (Google) Code Review
Browse files

Merge "Add HAL for pdu session id support"

parents 4568a0d5 996a86c5
Loading
Loading
Loading
Loading
+63 −0
Original line number Diff line number Diff line
@@ -205,4 +205,67 @@ interface IRadio extends @1.5::IRadio {
     * Response callback is IRadioResponse.isNRDualConnectivityEnabledResponse()
     */
    oneway isNrDualConnectivityEnabled(int32_t serial);

    /**
     * Reserves an unallocated pdu session id from the pool of ids.
     *
     * The allocated id is returned in the response.
     *
     * When the id is no longer needed, call releasePduSessionId to
     * return it to the pool.
     *
     * Reference: 3GPP TS 24.007 section 11.2.3.1b
     *
     * @param serial Serial number of request.
     *
     * Response function is IRadioResponse.allocatePduSessionIdResponse()
     */
    oneway allocatePduSessionId(int32_t serial);

    /**
     * Releases a pdu session id that was previously allocated using
     * allocatePduSessionId.
     *
     * Reference: 3GPP TS 24.007 section 11.2.3.1b
     * @param serial Serial number of request.
     * @param id Pdu session id to release.
     *
     * Response function is IRadioResponse.releasePduSessionIdResponse()
     */
    oneway releasePduSessionId(int32_t serial, int32_t id);

    /**
     * Indicates that a handover to the IWLAN transport has begun.
     *
     * Any resources being transferred to the IWlan transport cannot be released while a
     * handover is underway. For example, if a pdu session id needs to be
     * transferred to IWlan, then, the modem should not release the id while
     * the handover is in progress.
     *
     * If a handover was unsuccessful, then the framework calls IRadio::cancelHandover.
     * The modem retains ownership over any of the resources being transferred to IWlan.
     *
     * If a handover was successful, the framework calls IRadio::deactivateDataCall with reason
     * HANDOVER. The IWlan transport now owns the transferred resources and is responsible for
     * releasing them.
     *
     * @param serial Serial number of request.
     * @param id callId The identifier of the data call which is provided in SetupDataCallResult
     *
     * Response function is IRadioResponse.beginHandoverResponse()
     */
    oneway beginHandover(int32_t serial, int32_t callId);

    /**
     * Indicates that a handover was cancelled after a call to IRadio::beginHandover.
     *
     * Since the handover was unsuccessful, the modem retains ownership over any of the resources
     * being transferred and is still responsible for releasing them.
     *
     * @param serial Serial number of request.
     * @param id callId The identifier of the data call which is provided in SetupDataCallResult
     *
     * Response function is IRadioResponse.cancelHandoverResponse()
     */
    oneway cancelHandover(int32_t serial, int32_t callId);
};
+52 −0
Original line number Diff line number Diff line
@@ -222,4 +222,56 @@ interface IRadioResponse extends @1.5::IRadioResponse {
     *   RadioError:INTERNAL_ERR
     */
    oneway isNrDualConnectivityEnabledResponse(RadioResponseInfo info, bool isEnabled);

    /**
     * @param info Response info struct containing response type, serial no. and error
     * @param id The allocated id. On an error, this is set to -1
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     *   RadioError:NO_RESOURCES- Indicates that no pdu session ids are available
     *   RadioError:REQUEST_NOT_SUPPORTED
     */
    oneway allocatePduSessionIdResponse(RadioResponseInfo info, int32_t id);

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

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

    /**
     * @param info Response info struct containing response type, serial no. and error
     * @param dcResponse Attributes of data call
     *
     * Valid errors returned:
     *   RadioError:NONE
     *   RadioError:RADIO_NOT_AVAILABLE
     *   RadioError:INTERNAL_ERR
     *   RadioError:NO_RESOURCES
     *   RadioError:REQUEST_NOT_SUPPORTED
     *   RadioError:INVALID_CALL_ID
     */
    oneway cancelHandoverResponse(RadioResponseInfo info);
};
+8 −1
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import @1.4::DataCallFailCause;
import @1.4::DataConnActiveStatus;
import @1.4::PdpProtocolType;
import @1.5::LinkAddress;

import android.hidl.safe_union@1.0::Monostate;

struct QosBandwidth {
@@ -321,6 +320,14 @@ struct SetupDataCallResult {

    /** Specifies the fallback mode on an IWLAN handover failure. */
    HandoverFailureMode handoverFailureMode;

    /**
     * The allocated pdu session id for this data call.
     * A value of -1 means no pdu session id was attached to this call.
     *
     * Reference: 3GPP TS 24.007 section 11.2.3.1b
     */
    int32_t pduSessionId;
};

/**
+15 −0
Original line number Diff line number Diff line
@@ -80,6 +80,9 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
    bool enableModemResponseToggle;
    bool isNRDualConnectivityEnabled;

    // Pdu Session Id and Handover
    int32_t allocatedPduSessionId;

    ::android::hardware::hidl_bitfield<::android::hardware::radio::V1_4::RadioAccessFamily>
            networkTypeBitmapResponse;

@@ -771,6 +774,18 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
    Return<void> isNrDualConnectivityEnabledResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info, bool isEnabled);

    Return<void> allocatePduSessionIdResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info, int32_t id);

    Return<void> releasePduSessionIdResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info);

    Return<void> beginHandoverResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info);

    Return<void> cancelHandoverResponse(
            const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
};

/* Callback class for radio indication */
+29 −0
Original line number Diff line number Diff line
@@ -1113,3 +1113,32 @@ Return<void> RadioResponse_v1_6::isNrDualConnectivityEnabledResponse(
    parent_v1_6.notify(info.serial);
    return Void();
}

Return<void> RadioResponse_v1_6::allocatePduSessionIdResponse(
        const ::android::hardware::radio::V1_6::RadioResponseInfo& info, int32_t id) {
    rspInfo = info;
    allocatedPduSessionId = id;
    parent_v1_6.notify(info.serial);
    return Void();
}

Return<void> RadioResponse_v1_6::releasePduSessionIdResponse(
        const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
    rspInfo = info;
    parent_v1_6.notify(info.serial);
    return Void();
}

Return<void> RadioResponse_v1_6::beginHandoverResponse(
        const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
    rspInfo = info;
    parent_v1_6.notify(info.serial);
    return Void();
}

Return<void> RadioResponse_v1_6::cancelHandoverResponse(
        const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
    rspInfo = info;
    parent_v1_6.notify(info.serial);
    return Void();
}