Skip to content

Commit 3736c96

Browse files
yagodacodebot
authored andcommitted
e2ap: splitting the e2 response function into success & failure functions, cleaning up e2 setup procedure
1 parent dd5b8b4 commit 3736c96

File tree

4 files changed

+30
-14
lines changed

4 files changed

+30
-14
lines changed

include/srsran/e2/e2.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,10 @@ class e2_connection_manager
5656
public:
5757
virtual ~e2_connection_manager() = default;
5858

59-
/// \brief Creates and transmits the E2 Setup outcome to the CU-UP.
60-
/// \param[in] msg The cu_up_e1_setup_response_message to transmit.
61-
/// \remark The CU transmits the E2SetupResponse/E2SetupFailure as per______.
62-
virtual void handle_e2_setup_response(const e2_setup_response_message& msg) = 0;
63-
6459
/// \brief Initiates the E2 Setup procedure as per _____
65-
/// \param[in] request The E1SetupRequest message to transmit.
60+
/// \param[in] request The E2SetupRequest message to transmit.
6661
/// \return Returns a e2_setup_response_message struct with the success member set to 'true' in case of a
6762
/// successful outcome, 'false' otherwise.
68-
/// \remark The CU transmits the E2SetupRequest as per ______.
6963
/// and awaits the response. If a E2SetupFailure is received the E2 will handle the failure.
7064
virtual async_task<e2_setup_response_message> handle_e2_setup_request(e2_setup_request_message& request) = 0;
7165
};

lib/e2/common/e2_impl.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,12 @@ void e2_impl::handle_e2_setup_response(const e2_setup_response_message& msg)
5757
{
5858
e2_message e2_msg;
5959
if (msg.success) {
60-
logger.info("Transmitting E2 Setup Response message");
60+
logger.info("Received E2 Setup Response message");
6161
e2_msg.pdu.set_successful_outcome().load_info_obj(ASN1_E2AP_ID_E2SETUP);
6262
e2_msg.pdu.successful_outcome().value.e2setup_resp() = msg.response;
63+
} else {
64+
logger.error("E2 Setup Failure message received");
65+
return;
6366
}
6467
if (e2_msg.pdu.successful_outcome().value.e2setup_resp()->ra_nfunctions_accepted_present) {
6568
for (unsigned i = 0, e = e2_msg.pdu.successful_outcome().value.e2setup_resp()->ra_nfunctions_accepted.value.size();
@@ -74,7 +77,19 @@ void e2_impl::handle_e2_setup_response(const e2_setup_response_message& msg)
7477
set_allowed_ran_functions(id);
7578
}
7679
}
77-
pdu_notifier.on_new_message(e2_msg);
80+
}
81+
82+
void e2_impl::handle_e2_setup_failure(const e2_setup_response_message& msg)
83+
{
84+
e2_message e2_msg;
85+
if (!msg.success) {
86+
logger.info("Transmitting E2 Setup Failure message");
87+
e2_msg.pdu.set_unsuccessful_outcome().load_info_obj(ASN1_E2AP_ID_E2SETUP);
88+
e2_msg.pdu.unsuccessful_outcome().value.e2setup_fail() = msg.failure;
89+
} else {
90+
logger.error("E2 Setup Response message received");
91+
return;
92+
}
7893
}
7994

8095
void e2_impl::handle_ric_subscription_request(const asn1::e2ap::ricsubscription_request_s& msg)
@@ -145,7 +160,7 @@ void e2_impl::handle_successful_outcome(const asn1::e2ap::successful_outcome_s&
145160
if (not events->transactions.set(transaction_id.value(), outcome)) {
146161
logger.warning("Unrecognized transaction id={}", transaction_id.value());
147162
}
148-
handle_e2_setup_response({outcome.value.e2setup_resp()});
163+
handle_e2_setup_response({outcome.value.e2setup_resp(), {}, true});
149164
} break;
150165
default:
151166
logger.error("Invalid E2AP successful outcome message type");
@@ -167,6 +182,7 @@ void e2_impl::handle_unsuccessful_outcome(const asn1::e2ap::unsuccessful_outcome
167182
if (not events->transactions.set(transaction_id.value(), outcome)) {
168183
logger.warning("Unrecognized transaction id={}", transaction_id.value());
169184
}
185+
handle_e2_setup_failure({{}, outcome.value.e2setup_fail(), false});
170186
} break;
171187
default:
172188
logger.error("Invalid E2AP unsuccessful outcome message type");

lib/e2/common/e2_impl.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ class e2_impl final : public e2_interface
3131
/// E2 connection manager functions.
3232
async_task<e2_setup_response_message> handle_e2_setup_request(e2_setup_request_message& request) override;
3333

34-
void handle_e2_setup_response(const e2_setup_response_message& msg) override;
35-
3634
/// E2_event_ handler functions.
3735
void handle_connection_loss() override {}
3836

@@ -59,6 +57,14 @@ class e2_impl final : public e2_interface
5957
/// \param[in] msg The received ric subscription request message.
6058
void handle_ric_subscription_request(const asn1::e2ap::ricsubscription_request_s& msg);
6159

60+
/// \brief handle e2 setup response message from the ric interface.
61+
/// @param[in] msg The received e2 setup response message.
62+
void handle_e2_setup_response(const e2_setup_response_message& msg);
63+
64+
/// \brief handle e2 setup failure message from the ric interface.
65+
/// \param[in] msg The received e2 setup failure message.
66+
void handle_e2_setup_failure(const e2_setup_response_message& msg);
67+
6268
/// \brief set the allowed ran functions from the e2 setuo response message.
6369
/// \param[in] msg The received ran_function_id from the e2 setup response message.
6470
void set_allowed_ran_functions(const uint16_t ran_function_id);

lib/e2/procedures/e2_setup_procedure.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ void e2_setup_procedure::operator()(coro_context<async_task<e2_setup_response_me
3030
while (true) {
3131
transaction = ev_mng.transactions.create_transaction();
3232

33-
// Send request to CU-UP.
33+
// Send request to RIC interface.
3434
send_e2_setup_request();
3535

36-
// Await CU response.
36+
// Await RIC response.
3737
CORO_AWAIT(transaction);
3838

3939
if (not retry_required()) {

0 commit comments

Comments
 (0)