Skip to content

Commit ae56bd8

Browse files
committed
asn1: represent E1AP IE through the value type instead of via a template
1 parent 2330cdd commit ae56bd8

24 files changed

+3550
-2899
lines changed

include/srsran/asn1/e1ap/e1ap.h

Lines changed: 463 additions & 537 deletions
Large diffs are not rendered by default.

lib/asn1/e1ap/e1ap.cpp

Lines changed: 2806 additions & 2043 deletions
Large diffs are not rendered by default.

lib/e1ap/common/e1ap_asn1_helpers.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ inline void fill_e1ap_cu_cp_e1_setup_response(cu_cp_e1_setup_response&
2020
const asn1::e1ap::gnb_cu_cp_e1_setup_resp_s& asn1_res)
2121
{
2222
res.success = true;
23-
res.gnb_cu_up_id = asn1_res->gnb_cu_up_id.value;
23+
res.gnb_cu_up_id = asn1_res->gnb_cu_up_id;
2424

2525
if (asn1_res->gnb_cu_up_name_present) {
26-
res.gnb_cu_up_name = asn1_res->gnb_cu_up_name.value.to_string();
26+
res.gnb_cu_up_name = asn1_res->gnb_cu_up_name.to_string();
2727
}
2828

29-
res.cn_support = asn1_res->cn_support.value.to_string();
29+
res.cn_support = asn1_res->cn_support.to_string();
3030

31-
for (const auto& asn1_plmn_item : asn1_res->supported_plmns.value) {
31+
for (const auto& asn1_plmn_item : asn1_res->supported_plmns) {
3232
supported_plmns_item_t plmn;
3333
plmn.plmn_id = asn1_plmn_item.plmn_id.to_string();
3434

@@ -79,15 +79,15 @@ inline void fill_e1ap_cu_cp_e1_setup_response(cu_cp_e1_setup_response&
7979
}
8080

8181
if (asn1_res->gnb_cu_up_capacity_present) {
82-
res.gnb_cu_up_capacity = asn1_res->gnb_cu_up_capacity.value;
82+
res.gnb_cu_up_capacity = asn1_res->gnb_cu_up_capacity;
8383
}
8484
}
8585

8686
inline void fill_e1ap_cu_cp_e1_setup_response(cu_cp_e1_setup_response& res,
8787
const asn1::e1ap::gnb_cu_cp_e1_setup_fail_s& asn1_fail)
8888
{
8989
res.success = false;
90-
res.cause = e1ap_cause_to_cause(asn1_fail->cause.value);
90+
res.cause = e1ap_cause_to_cause(asn1_fail->cause);
9191

9292
if (asn1_fail->crit_diagnostics_present) {
9393
// TODO: Add crit diagnostics
@@ -97,15 +97,15 @@ inline void fill_e1ap_cu_cp_e1_setup_response(cu_cp_e1_setup_response&
9797
inline void fill_e1ap_cu_up_e1_setup_request(cu_up_e1_setup_request& req,
9898
const asn1::e1ap::gnb_cu_up_e1_setup_request_s& asn1_req)
9999
{
100-
req.gnb_cu_up_id = asn1_req->gnb_cu_up_id.value;
100+
req.gnb_cu_up_id = asn1_req->gnb_cu_up_id;
101101

102102
if (asn1_req->gnb_cu_up_name_present) {
103-
req.gnb_cu_up_name = asn1_req->gnb_cu_up_name.value.to_string();
103+
req.gnb_cu_up_name = asn1_req->gnb_cu_up_name.to_string();
104104
}
105105

106-
req.cn_support = asn1_req->cn_support.value.to_string();
106+
req.cn_support = asn1_req->cn_support.to_string();
107107

108-
for (const auto& asn1_plmn_item : asn1_req->supported_plmns.value) {
108+
for (const auto& asn1_plmn_item : asn1_req->supported_plmns) {
109109
supported_plmns_item_t plmn;
110110
plmn.plmn_id = asn1_plmn_item.plmn_id.to_string();
111111

@@ -156,7 +156,7 @@ inline void fill_e1ap_cu_up_e1_setup_request(cu_up_e1_setup_request&
156156
}
157157

158158
if (asn1_req->gnb_cu_up_capacity_present) {
159-
req.gnb_cu_up_capacity = asn1_req->gnb_cu_up_capacity.value;
159+
req.gnb_cu_up_capacity = asn1_req->gnb_cu_up_capacity;
160160
}
161161
}
162162

lib/e1ap/common/e1ap_asn1_utils.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,13 @@ inline expected<uint8_t> get_transaction_id(const asn1::e1ap::init_msg_s& out)
5858
using namespace asn1::e1ap;
5959
switch (out.value.type().value) {
6060
case e1ap_elem_procs_o::init_msg_c::types_opts::gnb_cu_cp_e1_setup_request:
61-
return out.value.gnb_cu_cp_e1_setup_request()->transaction_id->value;
61+
return out.value.gnb_cu_cp_e1_setup_request()->transaction_id;
6262
case e1ap_elem_procs_o::init_msg_c::types_opts::gnb_cu_up_e1_setup_request:
63-
return out.value.gnb_cu_up_e1_setup_request()->transaction_id->value;
63+
return out.value.gnb_cu_up_e1_setup_request()->transaction_id;
6464
case e1ap_elem_procs_o::init_msg_c::types_opts::gnb_cu_cp_cfg_upd:
65-
return out.value.gnb_cu_cp_cfg_upd()->transaction_id->value;
65+
return out.value.gnb_cu_cp_cfg_upd()->transaction_id;
6666
case e1ap_elem_procs_o::init_msg_c::types_opts::gnb_cu_up_cfg_upd:
67-
return out.value.gnb_cu_up_cfg_upd()->transaction_id->value;
67+
return out.value.gnb_cu_up_cfg_upd()->transaction_id;
6868
// TODO: Remaining cases.
6969
default:
7070
break;
@@ -78,13 +78,13 @@ inline expected<uint8_t> get_transaction_id(const asn1::e1ap::successful_outcome
7878
using namespace asn1::e1ap;
7979
switch (out.value.type().value) {
8080
case e1ap_elem_procs_o::successful_outcome_c::types_opts::gnb_cu_cp_e1_setup_resp:
81-
return out.value.gnb_cu_cp_e1_setup_resp()->transaction_id->value;
81+
return out.value.gnb_cu_cp_e1_setup_resp()->transaction_id;
8282
case e1ap_elem_procs_o::successful_outcome_c::types_opts::gnb_cu_up_e1_setup_resp:
83-
return out.value.gnb_cu_up_e1_setup_resp()->transaction_id->value;
83+
return out.value.gnb_cu_up_e1_setup_resp()->transaction_id;
8484
case e1ap_elem_procs_o::successful_outcome_c::types_opts::gnb_cu_cp_cfg_upd_ack:
85-
return out.value.gnb_cu_cp_cfg_upd_ack()->transaction_id->value;
85+
return out.value.gnb_cu_cp_cfg_upd_ack()->transaction_id;
8686
case e1ap_elem_procs_o::successful_outcome_c::types_opts::gnb_cu_up_cfg_upd_ack:
87-
return out.value.gnb_cu_up_cfg_upd_ack()->transaction_id->value;
87+
return out.value.gnb_cu_up_cfg_upd_ack()->transaction_id;
8888
// TODO: Remaining cases.
8989
default:
9090
break;
@@ -98,13 +98,13 @@ inline expected<uint8_t> get_transaction_id(const asn1::e1ap::unsuccessful_outco
9898
using namespace asn1::e1ap;
9999
switch (out.value.type().value) {
100100
case e1ap_elem_procs_o::unsuccessful_outcome_c::types_opts::gnb_cu_cp_e1_setup_fail:
101-
return out.value.gnb_cu_cp_e1_setup_fail()->transaction_id->value;
101+
return out.value.gnb_cu_cp_e1_setup_fail()->transaction_id;
102102
case e1ap_elem_procs_o::unsuccessful_outcome_c::types_opts::gnb_cu_up_e1_setup_fail:
103-
return out.value.gnb_cu_up_e1_setup_fail()->transaction_id->value;
103+
return out.value.gnb_cu_up_e1_setup_fail()->transaction_id;
104104
case e1ap_elem_procs_o::unsuccessful_outcome_c::types_opts::gnb_cu_cp_cfg_upd_fail:
105-
return out.value.gnb_cu_cp_cfg_upd_fail()->transaction_id->value;
105+
return out.value.gnb_cu_cp_cfg_upd_fail()->transaction_id;
106106
case e1ap_elem_procs_o::unsuccessful_outcome_c::types_opts::gnb_cu_up_cfg_upd_fail:
107-
return out.value.gnb_cu_up_cfg_upd_fail()->transaction_id->value;
107+
return out.value.gnb_cu_up_cfg_upd_fail()->transaction_id;
108108
// TODO: Remaining cases.
109109
default:
110110
break;
@@ -134,15 +134,15 @@ inline expected<gnb_cu_cp_ue_e1ap_id_t> get_gnb_cu_cp_ue_e1ap_id(const asn1::e1a
134134
using init_msg_type = asn1::e1ap::e1ap_elem_procs_o::init_msg_c::types_opts;
135135
switch (init_msg.value.type()) {
136136
case init_msg_type::bearer_context_setup_request:
137-
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_setup_request()->gnb_cu_cp_ue_e1ap_id->value;
137+
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_setup_request()->gnb_cu_cp_ue_e1ap_id;
138138
case init_msg_type::bearer_context_release_cmd:
139-
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_release_cmd()->gnb_cu_cp_ue_e1ap_id->value;
139+
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_release_cmd()->gnb_cu_cp_ue_e1ap_id;
140140
case init_msg_type::bearer_context_mod_request:
141-
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_mod_request()->gnb_cu_cp_ue_e1ap_id->value;
141+
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_mod_request()->gnb_cu_cp_ue_e1ap_id;
142142
case init_msg_type::bearer_context_mod_required:
143-
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_mod_required()->gnb_cu_cp_ue_e1ap_id->value;
143+
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_mod_required()->gnb_cu_cp_ue_e1ap_id;
144144
case init_msg_type::bearer_context_release_request:
145-
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_release_request()->gnb_cu_cp_ue_e1ap_id->value;
145+
return (gnb_cu_cp_ue_e1ap_id_t)init_msg.value.bearer_context_release_request()->gnb_cu_cp_ue_e1ap_id;
146146
default:
147147
break;
148148
}
@@ -184,13 +184,13 @@ inline expected<gnb_cu_up_ue_e1ap_id_t> get_gnb_cu_up_ue_e1ap_id(const asn1::e1a
184184
using init_msg_type = asn1::e1ap::e1ap_elem_procs_o::init_msg_c::types_opts;
185185
switch (init_msg.value.type()) {
186186
case init_msg_type::bearer_context_release_cmd:
187-
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_release_cmd()->gnb_cu_up_ue_e1ap_id->value;
187+
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_release_cmd()->gnb_cu_up_ue_e1ap_id;
188188
case init_msg_type::bearer_context_mod_request:
189-
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_mod_request()->gnb_cu_up_ue_e1ap_id->value;
189+
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_mod_request()->gnb_cu_up_ue_e1ap_id;
190190
case init_msg_type::bearer_context_mod_required:
191-
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_mod_required()->gnb_cu_up_ue_e1ap_id->value;
191+
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_mod_required()->gnb_cu_up_ue_e1ap_id;
192192
case init_msg_type::bearer_context_release_request:
193-
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_release_request()->gnb_cu_up_ue_e1ap_id->value;
193+
return (gnb_cu_up_ue_e1ap_id_t)init_msg.value.bearer_context_release_request()->gnb_cu_up_ue_e1ap_id;
194194
default:
195195
break;
196196
}

0 commit comments

Comments
 (0)