fixed generation of ie containers of one single ie object

master
Francisco Paisana 5 years ago committed by Francisco Paisana
parent e3e3848210
commit e79fc9bf08

@ -477,7 +477,7 @@ struct private_ie_field_s {
// PrivateIE-Container{S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..65535)) OF PrivateIE-Field // PrivateIE-Container{S1AP-PRIVATE-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..65535)) OF PrivateIE-Field
template <class ies_set_paramT_> template <class ies_set_paramT_>
using private_ie_container_l = dyn_array<private_ie_field_s<ies_set_paramT_> >; using private_ie_container_l = dyn_seq_of<private_ie_field_s<ies_set_paramT_>, 1, 65535, true>;
// ProtocolExtensionField{S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-EXTENSION}} // ProtocolExtensionField{S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-EXTENSION}}
template <class ext_set_paramT_> template <class ext_set_paramT_>
@ -495,7 +495,7 @@ struct protocol_ext_field_s {
// ProtocolExtensionContainer{S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE (SIZE (1..65535)) OF // ProtocolExtensionContainer{S1AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE (SIZE (1..65535)) OF
// ProtocolExtensionField // ProtocolExtensionField
template <class ext_set_paramT_> template <class ext_set_paramT_>
using protocol_ext_container_l = dyn_array<protocol_ext_field_s<ext_set_paramT_> >; using protocol_ext_container_l = dyn_seq_of<protocol_ext_field_s<ext_set_paramT_>, 1, 65535, true>;
// ProtocolIE-Field{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES}} // ProtocolIE-Field{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES}}
template <class ies_set_paramT_> template <class ies_set_paramT_>
@ -512,7 +512,7 @@ struct protocol_ie_field_s {
// ProtocolIE-Container{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (0..65535)) OF ProtocolIE-Field // ProtocolIE-Container{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (0..65535)) OF ProtocolIE-Field
template <class ies_set_paramT_> template <class ies_set_paramT_>
using protocol_ie_container_l = dyn_array<protocol_ie_field_s<ies_set_paramT_> >; using protocol_ie_container_l = dyn_seq_of<protocol_ie_field_s<ies_set_paramT_>, 0, 65535, true>;
// ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES}} // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES}}
template <class ies_set_paramT_> template <class ies_set_paramT_>
@ -527,11 +527,6 @@ struct protocol_ie_single_container_s {
bool load_info_obj(const uint32_t& id_); bool load_info_obj(const uint32_t& id_);
}; };
// ProtocolIE-ContainerList{INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE
// (SIZE (lowerBound..upperBound)) OF ProtocolIE-SingleContainer
template <class ies_set_paramT_>
using protocol_ie_container_list_l = dyn_array<protocol_ie_single_container_s<ies_set_paramT_> >;
// ProtocolIE-FieldPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES-PAIR}} // ProtocolIE-FieldPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE{{S1AP-PROTOCOL-IES-PAIR}}
template <class ies_set_paramT_> template <class ies_set_paramT_>
struct protocol_ie_field_pair_s { struct protocol_ie_field_pair_s {
@ -549,12 +544,7 @@ struct protocol_ie_field_pair_s {
// ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (0..65535)) OF ProtocolIE-FieldPair // ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (0..65535)) OF ProtocolIE-FieldPair
template <class ies_set_paramT_> template <class ies_set_paramT_>
using protocol_ie_container_pair_l = dyn_array<protocol_ie_field_pair_s<ies_set_paramT_> >; using protocol_ie_container_pair_l = dyn_seq_of<protocol_ie_field_pair_s<ies_set_paramT_>, 0, 65535, true>;
// ProtocolIE-ContainerPairList{INTEGER : lowerBound, INTEGER : upperBound, S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::=
// SEQUENCE (SIZE (lowerBound..upperBound)) OF ProtocolIE-ContainerPair
template <class ies_set_paramT_>
using protocol_ie_container_pair_list_l = dyn_array<protocol_ie_container_pair_l<ies_set_paramT_> >;
// ActivatedCellsList-Item ::= SEQUENCE // ActivatedCellsList-Item ::= SEQUENCE
struct activ_cells_list_item_s { struct activ_cells_list_item_s {
@ -3009,7 +2999,7 @@ using protocol_ie_single_container_item_s = protocol_ie_single_container_s<ies_s
// E-RAB-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // E-RAB-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF
// ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam}
template <class ies_set_paramT_> template <class ies_set_paramT_>
using erab_ie_container_list_l = dyn_array<protocol_ie_single_container_item_s<ies_set_paramT_> >; using erab_ie_container_list_l = dyn_seq_of<protocol_ie_single_container_item_s<ies_set_paramT_>, 1, 256, true>;
// E-RABDataForwardingItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES // E-RABDataForwardingItemIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES
struct erab_data_forwarding_item_ies_o { struct erab_data_forwarding_item_ies_o {
@ -3061,33 +3051,6 @@ struct cdma2000_rat_type_opts {
}; };
typedef enumerated<cdma2000_rat_type_opts, true> cdma2000_rat_type_e; typedef enumerated<cdma2000_rat_type_opts, true> cdma2000_rat_type_e;
template <class valueT_>
struct erab_ie_container_list_item_s {
uint32_t id = 0;
crit_e crit;
valueT_ value;
// sequence methods
erab_ie_container_list_item_s(uint32_t id_, crit_e crit_);
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
struct erab_data_forwarding_item_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_data_forwarding_item_s> erab_data_forwarding_item;
// sequence methods
erab_data_forwarding_item_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// DownlinkS1cdma2000tunnellingIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES // DownlinkS1cdma2000tunnellingIEs ::= OBJECT SET OF S1AP-PROTOCOL-IES
struct dl_s1cdma2000tunnelling_ies_o { struct dl_s1cdma2000tunnelling_ies_o {
// Value ::= OPEN TYPE // Value ::= OPEN TYPE
@ -3120,20 +3083,20 @@ struct dl_s1cdma2000tunnelling_ies_o {
// getters // getters
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_data_forwarding_item_ies_container& erab_subjectto_data_forwarding_list(); erab_ie_container_list_l<erab_data_forwarding_item_ies_o>& erab_subjectto_data_forwarding_list();
cdma2000_ho_status_e& cdma2000_ho_status(); cdma2000_ho_status_e& cdma2000_ho_status();
cdma2000_rat_type_e& cdma2000_rat_type(); cdma2000_rat_type_e& cdma2000_rat_type();
unbounded_octstring<true>& cdma2000_pdu(); unbounded_octstring<true>& cdma2000_pdu();
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_data_forwarding_item_ies_container& erab_subjectto_data_forwarding_list() const; const erab_ie_container_list_l<erab_data_forwarding_item_ies_o>& erab_subjectto_data_forwarding_list() const;
const cdma2000_ho_status_e& cdma2000_ho_status() const; const cdma2000_ho_status_e& cdma2000_ho_status() const;
const cdma2000_rat_type_e& cdma2000_rat_type() const; const cdma2000_rat_type_e& cdma2000_rat_type() const;
const unbounded_octstring<true>& cdma2000_pdu() const; const unbounded_octstring<true>& cdma2000_pdu() const;
private: private:
types type_; types type_;
choice_buffer_t<erab_data_forwarding_item_ies_container, unbounded_octstring<true> > c; choice_buffer_t<erab_ie_container_list_l<erab_data_forwarding_item_ies_o>, unbounded_octstring<true> > c;
void destroy_(); void destroy_();
}; };
@ -3155,7 +3118,7 @@ struct dl_s1cdma2000tunnelling_ies_container {
bool cdma2000_ho_status_present = false; bool cdma2000_ho_status_present = false;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_data_forwarding_item_ies_container> erab_subjectto_data_forwarding_list; ie_field_s<erab_ie_container_list_l<erab_data_forwarding_item_ies_o> > erab_subjectto_data_forwarding_list;
ie_field_s<cdma2000_ho_status_e> cdma2000_ho_status; ie_field_s<cdma2000_ho_status_e> cdma2000_ho_status;
ie_field_s<cdma2000_rat_type_e> cdma2000_rat_type; ie_field_s<cdma2000_rat_type_e> cdma2000_rat_type;
ie_field_s<unbounded_octstring<true> > cdma2000_pdu; ie_field_s<unbounded_octstring<true> > cdma2000_pdu;
@ -3261,7 +3224,8 @@ using protocol_ie_container_pair_item_l = protocol_ie_container_pair_l<ies_set_p
// E-RAB-IE-ContainerPairList{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // E-RAB-IE-ContainerPairList{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF
// ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam} // ProtocolIE-ContainerPair{S1AP-PROTOCOL-IES-PAIR : IEsSetParam}
template <class ies_set_paramT_> template <class ies_set_paramT_>
using erab_ie_container_pair_list_l = dyn_array<protocol_ie_container_pair_item_l<ies_set_paramT_> >; using erab_ie_container_pair_list_l =
dyn_seq_of<dyn_seq_of<protocol_ie_field_pair_s<ies_set_paramT_>, 0, 65535, true>, 1, 256>;
// E-RABAdmittedItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // E-RABAdmittedItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o erab_admitted_item_ext_ies_o; typedef s1ap_protocol_ext_empty_o erab_admitted_item_ext_ies_o;
@ -3324,20 +3288,6 @@ struct erab_admitted_item_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_admitted_item_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_admitted_item_s> erab_admitted_item;
// sequence methods
erab_admitted_item_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// E-RABFailedToResumeItemResumeReq-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // E-RABFailedToResumeItemResumeReq-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o erab_failed_to_resume_item_resume_req_ext_ies_o; typedef s1ap_protocol_ext_empty_o erab_failed_to_resume_item_resume_req_ext_ies_o;
@ -3442,34 +3392,6 @@ struct erab_failed_to_resume_item_resume_res_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_failed_to_resume_item_resume_req_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_failed_to_resume_item_resume_req_s> erab_failed_to_resume_item_resume_req;
// sequence methods
erab_failed_to_resume_item_resume_req_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
struct erab_failed_to_resume_item_resume_res_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_failed_to_resume_item_resume_res_s> erab_failed_to_resume_item_resume_res;
// sequence methods
erab_failed_to_resume_item_resume_res_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// E-RABFailedToSetupItemHOReqAckExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // E-RABFailedToSetupItemHOReqAckExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o erab_failed_to_setup_item_ho_req_ack_ext_ies_o; typedef s1ap_protocol_ext_empty_o erab_failed_to_setup_item_ho_req_ack_ext_ies_o;
@ -3522,20 +3444,6 @@ struct erab_failedto_setup_item_ho_req_ack_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_failedto_setup_item_ho_req_ack_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_failed_to_setup_item_ho_req_ack_s> erab_failedto_setup_item_ho_req_ack;
// sequence methods
erab_failedto_setup_item_ho_req_ack_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// DL-Forwarding ::= ENUMERATED // DL-Forwarding ::= ENUMERATED
struct dl_forwarding_opts { struct dl_forwarding_opts {
enum options { dl_forwarding_proposed, /*...*/ nulltype } value; enum options { dl_forwarding_proposed, /*...*/ nulltype } value;
@ -3968,34 +3876,6 @@ struct erab_to_be_modified_item_bearer_mod_ind_ies_o {
// Tunnel-Information-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // Tunnel-Information-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o tunnel_info_ext_ies_o; typedef s1ap_protocol_ext_empty_o tunnel_info_ext_ies_o;
struct erab_not_to_be_modified_item_bearer_mod_ind_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_not_to_be_modified_item_bearer_mod_ind_s> erab_not_to_be_modified_item_bearer_mod_ind;
// sequence methods
erab_not_to_be_modified_item_bearer_mod_ind_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
struct erab_to_be_modified_item_bearer_mod_ind_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_to_be_modified_item_bearer_mod_ind_s> erab_to_be_modified_item_bearer_mod_ind;
// sequence methods
erab_to_be_modified_item_bearer_mod_ind_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
typedef protocol_ext_container_empty_l tunnel_info_ext_ies_container; typedef protocol_ext_container_empty_l tunnel_info_ext_ies_container;
// TunnelInformation ::= SEQUENCE // TunnelInformation ::= SEQUENCE
@ -4046,14 +3926,16 @@ struct erab_mod_ind_ies_o {
// getters // getters
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_to_be_modified_item_bearer_mod_ind_ies_container& erab_to_be_modified_list_bearer_mod_ind(); erab_ie_container_list_l<erab_to_be_modified_item_bearer_mod_ind_ies_o>& erab_to_be_modified_list_bearer_mod_ind();
erab_not_to_be_modified_item_bearer_mod_ind_ies_container& erab_not_to_be_modified_list_bearer_mod_ind(); erab_ie_container_list_l<erab_not_to_be_modified_item_bearer_mod_ind_ies_o>&
erab_not_to_be_modified_list_bearer_mod_ind();
csg_membership_info_s& csg_membership_info(); csg_membership_info_s& csg_membership_info();
tunnel_info_s& tunnel_info_for_bbf(); tunnel_info_s& tunnel_info_for_bbf();
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_to_be_modified_item_bearer_mod_ind_ies_container& erab_to_be_modified_list_bearer_mod_ind() const; const erab_ie_container_list_l<erab_to_be_modified_item_bearer_mod_ind_ies_o>&
const erab_not_to_be_modified_item_bearer_mod_ind_ies_container& erab_to_be_modified_list_bearer_mod_ind() const;
const erab_ie_container_list_l<erab_not_to_be_modified_item_bearer_mod_ind_ies_o>&
erab_not_to_be_modified_list_bearer_mod_ind() const; erab_not_to_be_modified_list_bearer_mod_ind() const;
const csg_membership_info_s& csg_membership_info() const; const csg_membership_info_s& csg_membership_info() const;
const tunnel_info_s& tunnel_info_for_bbf() const; const tunnel_info_s& tunnel_info_for_bbf() const;
@ -4061,8 +3943,8 @@ struct erab_mod_ind_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<csg_membership_info_s, choice_buffer_t<csg_membership_info_s,
erab_not_to_be_modified_item_bearer_mod_ind_ies_container, erab_ie_container_list_l<erab_not_to_be_modified_item_bearer_mod_ind_ies_o>,
erab_to_be_modified_item_bearer_mod_ind_ies_container, erab_ie_container_list_l<erab_to_be_modified_item_bearer_mod_ind_ies_o>,
tunnel_info_s> tunnel_info_s>
c; c;
@ -4087,8 +3969,10 @@ struct erab_mod_ind_ies_container {
bool tunnel_info_for_bbf_present = false; bool tunnel_info_for_bbf_present = false;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_to_be_modified_item_bearer_mod_ind_ies_container> erab_to_be_modified_list_bearer_mod_ind; ie_field_s<erab_ie_container_list_l<erab_to_be_modified_item_bearer_mod_ind_ies_o> >
ie_field_s<erab_not_to_be_modified_item_bearer_mod_ind_ies_container> erab_not_to_be_modified_list_bearer_mod_ind; erab_to_be_modified_list_bearer_mod_ind;
ie_field_s<erab_ie_container_list_l<erab_not_to_be_modified_item_bearer_mod_ind_ies_o> >
erab_not_to_be_modified_list_bearer_mod_ind;
ie_field_s<csg_membership_info_s> csg_membership_info; ie_field_s<csg_membership_info_s> csg_membership_info;
ie_field_s<tunnel_info_s> tunnel_info_for_bbf; ie_field_s<tunnel_info_s> tunnel_info_for_bbf;
@ -4212,21 +4096,6 @@ struct erab_to_be_modify_item_bearer_mod_req_ext_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_to_be_modify_item_bearer_mod_req_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool transport_info_present = false;
ie_field_s<transport_info_s> transport_info;
// sequence methods
erab_to_be_modify_item_bearer_mod_req_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// E-RABToBeModifiedItemBearerModReq ::= SEQUENCE // E-RABToBeModifiedItemBearerModReq ::= SEQUENCE
struct erab_to_be_modified_item_bearer_mod_req_s { struct erab_to_be_modified_item_bearer_mod_req_s {
bool ext = false; bool ext = false;
@ -4234,7 +4103,7 @@ struct erab_to_be_modified_item_bearer_mod_req_s {
uint8_t erab_id = 0; uint8_t erab_id = 0;
erab_level_qos_params_s erab_level_qos_params; erab_level_qos_params_s erab_level_qos_params;
unbounded_octstring<true> nas_pdu; unbounded_octstring<true> nas_pdu;
erab_to_be_modify_item_bearer_mod_req_ext_ies_container ie_exts; protocol_ext_container_l<erab_to_be_modify_item_bearer_mod_req_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -5451,20 +5320,6 @@ struct erab_to_be_setup_item_ho_req_ies_o {
using erab_to_be_setup_list_ctxt_su_req_l = using erab_to_be_setup_list_ctxt_su_req_l =
dyn_array<protocol_ie_single_container_s<erab_to_be_setup_item_ctxt_su_req_ies_o> >; dyn_array<protocol_ie_single_container_s<erab_to_be_setup_item_ctxt_su_req_ies_o> >;
struct erab_to_be_setup_item_ho_req_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_to_be_setup_item_ho_req_s> erab_to_be_setup_item_ho_req;
// sequence methods
erab_to_be_setup_item_ho_req_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// E-RABToBeSwitchedDLItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // E-RABToBeSwitchedDLItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o erab_to_be_switched_dl_item_ext_ies_o; typedef s1ap_protocol_ext_empty_o erab_to_be_switched_dl_item_ext_ies_o;
@ -5518,20 +5373,6 @@ struct erab_to_be_switched_dl_item_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_to_be_switched_dl_item_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_to_be_switched_dl_item_s> erab_to_be_switched_dl_item;
// sequence methods
erab_to_be_switched_dl_item_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// E-RABToBeSwitchedULItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION // E-RABToBeSwitchedULItem-ExtIEs ::= OBJECT SET OF S1AP-PROTOCOL-EXTENSION
typedef s1ap_protocol_ext_empty_o erab_to_be_switched_ul_item_ext_ies_o; typedef s1ap_protocol_ext_empty_o erab_to_be_switched_ul_item_ext_ies_o;
@ -5585,20 +5426,6 @@ struct erab_to_be_switched_ul_item_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct erab_to_be_switched_ul_item_ies_container {
template <class valueT_>
using ie_field_s = erab_ie_container_list_item_s<valueT_>;
// member variables
ie_field_s<erab_to_be_switched_ul_item_s> erab_to_be_switched_ul_item;
// sequence methods
erab_to_be_switched_ul_item_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ECGI-List ::= SEQUENCE (SIZE (1..256)) OF EUTRAN-CGI // ECGI-List ::= SEQUENCE (SIZE (1..256)) OF EUTRAN-CGI
using ecgi_list_l = dyn_array<eutran_cgi_s>; using ecgi_list_l = dyn_array<eutran_cgi_s>;
@ -5916,28 +5743,13 @@ private:
rlf_report_info_s c; rlf_report_info_s c;
}; };
struct time_synchronisation_info_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool muting_availability_ind_present = false;
ie_field_s<muting_availability_ind_e> muting_availability_ind;
// sequence methods
time_synchronisation_info_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// TimeSynchronisationInfo ::= SEQUENCE // TimeSynchronisationInfo ::= SEQUENCE
struct time_synchronisation_info_s { struct time_synchronisation_info_s {
bool ext = false; bool ext = false;
bool ie_exts_present = false; bool ie_exts_present = false;
uint8_t stratum_level = 0; uint8_t stratum_level = 0;
synchronisation_status_e synchronisation_status; synchronisation_status_e synchronisation_status;
time_synchronisation_info_ext_ies_container ie_exts; protocol_ext_container_l<time_synchronisation_info_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -6225,28 +6037,13 @@ struct global_enb_id_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct son_info_reply_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool time_synchronisation_info_present = false;
ie_field_s<time_synchronisation_info_s> time_synchronisation_info;
// sequence methods
son_info_reply_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SONInformationReply ::= SEQUENCE // SONInformationReply ::= SEQUENCE
struct son_info_reply_s { struct son_info_reply_s {
bool ext = false; bool ext = false;
bool x2_tnl_cfg_info_present = false; bool x2_tnl_cfg_info_present = false;
bool ie_exts_present = false; bool ie_exts_present = false;
x2_tnl_cfg_info_s x2_tnl_cfg_info; x2_tnl_cfg_info_s x2_tnl_cfg_info;
son_info_reply_ext_ies_container ie_exts; protocol_ext_container_l<son_info_reply_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -6506,25 +6303,10 @@ struct enb_cfg_transfer_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct enb_cfg_transfer_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
bool son_cfg_transfer_ect_present = false;
ie_field_s<son_cfg_transfer_s> son_cfg_transfer_ect;
// sequence methods
enb_cfg_transfer_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ENBConfigurationTransfer ::= SEQUENCE // ENBConfigurationTransfer ::= SEQUENCE
struct enb_cfg_transfer_s { struct enb_cfg_transfer_s {
bool ext = false; bool ext = false;
enb_cfg_transfer_ies_container protocol_ies; protocol_ie_container_l<enb_cfg_transfer_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -6573,28 +6355,13 @@ struct supported_tas_item_ext_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct supported_tas_item_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool rat_type_present = false;
ie_field_s<rat_type_e> rat_type;
// sequence methods
supported_tas_item_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// SupportedTAs-Item ::= SEQUENCE // SupportedTAs-Item ::= SEQUENCE
struct supported_tas_item_s { struct supported_tas_item_s {
bool ext = false; bool ext = false;
bool ie_exts_present = false; bool ie_exts_present = false;
fixed_octstring<2, true> tac; fixed_octstring<2, true> tac;
bplmns_l broadcast_plmns; bplmns_l broadcast_plmns;
supported_tas_item_ext_ies_container ie_exts; protocol_ext_container_l<supported_tas_item_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -6748,25 +6515,10 @@ struct enb_cfg_upd_ack_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct enb_cfg_upd_ack_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
bool crit_diagnostics_present = false;
ie_field_s<crit_diagnostics_s> crit_diagnostics;
// sequence methods
enb_cfg_upd_ack_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ENBConfigurationUpdateAcknowledge ::= SEQUENCE // ENBConfigurationUpdateAcknowledge ::= SEQUENCE
struct enb_cfg_upd_ack_s { struct enb_cfg_upd_ack_s {
bool ext = false; bool ext = false;
enb_cfg_upd_ack_ies_container protocol_ies; protocol_ie_container_l<enb_cfg_upd_ack_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -7072,24 +6824,10 @@ struct enb_direct_info_transfer_ies_o {
static presence_e get_presence(const uint32_t& id); static presence_e get_presence(const uint32_t& id);
}; };
struct enb_direct_info_transfer_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
ie_field_s<inter_sys_info_transfer_type_c> inter_sys_info_transfer_type_edt;
// sequence methods
enb_direct_info_transfer_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ENBDirectInformationTransfer ::= SEQUENCE // ENBDirectInformationTransfer ::= SEQUENCE
struct enb_direct_info_transfer_s { struct enb_direct_info_transfer_s {
bool ext = false; bool ext = false;
enb_direct_info_transfer_ies_container protocol_ies; protocol_ie_container_l<enb_direct_info_transfer_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -7641,7 +7379,7 @@ struct ho_cmd_ies_o {
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
handov_type_e& handov_type(); handov_type_e& handov_type();
unbounded_octstring<true>& nas_security_paramsfrom_e_utran(); unbounded_octstring<true>& nas_security_paramsfrom_e_utran();
erab_data_forwarding_item_ies_container& erab_subjectto_data_forwarding_list(); erab_ie_container_list_l<erab_data_forwarding_item_ies_o>& erab_subjectto_data_forwarding_list();
erab_list_l& erab_to_release_list_ho_cmd(); erab_list_l& erab_to_release_list_ho_cmd();
unbounded_octstring<true>& target_to_source_transparent_container(); unbounded_octstring<true>& target_to_source_transparent_container();
unbounded_octstring<true>& target_to_source_transparent_container_secondary(); unbounded_octstring<true>& target_to_source_transparent_container_secondary();
@ -7650,7 +7388,7 @@ struct ho_cmd_ies_o {
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const handov_type_e& handov_type() const; const handov_type_e& handov_type() const;
const unbounded_octstring<true>& nas_security_paramsfrom_e_utran() const; const unbounded_octstring<true>& nas_security_paramsfrom_e_utran() const;
const erab_data_forwarding_item_ies_container& erab_subjectto_data_forwarding_list() const; const erab_ie_container_list_l<erab_data_forwarding_item_ies_o>& erab_subjectto_data_forwarding_list() const;
const erab_list_l& erab_to_release_list_ho_cmd() const; const erab_list_l& erab_to_release_list_ho_cmd() const;
const unbounded_octstring<true>& target_to_source_transparent_container() const; const unbounded_octstring<true>& target_to_source_transparent_container() const;
const unbounded_octstring<true>& target_to_source_transparent_container_secondary() const; const unbounded_octstring<true>& target_to_source_transparent_container_secondary() const;
@ -7659,7 +7397,7 @@ struct ho_cmd_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<crit_diagnostics_s, choice_buffer_t<crit_diagnostics_s,
erab_data_forwarding_item_ies_container, erab_ie_container_list_l<erab_data_forwarding_item_ies_o>,
erab_list_l, erab_list_l,
unbounded_octstring<true> > unbounded_octstring<true> >
c; c;
@ -7689,7 +7427,7 @@ struct ho_cmd_ies_container {
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<handov_type_e> handov_type; ie_field_s<handov_type_e> handov_type;
ie_field_s<unbounded_octstring<true> > nas_security_paramsfrom_e_utran; ie_field_s<unbounded_octstring<true> > nas_security_paramsfrom_e_utran;
ie_field_s<erab_data_forwarding_item_ies_container> erab_subjectto_data_forwarding_list; ie_field_s<erab_ie_container_list_l<erab_data_forwarding_item_ies_o> > erab_subjectto_data_forwarding_list;
ie_field_s<dyn_seq_of<protocol_ie_single_container_s<erab_item_ies_o>, 1, 256, true> > erab_to_release_list_ho_cmd; ie_field_s<dyn_seq_of<protocol_ie_single_container_s<erab_item_ies_o>, 1, 256, true> > erab_to_release_list_ho_cmd;
ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container; ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container;
ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container_secondary; ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container_secondary;
@ -8583,21 +8321,6 @@ private:
void destroy_(); void destroy_();
}; };
struct mdt_cfg_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool sig_based_mdtplmn_list_present = false;
ie_field_s<dyn_seq_of<fixed_octstring<3, true>, 1, 16, true> > sig_based_mdtplmn_list;
// sequence methods
mdt_cfg_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// MDT-Configuration ::= SEQUENCE // MDT-Configuration ::= SEQUENCE
struct mdt_cfg_s { struct mdt_cfg_s {
bool ext = false; bool ext = false;
@ -8605,7 +8328,7 @@ struct mdt_cfg_s {
mdt_activation_e mdt_activation; mdt_activation_e mdt_activation;
area_scope_of_mdt_c area_scope_of_mdt; area_scope_of_mdt_c area_scope_of_mdt;
mdt_mode_c mdt_mode; mdt_mode_c mdt_mode;
mdt_cfg_ext_ies_container ie_exts; protocol_ext_container_l<mdt_cfg_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -8776,21 +8499,6 @@ struct management_based_mdt_allowed_opts {
}; };
typedef enumerated<management_based_mdt_allowed_opts, true> management_based_mdt_allowed_e; typedef enumerated<management_based_mdt_allowed_opts, true> management_based_mdt_allowed_e;
struct pro_se_authorized_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool pro_se_ueto_network_relaying_present = false;
ie_field_s<pro_se_ueto_network_relaying_e> pro_se_ueto_network_relaying;
// sequence methods
pro_se_authorized_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// ProSeAuthorized ::= SEQUENCE // ProSeAuthorized ::= SEQUENCE
struct pro_se_authorized_s { struct pro_se_authorized_s {
bool ext = false; bool ext = false;
@ -8799,7 +8507,7 @@ struct pro_se_authorized_s {
bool ie_exts_present = false; bool ie_exts_present = false;
pro_se_direct_discovery_e pro_se_direct_discovery; pro_se_direct_discovery_e pro_se_direct_discovery;
pro_se_direct_communication_e pro_se_direct_communication; pro_se_direct_communication_e pro_se_direct_communication;
pro_se_authorized_ext_ies_container ie_exts; protocol_ext_container_l<pro_se_authorized_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -8842,21 +8550,6 @@ struct security_context_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct trace_activation_ext_ies_container {
template <class extT_>
using ie_field_s = protocol_ext_container_item_s<extT_>;
// member variables
bool mdt_cfg_present = false;
ie_field_s<mdt_cfg_s> mdt_cfg;
// sequence methods
trace_activation_ext_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// TraceActivation ::= SEQUENCE // TraceActivation ::= SEQUENCE
struct trace_activation_s { struct trace_activation_s {
bool ext = false; bool ext = false;
@ -8865,7 +8558,7 @@ struct trace_activation_s {
fixed_bitstring<8, false, true> interfaces_to_trace; fixed_bitstring<8, false, true> interfaces_to_trace;
trace_depth_e trace_depth; trace_depth_e trace_depth;
bounded_bitstring<1, 160, true, true> trace_collection_entity_ip_address; bounded_bitstring<1, 160, true, true> trace_collection_entity_ip_address;
trace_activation_ext_ies_container ie_exts; protocol_ext_container_l<trace_activation_ext_ies_o> ie_exts;
// ... // ...
// sequence methods // sequence methods
@ -8990,7 +8683,7 @@ struct ho_request_ies_o {
handov_type_e& handov_type(); handov_type_e& handov_type();
cause_c& cause(); cause_c& cause();
ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate();
erab_to_be_setup_item_ho_req_ies_container& erab_to_be_setup_list_ho_req(); erab_ie_container_list_l<erab_to_be_setup_item_ho_req_ies_o>& erab_to_be_setup_list_ho_req();
unbounded_octstring<true>& source_to_target_transparent_container(); unbounded_octstring<true>& source_to_target_transparent_container();
ue_security_cap_s& ue_security_cap(); ue_security_cap_s& ue_security_cap();
ho_restrict_list_s& ho_restrict_list(); ho_restrict_list_s& ho_restrict_list();
@ -9018,7 +8711,7 @@ struct ho_request_ies_o {
const handov_type_e& handov_type() const; const handov_type_e& handov_type() const;
const cause_c& cause() const; const cause_c& cause() const;
const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const;
const erab_to_be_setup_item_ho_req_ies_container& erab_to_be_setup_list_ho_req() const; const erab_ie_container_list_l<erab_to_be_setup_item_ho_req_ies_o>& erab_to_be_setup_list_ho_req() const;
const unbounded_octstring<true>& source_to_target_transparent_container() const; const unbounded_octstring<true>& source_to_target_transparent_container() const;
const ue_security_cap_s& ue_security_cap() const; const ue_security_cap_s& ue_security_cap() const;
const ho_restrict_list_s& ho_restrict_list() const; const ho_restrict_list_s& ho_restrict_list() const;
@ -9046,7 +8739,7 @@ struct ho_request_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<cause_c, choice_buffer_t<cause_c,
erab_to_be_setup_item_ho_req_ies_container, erab_ie_container_list_l<erab_to_be_setup_item_ho_req_ies_o>,
expected_ue_behaviour_s, expected_ue_behaviour_s,
fixed_bitstring<64, false, true>, fixed_bitstring<64, false, true>,
gummei_s, gummei_s,
@ -9103,7 +8796,7 @@ struct ho_request_ies_container {
ie_field_s<handov_type_e> handov_type; ie_field_s<handov_type_e> handov_type;
ie_field_s<cause_c> cause; ie_field_s<cause_c> cause;
ie_field_s<ue_aggregate_maximum_bitrate_s> ueaggregate_maximum_bitrate; ie_field_s<ue_aggregate_maximum_bitrate_s> ueaggregate_maximum_bitrate;
ie_field_s<erab_to_be_setup_item_ho_req_ies_container> erab_to_be_setup_list_ho_req; ie_field_s<erab_ie_container_list_l<erab_to_be_setup_item_ho_req_ies_o> > erab_to_be_setup_list_ho_req;
ie_field_s<unbounded_octstring<true> > source_to_target_transparent_container; ie_field_s<unbounded_octstring<true> > source_to_target_transparent_container;
ie_field_s<ue_security_cap_s> ue_security_cap; ie_field_s<ue_security_cap_s> ue_security_cap;
ie_field_s<ho_restrict_list_s> ho_restrict_list; ie_field_s<ho_restrict_list_s> ho_restrict_list;
@ -9190,8 +8883,8 @@ struct ho_request_ack_ies_o {
// getters // getters
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_admitted_item_ies_container& erab_admitted_list(); erab_ie_container_list_l<erab_admitted_item_ies_o>& erab_admitted_list();
erab_failedto_setup_item_ho_req_ack_ies_container& erab_failed_to_setup_list_ho_req_ack(); erab_ie_container_list_l<erab_failedto_setup_item_ho_req_ack_ies_o>& erab_failed_to_setup_list_ho_req_ack();
unbounded_octstring<true>& target_to_source_transparent_container(); unbounded_octstring<true>& target_to_source_transparent_container();
fixed_bitstring<27, false, true>& csg_id(); fixed_bitstring<27, false, true>& csg_id();
crit_diagnostics_s& crit_diagnostics(); crit_diagnostics_s& crit_diagnostics();
@ -9199,8 +8892,9 @@ struct ho_request_ack_ies_o {
ce_mode_b_support_ind_e& ce_mode_b_support_ind(); ce_mode_b_support_ind_e& ce_mode_b_support_ind();
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_admitted_item_ies_container& erab_admitted_list() const; const erab_ie_container_list_l<erab_admitted_item_ies_o>& erab_admitted_list() const;
const erab_failedto_setup_item_ho_req_ack_ies_container& erab_failed_to_setup_list_ho_req_ack() const; const erab_ie_container_list_l<erab_failedto_setup_item_ho_req_ack_ies_o>&
erab_failed_to_setup_list_ho_req_ack() const;
const unbounded_octstring<true>& target_to_source_transparent_container() const; const unbounded_octstring<true>& target_to_source_transparent_container() const;
const fixed_bitstring<27, false, true>& csg_id() const; const fixed_bitstring<27, false, true>& csg_id() const;
const crit_diagnostics_s& crit_diagnostics() const; const crit_diagnostics_s& crit_diagnostics() const;
@ -9210,8 +8904,8 @@ struct ho_request_ack_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<crit_diagnostics_s, choice_buffer_t<crit_diagnostics_s,
erab_admitted_item_ies_container, erab_ie_container_list_l<erab_admitted_item_ies_o>,
erab_failedto_setup_item_ho_req_ack_ies_container, erab_ie_container_list_l<erab_failedto_setup_item_ho_req_ack_ies_o>,
fixed_bitstring<27, false, true>, fixed_bitstring<27, false, true>,
unbounded_octstring<true> > unbounded_octstring<true> >
c; c;
@ -9239,8 +8933,8 @@ struct ho_request_ack_ies_container {
bool ce_mode_b_support_ind_present = false; bool ce_mode_b_support_ind_present = false;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_admitted_item_ies_container> erab_admitted_list; ie_field_s<erab_ie_container_list_l<erab_admitted_item_ies_o> > erab_admitted_list;
ie_field_s<erab_failedto_setup_item_ho_req_ack_ies_container> erab_failed_to_setup_list_ho_req_ack; ie_field_s<erab_ie_container_list_l<erab_failedto_setup_item_ho_req_ack_ies_o> > erab_failed_to_setup_list_ho_req_ack;
ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container; ie_field_s<unbounded_octstring<true> > target_to_source_transparent_container;
ie_field_s<fixed_bitstring<27, false, true> > csg_id; ie_field_s<fixed_bitstring<27, false, true> > csg_id;
ie_field_s<crit_diagnostics_s> crit_diagnostics; ie_field_s<crit_diagnostics_s> crit_diagnostics;
@ -11894,7 +11588,7 @@ struct path_switch_request_ack_ies_o {
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate(); ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate();
erab_to_be_switched_ul_item_ies_container& erab_to_be_switched_ul_list(); erab_ie_container_list_l<erab_to_be_switched_ul_item_ies_o>& erab_to_be_switched_ul_list();
erab_list_l& erab_to_be_released_list(); erab_list_l& erab_to_be_released_list();
security_context_s& security_context(); security_context_s& security_context();
crit_diagnostics_s& crit_diagnostics(); crit_diagnostics_s& crit_diagnostics();
@ -11910,7 +11604,7 @@ struct path_switch_request_ack_ies_o {
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const; const ue_aggregate_maximum_bitrate_s& ueaggregate_maximum_bitrate() const;
const erab_to_be_switched_ul_item_ies_container& erab_to_be_switched_ul_list() const; const erab_ie_container_list_l<erab_to_be_switched_ul_item_ies_o>& erab_to_be_switched_ul_list() const;
const erab_list_l& erab_to_be_released_list() const; const erab_list_l& erab_to_be_released_list() const;
const security_context_s& security_context() const; const security_context_s& security_context() const;
const crit_diagnostics_s& crit_diagnostics() const; const crit_diagnostics_s& crit_diagnostics() const;
@ -11927,8 +11621,8 @@ struct path_switch_request_ack_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<crit_diagnostics_s, choice_buffer_t<crit_diagnostics_s,
erab_ie_container_list_l<erab_to_be_switched_ul_item_ies_o>,
erab_list_l, erab_list_l,
erab_to_be_switched_ul_item_ies_container,
pro_se_authorized_s, pro_se_authorized_s,
security_context_s, security_context_s,
ue_aggregate_maximum_bitrate_s, ue_aggregate_maximum_bitrate_s,
@ -12031,7 +11725,7 @@ struct path_switch_request_ies_o {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
// getters // getters
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_to_be_switched_dl_item_ies_container& erab_to_be_switched_dl_list(); erab_ie_container_list_l<erab_to_be_switched_dl_item_ies_o>& erab_to_be_switched_dl_list();
uint64_t& source_mme_ue_s1ap_id(); uint64_t& source_mme_ue_s1ap_id();
eutran_cgi_s& eutran_cgi(); eutran_cgi_s& eutran_cgi();
tai_s& tai(); tai_s& tai();
@ -12044,7 +11738,7 @@ struct path_switch_request_ies_o {
unbounded_octstring<true>& lhn_id(); unbounded_octstring<true>& lhn_id();
rrc_establishment_cause_e& rrc_resume_cause(); rrc_establishment_cause_e& rrc_resume_cause();
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_to_be_switched_dl_item_ies_container& erab_to_be_switched_dl_list() const; const erab_ie_container_list_l<erab_to_be_switched_dl_item_ies_o>& erab_to_be_switched_dl_list() const;
const uint64_t& source_mme_ue_s1ap_id() const; const uint64_t& source_mme_ue_s1ap_id() const;
const eutran_cgi_s& eutran_cgi() const; const eutran_cgi_s& eutran_cgi() const;
const tai_s& tai() const; const tai_s& tai() const;
@ -12059,7 +11753,7 @@ struct path_switch_request_ies_o {
private: private:
types type_; types type_;
choice_buffer_t<erab_to_be_switched_dl_item_ies_container, choice_buffer_t<erab_ie_container_list_l<erab_to_be_switched_dl_item_ies_o>,
eutran_cgi_s, eutran_cgi_s,
fixed_bitstring<27, false, true>, fixed_bitstring<27, false, true>,
gummei_s, gummei_s,
@ -13072,16 +12766,17 @@ struct ue_context_resume_request_ies_o {
// getters // getters
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_failed_to_resume_item_resume_req_ies_container& erab_failed_to_resume_list_resume_req(); erab_ie_container_list_l<erab_failed_to_resume_item_resume_req_ies_o>& erab_failed_to_resume_list_resume_req();
rrc_establishment_cause_e& rrc_resume_cause(); rrc_establishment_cause_e& rrc_resume_cause();
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_failed_to_resume_item_resume_req_ies_container& erab_failed_to_resume_list_resume_req() const; const erab_ie_container_list_l<erab_failed_to_resume_item_resume_req_ies_o>&
erab_failed_to_resume_list_resume_req() const;
const rrc_establishment_cause_e& rrc_resume_cause() const; const rrc_establishment_cause_e& rrc_resume_cause() const;
private: private:
types type_; types type_;
choice_buffer_t<erab_failed_to_resume_item_resume_req_ies_container> c; choice_buffer_t<erab_ie_container_list_l<erab_failed_to_resume_item_resume_req_ies_o> > c;
void destroy_(); void destroy_();
}; };
@ -13126,20 +12821,24 @@ struct ue_context_resume_resp_ies_o {
// getters // getters
uint64_t& mme_ue_s1ap_id(); uint64_t& mme_ue_s1ap_id();
uint32_t& enb_ue_s1ap_id(); uint32_t& enb_ue_s1ap_id();
erab_failed_to_resume_item_resume_res_ies_container& erab_failed_to_resume_list_resume_res(); erab_ie_container_list_l<erab_failed_to_resume_item_resume_res_ies_o>& erab_failed_to_resume_list_resume_res();
crit_diagnostics_s& crit_diagnostics(); crit_diagnostics_s& crit_diagnostics();
security_context_s& security_context(); security_context_s& security_context();
pending_data_ind_e& pending_data_ind(); pending_data_ind_e& pending_data_ind();
const uint64_t& mme_ue_s1ap_id() const; const uint64_t& mme_ue_s1ap_id() const;
const uint32_t& enb_ue_s1ap_id() const; const uint32_t& enb_ue_s1ap_id() const;
const erab_failed_to_resume_item_resume_res_ies_container& erab_failed_to_resume_list_resume_res() const; const erab_ie_container_list_l<erab_failed_to_resume_item_resume_res_ies_o>&
erab_failed_to_resume_list_resume_res() const;
const crit_diagnostics_s& crit_diagnostics() const; const crit_diagnostics_s& crit_diagnostics() const;
const security_context_s& security_context() const; const security_context_s& security_context() const;
const pending_data_ind_e& pending_data_ind() const; const pending_data_ind_e& pending_data_ind() const;
private: private:
types type_; types type_;
choice_buffer_t<crit_diagnostics_s, erab_failed_to_resume_item_resume_res_ies_container, security_context_s> c; choice_buffer_t<crit_diagnostics_s,
erab_ie_container_list_l<erab_failed_to_resume_item_resume_res_ies_o>,
security_context_s>
c;
void destroy_(); void destroy_();
}; };
@ -13906,25 +13605,10 @@ struct mmecp_relocation_ind_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct mme_cfg_transfer_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
bool son_cfg_transfer_mct_present = false;
ie_field_s<son_cfg_transfer_s> son_cfg_transfer_mct;
// sequence methods
mme_cfg_transfer_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// MMEConfigurationTransfer ::= SEQUENCE // MMEConfigurationTransfer ::= SEQUENCE
struct mme_cfg_transfer_s { struct mme_cfg_transfer_s {
bool ext = false; bool ext = false;
mme_cfg_transfer_ies_container protocol_ies; protocol_ie_container_l<mme_cfg_transfer_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -13966,25 +13650,10 @@ struct mme_cfg_upd_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct mme_cfg_upd_ack_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
bool crit_diagnostics_present = false;
ie_field_s<crit_diagnostics_s> crit_diagnostics;
// sequence methods
mme_cfg_upd_ack_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// MMEConfigurationUpdateAcknowledge ::= SEQUENCE // MMEConfigurationUpdateAcknowledge ::= SEQUENCE
struct mme_cfg_upd_ack_s { struct mme_cfg_upd_ack_s {
bool ext = false; bool ext = false;
mme_cfg_upd_ack_ies_container protocol_ies; protocol_ie_container_l<mme_cfg_upd_ack_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -14023,24 +13692,10 @@ struct mme_cfg_upd_fail_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct mme_direct_info_transfer_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
ie_field_s<inter_sys_info_transfer_type_c> inter_sys_info_transfer_type_mdt;
// sequence methods
mme_direct_info_transfer_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// MMEDirectInformationTransfer ::= SEQUENCE // MMEDirectInformationTransfer ::= SEQUENCE
struct mme_direct_info_transfer_s { struct mme_direct_info_transfer_s {
bool ext = false; bool ext = false;
mme_direct_info_transfer_ies_container protocol_ies; protocol_ie_container_l<mme_direct_info_transfer_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -14163,25 +13818,10 @@ struct overload_start_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct overload_stop_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
bool gummei_list_present = false;
ie_field_s<dyn_seq_of<gummei_s, 1, 256, true> > gummei_list;
// sequence methods
overload_stop_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// OverloadStop ::= SEQUENCE // OverloadStop ::= SEQUENCE
struct overload_stop_s { struct overload_stop_s {
bool ext = false; bool ext = false;
overload_stop_ies_container protocol_ies; protocol_ie_container_l<overload_stop_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -14311,7 +13951,7 @@ struct path_switch_request_ies_container {
bool lhn_id_present = false; bool lhn_id_present = false;
bool rrc_resume_cause_present = false; bool rrc_resume_cause_present = false;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_to_be_switched_dl_item_ies_container> erab_to_be_switched_dl_list; ie_field_s<erab_ie_container_list_l<erab_to_be_switched_dl_item_ies_o> > erab_to_be_switched_dl_list;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > source_mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > source_mme_ue_s1ap_id;
ie_field_s<eutran_cgi_s> eutran_cgi; ie_field_s<eutran_cgi_s> eutran_cgi;
ie_field_s<tai_s> tai; ie_field_s<tai_s> tai;
@ -14364,7 +14004,7 @@ struct path_switch_request_ack_ies_container {
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<ue_aggregate_maximum_bitrate_s> ueaggregate_maximum_bitrate; ie_field_s<ue_aggregate_maximum_bitrate_s> ueaggregate_maximum_bitrate;
ie_field_s<erab_to_be_switched_ul_item_ies_container> erab_to_be_switched_ul_list; ie_field_s<erab_ie_container_list_l<erab_to_be_switched_ul_item_ies_o> > erab_to_be_switched_ul_list;
ie_field_s<dyn_seq_of<protocol_ie_single_container_s<erab_item_ies_o>, 1, 256, true> > erab_to_be_released_list; ie_field_s<dyn_seq_of<protocol_ie_single_container_s<erab_item_ies_o>, 1, 256, true> > erab_to_be_released_list;
ie_field_s<security_context_s> security_context; ie_field_s<security_context_s> security_context;
ie_field_s<crit_diagnostics_s> crit_diagnostics; ie_field_s<crit_diagnostics_s> crit_diagnostics;
@ -14554,24 +14194,10 @@ struct reset_ack_s {
void to_json(json_writer& j) const; void to_json(json_writer& j) const;
}; };
struct retrieve_ue_info_ies_container {
template <class valueT_>
using ie_field_s = protocol_ie_container_item_s<valueT_>;
// member variables
ie_field_s<s_tmsi_s> s_tmsi;
// sequence methods
retrieve_ue_info_ies_container();
SRSASN_CODE pack(bit_ref& bref) const;
SRSASN_CODE unpack(cbit_ref& bref);
void to_json(json_writer& j) const;
};
// RetrieveUEInformation ::= SEQUENCE // RetrieveUEInformation ::= SEQUENCE
struct retrieve_ue_info_s { struct retrieve_ue_info_s {
bool ext = false; bool ext = false;
retrieve_ue_info_ies_container protocol_ies; protocol_ie_container_l<retrieve_ue_info_ies_o> protocol_ies;
// ... // ...
// sequence methods // sequence methods
@ -15073,7 +14699,8 @@ struct ue_context_resume_request_ies_container {
bool rrc_resume_cause_present = false; bool rrc_resume_cause_present = false;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_failed_to_resume_item_resume_req_ies_container> erab_failed_to_resume_list_resume_req; ie_field_s<erab_ie_container_list_l<erab_failed_to_resume_item_resume_req_ies_o> >
erab_failed_to_resume_list_resume_req;
ie_field_s<rrc_establishment_cause_e> rrc_resume_cause; ie_field_s<rrc_establishment_cause_e> rrc_resume_cause;
// sequence methods // sequence methods
@ -15106,7 +14733,8 @@ struct ue_context_resume_resp_ies_container {
bool pending_data_ind_present = false; bool pending_data_ind_present = false;
ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id; ie_field_s<integer<uint64_t, 0, 4294967295, false, true> > mme_ue_s1ap_id;
ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id; ie_field_s<integer<uint32_t, 0, 16777215, false, true> > enb_ue_s1ap_id;
ie_field_s<erab_failed_to_resume_item_resume_res_ies_container> erab_failed_to_resume_list_resume_res; ie_field_s<erab_ie_container_list_l<erab_failed_to_resume_item_resume_res_ies_o> >
erab_failed_to_resume_list_resume_res;
ie_field_s<crit_diagnostics_s> crit_diagnostics; ie_field_s<crit_diagnostics_s> crit_diagnostics;
ie_field_s<security_context_s> security_context; ie_field_s<security_context_s> security_context;
ie_field_s<pending_data_ind_e> pending_data_ind; ie_field_s<pending_data_ind_e> pending_data_ind;
@ -16149,7 +15777,8 @@ using multi_cell_load_report_resp_l = dyn_array<multi_cell_load_report_resp_item
// ProtocolError-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF // ProtocolError-IE-ContainerList{S1AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE (SIZE (1..256)) OF
// ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam} // ProtocolIE-SingleContainer{S1AP-PROTOCOL-IES : IEsSetParam}
template <class ies_set_paramT_> template <class ies_set_paramT_>
using protocol_error_ie_container_list_l = dyn_array<protocol_ie_single_container_item_s<ies_set_paramT_> >; using protocol_error_ie_container_list_l =
dyn_seq_of<protocol_ie_single_container_item_s<ies_set_paramT_>, 1, 256, true>;
// ReportingCellList-Item ::= SEQUENCE // ReportingCellList-Item ::= SEQUENCE
struct report_cell_list_item_s { struct report_cell_list_item_s {

@ -1173,7 +1173,7 @@ SRSASN_CODE unpack_bitfield(uint8_t* buf, cbit_ref& bref, uint32_t n, uint32_t l
void from_number(uint8_t* ptr, uint64_t number, uint32_t nbits) void from_number(uint8_t* ptr, uint64_t number, uint32_t nbits)
{ {
if (nbits > 64) { if (nbits > 64u) {
log_error("bitstring of size=%d does not fit in an uint64_t\n", nbits); log_error("bitstring of size=%d does not fit in an uint64_t\n", nbits);
return; return;
} }

File diff suppressed because it is too large Load Diff

@ -94,6 +94,29 @@ int test_init_ctxt_setup_req()
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }
int test_ue_ctxt_release_req()
{
uint8_t s1ap_msg[] = {0x00, 0x12, 0x40, 0x15, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
0x00, 0x08, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x40, 0x02, 0x02, 0x80};
// 00124015000003000000020001000800020001000240020280
cbit_ref bref(&s1ap_msg[0], sizeof(s1ap_msg));
s1ap_pdu_c pdu;
TESTASSERT(pdu.unpack(bref) == SRSASN_SUCCESS);
TESTASSERT(pdu.type().value == s1ap_pdu_c::types_opts::init_msg);
TESTASSERT(pdu.init_msg().proc_code == ASN1_S1AP_ID_UE_CONTEXT_RELEASE_REQUEST);
auto& req = pdu.init_msg().value.ue_context_release_request().protocol_ies;
TESTASSERT(req.mme_ue_s1ap_id.value.value == 1);
TESTASSERT(req.enb_ue_s1ap_id.value.value == 1);
TESTASSERT(req.cause.value.type().value == cause_c::types_opts::radio_network);
TESTASSERT(req.cause.value.radio_network().value == cause_radio_network_opts::user_inactivity);
TESTASSERT(test_pack_unpack_consistency(pdu) == SRSASN_SUCCESS);
return SRSLTE_SUCCESS;
}
template <typename T, typename U> template <typename T, typename U>
bool is_same_type(U& u) bool is_same_type(U& u)
{ {
@ -139,6 +162,42 @@ int test_proc_id_consistency()
return SRSLTE_SUCCESS; return SRSLTE_SUCCESS;
} }
int test_ho_request()
{
uint8_t s1ap_msg[] = {
0x00, 0x01, 0x00, 0x80, 0xe6, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x02, 0x00, 0x64, 0x00, 0x01, 0x00, 0x01, 0x00,
0x00, 0x02, 0x40, 0x02, 0x00, 0x00, 0x00, 0x42, 0x00, 0x0a, 0x18, 0x3b, 0x9a, 0xca, 0x00, 0x60, 0x3b, 0x9a, 0xca,
0x00, 0x00, 0x35, 0x00, 0x19, 0x00, 0x00, 0x1b, 0x00, 0x14, 0x4a, 0x1f, 0x0a, 0x00, 0x21, 0xf0, 0xb7, 0x36, 0x1c,
0x56, 0x00, 0x09, 0x3c, 0x00, 0x00, 0x00, 0x8f, 0x40, 0x01, 0x00, 0x00, 0x68, 0x00, 0x75, 0x74, 0x00, 0x5f, 0x0a,
0x10, 0x0c, 0x81, 0xa0, 0x00, 0x00, 0x18, 0x00, 0x02, 0xe8, 0x7f, 0xe4, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x05,
0x91, 0x00, 0x00, 0x02, 0x90, 0x09, 0x78, 0x00, 0x00, 0x00, 0x62, 0x7c, 0x1f, 0x50, 0x29, 0x8f, 0x00, 0xe9, 0xce,
0x02, 0x13, 0x00, 0x00, 0x95, 0x01, 0x00, 0x46, 0x40, 0x00, 0x00, 0x01, 0x90, 0x13, 0x84, 0x00, 0x1c, 0x00, 0x67,
0x00, 0xa0, 0x51, 0x80, 0x41, 0x40, 0x06, 0x70, 0xdf, 0xbc, 0x44, 0x00, 0x6b, 0x01, 0x40, 0x00, 0x80, 0x02, 0x08,
0x00, 0xc1, 0x4c, 0xa2, 0xd5, 0x4e, 0x28, 0x03, 0x51, 0x72, 0x40, 0xe0, 0x59, 0x14, 0x01, 0x21, 0x7b, 0x00, 0x00,
0x09, 0xf1, 0x07, 0x00, 0x19, 0xb0, 0x10, 0x00, 0x09, 0xf1, 0x07, 0x00, 0x19, 0xc0, 0x21, 0x00, 0x00, 0x1f, 0x00,
0x6b, 0x00, 0x05, 0x18, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x21, 0x10, 0x8b, 0x0d, 0xab, 0xd7, 0xe5, 0x98,
0x34, 0xb3, 0xef, 0x6c, 0xc1, 0xaa, 0xa7, 0x27, 0xfb, 0xf4, 0x53, 0x08, 0xff, 0x74, 0x94, 0x7c, 0xa7, 0x1b, 0xd9,
0xb4, 0x37, 0xb9, 0x02, 0x78, 0x62, 0x12};
// 00010080E600000800000002006400010001000002400200000042000A183B9ACA00603B9ACA000035001900001B00144A1F0A0021F0B7361C5600093C0000008F4001000068007574005F0A100C81A00000180002E87FE40000150000000591000002900978000000627C1F50298F00E9CE021300009501004640000001901384001C006700A0518041400670DFBC44006B01400080020800C14CA2D54E2803517240E0591401217B000009F1070019B0100009F1070019C02100001F006B000518000C000000280021108B0DABD7E59834B3EF6CC1AAA727FBF45308FF74947CA71BD9B437B902786212
cbit_ref bref(&s1ap_msg[0], sizeof(s1ap_msg));
s1ap_pdu_c pdu;
TESTASSERT(pdu.unpack(bref) == SRSASN_SUCCESS);
TESTASSERT(pdu.type().value == s1ap_pdu_c::types_opts::init_msg);
TESTASSERT(pdu.init_msg().proc_code == ASN1_S1AP_ID_HO_RES_ALLOC);
TESTASSERT(pdu.init_msg().crit.value == crit_opts::reject);
auto& horeq = pdu.init_msg().value.ho_request().protocol_ies;
auto& erab_item = horeq.erab_to_be_setup_list_ho_req.value[0].value.erab_to_be_setup_item_ho_req();
TESTASSERT(erab_item.erab_id == 5);
TESTASSERT(erab_item.gtp_teid.to_string() == "b7361c56");
TESTASSERT(test_pack_unpack_consistency(pdu) == SRSASN_SUCCESS);
return SRSLTE_SUCCESS;
}
int main() int main()
{ {
srslte::logmap::set_default_log_level(srslte::LOG_LEVEL_DEBUG); srslte::logmap::set_default_log_level(srslte::LOG_LEVEL_DEBUG);
@ -146,7 +205,9 @@ int main()
TESTASSERT(test_s1setup_request() == 0); TESTASSERT(test_s1setup_request() == 0);
TESTASSERT(test_init_ctxt_setup_req() == 0); TESTASSERT(test_init_ctxt_setup_req() == 0);
TESTASSERT(test_ue_ctxt_release_req() == 0);
TESTASSERT(test_proc_id_consistency() == 0); TESTASSERT(test_proc_id_consistency() == 0);
TESTASSERT(test_ho_request() == 0);
printf("Success\n"); printf("Success\n");
return 0; return 0;

Loading…
Cancel
Save