Add HAL for pdu session id support
* Add in HAL support for AOSP allocating pdu session ids from modem * Add in HAL support that notifies modem when a handover has begun and was cannceled (clean cherry pick) Test: N/A Bug: 161572859 Change-Id: I2771b4773381ba68f482a80e743bdbb05a8e59d1 Merged-In: I2771b4773381ba68f482a80e743bdbb05a8e59d1
This commit is contained in:
parent
974ddb9f1a
commit
15cc34ae2c
5 changed files with 167 additions and 0 deletions
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -254,6 +254,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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue