Merge branch 'next' into agpl_next

master
Codebot 4 years ago committed by Your Name
commit aeb4a5fc9d

@ -1,228 +1,24 @@
srsRAN srsRAN
======== ======
[![Build Status](https://travis-ci.org/srsRAN/srsRAN.svg?branch=master)](https://travis-ci.org/srsRAN/srsRAN) [![Build Status](https://travis-ci.org/srsRAN/srsRAN.svg?branch=master)](https://travis-ci.org/srsRAN/srsRAN)
[![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/srsRAN/srsRAN.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/srsRAN/srsRAN/context:cpp) [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/srsRAN/srsRAN.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/srsRAN/srsRAN/context:cpp)
[![Coverity](https://scan.coverity.com/projects/10045/badge.svg)](https://scan.coverity.com/projects/srsran) [![Coverity](https://scan.coverity.com/projects/10045/badge.svg)](https://scan.coverity.com/projects/srsran)
srsRAN is a 4G/5G software radio suite developed by SRS (www.softwareradiosystems.com) srsRAN is a 4G/5G software radio suite developed by [SRS](http://www.srs.io).
See the srsRAN project pages (www.srsran.com) for documentation, guides and project news.
It includes: See the [srsRAN project pages](https://www.srsran.com) for information, guides and project news.
* srsUE - a complete SDR 4G/5G UE application featuring all layers from PHY to IP
* srsENB - a complete SDR LTE eNodeB application
* srsEPC - a light-weight LTE core network implementation with MME, HSS and S/P-GW
* a highly modular set of common libraries for PHY, MAC, RLC, PDCP, RRC, NAS, S1AP and GW layers.
For license details, see LICENSE file. The srsRAN suite includes:
* srsUE - a full-stack SDR 4G/5G-NSA UE application (5G-SA coming soon)
Common Features * srsENB - a full-stack SDR 4G eNodeB application (5G-NSA and 5G-SA coming soon)
--------------- * srsEPC - a light-weight 4G core network implementation with MME, HSS and S/P-GW
* LTE Release 10 aligned
* Tested bandwidths: 1.4, 3, 5, 10, 15 and 20 MHz
* Transmission mode 1 (single antenna), 2 (transmit diversity), 3 (CCD) and 4 (closed-loop spatial multiplexing)
* Carrier Aggregation support
* QAM256 support in Downlink
* Frequency-based ZF and MMSE equalizer
* Evolved multimedia broadcast and multicast service (eMBMS)
* Highly optimized Turbo Decoder available in Intel SSE4.1/AVX2 (+150 Mbps)
* MAC, RLC, PDCP, RRC, NAS, S1AP and GW layers
* Detailed log system with per-layer log levels and hex dumps
* MAC layer Wireshark packet capture
* Command-line trace metrics
* Detailed input configuration files
* Channel simulator for EPA, EVA, and ETU 3GPP channels
* ZeroMQ-based fake RF driver for I/Q over IPC/network
srsUE Features
--------------
* FDD and TDD configuration
* Cell search and synchronization procedure for the UE
* Soft USIM supporting Milenage and XOR authentication
* Hard USIM support using PCSC framework
* Virtual network interface *tun_srsue* created upon network attach
* QoS support
* 150 Mbps DL in 20 MHz MIMO TM3/TM4 or 2xCA configuration (195 Mbps with QAM256)
* 75 Mbps DL in 20 MHz SISO configuration (98 Mbps with QAM256)
* 36 Mbps DL in 10 MHz SISO configuration
srsUE has been fully tested and validated with the following network equipment:
* Amarisoft LTE100 eNodeB and EPC
* Nokia FlexiRadio family FSMF system module with 1800MHz FHED radio module and TravelHawk EPC simulator
* Huawei DBS3900
* Octasic Flexicell LTE-FDD NIB
srsENB Features
---------------
* FDD configuration
* IntraENB- and InterENB (S1) mobility support
* Proportional-fair and Round Robin MAC scheduler with FAPI-like C++ API
* SR support
* Periodic and Aperiodic CQI feedback support
* Standard S1AP and GTP-U interfaces to the Core Network
* 150 Mbps DL in 20 MHz MIMO TM3/TM4 with commercial UEs (195 Mbps with QAM256)
* 75 Mbps DL in SISO configuration with commercial UEs
* 50 Mbps UL in 20 MHz with commercial UEs
* User-plane encryption
srsENB has been tested and validated with the following handsets:
* LG Nexus 5 and 4
* Motorola Moto G4 plus and G5
* Huawei P9/P9lite, P10/P10lite, P20/P20lite
* Huawei dongles: E3276 and E398
srsEPC Features
---------------
* Single binary, light-weight LTE EPC implementation with:
* MME (Mobility Management Entity) with standard S1AP and GTP-U interface to eNB
* S/P-GW with standard SGi exposed as virtual network interface (TUN device)
* HSS (Home Subscriber Server) with configurable user database in CSV format
* Support for paging
Hardware
--------
srsRAN has native support for the Ettus Universal Hardware Driver (UHD) and the bladeRF driver. We also support SoapySDR.
Thus, any hardware supported by SoapySDR can be used. There is no sampling rate conversion, therefore the hardware should
support 30.72 MHz clock in order to work correctly with LTE sampling frequencies and decode signals from live LTE base stations.
We have tested the following hardware:
* USRP B2x0
* USRP B205mini
* USRP X3x0
* LimeSDR
* bladeRF
For Ettus Research equipment we recommended the LTS version of UHD, i.e. either 3.9.7 or 3.15.
Build Instructions
------------------
* Mandatory requirements:
* Common:
* cmake https://cmake.org/
* libfftw http://www.fftw.org/
* PolarSSL/mbedTLS https://tls.mbed.org
* srsUE:
* Boost: http://www.boost.org
* srsENB:
* Boost: http://www.boost.org
* lksctp: http://lksctp.sourceforge.net/
* config: http://www.hyperrealm.com/libconfig/
* srsEPC:
* Boost: http://www.boost.org
* lksctp: http://lksctp.sourceforge.net/
* config: http://www.hyperrealm.com/libconfig/
For example, on Ubuntu, one can install the mandatory build dependencies with:
```
sudo apt-get install build-essential cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
```
or on Fedora:
```
dnf install cmake fftw3-devel mbedtls-devel lksctp-tools-devel libconfig-devel boost-devel
```
For CentOS, use the Fedora packages but replace `libconfig-devel` with just `libconfig`.
Note that depending on your flavor and version of Linux, the actual package names may be different.
* Optional requirements:
* srsgui: https://github.com/srsran/srsgui - for real-time plotting.
* libpcsclite-dev: https://pcsclite.apdu.fr/ - for accessing smart card readers
* libdw-dev libdw - for truly informative backtraces using backward-cpp
* RF front-end driver:
* UHD: https://github.com/EttusResearch/uhd
* SoapySDR: https://github.com/pothosware/SoapySDR
* BladeRF: https://github.com/Nuand/bladeRF
* ZeroMQ: https://github.com/zeromq
Download and build srsRAN:
```
git clone https://github.com/srsRAN/srsRAN.git
cd srsRAN
mkdir build
cd build
cmake ../
make
make test
```
Install srsRAN: For application features, build instructions and user guides see the [srsRAN documentation](https://docs.srsran.com).
``` For license details, see LICENSE file.
sudo make install
srsran_install_configs.sh user
```
This installs srsRAN and also copies the default srsRAN config files to
the user's home directory (~/.config/srsran).
Execution Instructions
----------------------
The srsUE, srsENB and srsEPC applications include example configuration files
that should be copied (manually or by using the convenience script) and modified,
if needed, to meet the system configuration.
On many systems they should work out of the box.
By default, all applications will search for config files in the user's home
directory (~/.config/srsran) upon startup.
Note that you have to execute the applications with root privileges to enable
real-time thread priorities and to permit creation of virtual network interfaces.
srsENB and srsEPC can run on the same machine as a network-in-the-box configuration.
srsUE needs to run on a separate machine.
If you have installed the software suite using ```sudo make install``` and
have installed the example config files using ```srsran_install_configs.sh user```,
you may just start all applications with their default parameters.
### srsEPC
On machine 1, run srsEPC as follows:
```
sudo srsepc
```
Using the default configuration, this creates a virtual network interface
named "srs_spgw_sgi" on machine 1 with IP 172.16.0.1. All connected UEs
will be assigned an IP in this network.
### srsENB
Also on machine 1, but in another console, run srsENB as follows:
```
sudo srsenb
```
### srsUE
On machine 2, run srsUE as follows:
```
sudo srsue
```
Using the default configuration, this creates a virtual network interface
named "tun_srsue" on machine 2 with an IP in the network 172.16.0.x.
Assuming the UE has been assigned IP 172.16.0.2, you may now exchange
IP traffic with machine 1 over the LTE link. For example, run a ping to
the default SGi IP address:
```
ping 172.16.0.1
```
Support Support
======== =======
Mailing list: http://www.softwareradiosystems.com/mailman/listinfo/srsran-users Mailing list: http://www.softwareradiosystems.com/mailman/listinfo/srsran-users

@ -101,7 +101,7 @@ struct zerobit_counter {
#ifdef __GNUC__ // clang and gcc #ifdef __GNUC__ // clang and gcc
/// Specializations for unsigned /// Specializations for unsigned
template <typename Integer> template <typename Integer>
struct zerobit_counter<Integer, sizeof(unsigned)> { struct zerobit_counter<Integer, 4> {
static Integer msb_count(Integer value) static Integer msb_count(Integer value)
{ {
return (value) ? __builtin_clz(value) : std::numeric_limits<Integer>::digits; return (value) ? __builtin_clz(value) : std::numeric_limits<Integer>::digits;
@ -111,19 +111,17 @@ struct zerobit_counter<Integer, sizeof(unsigned)> {
return (value) ? __builtin_ctz(value) : std::numeric_limits<Integer>::digits; return (value) ? __builtin_ctz(value) : std::numeric_limits<Integer>::digits;
} }
}; };
#endif
#ifdef __GNUC__ // clang and gcc /// Specializations for unsigned long long
/// Specializations for unsigned long
template <typename Integer> template <typename Integer>
struct zerobit_counter<Integer, sizeof(unsigned long)> { struct zerobit_counter<Integer, 8> {
static Integer msb_count(Integer value) static Integer msb_count(Integer value)
{ {
return (value) ? __builtin_clzl(value) : std::numeric_limits<Integer>::digits; return (value) ? __builtin_clzll(value) : std::numeric_limits<Integer>::digits;
} }
static Integer lsb_count(Integer value) static Integer lsb_count(Integer value)
{ {
return (value) ? __builtin_ctzl(value) : std::numeric_limits<Integer>::digits; return (value) ? __builtin_ctzll(value) : std::numeric_limits<Integer>::digits;
} }
}; };
#endif #endif

@ -542,10 +542,11 @@ public:
std::swap(base_t::buffer, other.buffer); std::swap(base_t::buffer, other.buffer);
} }
void set_size(size_t size) void set_size(size_t sz)
{ {
srsran_assert(base_t::empty(), "Dynamic resizes not supported when circular buffer is not empty"); srsran_assert(base_t::empty() or sz == base_t::size(),
base_t::buffer.resize(size); "Dynamic resizes not supported when circular buffer is not empty");
base_t::buffer.resize(sz);
} }
}; };

@ -192,7 +192,7 @@ template <typename R, typename... Args, size_t Capacity, bool ForbidAlloc>
constexpr task_details::empty_table_t<R, Args...> move_callback<R(Args...), Capacity, ForbidAlloc>::empty_table; constexpr task_details::empty_table_t<R, Args...> move_callback<R(Args...), Capacity, ForbidAlloc>::empty_table;
//! Generic move task //! Generic move task
using move_task_t = move_callback<void()>; using move_task_t = move_callback<void(), 64>;
} // namespace srsran } // namespace srsran

@ -22,6 +22,7 @@
#ifndef SRSASN_COMMON_UTILS_H #ifndef SRSASN_COMMON_UTILS_H
#define SRSASN_COMMON_UTILS_H #define SRSASN_COMMON_UTILS_H
#include "srsran/common/srsran_assert.h"
#include "srsran/srslog/srslog.h" #include "srsran/srslog/srslog.h"
#include <algorithm> #include <algorithm>
#include <array> #include <array>
@ -91,9 +92,16 @@ void log_invalid_access_choice_id(uint32_t val, uint32_t choice_id);
void log_invalid_choice_id(uint32_t val, const char* choice_type); void log_invalid_choice_id(uint32_t val, const char* choice_type);
void invalid_enum_number(int value, const char* name); void invalid_enum_number(int value, const char* name);
void assert_choice_type(uint32_t val, uint32_t choice_id); void assert_choice_type(uint32_t val, uint32_t choice_id);
void assert_choice_type(const std::string& access_type, template <typename Enumerated>
const std::string& current_type, void assert_choice_type(typename Enumerated::options access_type, Enumerated& current_type, const char* choice_type)
const std::string& choice_type); {
if (srsran_unlikely(current_type.value != access_type)) {
log_error("Invalid field access for choice type \"%s\" (\"%s\"!=\"%s\")",
choice_type,
Enumerated(access_type).to_string(),
current_type.to_string());
}
}
/************************ /************************
error handling error handling

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -251,7 +251,7 @@ struct plmn_id_info_s {
struct cell_reserved_for_oper_opts { struct cell_reserved_for_oper_opts {
enum options { reserved, not_reserved, nulltype } value; enum options { reserved, not_reserved, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_reserved_for_oper_opts> cell_reserved_for_oper_e_; typedef enumerated<cell_reserved_for_oper_opts> cell_reserved_for_oper_e_;
@ -270,9 +270,9 @@ struct alpha_r12_opts {
enum options { al0, al04, al05, al06, al07, al08, al09, al1, nulltype } value; enum options { al0, al04, al05, al06, al07, al08, al09, al1, nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<alpha_r12_opts> alpha_r12_e; typedef enumerated<alpha_r12_opts> alpha_r12_e;
@ -319,7 +319,7 @@ struct bandclass_cdma2000_opts {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<bandclass_cdma2000_opts, true> bandclass_cdma2000_e; typedef enumerated<bandclass_cdma2000_opts, true> bandclass_cdma2000_e;
@ -327,7 +327,7 @@ typedef enumerated<bandclass_cdma2000_opts, true> bandclass_cdma2000_e;
struct setup_opts { struct setup_opts {
enum options { release, setup, nulltype } value; enum options { release, setup, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<setup_opts> setup_e; typedef enumerated<setup_opts> setup_e;
@ -354,7 +354,7 @@ struct filt_coef_opts {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<filt_coef_opts, true> filt_coef_e; typedef enumerated<filt_coef_opts, true> filt_coef_e;
@ -365,7 +365,7 @@ struct mbsfn_sf_cfg_s {
enum options { n1, n2, n4, n8, n16, n32, nulltype } value; enum options { n1, n2, n4, n8, n16, n32, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<radioframe_alloc_period_opts> radioframe_alloc_period_e_; typedef enumerated<radioframe_alloc_period_opts> radioframe_alloc_period_e_;
@ -374,7 +374,7 @@ struct mbsfn_sf_cfg_s {
enum options { one_frame, four_frames, nulltype } value; enum options { one_frame, four_frames, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -394,34 +394,26 @@ struct mbsfn_sf_cfg_s {
// getters // getters
fixed_bitstring<6>& one_frame() fixed_bitstring<6>& one_frame()
{ {
assert_choice_type("oneFrame", type_.to_string(), "subframeAllocation"); assert_choice_type(types::one_frame, type_, "subframeAllocation");
return c.get<fixed_bitstring<6> >(); return c.get<fixed_bitstring<6> >();
} }
fixed_bitstring<24>& four_frames() fixed_bitstring<24>& four_frames()
{ {
assert_choice_type("fourFrames", type_.to_string(), "subframeAllocation"); assert_choice_type(types::four_frames, type_, "subframeAllocation");
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
const fixed_bitstring<6>& one_frame() const const fixed_bitstring<6>& one_frame() const
{ {
assert_choice_type("oneFrame", type_.to_string(), "subframeAllocation"); assert_choice_type(types::one_frame, type_, "subframeAllocation");
return c.get<fixed_bitstring<6> >(); return c.get<fixed_bitstring<6> >();
} }
const fixed_bitstring<24>& four_frames() const const fixed_bitstring<24>& four_frames() const
{ {
assert_choice_type("fourFrames", type_.to_string(), "subframeAllocation"); assert_choice_type(types::four_frames, type_, "subframeAllocation");
return c.get<fixed_bitstring<24> >();
}
fixed_bitstring<6>& set_one_frame()
{
set(types::one_frame);
return c.get<fixed_bitstring<6> >();
}
fixed_bitstring<24>& set_four_frames()
{
set(types::four_frames);
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
fixed_bitstring<6>& set_one_frame();
fixed_bitstring<24>& set_four_frames();
private: private:
types type_; types type_;
@ -450,7 +442,7 @@ struct mbsfn_sf_cfg_v1430_s {
enum options { one_frame_v1430, four_frames_v1430, nulltype } value; enum options { one_frame_v1430, four_frames_v1430, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -470,34 +462,26 @@ struct mbsfn_sf_cfg_v1430_s {
// getters // getters
fixed_bitstring<2>& one_frame_v1430() fixed_bitstring<2>& one_frame_v1430()
{ {
assert_choice_type("oneFrame-v1430", type_.to_string(), "subframeAllocation-v1430"); assert_choice_type(types::one_frame_v1430, type_, "subframeAllocation-v1430");
return c.get<fixed_bitstring<2> >(); return c.get<fixed_bitstring<2> >();
} }
fixed_bitstring<8>& four_frames_v1430() fixed_bitstring<8>& four_frames_v1430()
{ {
assert_choice_type("fourFrames-v1430", type_.to_string(), "subframeAllocation-v1430"); assert_choice_type(types::four_frames_v1430, type_, "subframeAllocation-v1430");
return c.get<fixed_bitstring<8> >(); return c.get<fixed_bitstring<8> >();
} }
const fixed_bitstring<2>& one_frame_v1430() const const fixed_bitstring<2>& one_frame_v1430() const
{ {
assert_choice_type("oneFrame-v1430", type_.to_string(), "subframeAllocation-v1430"); assert_choice_type(types::one_frame_v1430, type_, "subframeAllocation-v1430");
return c.get<fixed_bitstring<2> >(); return c.get<fixed_bitstring<2> >();
} }
const fixed_bitstring<8>& four_frames_v1430() const const fixed_bitstring<8>& four_frames_v1430() const
{ {
assert_choice_type("fourFrames-v1430", type_.to_string(), "subframeAllocation-v1430"); assert_choice_type(types::four_frames_v1430, type_, "subframeAllocation-v1430");
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<2>& set_one_frame_v1430()
{
set(types::one_frame_v1430);
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<8>& set_four_frames_v1430()
{
set(types::four_frames_v1430);
return c.get<fixed_bitstring<8> >(); return c.get<fixed_bitstring<8> >();
} }
fixed_bitstring<2>& set_one_frame_v1430();
fixed_bitstring<8>& set_four_frames_v1430();
private: private:
types type_; types type_;
@ -530,7 +514,7 @@ struct meas_sf_pattern_r10_c {
enum options { sf_cfg1_minus5_r10, sf_cfg0_r10, sf_cfg6_r10, /*...*/ nulltype } value; enum options { sf_cfg1_minus5_r10, sf_cfg0_r10, sf_cfg6_r10, /*...*/ nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts, true> types; typedef enumerated<types_opts, true> types;
@ -550,49 +534,37 @@ struct meas_sf_pattern_r10_c {
// getters // getters
fixed_bitstring<20>& sf_cfg1_minus5_r10() fixed_bitstring<20>& sf_cfg1_minus5_r10()
{ {
assert_choice_type("subframeConfig1-5-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg1_minus5_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<20> >(); return c.get<fixed_bitstring<20> >();
} }
fixed_bitstring<70>& sf_cfg0_r10() fixed_bitstring<70>& sf_cfg0_r10()
{ {
assert_choice_type("subframeConfig0-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg0_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<70> >(); return c.get<fixed_bitstring<70> >();
} }
fixed_bitstring<60>& sf_cfg6_r10() fixed_bitstring<60>& sf_cfg6_r10()
{ {
assert_choice_type("subframeConfig6-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg6_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<60> >(); return c.get<fixed_bitstring<60> >();
} }
const fixed_bitstring<20>& sf_cfg1_minus5_r10() const const fixed_bitstring<20>& sf_cfg1_minus5_r10() const
{ {
assert_choice_type("subframeConfig1-5-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg1_minus5_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<20> >(); return c.get<fixed_bitstring<20> >();
} }
const fixed_bitstring<70>& sf_cfg0_r10() const const fixed_bitstring<70>& sf_cfg0_r10() const
{ {
assert_choice_type("subframeConfig0-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg0_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<70> >(); return c.get<fixed_bitstring<70> >();
} }
const fixed_bitstring<60>& sf_cfg6_r10() const const fixed_bitstring<60>& sf_cfg6_r10() const
{ {
assert_choice_type("subframeConfig6-r10", type_.to_string(), "subframePatternTDD-r10"); assert_choice_type(types::sf_cfg6_r10, type_, "subframePatternTDD-r10");
return c.get<fixed_bitstring<60> >();
}
fixed_bitstring<20>& set_sf_cfg1_minus5_r10()
{
set(types::sf_cfg1_minus5_r10);
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<70>& set_sf_cfg0_r10()
{
set(types::sf_cfg0_r10);
return c.get<fixed_bitstring<70> >();
}
fixed_bitstring<60>& set_sf_cfg6_r10()
{
set(types::sf_cfg6_r10);
return c.get<fixed_bitstring<60> >(); return c.get<fixed_bitstring<60> >();
} }
fixed_bitstring<20>& set_sf_cfg1_minus5_r10();
fixed_bitstring<70>& set_sf_cfg0_r10();
fixed_bitstring<60>& set_sf_cfg6_r10();
private: private:
types type_; types type_;
@ -603,7 +575,7 @@ struct meas_sf_pattern_r10_c {
struct types_opts { struct types_opts {
enum options { sf_pattern_fdd_r10, sf_pattern_tdd_r10, /*...*/ nulltype } value; enum options { sf_pattern_fdd_r10, sf_pattern_tdd_r10, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts, true> types; typedef enumerated<types_opts, true> types;
@ -622,34 +594,26 @@ struct meas_sf_pattern_r10_c {
// getters // getters
fixed_bitstring<40>& sf_pattern_fdd_r10() fixed_bitstring<40>& sf_pattern_fdd_r10()
{ {
assert_choice_type("subframePatternFDD-r10", type_.to_string(), "MeasSubframePattern-r10"); assert_choice_type(types::sf_pattern_fdd_r10, type_, "MeasSubframePattern-r10");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10() sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10()
{ {
assert_choice_type("subframePatternTDD-r10", type_.to_string(), "MeasSubframePattern-r10"); assert_choice_type(types::sf_pattern_tdd_r10, type_, "MeasSubframePattern-r10");
return c.get<sf_pattern_tdd_r10_c_>(); return c.get<sf_pattern_tdd_r10_c_>();
} }
const fixed_bitstring<40>& sf_pattern_fdd_r10() const const fixed_bitstring<40>& sf_pattern_fdd_r10() const
{ {
assert_choice_type("subframePatternFDD-r10", type_.to_string(), "MeasSubframePattern-r10"); assert_choice_type(types::sf_pattern_fdd_r10, type_, "MeasSubframePattern-r10");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10() const const sf_pattern_tdd_r10_c_& sf_pattern_tdd_r10() const
{ {
assert_choice_type("subframePatternTDD-r10", type_.to_string(), "MeasSubframePattern-r10"); assert_choice_type(types::sf_pattern_tdd_r10, type_, "MeasSubframePattern-r10");
return c.get<sf_pattern_tdd_r10_c_>();
}
fixed_bitstring<40>& set_sf_pattern_fdd_r10()
{
set(types::sf_pattern_fdd_r10);
return c.get<fixed_bitstring<40> >();
}
sf_pattern_tdd_r10_c_& set_sf_pattern_tdd_r10()
{
set(types::sf_pattern_tdd_r10);
return c.get<sf_pattern_tdd_r10_c_>(); return c.get<sf_pattern_tdd_r10_c_>();
} }
fixed_bitstring<40>& set_sf_pattern_fdd_r10();
sf_pattern_tdd_r10_c_& set_sf_pattern_tdd_r10();
private: private:
types type_; types type_;
@ -662,7 +626,7 @@ struct c1_or_crit_ext_opts {
enum options { c1, crit_exts_future, nulltype } value; enum options { c1, crit_exts_future, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<c1_or_crit_ext_opts> c1_or_crit_ext_e; typedef enumerated<c1_or_crit_ext_opts> c1_or_crit_ext_e;
@ -672,7 +636,7 @@ struct ciphering_algorithm_r12_opts {
enum options { eea0, eea1, eea2, eea3_v1130, spare4, spare3, spare2, spare1, /*...*/ nulltype } value; enum options { eea0, eea1, eea2, eea3_v1130, spare4, spare3, spare2, spare1, /*...*/ nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ciphering_algorithm_r12_opts, true> ciphering_algorithm_r12_e; typedef enumerated<ciphering_algorithm_r12_opts, true> ciphering_algorithm_r12_e;
@ -682,9 +646,9 @@ struct wlan_band_ind_r13_opts {
enum options { band2dot4, band5, band60_v1430, spare5, spare4, spare3, spare2, spare1, /*...*/ nulltype } value; enum options { band2dot4, band5, band60_v1430, spare5, spare4, spare3, spare2, spare1, /*...*/ nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<wlan_band_ind_r13_opts, true> wlan_band_ind_r13_e; typedef enumerated<wlan_band_ind_r13_opts, true> wlan_band_ind_r13_e;

@ -57,7 +57,7 @@ struct sl_tx_pwr_r14_c {
enum options { minusinfinity_r14, tx_pwr_r14, nulltype } value; enum options { minusinfinity_r14, tx_pwr_r14, nulltype } value;
typedef int8_t number_type; typedef int8_t number_type;
std::string to_string() const; const char* to_string() const;
int8_t to_number() const; int8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -72,20 +72,16 @@ struct sl_tx_pwr_r14_c {
// getters // getters
int8_t& tx_pwr_r14() int8_t& tx_pwr_r14()
{ {
assert_choice_type("txPower-r14", type_.to_string(), "SL-TxPower-r14"); assert_choice_type(types::tx_pwr_r14, type_, "SL-TxPower-r14");
return c; return c;
} }
const int8_t& tx_pwr_r14() const const int8_t& tx_pwr_r14() const
{ {
assert_choice_type("txPower-r14", type_.to_string(), "SL-TxPower-r14"); assert_choice_type(types::tx_pwr_r14, type_, "SL-TxPower-r14");
return c;
}
void set_minusinfinity_r14() { set(types::minusinfinity_r14); }
int8_t& set_tx_pwr_r14()
{
set(types::tx_pwr_r14);
return c; return c;
} }
void set_minusinfinity_r14();
int8_t& set_tx_pwr_r14();
private: private:
types type_; types type_;
@ -139,7 +135,7 @@ struct sl_pssch_tx_params_r14_s {
enum options { n0, n1, both, spare1, nulltype } value; enum options { n0, n1, both, spare1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<allowed_retx_num_pssch_r14_opts> allowed_retx_num_pssch_r14_e_; typedef enumerated<allowed_retx_num_pssch_r14_opts> allowed_retx_num_pssch_r14_e_;
@ -193,9 +189,9 @@ struct sl_restrict_res_reserv_period_r14_opts {
} value; } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<sl_restrict_res_reserv_period_r14_opts> sl_restrict_res_reserv_period_r14_e; typedef enumerated<sl_restrict_res_reserv_period_r14_opts> sl_restrict_res_reserv_period_r14_e;
@ -203,7 +199,7 @@ typedef enumerated<sl_restrict_res_reserv_period_r14_opts> sl_restrict_res_reser
struct sl_type_tx_sync_r14_opts { struct sl_type_tx_sync_r14_opts {
enum options { gnss, enb, ue, nulltype } value; enum options { gnss, enb, ue, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<sl_type_tx_sync_r14_opts> sl_type_tx_sync_r14_e; typedef enumerated<sl_type_tx_sync_r14_opts> sl_type_tx_sync_r14_e;
@ -217,7 +213,7 @@ using sl_cbr_pppp_tx_cfg_list_v1530_l = dyn_array<sl_pppp_tx_cfg_idx_v1530_s>;
struct sl_cp_len_r12_opts { struct sl_cp_len_r12_opts {
enum options { normal, extended, nulltype } value; enum options { normal, extended, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<sl_cp_len_r12_opts> sl_cp_len_r12_e; typedef enumerated<sl_cp_len_r12_opts> sl_cp_len_r12_e;
@ -229,7 +225,7 @@ struct sl_offset_ind_r12_c {
struct types_opts { struct types_opts {
enum options { small_r12, large_r12, nulltype } value; enum options { small_r12, large_r12, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -246,34 +242,26 @@ struct sl_offset_ind_r12_c {
// getters // getters
uint16_t& small_r12() uint16_t& small_r12()
{ {
assert_choice_type("small-r12", type_.to_string(), "SL-OffsetIndicator-r12"); assert_choice_type(types::small_r12, type_, "SL-OffsetIndicator-r12");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
uint16_t& large_r12() uint16_t& large_r12()
{ {
assert_choice_type("large-r12", type_.to_string(), "SL-OffsetIndicator-r12"); assert_choice_type(types::large_r12, type_, "SL-OffsetIndicator-r12");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
const uint16_t& small_r12() const const uint16_t& small_r12() const
{ {
assert_choice_type("small-r12", type_.to_string(), "SL-OffsetIndicator-r12"); assert_choice_type(types::small_r12, type_, "SL-OffsetIndicator-r12");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
const uint16_t& large_r12() const const uint16_t& large_r12() const
{ {
assert_choice_type("large-r12", type_.to_string(), "SL-OffsetIndicator-r12"); assert_choice_type(types::large_r12, type_, "SL-OffsetIndicator-r12");
return c.get<uint16_t>();
}
uint16_t& set_small_r12()
{
set(types::small_r12);
return c.get<uint16_t>();
}
uint16_t& set_large_r12()
{
set(types::large_r12);
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
uint16_t& set_small_r12();
uint16_t& set_large_r12();
private: private:
types type_; types type_;
@ -299,7 +287,7 @@ struct sl_pssch_tx_cfg_r14_s {
enum options { kmph60, kmph80, kmph100, kmph120, kmph140, kmph160, kmph180, kmph200, nulltype } value; enum options { kmph60, kmph80, kmph100, kmph120, kmph140, kmph160, kmph180, kmph200, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<thres_ue_speed_r14_opts> thres_ue_speed_r14_e_; typedef enumerated<thres_ue_speed_r14_opts> thres_ue_speed_r14_e_;
@ -354,7 +342,7 @@ struct sf_bitmap_sl_r12_c {
enum options { bs4_r12, bs8_r12, bs12_r12, bs16_r12, bs30_r12, bs40_r12, bs42_r12, nulltype } value; enum options { bs4_r12, bs8_r12, bs12_r12, bs16_r12, bs30_r12, bs40_r12, bs42_r12, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -372,109 +360,81 @@ struct sf_bitmap_sl_r12_c {
// getters // getters
fixed_bitstring<4>& bs4_r12() fixed_bitstring<4>& bs4_r12()
{ {
assert_choice_type("bs4-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs4_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<4> >(); return c.get<fixed_bitstring<4> >();
} }
fixed_bitstring<8>& bs8_r12() fixed_bitstring<8>& bs8_r12()
{ {
assert_choice_type("bs8-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs8_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<8> >(); return c.get<fixed_bitstring<8> >();
} }
fixed_bitstring<12>& bs12_r12() fixed_bitstring<12>& bs12_r12()
{ {
assert_choice_type("bs12-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs12_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<12> >(); return c.get<fixed_bitstring<12> >();
} }
fixed_bitstring<16>& bs16_r12() fixed_bitstring<16>& bs16_r12()
{ {
assert_choice_type("bs16-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs16_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<16> >(); return c.get<fixed_bitstring<16> >();
} }
fixed_bitstring<30>& bs30_r12() fixed_bitstring<30>& bs30_r12()
{ {
assert_choice_type("bs30-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs30_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<30> >(); return c.get<fixed_bitstring<30> >();
} }
fixed_bitstring<40>& bs40_r12() fixed_bitstring<40>& bs40_r12()
{ {
assert_choice_type("bs40-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs40_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<42>& bs42_r12() fixed_bitstring<42>& bs42_r12()
{ {
assert_choice_type("bs42-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs42_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<42> >(); return c.get<fixed_bitstring<42> >();
} }
const fixed_bitstring<4>& bs4_r12() const const fixed_bitstring<4>& bs4_r12() const
{ {
assert_choice_type("bs4-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs4_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<4> >(); return c.get<fixed_bitstring<4> >();
} }
const fixed_bitstring<8>& bs8_r12() const const fixed_bitstring<8>& bs8_r12() const
{ {
assert_choice_type("bs8-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs8_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<8> >(); return c.get<fixed_bitstring<8> >();
} }
const fixed_bitstring<12>& bs12_r12() const const fixed_bitstring<12>& bs12_r12() const
{ {
assert_choice_type("bs12-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs12_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<12> >(); return c.get<fixed_bitstring<12> >();
} }
const fixed_bitstring<16>& bs16_r12() const const fixed_bitstring<16>& bs16_r12() const
{ {
assert_choice_type("bs16-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs16_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<16> >(); return c.get<fixed_bitstring<16> >();
} }
const fixed_bitstring<30>& bs30_r12() const const fixed_bitstring<30>& bs30_r12() const
{ {
assert_choice_type("bs30-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs30_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<30> >(); return c.get<fixed_bitstring<30> >();
} }
const fixed_bitstring<40>& bs40_r12() const const fixed_bitstring<40>& bs40_r12() const
{ {
assert_choice_type("bs40-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs40_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<42>& bs42_r12() const const fixed_bitstring<42>& bs42_r12() const
{ {
assert_choice_type("bs42-r12", type_.to_string(), "SubframeBitmapSL-r12"); assert_choice_type(types::bs42_r12, type_, "SubframeBitmapSL-r12");
return c.get<fixed_bitstring<42> >();
}
fixed_bitstring<4>& set_bs4_r12()
{
set(types::bs4_r12);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<8>& set_bs8_r12()
{
set(types::bs8_r12);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<12>& set_bs12_r12()
{
set(types::bs12_r12);
return c.get<fixed_bitstring<12> >();
}
fixed_bitstring<16>& set_bs16_r12()
{
set(types::bs16_r12);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<30>& set_bs30_r12()
{
set(types::bs30_r12);
return c.get<fixed_bitstring<30> >();
}
fixed_bitstring<40>& set_bs40_r12()
{
set(types::bs40_r12);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<42>& set_bs42_r12()
{
set(types::bs42_r12);
return c.get<fixed_bitstring<42> >(); return c.get<fixed_bitstring<42> >();
} }
fixed_bitstring<4>& set_bs4_r12();
fixed_bitstring<8>& set_bs8_r12();
fixed_bitstring<12>& set_bs12_r12();
fixed_bitstring<16>& set_bs16_r12();
fixed_bitstring<30>& set_bs30_r12();
fixed_bitstring<40>& set_bs40_r12();
fixed_bitstring<42>& set_bs42_r12();
private: private:
types type_; types type_;
@ -489,7 +449,7 @@ struct sf_bitmap_sl_r14_c {
enum options { bs10_r14, bs16_r14, bs20_r14, bs30_r14, bs40_r14, bs50_r14, bs60_r14, bs100_r14, nulltype } value; enum options { bs10_r14, bs16_r14, bs20_r14, bs30_r14, bs40_r14, bs50_r14, bs60_r14, bs100_r14, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -507,124 +467,92 @@ struct sf_bitmap_sl_r14_c {
// getters // getters
fixed_bitstring<10>& bs10_r14() fixed_bitstring<10>& bs10_r14()
{ {
assert_choice_type("bs10-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs10_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<10> >(); return c.get<fixed_bitstring<10> >();
} }
fixed_bitstring<16>& bs16_r14() fixed_bitstring<16>& bs16_r14()
{ {
assert_choice_type("bs16-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs16_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<16> >(); return c.get<fixed_bitstring<16> >();
} }
fixed_bitstring<20>& bs20_r14() fixed_bitstring<20>& bs20_r14()
{ {
assert_choice_type("bs20-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs20_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<20> >(); return c.get<fixed_bitstring<20> >();
} }
fixed_bitstring<30>& bs30_r14() fixed_bitstring<30>& bs30_r14()
{ {
assert_choice_type("bs30-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs30_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<30> >(); return c.get<fixed_bitstring<30> >();
} }
fixed_bitstring<40>& bs40_r14() fixed_bitstring<40>& bs40_r14()
{ {
assert_choice_type("bs40-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs40_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<50>& bs50_r14() fixed_bitstring<50>& bs50_r14()
{ {
assert_choice_type("bs50-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs50_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<50> >(); return c.get<fixed_bitstring<50> >();
} }
fixed_bitstring<60>& bs60_r14() fixed_bitstring<60>& bs60_r14()
{ {
assert_choice_type("bs60-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs60_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<60> >(); return c.get<fixed_bitstring<60> >();
} }
fixed_bitstring<100>& bs100_r14() fixed_bitstring<100>& bs100_r14()
{ {
assert_choice_type("bs100-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs100_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<100> >(); return c.get<fixed_bitstring<100> >();
} }
const fixed_bitstring<10>& bs10_r14() const const fixed_bitstring<10>& bs10_r14() const
{ {
assert_choice_type("bs10-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs10_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<10> >(); return c.get<fixed_bitstring<10> >();
} }
const fixed_bitstring<16>& bs16_r14() const const fixed_bitstring<16>& bs16_r14() const
{ {
assert_choice_type("bs16-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs16_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<16> >(); return c.get<fixed_bitstring<16> >();
} }
const fixed_bitstring<20>& bs20_r14() const const fixed_bitstring<20>& bs20_r14() const
{ {
assert_choice_type("bs20-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs20_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<20> >(); return c.get<fixed_bitstring<20> >();
} }
const fixed_bitstring<30>& bs30_r14() const const fixed_bitstring<30>& bs30_r14() const
{ {
assert_choice_type("bs30-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs30_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<30> >(); return c.get<fixed_bitstring<30> >();
} }
const fixed_bitstring<40>& bs40_r14() const const fixed_bitstring<40>& bs40_r14() const
{ {
assert_choice_type("bs40-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs40_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<50>& bs50_r14() const const fixed_bitstring<50>& bs50_r14() const
{ {
assert_choice_type("bs50-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs50_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<50> >(); return c.get<fixed_bitstring<50> >();
} }
const fixed_bitstring<60>& bs60_r14() const const fixed_bitstring<60>& bs60_r14() const
{ {
assert_choice_type("bs60-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs60_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<60> >(); return c.get<fixed_bitstring<60> >();
} }
const fixed_bitstring<100>& bs100_r14() const const fixed_bitstring<100>& bs100_r14() const
{ {
assert_choice_type("bs100-r14", type_.to_string(), "SubframeBitmapSL-r14"); assert_choice_type(types::bs100_r14, type_, "SubframeBitmapSL-r14");
return c.get<fixed_bitstring<100> >();
}
fixed_bitstring<10>& set_bs10_r14()
{
set(types::bs10_r14);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<16>& set_bs16_r14()
{
set(types::bs16_r14);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<20>& set_bs20_r14()
{
set(types::bs20_r14);
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<30>& set_bs30_r14()
{
set(types::bs30_r14);
return c.get<fixed_bitstring<30> >();
}
fixed_bitstring<40>& set_bs40_r14()
{
set(types::bs40_r14);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<50>& set_bs50_r14()
{
set(types::bs50_r14);
return c.get<fixed_bitstring<50> >();
}
fixed_bitstring<60>& set_bs60_r14()
{
set(types::bs60_r14);
return c.get<fixed_bitstring<60> >();
}
fixed_bitstring<100>& set_bs100_r14()
{
set(types::bs100_r14);
return c.get<fixed_bitstring<100> >(); return c.get<fixed_bitstring<100> >();
} }
fixed_bitstring<10>& set_bs10_r14();
fixed_bitstring<16>& set_bs16_r14();
fixed_bitstring<20>& set_bs20_r14();
fixed_bitstring<30>& set_bs30_r14();
fixed_bitstring<40>& set_bs40_r14();
fixed_bitstring<50>& set_bs50_r14();
fixed_bitstring<60>& set_bs60_r14();
fixed_bitstring<100>& set_bs100_r14();
private: private:
types type_; types type_;
@ -676,7 +604,7 @@ struct sl_comm_res_pool_v2x_r14_s {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<size_subch_r14_opts> size_subch_r14_e_; typedef enumerated<size_subch_r14_opts> size_subch_r14_e_;
@ -684,7 +612,7 @@ struct sl_comm_res_pool_v2x_r14_s {
enum options { n1, n3, n5, n8, n10, n15, n20, spare1, nulltype } value; enum options { n1, n3, n5, n8, n10, n15, n20, spare1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<num_subch_r14_opts> num_subch_r14_e_; typedef enumerated<num_subch_r14_opts> num_subch_r14_e_;
@ -767,7 +695,7 @@ struct sl_sync_cfg_nfreq_r13_s {
enum options { w1, w2, nulltype } value; enum options { w1, w2, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<disc_sync_win_r13_opts> disc_sync_win_r13_e_; typedef enumerated<disc_sync_win_r13_opts> disc_sync_win_r13_e_;
@ -832,9 +760,9 @@ struct sl_comm_tx_pool_sensing_cfg_r14_s {
enum options { v0, v0dot2, v0dot4, v0dot6, v0dot8, spare3, spare2, spare1, nulltype } value; enum options { v0, v0dot2, v0dot4, v0dot6, v0dot8, spare3, spare2, spare1, nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<prob_res_keep_r14_opts> prob_res_keep_r14_e_; typedef enumerated<prob_res_keep_r14_opts> prob_res_keep_r14_e_;
struct p2x_sensing_cfg_r14_s_ { struct p2x_sensing_cfg_r14_s_ {
@ -863,7 +791,7 @@ struct sl_comm_tx_pool_sensing_cfg_r14_s {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<sl_reselect_after_r14_opts> sl_reselect_after_r14_e_; typedef enumerated<sl_reselect_after_r14_opts> sl_reselect_after_r14_e_;
@ -891,7 +819,7 @@ struct sl_disc_res_pool_r12_s {
enum options { rf32, rf64, rf128, rf256, rf512, rf1024, rf16_v1310, spare, nulltype } value; enum options { rf32, rf64, rf128, rf256, rf512, rf1024, rf16_v1310, spare, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<disc_period_r12_opts> disc_period_r12_e_; typedef enumerated<disc_period_r12_opts> disc_period_r12_e_;
@ -901,7 +829,7 @@ struct sl_disc_res_pool_r12_s {
struct types_opts { struct types_opts {
enum options { rsrp_based_r12, random_r12, nulltype } value; enum options { rsrp_based_r12, random_r12, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -915,20 +843,16 @@ struct sl_disc_res_pool_r12_s {
// getters // getters
sl_pool_sel_cfg_r12_s& rsrp_based_r12() sl_pool_sel_cfg_r12_s& rsrp_based_r12()
{ {
assert_choice_type("rsrpBased-r12", type_.to_string(), "poolSelection-r12"); assert_choice_type(types::rsrp_based_r12, type_, "poolSelection-r12");
return c; return c;
} }
const sl_pool_sel_cfg_r12_s& rsrp_based_r12() const const sl_pool_sel_cfg_r12_s& rsrp_based_r12() const
{ {
assert_choice_type("rsrpBased-r12", type_.to_string(), "poolSelection-r12"); assert_choice_type(types::rsrp_based_r12, type_, "poolSelection-r12");
return c; return c;
} }
sl_pool_sel_cfg_r12_s& set_rsrp_based_r12() sl_pool_sel_cfg_r12_s& set_rsrp_based_r12();
{ void set_random_r12();
set(types::rsrp_based_r12);
return c;
}
void set_random_r12() { set(types::random_r12); }
private: private:
types type_; types type_;
@ -938,7 +862,7 @@ struct sl_disc_res_pool_r12_s {
enum options { p25, p50, p75, p100, nulltype } value; enum options { p25, p50, p75, p100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<tx_probability_r12_opts> tx_probability_r12_e_; typedef enumerated<tx_probability_r12_opts> tx_probability_r12_e_;
@ -963,7 +887,7 @@ struct sl_disc_res_pool_r12_s {
enum options { rf4, rf6, rf7, rf8, rf12, rf14, rf24, rf28, nulltype } value; enum options { rf4, rf6, rf7, rf8, rf12, rf14, rf24, rf28, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<setup_opts> setup_e_; typedef enumerated<setup_opts> setup_e_;
@ -979,20 +903,16 @@ struct sl_disc_res_pool_r12_s {
// getters // getters
setup_e_& setup() setup_e_& setup()
{ {
assert_choice_type("setup", type_.to_string(), "discPeriod-v1310"); assert_choice_type(types::setup, type_, "discPeriod-v1310");
return c; return c;
} }
const setup_e_& setup() const const setup_e_& setup() const
{ {
assert_choice_type("setup", type_.to_string(), "discPeriod-v1310"); assert_choice_type(types::setup, type_, "discPeriod-v1310");
return c;
}
void set_release() { set(types::release); }
setup_e_& set_setup()
{
set(types::setup);
return c; return c;
} }
void set_release();
setup_e_& set_setup();
private: private:
types type_; types type_;
@ -1014,20 +934,16 @@ struct sl_disc_res_pool_r12_s {
// getters // getters
setup_s_& setup() setup_s_& setup()
{ {
assert_choice_type("setup", type_.to_string(), "rxParamsAddNeighFreq-r13"); assert_choice_type(types::setup, type_, "rxParamsAddNeighFreq-r13");
return c; return c;
} }
const setup_s_& setup() const const setup_s_& setup() const
{ {
assert_choice_type("setup", type_.to_string(), "rxParamsAddNeighFreq-r13"); assert_choice_type(types::setup, type_, "rxParamsAddNeighFreq-r13");
return c;
}
void set_release() { set(types::release); }
setup_s_& set_setup()
{
set(types::setup);
return c; return c;
} }
void set_release();
setup_s_& set_setup();
private: private:
types type_; types type_;
@ -1040,7 +956,7 @@ struct sl_disc_res_pool_r12_s {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value; enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ul_bw_opts> ul_bw_e_; typedef enumerated<ul_bw_opts> ul_bw_e_;
@ -1078,20 +994,16 @@ struct sl_disc_res_pool_r12_s {
// getters // getters
setup_s_& setup() setup_s_& setup()
{ {
assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-r13"); assert_choice_type(types::setup, type_, "txParamsAddNeighFreq-r13");
return c; return c;
} }
const setup_s_& setup() const const setup_s_& setup() const
{ {
assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-r13"); assert_choice_type(types::setup, type_, "txParamsAddNeighFreq-r13");
return c;
}
void set_release() { set(types::release); }
setup_s_& set_setup()
{
set(types::setup);
return c; return c;
} }
void set_release();
setup_s_& set_setup();
private: private:
types type_; types type_;
@ -1118,20 +1030,16 @@ struct sl_disc_res_pool_r12_s {
// getters // getters
setup_s_& setup() setup_s_& setup()
{ {
assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-v1370"); assert_choice_type(types::setup, type_, "txParamsAddNeighFreq-v1370");
return c; return c;
} }
const setup_s_& setup() const const setup_s_& setup() const
{ {
assert_choice_type("setup", type_.to_string(), "txParamsAddNeighFreq-v1370"); assert_choice_type(types::setup, type_, "txParamsAddNeighFreq-v1370");
return c;
}
void set_release() { set(types::release); }
setup_s_& set_setup()
{
set(types::setup);
return c; return c;
} }
void set_release();
setup_s_& set_setup();
private: private:
types type_; types type_;
@ -1172,7 +1080,7 @@ struct sl_zone_cfg_r14_s {
enum options { m5, m10, m20, m50, m100, m200, m500, spare1, nulltype } value; enum options { m5, m10, m20, m50, m100, m200, m500, spare1, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<zone_len_r14_opts> zone_len_r14_e_; typedef enumerated<zone_len_r14_opts> zone_len_r14_e_;
@ -1180,7 +1088,7 @@ struct sl_zone_cfg_r14_s {
enum options { m5, m10, m20, m50, m100, m200, m500, spare1, nulltype } value; enum options { m5, m10, m20, m50, m100, m200, m500, spare1, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<zone_width_r14_opts> zone_width_r14_e_; typedef enumerated<zone_width_r14_opts> zone_width_r14_e_;
@ -1221,7 +1129,7 @@ struct pci_range_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<range_opts> range_e_; typedef enumerated<range_opts> range_e_;
@ -1304,7 +1212,7 @@ struct allowed_meas_bw_opts {
enum options { mbw6, mbw15, mbw25, mbw50, mbw75, mbw100, nulltype } value; enum options { mbw6, mbw15, mbw25, mbw50, mbw75, mbw100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<allowed_meas_bw_opts> allowed_meas_bw_e; typedef enumerated<allowed_meas_bw_opts> allowed_meas_bw_e;
@ -1336,7 +1244,7 @@ struct cell_sel_info_nfreq_r13_s {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<q_hyst_r13_opts> q_hyst_r13_e_; typedef enumerated<q_hyst_r13_opts> q_hyst_r13_e_;
@ -1390,7 +1298,7 @@ struct sl_disc_tx_res_inter_freq_r13_c {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -1404,22 +1312,18 @@ struct sl_disc_tx_res_inter_freq_r13_c {
// getters // getters
sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13() sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13()
{ {
assert_choice_type("discTxPoolCommon-r13", type_.to_string(), "SL-DiscTxResourcesInterFreq-r13"); assert_choice_type(types::disc_tx_pool_common_r13, type_, "SL-DiscTxResourcesInterFreq-r13");
return c; return c;
} }
const sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13() const const sl_disc_tx_pool_list_r12_l& disc_tx_pool_common_r13() const
{ {
assert_choice_type("discTxPoolCommon-r13", type_.to_string(), "SL-DiscTxResourcesInterFreq-r13"); assert_choice_type(types::disc_tx_pool_common_r13, type_, "SL-DiscTxResourcesInterFreq-r13");
return c; return c;
} }
void set_acquire_si_from_carrier_r13() { set(types::acquire_si_from_carrier_r13); } void set_acquire_si_from_carrier_r13();
sl_disc_tx_pool_list_r12_l& set_disc_tx_pool_common_r13() sl_disc_tx_pool_list_r12_l& set_disc_tx_pool_common_r13();
{ void set_request_ded_r13();
set(types::disc_tx_pool_common_r13); void set_no_tx_on_carrier_r13();
return c;
}
void set_request_ded_r13() { set(types::request_ded_r13); }
void set_no_tx_on_carrier_r13() { set(types::no_tx_on_carrier_r13); }
private: private:
types type_; types type_;
@ -1437,7 +1341,7 @@ struct meas_idle_carrier_eutra_r15_s {
struct report_quantities_opts { struct report_quantities_opts {
enum options { rsrp, rsrq, both, nulltype } value; enum options { rsrp, rsrq, both, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<report_quantities_opts> report_quantities_e_; typedef enumerated<report_quantities_opts> report_quantities_e_;
struct quality_thres_r15_s_ { struct quality_thres_r15_s_ {
@ -1486,7 +1390,7 @@ struct sl_hop_cfg_comm_r12_s {
enum options { ns1, ns2, ns4, nulltype } value; enum options { ns1, ns2, ns4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<num_subbands_r12_opts> num_subbands_r12_e_; typedef enumerated<num_subbands_r12_opts> num_subbands_r12_e_;
@ -1508,7 +1412,7 @@ struct sl_inter_freq_info_v2x_r14_s {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value; enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<sl_bw_r14_opts> sl_bw_r14_e_; typedef enumerated<sl_bw_r14_opts> sl_bw_r14_e_;
@ -1516,7 +1420,7 @@ struct sl_inter_freq_info_v2x_r14_s {
struct types_opts { struct types_opts {
enum options { add_spec_emission_r14, add_spec_emission_v1440, nulltype } value; enum options { add_spec_emission_r14, add_spec_emission_v1440, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -1533,34 +1437,26 @@ struct sl_inter_freq_info_v2x_r14_s {
// getters // getters
uint8_t& add_spec_emission_r14() uint8_t& add_spec_emission_r14()
{ {
assert_choice_type("additionalSpectrumEmission-r14", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); assert_choice_type(types::add_spec_emission_r14, type_, "additionalSpectrumEmissionV2X-r14");
return c.get<uint8_t>(); return c.get<uint8_t>();
} }
uint16_t& add_spec_emission_v1440() uint16_t& add_spec_emission_v1440()
{ {
assert_choice_type("additionalSpectrumEmission-v1440", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); assert_choice_type(types::add_spec_emission_v1440, type_, "additionalSpectrumEmissionV2X-r14");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
const uint8_t& add_spec_emission_r14() const const uint8_t& add_spec_emission_r14() const
{ {
assert_choice_type("additionalSpectrumEmission-r14", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); assert_choice_type(types::add_spec_emission_r14, type_, "additionalSpectrumEmissionV2X-r14");
return c.get<uint8_t>(); return c.get<uint8_t>();
} }
const uint16_t& add_spec_emission_v1440() const const uint16_t& add_spec_emission_v1440() const
{ {
assert_choice_type("additionalSpectrumEmission-v1440", type_.to_string(), "additionalSpectrumEmissionV2X-r14"); assert_choice_type(types::add_spec_emission_v1440, type_, "additionalSpectrumEmissionV2X-r14");
return c.get<uint16_t>();
}
uint8_t& set_add_spec_emission_r14()
{
set(types::add_spec_emission_r14);
return c.get<uint8_t>();
}
uint16_t& set_add_spec_emission_v1440()
{
set(types::add_spec_emission_v1440);
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
uint8_t& set_add_spec_emission_r14();
uint16_t& set_add_spec_emission_v1440();
private: private:
types type_; types type_;
@ -1630,7 +1526,7 @@ struct sl_period_comm_r12_opts {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<sl_period_comm_r12_opts> sl_period_comm_r12_e; typedef enumerated<sl_period_comm_r12_opts> sl_period_comm_r12_e;
@ -1661,7 +1557,7 @@ struct sl_sync_cfg_r12_s {
enum options { w1, w2, nulltype } value; enum options { w1, w2, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<disc_sync_win_r12_opts> disc_sync_win_r12_e_; typedef enumerated<disc_sync_win_r12_opts> disc_sync_win_r12_e_;
@ -1759,7 +1655,7 @@ struct wlan_backhaul_rate_r12_opts {
} value; } value;
typedef uint64_t number_type; typedef uint64_t number_type;
std::string to_string() const; const char* to_string() const;
uint64_t to_number() const; uint64_t to_number() const;
}; };
typedef enumerated<wlan_backhaul_rate_r12_opts> wlan_backhaul_rate_r12_e; typedef enumerated<wlan_backhaul_rate_r12_opts> wlan_backhaul_rate_r12_e;
@ -2025,7 +1921,7 @@ struct sl_gap_pattern_r13_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<gap_period_r13_opts> gap_period_r13_e_; typedef enumerated<gap_period_r13_opts> gap_period_r13_e_;

@ -156,14 +156,14 @@ struct rrc_conn_reject_v1130_ies_s {
struct depriorit_type_r11_opts { struct depriorit_type_r11_opts {
enum options { freq, e_utra, nulltype } value; enum options { freq, e_utra, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<depriorit_type_r11_opts> depriorit_type_r11_e_; typedef enumerated<depriorit_type_r11_opts> depriorit_type_r11_e_;
struct depriorit_timer_r11_opts { struct depriorit_timer_r11_opts {
enum options { min5, min10, min15, min30, nulltype } value; enum options { min5, min10, min15, min30, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<depriorit_timer_r11_opts> depriorit_timer_r11_e_; typedef enumerated<depriorit_timer_r11_opts> depriorit_timer_r11_e_;
@ -248,7 +248,7 @@ struct idle_mode_mob_ctrl_info_s {
enum options { min5, min10, min20, min30, min60, min120, min180, spare1, nulltype } value; enum options { min5, min10, min20, min30, min60, min120, min180, spare1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<t320_opts> t320_e_; typedef enumerated<t320_opts> t320_e_;
@ -371,7 +371,7 @@ struct redirected_carrier_info_r15_ies_c {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -388,94 +388,70 @@ struct redirected_carrier_info_r15_ies_c {
// getters // getters
uint32_t& eutra_r15() uint32_t& eutra_r15()
{ {
assert_choice_type("eutra-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::eutra_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint32_t>(); return c.get<uint32_t>();
} }
carrier_freqs_geran_s& geran_r15() carrier_freqs_geran_s& geran_r15()
{ {
assert_choice_type("geran-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::geran_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freqs_geran_s>(); return c.get<carrier_freqs_geran_s>();
} }
uint16_t& utra_fdd_r15() uint16_t& utra_fdd_r15()
{ {
assert_choice_type("utra-FDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_fdd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
carrier_freq_cdma2000_s& cdma2000_hrpd_r15() carrier_freq_cdma2000_s& cdma2000_hrpd_r15()
{ {
assert_choice_type("cdma2000-HRPD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_hrpd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15()
{ {
assert_choice_type("cdma2000-1xRTT-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_minus1x_rtt_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15()
{ {
assert_choice_type("utra-TDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_tdd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_list_utra_tdd_r10_l>(); return c.get<carrier_freq_list_utra_tdd_r10_l>();
} }
const uint32_t& eutra_r15() const const uint32_t& eutra_r15() const
{ {
assert_choice_type("eutra-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::eutra_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint32_t>(); return c.get<uint32_t>();
} }
const carrier_freqs_geran_s& geran_r15() const const carrier_freqs_geran_s& geran_r15() const
{ {
assert_choice_type("geran-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::geran_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freqs_geran_s>(); return c.get<carrier_freqs_geran_s>();
} }
const uint16_t& utra_fdd_r15() const const uint16_t& utra_fdd_r15() const
{ {
assert_choice_type("utra-FDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_fdd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<uint16_t>(); return c.get<uint16_t>();
} }
const carrier_freq_cdma2000_s& cdma2000_hrpd_r15() const const carrier_freq_cdma2000_s& cdma2000_hrpd_r15() const
{ {
assert_choice_type("cdma2000-HRPD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_hrpd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() const const carrier_freq_cdma2000_s& cdma2000_minus1x_rtt_r15() const
{ {
assert_choice_type("cdma2000-1xRTT-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::cdma2000_minus1x_rtt_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_cdma2000_s>(); return c.get<carrier_freq_cdma2000_s>();
} }
const carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() const const carrier_freq_list_utra_tdd_r10_l& utra_tdd_r15() const
{ {
assert_choice_type("utra-TDD-r15", type_.to_string(), "RedirectedCarrierInfo-r15-IEs"); assert_choice_type(types::utra_tdd_r15, type_, "RedirectedCarrierInfo-r15-IEs");
return c.get<carrier_freq_list_utra_tdd_r10_l>();
}
uint32_t& set_eutra_r15()
{
set(types::eutra_r15);
return c.get<uint32_t>();
}
carrier_freqs_geran_s& set_geran_r15()
{
set(types::geran_r15);
return c.get<carrier_freqs_geran_s>();
}
uint16_t& set_utra_fdd_r15()
{
set(types::utra_fdd_r15);
return c.get<uint16_t>();
}
carrier_freq_cdma2000_s& set_cdma2000_hrpd_r15()
{
set(types::cdma2000_hrpd_r15);
return c.get<carrier_freq_cdma2000_s>();
}
carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt_r15()
{
set(types::cdma2000_minus1x_rtt_r15);
return c.get<carrier_freq_cdma2000_s>();
}
carrier_freq_list_utra_tdd_r10_l& set_utra_tdd_r15()
{
set(types::utra_tdd_r15);
return c.get<carrier_freq_list_utra_tdd_r10_l>(); return c.get<carrier_freq_list_utra_tdd_r10_l>();
} }
uint32_t& set_eutra_r15();
carrier_freqs_geran_s& set_geran_r15();
uint16_t& set_utra_fdd_r15();
carrier_freq_cdma2000_s& set_cdma2000_hrpd_r15();
carrier_freq_cdma2000_s& set_cdma2000_minus1x_rtt_r15();
carrier_freq_list_utra_tdd_r10_l& set_utra_tdd_r15();
private: private:
types type_; types type_;
@ -560,7 +536,7 @@ struct rrc_conn_reest_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_reest_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { rrc_conn_reest_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -574,26 +550,22 @@ struct rrc_conn_reest_s {
// getters // getters
rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8()
{ {
assert_choice_type("rrcConnectionReestablishment-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_r8, type_, "c1");
return c; return c;
} }
const rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() const const rrc_conn_reest_r8_ies_s& rrc_conn_reest_r8() const
{ {
assert_choice_type("rrcConnectionReestablishment-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_r8, type_, "c1");
return c;
}
rrc_conn_reest_r8_ies_s& set_rrc_conn_reest_r8()
{
set(types::rrc_conn_reest_r8);
return c; return c;
} }
void set_spare7() { set(types::spare7); } rrc_conn_reest_r8_ies_s& set_rrc_conn_reest_r8();
void set_spare6() { set(types::spare6); } void set_spare7();
void set_spare5() { set(types::spare5); } void set_spare6();
void set_spare4() { set(types::spare4); } void set_spare5();
void set_spare3() { set(types::spare3); } void set_spare4();
void set_spare2() { set(types::spare2); } void set_spare3();
void set_spare1() { set(types::spare1); } void set_spare2();
void set_spare1();
private: private:
types type_; types type_;
@ -611,20 +583,16 @@ struct rrc_conn_reest_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
c1_c_& set_c1() c1_c_& set_c1();
{ void set_crit_exts_future();
set(types::c1);
return c;
}
void set_crit_exts_future() { set(types::crit_exts_future); }
private: private:
types type_; types type_;
@ -647,7 +615,7 @@ struct rrc_conn_reest_reject_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_reest_reject_r8, crit_exts_future, nulltype } value; enum options { rrc_conn_reest_reject_r8, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -661,20 +629,16 @@ struct rrc_conn_reest_reject_s {
// getters // getters
rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8() rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8()
{ {
assert_choice_type("rrcConnectionReestablishmentReject-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_reest_reject_r8, type_, "criticalExtensions");
return c; return c;
} }
const rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8() const const rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_r8() const
{ {
assert_choice_type("rrcConnectionReestablishmentReject-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_reest_reject_r8, type_, "criticalExtensions");
return c;
}
rrc_conn_reest_reject_r8_ies_s& set_rrc_conn_reest_reject_r8()
{
set(types::rrc_conn_reest_reject_r8);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } rrc_conn_reest_reject_r8_ies_s& set_rrc_conn_reest_reject_r8();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -697,7 +661,7 @@ struct rrc_conn_reject_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_reject_r8, spare3, spare2, spare1, nulltype } value; enum options { rrc_conn_reject_r8, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -711,22 +675,18 @@ struct rrc_conn_reject_s {
// getters // getters
rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8()
{ {
assert_choice_type("rrcConnectionReject-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reject_r8, type_, "c1");
return c; return c;
} }
const rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() const const rrc_conn_reject_r8_ies_s& rrc_conn_reject_r8() const
{ {
assert_choice_type("rrcConnectionReject-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reject_r8, type_, "c1");
return c;
}
rrc_conn_reject_r8_ies_s& set_rrc_conn_reject_r8()
{
set(types::rrc_conn_reject_r8);
return c; return c;
} }
void set_spare3() { set(types::spare3); } rrc_conn_reject_r8_ies_s& set_rrc_conn_reject_r8();
void set_spare2() { set(types::spare2); } void set_spare3();
void set_spare1() { set(types::spare1); } void set_spare2();
void set_spare1();
private: private:
types type_; types type_;
@ -744,20 +704,16 @@ struct rrc_conn_reject_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -780,7 +736,7 @@ struct rrc_conn_setup_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_setup_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { rrc_conn_setup_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -794,26 +750,22 @@ struct rrc_conn_setup_s {
// getters // getters
rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8()
{ {
assert_choice_type("rrcConnectionSetup-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_setup_r8, type_, "c1");
return c; return c;
} }
const rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() const const rrc_conn_setup_r8_ies_s& rrc_conn_setup_r8() const
{ {
assert_choice_type("rrcConnectionSetup-r8", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_setup_r8, type_, "c1");
return c; return c;
} }
rrc_conn_setup_r8_ies_s& set_rrc_conn_setup_r8() rrc_conn_setup_r8_ies_s& set_rrc_conn_setup_r8();
{ void set_spare7();
set(types::rrc_conn_setup_r8); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -831,20 +783,16 @@ struct rrc_conn_setup_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
c1_c_& set_c1() c1_c_& set_c1();
{ void set_crit_exts_future();
set(types::c1);
return c;
}
void set_crit_exts_future() { set(types::crit_exts_future); }
private: private:
types type_; types type_;
@ -867,7 +815,7 @@ struct rrc_early_data_complete_r15_s {
struct types_opts { struct types_opts {
enum options { rrc_early_data_complete_r15, crit_exts_future, nulltype } value; enum options { rrc_early_data_complete_r15, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -881,20 +829,16 @@ struct rrc_early_data_complete_r15_s {
// getters // getters
rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15() rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15()
{ {
assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_early_data_complete_r15, type_, "criticalExtensions");
return c; return c;
} }
const rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15() const const rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15() const
{ {
assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_early_data_complete_r15, type_, "criticalExtensions");
return c;
}
rrc_early_data_complete_r15_ies_s& set_rrc_early_data_complete_r15()
{
set(types::rrc_early_data_complete_r15);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } rrc_early_data_complete_r15_ies_s& set_rrc_early_data_complete_r15();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -916,7 +860,7 @@ struct dl_ccch_msg_type_c {
struct types_opts { struct types_opts {
enum options { rrc_conn_reest, rrc_conn_reest_reject, rrc_conn_reject, rrc_conn_setup, nulltype } value; enum options { rrc_conn_reest, rrc_conn_reest_reject, rrc_conn_reject, rrc_conn_setup, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -933,64 +877,48 @@ struct dl_ccch_msg_type_c {
// getters // getters
rrc_conn_reest_s& rrc_conn_reest() rrc_conn_reest_s& rrc_conn_reest()
{ {
assert_choice_type("rrcConnectionReestablishment", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest, type_, "c1");
return c.get<rrc_conn_reest_s>(); return c.get<rrc_conn_reest_s>();
} }
rrc_conn_reest_reject_s& rrc_conn_reest_reject() rrc_conn_reest_reject_s& rrc_conn_reest_reject()
{ {
assert_choice_type("rrcConnectionReestablishmentReject", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_reject, type_, "c1");
return c.get<rrc_conn_reest_reject_s>(); return c.get<rrc_conn_reest_reject_s>();
} }
rrc_conn_reject_s& rrc_conn_reject() rrc_conn_reject_s& rrc_conn_reject()
{ {
assert_choice_type("rrcConnectionReject", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reject, type_, "c1");
return c.get<rrc_conn_reject_s>(); return c.get<rrc_conn_reject_s>();
} }
rrc_conn_setup_s& rrc_conn_setup() rrc_conn_setup_s& rrc_conn_setup()
{ {
assert_choice_type("rrcConnectionSetup", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_setup, type_, "c1");
return c.get<rrc_conn_setup_s>(); return c.get<rrc_conn_setup_s>();
} }
const rrc_conn_reest_s& rrc_conn_reest() const const rrc_conn_reest_s& rrc_conn_reest() const
{ {
assert_choice_type("rrcConnectionReestablishment", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest, type_, "c1");
return c.get<rrc_conn_reest_s>(); return c.get<rrc_conn_reest_s>();
} }
const rrc_conn_reest_reject_s& rrc_conn_reest_reject() const const rrc_conn_reest_reject_s& rrc_conn_reest_reject() const
{ {
assert_choice_type("rrcConnectionReestablishmentReject", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_reject, type_, "c1");
return c.get<rrc_conn_reest_reject_s>(); return c.get<rrc_conn_reest_reject_s>();
} }
const rrc_conn_reject_s& rrc_conn_reject() const const rrc_conn_reject_s& rrc_conn_reject() const
{ {
assert_choice_type("rrcConnectionReject", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reject, type_, "c1");
return c.get<rrc_conn_reject_s>(); return c.get<rrc_conn_reject_s>();
} }
const rrc_conn_setup_s& rrc_conn_setup() const const rrc_conn_setup_s& rrc_conn_setup() const
{ {
assert_choice_type("rrcConnectionSetup", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_setup, type_, "c1");
return c.get<rrc_conn_setup_s>();
}
rrc_conn_reest_s& set_rrc_conn_reest()
{
set(types::rrc_conn_reest);
return c.get<rrc_conn_reest_s>();
}
rrc_conn_reest_reject_s& set_rrc_conn_reest_reject()
{
set(types::rrc_conn_reest_reject);
return c.get<rrc_conn_reest_reject_s>();
}
rrc_conn_reject_s& set_rrc_conn_reject()
{
set(types::rrc_conn_reject);
return c.get<rrc_conn_reject_s>();
}
rrc_conn_setup_s& set_rrc_conn_setup()
{
set(types::rrc_conn_setup);
return c.get<rrc_conn_setup_s>(); return c.get<rrc_conn_setup_s>();
} }
rrc_conn_reest_s& set_rrc_conn_reest();
rrc_conn_reest_reject_s& set_rrc_conn_reest_reject();
rrc_conn_reject_s& set_rrc_conn_reject();
rrc_conn_setup_s& set_rrc_conn_setup();
private: private:
types type_; types type_;
@ -1003,7 +931,7 @@ struct dl_ccch_msg_type_c {
struct types_opts { struct types_opts {
enum options { rrc_early_data_complete_r15, spare3, spare2, spare1, nulltype } value; enum options { rrc_early_data_complete_r15, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -1017,22 +945,18 @@ struct dl_ccch_msg_type_c {
// getters // getters
rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() rrc_early_data_complete_r15_s& rrc_early_data_complete_r15()
{ {
assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "c2"); assert_choice_type(types::rrc_early_data_complete_r15, type_, "c2");
return c; return c;
} }
const rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() const const rrc_early_data_complete_r15_s& rrc_early_data_complete_r15() const
{ {
assert_choice_type("rrcEarlyDataComplete-r15", type_.to_string(), "c2"); assert_choice_type(types::rrc_early_data_complete_r15, type_, "c2");
return c; return c;
} }
rrc_early_data_complete_r15_s& set_rrc_early_data_complete_r15() rrc_early_data_complete_r15_s& set_rrc_early_data_complete_r15();
{ void set_spare3();
set(types::rrc_early_data_complete_r15); void set_spare2();
return c; void set_spare1();
}
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -1042,7 +966,7 @@ struct dl_ccch_msg_type_c {
enum options { c2, msg_class_ext_future_r15, nulltype } value; enum options { c2, msg_class_ext_future_r15, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -1057,20 +981,16 @@ struct dl_ccch_msg_type_c {
// getters // getters
c2_c_& c2() c2_c_& c2()
{ {
assert_choice_type("c2", type_.to_string(), "messageClassExtension"); assert_choice_type(types::c2, type_, "messageClassExtension");
return c; return c;
} }
const c2_c_& c2() const const c2_c_& c2() const
{ {
assert_choice_type("c2", type_.to_string(), "messageClassExtension"); assert_choice_type(types::c2, type_, "messageClassExtension");
return c;
}
c2_c_& set_c2()
{
set(types::c2);
return c; return c;
} }
void set_msg_class_ext_future_r15() { set(types::msg_class_ext_future_r15); } c2_c_& set_c2();
void set_msg_class_ext_future_r15();
private: private:
types type_; types type_;
@ -1080,7 +1000,7 @@ struct dl_ccch_msg_type_c {
enum options { c1, msg_class_ext, nulltype } value; enum options { c1, msg_class_ext, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -1098,34 +1018,26 @@ struct dl_ccch_msg_type_c {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "DL-CCCH-MessageType"); assert_choice_type(types::c1, type_, "DL-CCCH-MessageType");
return c.get<c1_c_>(); return c.get<c1_c_>();
} }
msg_class_ext_c_& msg_class_ext() msg_class_ext_c_& msg_class_ext()
{ {
assert_choice_type("messageClassExtension", type_.to_string(), "DL-CCCH-MessageType"); assert_choice_type(types::msg_class_ext, type_, "DL-CCCH-MessageType");
return c.get<msg_class_ext_c_>(); return c.get<msg_class_ext_c_>();
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "DL-CCCH-MessageType"); assert_choice_type(types::c1, type_, "DL-CCCH-MessageType");
return c.get<c1_c_>(); return c.get<c1_c_>();
} }
const msg_class_ext_c_& msg_class_ext() const const msg_class_ext_c_& msg_class_ext() const
{ {
assert_choice_type("messageClassExtension", type_.to_string(), "DL-CCCH-MessageType"); assert_choice_type(types::msg_class_ext, type_, "DL-CCCH-MessageType");
return c.get<msg_class_ext_c_>();
}
c1_c_& set_c1()
{
set(types::c1);
return c.get<c1_c_>();
}
msg_class_ext_c_& set_msg_class_ext()
{
set(types::msg_class_ext);
return c.get<msg_class_ext_c_>(); return c.get<msg_class_ext_c_>();
} }
c1_c_& set_c1();
msg_class_ext_c_& set_msg_class_ext();
private: private:
types type_; types type_;

File diff suppressed because it is too large Load Diff

@ -124,7 +124,7 @@ struct scg_cfg_r12_s {
struct types_opts { struct types_opts {
enum options { scg_cfg_r12, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { scg_cfg_r12, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -138,26 +138,22 @@ struct scg_cfg_r12_s {
// getters // getters
scg_cfg_r12_ies_s& scg_cfg_r12() scg_cfg_r12_ies_s& scg_cfg_r12()
{ {
assert_choice_type("scg-Config-r12", type_.to_string(), "c1"); assert_choice_type(types::scg_cfg_r12, type_, "c1");
return c; return c;
} }
const scg_cfg_r12_ies_s& scg_cfg_r12() const const scg_cfg_r12_ies_s& scg_cfg_r12() const
{ {
assert_choice_type("scg-Config-r12", type_.to_string(), "c1"); assert_choice_type(types::scg_cfg_r12, type_, "c1");
return c; return c;
} }
scg_cfg_r12_ies_s& set_scg_cfg_r12() scg_cfg_r12_ies_s& set_scg_cfg_r12();
{ void set_spare7();
set(types::scg_cfg_r12); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -175,20 +171,16 @@ struct scg_cfg_r12_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -444,7 +436,7 @@ struct ho_cmd_s {
struct types_opts { struct types_opts {
enum options { ho_cmd_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { ho_cmd_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -458,26 +450,22 @@ struct ho_cmd_s {
// getters // getters
ho_cmd_r8_ies_s& ho_cmd_r8() ho_cmd_r8_ies_s& ho_cmd_r8()
{ {
assert_choice_type("handoverCommand-r8", type_.to_string(), "c1"); assert_choice_type(types::ho_cmd_r8, type_, "c1");
return c; return c;
} }
const ho_cmd_r8_ies_s& ho_cmd_r8() const const ho_cmd_r8_ies_s& ho_cmd_r8() const
{ {
assert_choice_type("handoverCommand-r8", type_.to_string(), "c1"); assert_choice_type(types::ho_cmd_r8, type_, "c1");
return c; return c;
} }
ho_cmd_r8_ies_s& set_ho_cmd_r8() ho_cmd_r8_ies_s& set_ho_cmd_r8();
{ void set_spare7();
set(types::ho_cmd_r8); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -495,20 +483,16 @@ struct ho_cmd_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
c1_c_& set_c1() c1_c_& set_c1();
{ void set_crit_exts_future();
set(types::c1);
return c;
}
void set_crit_exts_future() { set(types::crit_exts_future); }
private: private:
types type_; types type_;
@ -637,7 +621,7 @@ struct ho_prep_info_v920_ies_s {
struct ue_cfg_release_r9_opts { struct ue_cfg_release_r9_opts {
enum options { rel9, rel10, rel11, rel12, v10j0, v11e0, v1280, rel13, /*...*/ rel14, rel15, nulltype } value; enum options { rel9, rel10, rel11, rel12, v10j0, v11e0, v1280, rel13, /*...*/ rel14, rel15, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<ue_cfg_release_r9_opts, true, 2> ue_cfg_release_r9_e_; typedef enumerated<ue_cfg_release_r9_opts, true, 2> ue_cfg_release_r9_e_;
@ -724,7 +708,7 @@ struct rrm_cfg_s {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<ue_inactive_time_opts> ue_inactive_time_e_; typedef enumerated<ue_inactive_time_opts> ue_inactive_time_e_;
@ -769,7 +753,7 @@ struct ho_prep_info_s {
struct types_opts { struct types_opts {
enum options { ho_prep_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { ho_prep_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -783,26 +767,22 @@ struct ho_prep_info_s {
// getters // getters
ho_prep_info_r8_ies_s& ho_prep_info_r8() ho_prep_info_r8_ies_s& ho_prep_info_r8()
{ {
assert_choice_type("handoverPreparationInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ho_prep_info_r8, type_, "c1");
return c; return c;
} }
const ho_prep_info_r8_ies_s& ho_prep_info_r8() const const ho_prep_info_r8_ies_s& ho_prep_info_r8() const
{ {
assert_choice_type("handoverPreparationInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ho_prep_info_r8, type_, "c1");
return c; return c;
} }
ho_prep_info_r8_ies_s& set_ho_prep_info_r8() ho_prep_info_r8_ies_s& set_ho_prep_info_r8();
{ void set_spare7();
set(types::ho_prep_info_r8); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -820,20 +800,16 @@ struct ho_prep_info_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -919,20 +895,16 @@ struct var_meas_cfg_s {
// getters // getters
setup_s_& setup() setup_s_& setup()
{ {
assert_choice_type("setup", type_.to_string(), "speedStatePars"); assert_choice_type(types::setup, type_, "speedStatePars");
return c; return c;
} }
const setup_s_& setup() const const setup_s_& setup() const
{ {
assert_choice_type("setup", type_.to_string(), "speedStatePars"); assert_choice_type(types::setup, type_, "speedStatePars");
return c;
}
void set_release() { set(types::release); }
setup_s_& set_setup()
{
set(types::setup);
return c; return c;
} }
void set_release();
setup_s_& set_setup();
private: private:
types type_; types type_;

File diff suppressed because it is too large Load Diff

@ -93,7 +93,7 @@ struct paging_ue_id_c {
enum options { s_tmsi, imsi, /*...*/ ng_minus5_g_s_tmsi_r15, full_i_rnti_r15, nulltype } value; enum options { s_tmsi, imsi, /*...*/ ng_minus5_g_s_tmsi_r15, full_i_rnti_r15, nulltype } value;
typedef int8_t number_type; typedef int8_t number_type;
std::string to_string() const; const char* to_string() const;
int8_t to_number() const; int8_t to_number() const;
}; };
typedef enumerated<types_opts, true, 2> types; typedef enumerated<types_opts, true, 2> types;
@ -111,64 +111,48 @@ struct paging_ue_id_c {
// getters // getters
s_tmsi_s& s_tmsi() s_tmsi_s& s_tmsi()
{ {
assert_choice_type("s-TMSI", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::s_tmsi, type_, "PagingUE-Identity");
return c.get<s_tmsi_s>(); return c.get<s_tmsi_s>();
} }
imsi_l& imsi() imsi_l& imsi()
{ {
assert_choice_type("imsi", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::imsi, type_, "PagingUE-Identity");
return c.get<imsi_l>(); return c.get<imsi_l>();
} }
fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15()
{ {
assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::ng_minus5_g_s_tmsi_r15, type_, "PagingUE-Identity");
return c.get<fixed_bitstring<48> >(); return c.get<fixed_bitstring<48> >();
} }
fixed_bitstring<40>& full_i_rnti_r15() fixed_bitstring<40>& full_i_rnti_r15()
{ {
assert_choice_type("fullI-RNTI-r15", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::full_i_rnti_r15, type_, "PagingUE-Identity");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const s_tmsi_s& s_tmsi() const const s_tmsi_s& s_tmsi() const
{ {
assert_choice_type("s-TMSI", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::s_tmsi, type_, "PagingUE-Identity");
return c.get<s_tmsi_s>(); return c.get<s_tmsi_s>();
} }
const imsi_l& imsi() const const imsi_l& imsi() const
{ {
assert_choice_type("imsi", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::imsi, type_, "PagingUE-Identity");
return c.get<imsi_l>(); return c.get<imsi_l>();
} }
const fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() const const fixed_bitstring<48>& ng_minus5_g_s_tmsi_r15() const
{ {
assert_choice_type("ng-5G-S-TMSI-r15", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::ng_minus5_g_s_tmsi_r15, type_, "PagingUE-Identity");
return c.get<fixed_bitstring<48> >(); return c.get<fixed_bitstring<48> >();
} }
const fixed_bitstring<40>& full_i_rnti_r15() const const fixed_bitstring<40>& full_i_rnti_r15() const
{ {
assert_choice_type("fullI-RNTI-r15", type_.to_string(), "PagingUE-Identity"); assert_choice_type(types::full_i_rnti_r15, type_, "PagingUE-Identity");
return c.get<fixed_bitstring<40> >();
}
s_tmsi_s& set_s_tmsi()
{
set(types::s_tmsi);
return c.get<s_tmsi_s>();
}
imsi_l& set_imsi()
{
set(types::imsi);
return c.get<imsi_l>();
}
fixed_bitstring<48>& set_ng_minus5_g_s_tmsi_r15()
{
set(types::ng_minus5_g_s_tmsi_r15);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<40>& set_full_i_rnti_r15()
{
set(types::full_i_rnti_r15);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
s_tmsi_s& set_s_tmsi();
imsi_l& set_imsi();
fixed_bitstring<48>& set_ng_minus5_g_s_tmsi_r15();
fixed_bitstring<40>& set_full_i_rnti_r15();
private: private:
types type_; types type_;
@ -194,7 +178,7 @@ struct paging_record_s {
struct cn_domain_opts { struct cn_domain_opts {
enum options { ps, cs, nulltype } value; enum options { ps, cs, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cn_domain_opts> cn_domain_e_; typedef enumerated<cn_domain_opts> cn_domain_e_;
@ -247,7 +231,7 @@ struct pcch_msg_type_c {
struct types_opts { struct types_opts {
enum options { paging, nulltype } value; enum options { paging, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -267,7 +251,7 @@ struct pcch_msg_type_c {
enum options { c1, msg_class_ext, nulltype } value; enum options { c1, msg_class_ext, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -282,20 +266,16 @@ struct pcch_msg_type_c {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "PCCH-MessageType"); assert_choice_type(types::c1, type_, "PCCH-MessageType");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "PCCH-MessageType"); assert_choice_type(types::c1, type_, "PCCH-MessageType");
return c; return c;
} }
c1_c_& set_c1() c1_c_& set_c1();
{ void set_msg_class_ext();
set(types::c1);
return c;
}
void set_msg_class_ext() { set(types::msg_class_ext); }
private: private:
types type_; types type_;
@ -341,7 +321,7 @@ struct ue_paging_coverage_info_s {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -355,26 +335,22 @@ struct ue_paging_coverage_info_s {
// getters // getters
ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13() ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13()
{ {
assert_choice_type("uePagingCoverageInformation-r13", type_.to_string(), "c1"); assert_choice_type(types::ue_paging_coverage_info_r13, type_, "c1");
return c; return c;
} }
const ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13() const const ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_r13() const
{ {
assert_choice_type("uePagingCoverageInformation-r13", type_.to_string(), "c1"); assert_choice_type(types::ue_paging_coverage_info_r13, type_, "c1");
return c;
}
ue_paging_coverage_info_r13_ies_s& set_ue_paging_coverage_info_r13()
{
set(types::ue_paging_coverage_info_r13);
return c; return c;
} }
void set_spare7() { set(types::spare7); } ue_paging_coverage_info_r13_ies_s& set_ue_paging_coverage_info_r13();
void set_spare6() { set(types::spare6); } void set_spare7();
void set_spare5() { set(types::spare5); } void set_spare6();
void set_spare4() { set(types::spare4); } void set_spare5();
void set_spare3() { set(types::spare3); } void set_spare4();
void set_spare2() { set(types::spare2); } void set_spare3();
void set_spare1() { set(types::spare1); } void set_spare2();
void set_spare1();
private: private:
types type_; types type_;
@ -392,20 +368,16 @@ struct ue_paging_coverage_info_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -465,7 +437,7 @@ struct ue_radio_paging_info_s {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -479,26 +451,22 @@ struct ue_radio_paging_info_s {
// getters // getters
ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12() ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12()
{ {
assert_choice_type("ueRadioPagingInformation-r12", type_.to_string(), "c1"); assert_choice_type(types::ue_radio_paging_info_r12, type_, "c1");
return c; return c;
} }
const ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12() const const ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_r12() const
{ {
assert_choice_type("ueRadioPagingInformation-r12", type_.to_string(), "c1"); assert_choice_type(types::ue_radio_paging_info_r12, type_, "c1");
return c; return c;
} }
ue_radio_paging_info_r12_ies_s& set_ue_radio_paging_info_r12() ue_radio_paging_info_r12_ies_s& set_ue_radio_paging_info_r12();
{ void set_spare7();
set(types::ue_radio_paging_info_r12); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -516,20 +484,16 @@ struct ue_radio_paging_info_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -43,7 +43,7 @@ struct security_algorithm_cfg_s {
enum options { eia0_v920, eia1, eia2, eia3_v1130, spare4, spare3, spare2, spare1, /*...*/ nulltype } value; enum options { eia0_v920, eia1, eia2, eia3_v1130, spare4, spare3, spare2, spare1, /*...*/ nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<integrity_prot_algorithm_opts, true> integrity_prot_algorithm_e_; typedef enumerated<integrity_prot_algorithm_opts, true> integrity_prot_algorithm_e_;
@ -80,7 +80,7 @@ struct security_cfg_ho_v1530_s {
struct types_opts { struct types_opts {
enum options { intra5_gc_r15, fivegc_to_epc_r15, epc_to5_gc_r15, nulltype } value; enum options { intra5_gc_r15, fivegc_to_epc_r15, epc_to5_gc_r15, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -97,49 +97,37 @@ struct security_cfg_ho_v1530_s {
// getters // getters
intra5_gc_r15_s_& intra5_gc_r15() intra5_gc_r15_s_& intra5_gc_r15()
{ {
assert_choice_type("intra5GC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::intra5_gc_r15, type_, "handoverType-v1530");
return c.get<intra5_gc_r15_s_>(); return c.get<intra5_gc_r15_s_>();
} }
fivegc_to_epc_r15_s_& fivegc_to_epc_r15() fivegc_to_epc_r15_s_& fivegc_to_epc_r15()
{ {
assert_choice_type("fivegc-ToEPC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::fivegc_to_epc_r15, type_, "handoverType-v1530");
return c.get<fivegc_to_epc_r15_s_>(); return c.get<fivegc_to_epc_r15_s_>();
} }
epc_to5_gc_r15_s_& epc_to5_gc_r15() epc_to5_gc_r15_s_& epc_to5_gc_r15()
{ {
assert_choice_type("epc-To5GC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::epc_to5_gc_r15, type_, "handoverType-v1530");
return c.get<epc_to5_gc_r15_s_>(); return c.get<epc_to5_gc_r15_s_>();
} }
const intra5_gc_r15_s_& intra5_gc_r15() const const intra5_gc_r15_s_& intra5_gc_r15() const
{ {
assert_choice_type("intra5GC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::intra5_gc_r15, type_, "handoverType-v1530");
return c.get<intra5_gc_r15_s_>(); return c.get<intra5_gc_r15_s_>();
} }
const fivegc_to_epc_r15_s_& fivegc_to_epc_r15() const const fivegc_to_epc_r15_s_& fivegc_to_epc_r15() const
{ {
assert_choice_type("fivegc-ToEPC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::fivegc_to_epc_r15, type_, "handoverType-v1530");
return c.get<fivegc_to_epc_r15_s_>(); return c.get<fivegc_to_epc_r15_s_>();
} }
const epc_to5_gc_r15_s_& epc_to5_gc_r15() const const epc_to5_gc_r15_s_& epc_to5_gc_r15() const
{ {
assert_choice_type("epc-To5GC-r15", type_.to_string(), "handoverType-v1530"); assert_choice_type(types::epc_to5_gc_r15, type_, "handoverType-v1530");
return c.get<epc_to5_gc_r15_s_>();
}
intra5_gc_r15_s_& set_intra5_gc_r15()
{
set(types::intra5_gc_r15);
return c.get<intra5_gc_r15_s_>();
}
fivegc_to_epc_r15_s_& set_fivegc_to_epc_r15()
{
set(types::fivegc_to_epc_r15);
return c.get<fivegc_to_epc_r15_s_>();
}
epc_to5_gc_r15_s_& set_epc_to5_gc_r15()
{
set(types::epc_to5_gc_r15);
return c.get<epc_to5_gc_r15_s_>(); return c.get<epc_to5_gc_r15_s_>();
} }
intra5_gc_r15_s_& set_intra5_gc_r15();
fivegc_to_epc_r15_s_& set_fivegc_to_epc_r15();
epc_to5_gc_r15_s_& set_epc_to5_gc_r15();
private: private:
types type_; types type_;
@ -175,7 +163,7 @@ struct security_cfg_ho_s {
struct types_opts { struct types_opts {
enum options { intra_lte, inter_rat, nulltype } value; enum options { intra_lte, inter_rat, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -192,34 +180,26 @@ struct security_cfg_ho_s {
// getters // getters
intra_lte_s_& intra_lte() intra_lte_s_& intra_lte()
{ {
assert_choice_type("intraLTE", type_.to_string(), "handoverType"); assert_choice_type(types::intra_lte, type_, "handoverType");
return c.get<intra_lte_s_>(); return c.get<intra_lte_s_>();
} }
inter_rat_s_& inter_rat() inter_rat_s_& inter_rat()
{ {
assert_choice_type("interRAT", type_.to_string(), "handoverType"); assert_choice_type(types::inter_rat, type_, "handoverType");
return c.get<inter_rat_s_>(); return c.get<inter_rat_s_>();
} }
const intra_lte_s_& intra_lte() const const intra_lte_s_& intra_lte() const
{ {
assert_choice_type("intraLTE", type_.to_string(), "handoverType"); assert_choice_type(types::intra_lte, type_, "handoverType");
return c.get<intra_lte_s_>(); return c.get<intra_lte_s_>();
} }
const inter_rat_s_& inter_rat() const const inter_rat_s_& inter_rat() const
{ {
assert_choice_type("interRAT", type_.to_string(), "handoverType"); assert_choice_type(types::inter_rat, type_, "handoverType");
return c.get<inter_rat_s_>();
}
intra_lte_s_& set_intra_lte()
{
set(types::intra_lte);
return c.get<intra_lte_s_>();
}
inter_rat_s_& set_inter_rat()
{
set(types::inter_rat);
return c.get<inter_rat_s_>(); return c.get<inter_rat_s_>();
} }
intra_lte_s_& set_intra_lte();
inter_rat_s_& set_inter_rat();
private: private:
types type_; types type_;
@ -282,7 +262,7 @@ struct security_mode_cmd_s {
struct types_opts { struct types_opts {
enum options { security_mode_cmd_r8, spare3, spare2, spare1, nulltype } value; enum options { security_mode_cmd_r8, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -296,22 +276,18 @@ struct security_mode_cmd_s {
// getters // getters
security_mode_cmd_r8_ies_s& security_mode_cmd_r8() security_mode_cmd_r8_ies_s& security_mode_cmd_r8()
{ {
assert_choice_type("securityModeCommand-r8", type_.to_string(), "c1"); assert_choice_type(types::security_mode_cmd_r8, type_, "c1");
return c; return c;
} }
const security_mode_cmd_r8_ies_s& security_mode_cmd_r8() const const security_mode_cmd_r8_ies_s& security_mode_cmd_r8() const
{ {
assert_choice_type("securityModeCommand-r8", type_.to_string(), "c1"); assert_choice_type(types::security_mode_cmd_r8, type_, "c1");
return c;
}
security_mode_cmd_r8_ies_s& set_security_mode_cmd_r8()
{
set(types::security_mode_cmd_r8);
return c; return c;
} }
void set_spare3() { set(types::spare3); } security_mode_cmd_r8_ies_s& set_security_mode_cmd_r8();
void set_spare2() { set(types::spare2); } void set_spare3();
void set_spare1() { set(types::spare1); } void set_spare2();
void set_spare1();
private: private:
types type_; types type_;
@ -329,20 +305,16 @@ struct security_mode_cmd_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -411,7 +383,7 @@ struct security_mode_complete_s {
struct types_opts { struct types_opts {
enum options { security_mode_complete_r8, crit_exts_future, nulltype } value; enum options { security_mode_complete_r8, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -425,20 +397,16 @@ struct security_mode_complete_s {
// getters // getters
security_mode_complete_r8_ies_s& security_mode_complete_r8() security_mode_complete_r8_ies_s& security_mode_complete_r8()
{ {
assert_choice_type("securityModeComplete-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::security_mode_complete_r8, type_, "criticalExtensions");
return c; return c;
} }
const security_mode_complete_r8_ies_s& security_mode_complete_r8() const const security_mode_complete_r8_ies_s& security_mode_complete_r8() const
{ {
assert_choice_type("securityModeComplete-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::security_mode_complete_r8, type_, "criticalExtensions");
return c; return c;
} }
security_mode_complete_r8_ies_s& set_security_mode_complete_r8() security_mode_complete_r8_ies_s& set_security_mode_complete_r8();
{ void set_crit_exts_future();
set(types::security_mode_complete_r8);
return c;
}
void set_crit_exts_future() { set(types::crit_exts_future); }
private: private:
types type_; types type_;
@ -461,7 +429,7 @@ struct security_mode_fail_s {
struct types_opts { struct types_opts {
enum options { security_mode_fail_r8, crit_exts_future, nulltype } value; enum options { security_mode_fail_r8, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -475,20 +443,16 @@ struct security_mode_fail_s {
// getters // getters
security_mode_fail_r8_ies_s& security_mode_fail_r8() security_mode_fail_r8_ies_s& security_mode_fail_r8()
{ {
assert_choice_type("securityModeFailure-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::security_mode_fail_r8, type_, "criticalExtensions");
return c; return c;
} }
const security_mode_fail_r8_ies_s& security_mode_fail_r8() const const security_mode_fail_r8_ies_s& security_mode_fail_r8() const
{ {
assert_choice_type("securityModeFailure-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::security_mode_fail_r8, type_, "criticalExtensions");
return c;
}
security_mode_fail_r8_ies_s& set_security_mode_fail_r8()
{
set(types::security_mode_fail_r8);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } security_mode_fail_r8_ies_s& set_security_mode_fail_r8();
void set_crit_exts_future();
private: private:
types type_; types type_;

@ -43,7 +43,7 @@ struct mib_s {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value; enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<dl_bw_opts> dl_bw_e_; typedef enumerated<dl_bw_opts> dl_bw_e_;
@ -67,7 +67,7 @@ struct gnss_id_r15_s {
struct gnss_id_r15_opts { struct gnss_id_r15_opts {
enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ nulltype } value; enum options { gps, sbas, qzss, galileo, glonass, bds, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<gnss_id_r15_opts, true> gnss_id_r15_e_; typedef enumerated<gnss_id_r15_opts, true> gnss_id_r15_e_;
@ -87,7 +87,7 @@ struct sbas_id_r15_s {
struct sbas_id_r15_opts { struct sbas_id_r15_opts {
enum options { waas, egnos, msas, gagan, /*...*/ nulltype } value; enum options { waas, egnos, msas, gagan, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<sbas_id_r15_opts, true> sbas_id_r15_e_; typedef enumerated<sbas_id_r15_opts, true> sbas_id_r15_e_;
@ -137,7 +137,7 @@ struct pos_sib_type_r15_s {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<pos_sib_type_r15_opts, true> pos_sib_type_r15_e_; typedef enumerated<pos_sib_type_r15_opts, true> pos_sib_type_r15_e_;
@ -165,7 +165,7 @@ struct plmn_id_info_v1530_s {
struct cell_reserved_for_oper_crs_r15_opts { struct cell_reserved_for_oper_crs_r15_opts {
enum options { reserved, not_reserved, nulltype } value; enum options { reserved, not_reserved, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_reserved_for_oper_crs_r15_opts> cell_reserved_for_oper_crs_r15_e_; typedef enumerated<cell_reserved_for_oper_crs_r15_opts> cell_reserved_for_oper_crs_r15_e_;
@ -184,7 +184,7 @@ struct pos_sched_info_r15_s {
enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value; enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<pos_si_periodicity_r15_opts> pos_si_periodicity_r15_e_; typedef enumerated<pos_si_periodicity_r15_opts> pos_si_periodicity_r15_e_;
@ -205,7 +205,7 @@ struct cell_sel_info_ce_v1530_s {
enum options { db_minus6, db_minus3, db3, db6, db9, db12, nulltype } value; enum options { db_minus6, db_minus3, db3, db6, db9, db12, nulltype } value;
typedef int8_t number_type; typedef int8_t number_type;
std::string to_string() const; const char* to_string() const;
int8_t to_number() const; int8_t to_number() const;
}; };
typedef enumerated<pwr_class14dbm_offset_r15_opts> pwr_class14dbm_offset_r15_e_; typedef enumerated<pwr_class14dbm_offset_r15_opts> pwr_class14dbm_offset_r15_e_;
@ -243,14 +243,14 @@ struct sib_type1_v1530_ies_s {
enum options { n6, n24, nulltype } value; enum options { n6, n24, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<crs_intf_mitig_num_prbs_opts> crs_intf_mitig_num_prbs_e_; typedef enumerated<crs_intf_mitig_num_prbs_opts> crs_intf_mitig_num_prbs_e_;
struct types_opts { struct types_opts {
enum options { crs_intf_mitig_enabled, crs_intf_mitig_num_prbs, nulltype } value; enum options { crs_intf_mitig_enabled, crs_intf_mitig_num_prbs, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -264,20 +264,16 @@ struct sib_type1_v1530_ies_s {
// getters // getters
crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs()
{ {
assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "crs-IntfMitigConfig-r15"); assert_choice_type(types::crs_intf_mitig_num_prbs, type_, "crs-IntfMitigConfig-r15");
return c; return c;
} }
const crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() const const crs_intf_mitig_num_prbs_e_& crs_intf_mitig_num_prbs() const
{ {
assert_choice_type("crs-IntfMitigNumPRBs", type_.to_string(), "crs-IntfMitigConfig-r15"); assert_choice_type(types::crs_intf_mitig_num_prbs, type_, "crs-IntfMitigConfig-r15");
return c;
}
void set_crs_intf_mitig_enabled() { set(types::crs_intf_mitig_enabled); }
crs_intf_mitig_num_prbs_e_& set_crs_intf_mitig_num_prbs()
{
set(types::crs_intf_mitig_num_prbs);
return c; return c;
} }
void set_crs_intf_mitig_enabled();
crs_intf_mitig_num_prbs_e_& set_crs_intf_mitig_num_prbs();
private: private:
types type_; types type_;
@ -286,20 +282,20 @@ struct sib_type1_v1530_ies_s {
struct cell_barred_crs_r15_opts { struct cell_barred_crs_r15_opts {
enum options { barred, not_barred, nulltype } value; enum options { barred, not_barred, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_barred_crs_r15_opts> cell_barred_crs_r15_e_; typedef enumerated<cell_barred_crs_r15_opts> cell_barred_crs_r15_e_;
struct cell_access_related_info_minus5_gc_r15_s_ { struct cell_access_related_info_minus5_gc_r15_s_ {
struct cell_barred_minus5_gc_r15_opts { struct cell_barred_minus5_gc_r15_opts {
enum options { barred, not_barred, nulltype } value; enum options { barred, not_barred, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_barred_minus5_gc_r15_opts> cell_barred_minus5_gc_r15_e_; typedef enumerated<cell_barred_minus5_gc_r15_opts> cell_barred_minus5_gc_r15_e_;
struct cell_barred_minus5_gc_crs_r15_opts { struct cell_barred_minus5_gc_crs_r15_opts {
enum options { barred, not_barred, nulltype } value; enum options { barred, not_barred, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_barred_minus5_gc_crs_r15_opts> cell_barred_minus5_gc_crs_r15_e_; typedef enumerated<cell_barred_minus5_gc_crs_r15_opts> cell_barred_minus5_gc_crs_r15_e_;
using cell_access_related_info_list_minus5_gc_r15_l_ = dyn_array<cell_access_related_info_minus5_gc_r15_s>; using cell_access_related_info_list_minus5_gc_r15_l_ = dyn_array<cell_access_related_info_minus5_gc_r15_s>;
@ -419,7 +415,7 @@ struct sched_info_br_r13_s {
enum options { b152, b208, b256, b328, b408, b504, b600, b712, b808, b936, nulltype } value; enum options { b152, b208, b256, b328, b408, b504, b600, b712, b808, b936, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<si_tbs_r13_opts> si_tbs_r13_e_; typedef enumerated<si_tbs_r13_opts> si_tbs_r13_e_;
@ -454,16 +450,16 @@ struct barr_per_acdc_category_r13_s {
enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value; enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<ac_barr_factor_r13_opts> ac_barr_factor_r13_e_; typedef enumerated<ac_barr_factor_r13_opts> ac_barr_factor_r13_e_;
struct ac_barr_time_r13_opts { struct ac_barr_time_r13_opts {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value; enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<ac_barr_time_r13_opts> ac_barr_time_r13_e_; typedef enumerated<ac_barr_time_r13_opts> ac_barr_time_r13_e_;
@ -509,7 +505,7 @@ struct sib_type1_v1320_ies_s {
enum options { nb2, nb4, nulltype } value; enum options { nb2, nb4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<mpdcch_pdsch_hop_nb_r13_opts> mpdcch_pdsch_hop_nb_r13_e_; typedef enumerated<mpdcch_pdsch_hop_nb_r13_opts> mpdcch_pdsch_hop_nb_r13_e_;
@ -518,7 +514,7 @@ struct sib_type1_v1320_ies_s {
enum options { int1, int2, int4, int8, nulltype } value; enum options { int1, int2, int4, int8, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_; typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_;
@ -526,14 +522,14 @@ struct sib_type1_v1320_ies_s {
enum options { int1, int5, int10, int20, nulltype } value; enum options { int1, int5, int10, int20, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_; typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_;
struct types_opts { struct types_opts {
enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value; enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -550,34 +546,26 @@ struct sib_type1_v1320_ies_s {
// getters // getters
interv_fdd_r13_e_& interv_fdd_r13() interv_fdd_r13_e_& interv_fdd_r13()
{ {
assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_fdd_r13_e_>(); return c.get<interv_fdd_r13_e_>();
} }
interv_tdd_r13_e_& interv_tdd_r13() interv_tdd_r13_e_& interv_tdd_r13()
{ {
assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_tdd_r13_e_>(); return c.get<interv_tdd_r13_e_>();
} }
const interv_fdd_r13_e_& interv_fdd_r13() const const interv_fdd_r13_e_& interv_fdd_r13() const
{ {
assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_fdd_r13_e_>(); return c.get<interv_fdd_r13_e_>();
} }
const interv_tdd_r13_e_& interv_tdd_r13() const const interv_tdd_r13_e_& interv_tdd_r13() const
{ {
assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeA-r13"); assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeA-r13");
return c.get<interv_tdd_r13_e_>();
}
interv_fdd_r13_e_& set_interv_fdd_r13()
{
set(types::interv_fdd_r13);
return c.get<interv_fdd_r13_e_>();
}
interv_tdd_r13_e_& set_interv_tdd_r13()
{
set(types::interv_tdd_r13);
return c.get<interv_tdd_r13_e_>(); return c.get<interv_tdd_r13_e_>();
} }
interv_fdd_r13_e_& set_interv_fdd_r13();
interv_tdd_r13_e_& set_interv_tdd_r13();
private: private:
types type_; types type_;
@ -590,7 +578,7 @@ struct sib_type1_v1320_ies_s {
enum options { int2, int4, int8, int16, nulltype } value; enum options { int2, int4, int8, int16, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_; typedef enumerated<interv_fdd_r13_opts> interv_fdd_r13_e_;
@ -598,14 +586,14 @@ struct sib_type1_v1320_ies_s {
enum options { int5, int10, int20, int40, nulltype } value; enum options { int5, int10, int20, int40, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_; typedef enumerated<interv_tdd_r13_opts> interv_tdd_r13_e_;
struct types_opts { struct types_opts {
enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value; enum options { interv_fdd_r13, interv_tdd_r13, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -622,34 +610,26 @@ struct sib_type1_v1320_ies_s {
// getters // getters
interv_fdd_r13_e_& interv_fdd_r13() interv_fdd_r13_e_& interv_fdd_r13()
{ {
assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_fdd_r13_e_>(); return c.get<interv_fdd_r13_e_>();
} }
interv_tdd_r13_e_& interv_tdd_r13() interv_tdd_r13_e_& interv_tdd_r13()
{ {
assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_tdd_r13_e_>(); return c.get<interv_tdd_r13_e_>();
} }
const interv_fdd_r13_e_& interv_fdd_r13() const const interv_fdd_r13_e_& interv_fdd_r13() const
{ {
assert_choice_type("interval-FDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); assert_choice_type(types::interv_fdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_fdd_r13_e_>(); return c.get<interv_fdd_r13_e_>();
} }
const interv_tdd_r13_e_& interv_tdd_r13() const const interv_tdd_r13_e_& interv_tdd_r13() const
{ {
assert_choice_type("interval-TDD-r13", type_.to_string(), "interval-DLHoppingConfigCommonModeB-r13"); assert_choice_type(types::interv_tdd_r13, type_, "interval-DLHoppingConfigCommonModeB-r13");
return c.get<interv_tdd_r13_e_>();
}
interv_fdd_r13_e_& set_interv_fdd_r13()
{
set(types::interv_fdd_r13);
return c.get<interv_fdd_r13_e_>();
}
interv_tdd_r13_e_& set_interv_tdd_r13()
{
set(types::interv_tdd_r13);
return c.get<interv_tdd_r13_e_>(); return c.get<interv_tdd_r13_e_>();
} }
interv_fdd_r13_e_& set_interv_fdd_r13();
interv_tdd_r13_e_& set_interv_tdd_r13();
private: private:
types type_; types type_;
@ -687,16 +667,16 @@ struct ac_barr_cfg_s {
enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value; enum options { p00, p05, p10, p15, p20, p25, p30, p40, p50, p60, p70, p75, p80, p85, p90, p95, nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<ac_barr_factor_opts> ac_barr_factor_e_; typedef enumerated<ac_barr_factor_opts> ac_barr_factor_e_;
struct ac_barr_time_opts { struct ac_barr_time_opts {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value; enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<ac_barr_time_opts> ac_barr_time_e_; typedef enumerated<ac_barr_time_opts> ac_barr_time_e_;
@ -732,7 +712,7 @@ struct sib_type1_v1310_ies_s {
enum options { ms20, ms40, ms60, ms80, ms120, ms160, ms200, spare, nulltype } value; enum options { ms20, ms40, ms60, ms80, ms120, ms160, ms200, spare, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<si_win_len_br_r13_opts> si_win_len_br_r13_e_; typedef enumerated<si_win_len_br_r13_opts> si_win_len_br_r13_e_;
@ -740,7 +720,7 @@ struct sib_type1_v1310_ies_s {
enum options { every_rf, every2nd_rf, every4th_rf, every8th_rf, nulltype } value; enum options { every_rf, every2nd_rf, every4th_rf, every8th_rf, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<si_repeat_pattern_r13_opts> si_repeat_pattern_r13_e_; typedef enumerated<si_repeat_pattern_r13_opts> si_repeat_pattern_r13_e_;
@ -749,7 +729,7 @@ struct sib_type1_v1310_ies_s {
enum options { sf_pattern10_r13, sf_pattern40_r13, nulltype } value; enum options { sf_pattern10_r13, sf_pattern40_r13, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -767,34 +747,26 @@ struct sib_type1_v1310_ies_s {
// getters // getters
fixed_bitstring<10>& sf_pattern10_r13() fixed_bitstring<10>& sf_pattern10_r13()
{ {
assert_choice_type("subframePattern10-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); assert_choice_type(types::sf_pattern10_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<10> >(); return c.get<fixed_bitstring<10> >();
} }
fixed_bitstring<40>& sf_pattern40_r13() fixed_bitstring<40>& sf_pattern40_r13()
{ {
assert_choice_type("subframePattern40-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); assert_choice_type(types::sf_pattern40_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<10>& sf_pattern10_r13() const const fixed_bitstring<10>& sf_pattern10_r13() const
{ {
assert_choice_type("subframePattern10-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); assert_choice_type(types::sf_pattern10_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<10> >(); return c.get<fixed_bitstring<10> >();
} }
const fixed_bitstring<40>& sf_pattern40_r13() const const fixed_bitstring<40>& sf_pattern40_r13() const
{ {
assert_choice_type("subframePattern40-r13", type_.to_string(), "fdd-DownlinkOrTddSubframeBitmapBR-r13"); assert_choice_type(types::sf_pattern40_r13, type_, "fdd-DownlinkOrTddSubframeBitmapBR-r13");
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<10>& set_sf_pattern10_r13()
{
set(types::sf_pattern10_r13);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<40>& set_sf_pattern40_r13()
{
set(types::sf_pattern40_r13);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<10>& set_sf_pattern10_r13();
fixed_bitstring<40>& set_sf_pattern40_r13();
private: private:
types type_; types type_;
@ -805,7 +777,7 @@ struct sib_type1_v1310_ies_s {
struct si_hop_cfg_common_r13_opts { struct si_hop_cfg_common_r13_opts {
enum options { on, off, nulltype } value; enum options { on, off, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<si_hop_cfg_common_r13_opts> si_hop_cfg_common_r13_e_; typedef enumerated<si_hop_cfg_common_r13_opts> si_hop_cfg_common_r13_e_;
@ -848,7 +820,7 @@ struct udt_restricting_r13_s {
enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value; enum options { s4, s8, s16, s32, s64, s128, s256, s512, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<udt_restricting_time_r13_opts> udt_restricting_time_r13_e_; typedef enumerated<udt_restricting_time_r13_opts> udt_restricting_time_r13_e_;
@ -968,7 +940,7 @@ struct sib_type_opts {
} value; } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<sib_type_opts, true, 6> sib_type_e; typedef enumerated<sib_type_opts, true, 6> sib_type_e;
@ -1045,7 +1017,7 @@ struct si_periodicity_r12_opts {
enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value; enum options { rf8, rf16, rf32, rf64, rf128, rf256, rf512, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<si_periodicity_r12_opts> si_periodicity_r12_e; typedef enumerated<si_periodicity_r12_opts> si_periodicity_r12_e;
@ -1077,7 +1049,7 @@ struct ue_timers_and_consts_s {
enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value; enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t300_opts> t300_e_; typedef enumerated<t300_opts> t300_e_;
@ -1085,7 +1057,7 @@ struct ue_timers_and_consts_s {
enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value; enum options { ms100, ms200, ms300, ms400, ms600, ms1000, ms1500, ms2000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t301_opts> t301_e_; typedef enumerated<t301_opts> t301_e_;
@ -1093,7 +1065,7 @@ struct ue_timers_and_consts_s {
enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, nulltype } value; enum options { ms0, ms50, ms100, ms200, ms500, ms1000, ms2000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t310_opts> t310_e_; typedef enumerated<t310_opts> t310_e_;
@ -1101,7 +1073,7 @@ struct ue_timers_and_consts_s {
enum options { n1, n2, n3, n4, n6, n8, n10, n20, nulltype } value; enum options { n1, n2, n3, n4, n6, n8, n10, n20, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<n310_opts> n310_e_; typedef enumerated<n310_opts> n310_e_;
@ -1109,7 +1081,7 @@ struct ue_timers_and_consts_s {
enum options { ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000, nulltype } value; enum options { ms1000, ms3000, ms5000, ms10000, ms15000, ms20000, ms30000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t311_opts> t311_e_; typedef enumerated<t311_opts> t311_e_;
@ -1117,7 +1089,7 @@ struct ue_timers_and_consts_s {
enum options { n1, n2, n3, n4, n5, n6, n8, n10, nulltype } value; enum options { n1, n2, n3, n4, n5, n6, n8, n10, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<n311_opts> n311_e_; typedef enumerated<n311_opts> n311_e_;
@ -1125,7 +1097,7 @@ struct ue_timers_and_consts_s {
enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value; enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t300_v1310_opts> t300_v1310_e_; typedef enumerated<t300_v1310_opts> t300_v1310_e_;
@ -1133,7 +1105,7 @@ struct ue_timers_and_consts_s {
enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value; enum options { ms2500, ms3000, ms3500, ms4000, ms5000, ms6000, ms8000, ms10000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t301_v1310_opts> t301_v1310_e_; typedef enumerated<t301_v1310_opts> t301_v1310_e_;
@ -1141,7 +1113,7 @@ struct ue_timers_and_consts_s {
enum options { ms4000, ms6000, nulltype } value; enum options { ms4000, ms6000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t310_v1330_opts> t310_v1330_e_; typedef enumerated<t310_v1330_opts> t310_v1330_e_;
@ -1149,7 +1121,7 @@ struct ue_timers_and_consts_s {
enum options { ms4000, ms6000, ms8000, ms10000, ms15000, ms25000, ms40000, ms60000, nulltype } value; enum options { ms4000, ms6000, ms8000, ms10000, ms15000, ms25000, ms40000, ms60000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<t300_r15_opts> t300_r15_e_; typedef enumerated<t300_r15_opts> t300_r15_e_;
@ -1220,7 +1192,7 @@ struct sib_type2_s {
enum options { n6, n15, n25, n50, n75, n100, nulltype } value; enum options { n6, n15, n25, n50, n75, n100, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ul_bw_opts> ul_bw_e_; typedef enumerated<ul_bw_opts> ul_bw_e_;
@ -1309,13 +1281,13 @@ struct sib_type1_s {
struct cell_barred_opts { struct cell_barred_opts {
enum options { barred, not_barred, nulltype } value; enum options { barred, not_barred, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<cell_barred_opts> cell_barred_e_; typedef enumerated<cell_barred_opts> cell_barred_e_;
struct intra_freq_resel_opts { struct intra_freq_resel_opts {
enum options { allowed, not_allowed, nulltype } value; enum options { allowed, not_allowed, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<intra_freq_resel_opts> intra_freq_resel_e_; typedef enumerated<intra_freq_resel_opts> intra_freq_resel_e_;
@ -1338,7 +1310,7 @@ struct sib_type1_s {
enum options { ms1, ms2, ms5, ms10, ms15, ms20, ms40, nulltype } value; enum options { ms1, ms2, ms5, ms10, ms15, ms20, ms40, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<si_win_len_opts> si_win_len_e_; typedef enumerated<si_win_len_opts> si_win_len_e_;

@ -41,7 +41,7 @@ namespace rrc {
struct ca_bw_class_r10_opts { struct ca_bw_class_r10_opts {
enum options { a, b, c, d, e, f, /*...*/ nulltype } value; enum options { a, b, c, d, e, f, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<ca_bw_class_r10_opts, true> ca_bw_class_r10_e; typedef enumerated<ca_bw_class_r10_opts, true> ca_bw_class_r10_e;
@ -151,7 +151,7 @@ struct rat_type_opts {
enum options { eutra, utra, geran_cs, geran_ps, cdma2000_minus1_xrtt, nr, eutra_nr, spare1, /*...*/ nulltype } value; enum options { eutra, utra, geran_cs, geran_ps, cdma2000_minus1_xrtt, nr, eutra_nr, spare1, /*...*/ nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<rat_type_opts, true> rat_type_e; typedef enumerated<rat_type_opts, true> rat_type_e;
@ -207,7 +207,7 @@ struct ue_cap_enquiry_s {
struct types_opts { struct types_opts {
enum options { ue_cap_enquiry_r8, spare3, spare2, spare1, nulltype } value; enum options { ue_cap_enquiry_r8, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -221,22 +221,18 @@ struct ue_cap_enquiry_s {
// getters // getters
ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8() ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8()
{ {
assert_choice_type("ueCapabilityEnquiry-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_cap_enquiry_r8, type_, "c1");
return c; return c;
} }
const ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8() const const ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_r8() const
{ {
assert_choice_type("ueCapabilityEnquiry-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_cap_enquiry_r8, type_, "c1");
return c; return c;
} }
ue_cap_enquiry_r8_ies_s& set_ue_cap_enquiry_r8() ue_cap_enquiry_r8_ies_s& set_ue_cap_enquiry_r8();
{ void set_spare3();
set(types::ue_cap_enquiry_r8); void set_spare2();
return c; void set_spare1();
}
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -254,20 +250,16 @@ struct ue_cap_enquiry_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -290,7 +282,7 @@ struct ue_radio_paging_info_r12_s {
enum options { ms40, ms240, ms1000, ms2000, nulltype } value; enum options { ms40, ms240, ms1000, ms2000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<wake_up_signal_min_gap_e_drx_r15_opts> wake_up_signal_min_gap_e_drx_r15_e_; typedef enumerated<wake_up_signal_min_gap_e_drx_r15_opts> wake_up_signal_min_gap_e_drx_r15_e_;
@ -298,7 +290,7 @@ struct ue_radio_paging_info_r12_s {
enum options { ms40, ms240, ms1000, ms2000, nulltype } value; enum options { ms40, ms240, ms1000, ms2000, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<wake_up_signal_min_gap_e_drx_tdd_r15_opts> wake_up_signal_min_gap_e_drx_tdd_r15_e_; typedef enumerated<wake_up_signal_min_gap_e_drx_tdd_r15_opts> wake_up_signal_min_gap_e_drx_tdd_r15_e_;
@ -384,7 +376,7 @@ struct ue_cap_info_s {
struct types_opts { struct types_opts {
enum options { ue_cap_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value; enum options { ue_cap_info_r8, spare7, spare6, spare5, spare4, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -398,26 +390,22 @@ struct ue_cap_info_s {
// getters // getters
ue_cap_info_r8_ies_s& ue_cap_info_r8() ue_cap_info_r8_ies_s& ue_cap_info_r8()
{ {
assert_choice_type("ueCapabilityInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_cap_info_r8, type_, "c1");
return c; return c;
} }
const ue_cap_info_r8_ies_s& ue_cap_info_r8() const const ue_cap_info_r8_ies_s& ue_cap_info_r8() const
{ {
assert_choice_type("ueCapabilityInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_cap_info_r8, type_, "c1");
return c; return c;
} }
ue_cap_info_r8_ies_s& set_ue_cap_info_r8() ue_cap_info_r8_ies_s& set_ue_cap_info_r8();
{ void set_spare7();
set(types::ue_cap_info_r8); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -435,20 +423,16 @@ struct ue_cap_info_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -511,7 +495,7 @@ struct mimo_cap_dl_r10_opts {
enum options { two_layers, four_layers, eight_layers, nulltype } value; enum options { two_layers, four_layers, eight_layers, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<mimo_cap_dl_r10_opts> mimo_cap_dl_r10_e; typedef enumerated<mimo_cap_dl_r10_opts> mimo_cap_dl_r10_e;
@ -521,7 +505,7 @@ struct mimo_cap_ul_r10_opts {
enum options { two_layers, four_layers, nulltype } value; enum options { two_layers, four_layers, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<mimo_cap_ul_r10_opts> mimo_cap_ul_r10_e; typedef enumerated<mimo_cap_ul_r10_opts> mimo_cap_ul_r10_e;
@ -579,7 +563,7 @@ struct band_params_r11_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<supported_csi_proc_r11_opts> supported_csi_proc_r11_e_; typedef enumerated<supported_csi_proc_r11_opts> supported_csi_proc_r11_e_;
@ -625,7 +609,7 @@ struct intra_band_contiguous_cc_info_r12_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<supported_csi_proc_r12_opts> supported_csi_proc_r12_e_; typedef enumerated<supported_csi_proc_r12_opts> supported_csi_proc_r12_e_;
@ -672,7 +656,7 @@ struct band_params_r13_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<supported_csi_proc_r13_opts> supported_csi_proc_r13_e_; typedef enumerated<supported_csi_proc_r13_opts> supported_csi_proc_r13_e_;
@ -701,7 +685,7 @@ struct band_combination_params_r13_s {
enum options { three_entries_r13, four_entries_r13, five_entries_r13, nulltype } value; enum options { three_entries_r13, four_entries_r13, five_entries_r13, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -719,49 +703,37 @@ struct band_combination_params_r13_s {
// getters // getters
fixed_bitstring<3>& three_entries_r13() fixed_bitstring<3>& three_entries_r13()
{ {
assert_choice_type("threeEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::three_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<3> >(); return c.get<fixed_bitstring<3> >();
} }
fixed_bitstring<7>& four_entries_r13() fixed_bitstring<7>& four_entries_r13()
{ {
assert_choice_type("fourEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::four_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<7> >(); return c.get<fixed_bitstring<7> >();
} }
fixed_bitstring<15>& five_entries_r13() fixed_bitstring<15>& five_entries_r13()
{ {
assert_choice_type("fiveEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::five_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<15> >(); return c.get<fixed_bitstring<15> >();
} }
const fixed_bitstring<3>& three_entries_r13() const const fixed_bitstring<3>& three_entries_r13() const
{ {
assert_choice_type("threeEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::three_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<3> >(); return c.get<fixed_bitstring<3> >();
} }
const fixed_bitstring<7>& four_entries_r13() const const fixed_bitstring<7>& four_entries_r13() const
{ {
assert_choice_type("fourEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::four_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<7> >(); return c.get<fixed_bitstring<7> >();
} }
const fixed_bitstring<15>& five_entries_r13() const const fixed_bitstring<15>& five_entries_r13() const
{ {
assert_choice_type("fiveEntries-r13", type_.to_string(), "supportedCellGrouping-r13"); assert_choice_type(types::five_entries_r13, type_, "supportedCellGrouping-r13");
return c.get<fixed_bitstring<15> >();
}
fixed_bitstring<3>& set_three_entries_r13()
{
set(types::three_entries_r13);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<7>& set_four_entries_r13()
{
set(types::four_entries_r13);
return c.get<fixed_bitstring<7> >();
}
fixed_bitstring<15>& set_five_entries_r13()
{
set(types::five_entries_r13);
return c.get<fixed_bitstring<15> >(); return c.get<fixed_bitstring<15> >();
} }
fixed_bitstring<3>& set_three_entries_r13();
fixed_bitstring<7>& set_four_entries_r13();
fixed_bitstring<15>& set_five_entries_r13();
private: private:
types type_; types type_;
@ -856,7 +828,7 @@ struct band_params_v1130_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<supported_csi_proc_r11_opts> supported_csi_proc_r11_e_; typedef enumerated<supported_csi_proc_r11_opts> supported_csi_proc_r11_e_;
@ -896,7 +868,7 @@ struct band_combination_params_v1250_s {
enum options { three_entries_r12, four_entries_r12, five_entries_r12, nulltype } value; enum options { three_entries_r12, four_entries_r12, five_entries_r12, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -914,49 +886,37 @@ struct band_combination_params_v1250_s {
// getters // getters
fixed_bitstring<3>& three_entries_r12() fixed_bitstring<3>& three_entries_r12()
{ {
assert_choice_type("threeEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::three_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<3> >(); return c.get<fixed_bitstring<3> >();
} }
fixed_bitstring<7>& four_entries_r12() fixed_bitstring<7>& four_entries_r12()
{ {
assert_choice_type("fourEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::four_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<7> >(); return c.get<fixed_bitstring<7> >();
} }
fixed_bitstring<15>& five_entries_r12() fixed_bitstring<15>& five_entries_r12()
{ {
assert_choice_type("fiveEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::five_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<15> >(); return c.get<fixed_bitstring<15> >();
} }
const fixed_bitstring<3>& three_entries_r12() const const fixed_bitstring<3>& three_entries_r12() const
{ {
assert_choice_type("threeEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::three_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<3> >(); return c.get<fixed_bitstring<3> >();
} }
const fixed_bitstring<7>& four_entries_r12() const const fixed_bitstring<7>& four_entries_r12() const
{ {
assert_choice_type("fourEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::four_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<7> >(); return c.get<fixed_bitstring<7> >();
} }
const fixed_bitstring<15>& five_entries_r12() const const fixed_bitstring<15>& five_entries_r12() const
{ {
assert_choice_type("fiveEntries-r12", type_.to_string(), "supportedCellGrouping-r12"); assert_choice_type(types::five_entries_r12, type_, "supportedCellGrouping-r12");
return c.get<fixed_bitstring<15> >();
}
fixed_bitstring<3>& set_three_entries_r12()
{
set(types::three_entries_r12);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<7>& set_four_entries_r12()
{
set(types::four_entries_r12);
return c.get<fixed_bitstring<7> >();
}
fixed_bitstring<15>& set_five_entries_r12()
{
set(types::five_entries_r12);
return c.get<fixed_bitstring<15> >(); return c.get<fixed_bitstring<15> >();
} }
fixed_bitstring<3>& set_three_entries_r12();
fixed_bitstring<7>& set_four_entries_r12();
fixed_bitstring<15>& set_five_entries_r12();
private: private:
types type_; types type_;
@ -1183,9 +1143,9 @@ struct srs_cap_per_band_pair_r14_s {
} value; } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<rf_retuning_time_dl_r14_opts> rf_retuning_time_dl_r14_e_; typedef enumerated<rf_retuning_time_dl_r14_opts> rf_retuning_time_dl_r14_e_;
struct rf_retuning_time_ul_r14_opts { struct rf_retuning_time_ul_r14_opts {
@ -1210,9 +1170,9 @@ struct srs_cap_per_band_pair_r14_s {
} value; } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<rf_retuning_time_ul_r14_opts> rf_retuning_time_ul_r14_e_; typedef enumerated<rf_retuning_time_ul_r14_opts> rf_retuning_time_ul_r14_e_;
@ -1325,7 +1285,7 @@ struct mimo_ca_params_per_bo_bc_per_tm_v1470_s {
enum options { n8, n12, n16, n20, n24, n28, nulltype } value; enum options { n8, n12, n16, n20, n24, n28, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<csi_report_advanced_max_ports_r14_opts> csi_report_advanced_max_ports_r14_e_; typedef enumerated<csi_report_advanced_max_ports_r14_opts> csi_report_advanced_max_ports_r14_e_;
@ -1490,7 +1450,7 @@ struct stti_spt_band_params_r15_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<stti_supported_csi_proc_r15_opts> stti_supported_csi_proc_r15_e_; typedef enumerated<stti_supported_csi_proc_r15_opts> stti_supported_csi_proc_r15_e_;
@ -1588,7 +1548,7 @@ struct v2x_bw_class_r14_opts {
enum options { a, b, c, d, e, f, /*...*/ c1_v1530, nulltype } value; enum options { a, b, c, d, e, f, /*...*/ c1_v1530, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<v2x_bw_class_r14_opts, true, 1> v2x_bw_class_r14_e; typedef enumerated<v2x_bw_class_r14_opts, true, 1> v2x_bw_class_r14_e;
@ -1625,7 +1585,7 @@ struct feature_set_dl_per_cc_r15_s {
enum options { n1, n3, n4, nulltype } value; enum options { n1, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<supported_csi_proc_r15_opts> supported_csi_proc_r15_e_; typedef enumerated<supported_csi_proc_r15_opts> supported_csi_proc_r15_e_;
@ -1761,13 +1721,13 @@ struct irat_params_cdma2000_minus1_xrtt_s {
struct tx_cfg1_xrtt_opts { struct tx_cfg1_xrtt_opts {
enum options { single, dual, nulltype } value; enum options { single, dual, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<tx_cfg1_xrtt_opts> tx_cfg1_xrtt_e_; typedef enumerated<tx_cfg1_xrtt_opts> tx_cfg1_xrtt_e_;
struct rx_cfg1_xrtt_opts { struct rx_cfg1_xrtt_opts {
enum options { single, dual, nulltype } value; enum options { single, dual, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<rx_cfg1_xrtt_opts> rx_cfg1_xrtt_e_; typedef enumerated<rx_cfg1_xrtt_opts> rx_cfg1_xrtt_e_;
@ -1790,13 +1750,13 @@ struct irat_params_cdma2000_hrpd_s {
struct tx_cfg_hrpd_opts { struct tx_cfg_hrpd_opts {
enum options { single, dual, nulltype } value; enum options { single, dual, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<tx_cfg_hrpd_opts> tx_cfg_hrpd_e_; typedef enumerated<tx_cfg_hrpd_opts> tx_cfg_hrpd_e_;
struct rx_cfg_hrpd_opts { struct rx_cfg_hrpd_opts {
enum options { single, dual, nulltype } value; enum options { single, dual, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<rx_cfg_hrpd_opts> rx_cfg_hrpd_e_; typedef enumerated<rx_cfg_hrpd_opts> rx_cfg_hrpd_e_;
@ -1834,7 +1794,7 @@ struct supported_band_geran_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<supported_band_geran_opts, true> supported_band_geran_e; typedef enumerated<supported_band_geran_opts, true> supported_band_geran_e;
@ -1939,7 +1899,7 @@ struct supported_band_utra_fdd_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<supported_band_utra_fdd_opts, true, 16> supported_band_utra_fdd_e; typedef enumerated<supported_band_utra_fdd_opts, true, 16> supported_band_utra_fdd_e;
@ -1960,7 +1920,7 @@ struct irat_params_utra_fdd_s {
struct supported_band_utra_tdd128_opts { struct supported_band_utra_tdd128_opts {
enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value; enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<supported_band_utra_tdd128_opts, true> supported_band_utra_tdd128_e; typedef enumerated<supported_band_utra_tdd128_opts, true> supported_band_utra_tdd128_e;
@ -1981,7 +1941,7 @@ struct irat_params_utra_tdd128_s {
struct supported_band_utra_tdd384_opts { struct supported_band_utra_tdd384_opts {
enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value; enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<supported_band_utra_tdd384_opts, true> supported_band_utra_tdd384_e; typedef enumerated<supported_band_utra_tdd384_opts, true> supported_band_utra_tdd384_e;
@ -2002,7 +1962,7 @@ struct irat_params_utra_tdd384_s {
struct supported_band_utra_tdd768_opts { struct supported_band_utra_tdd768_opts {
enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value; enum options { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, /*...*/ nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<supported_band_utra_tdd768_opts, true> supported_band_utra_tdd768_e; typedef enumerated<supported_band_utra_tdd768_opts, true> supported_band_utra_tdd768_e;
@ -2038,7 +1998,7 @@ struct processing_timeline_set_r15_opts {
enum options { set1, set2, nulltype } value; enum options { set1, set2, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<processing_timeline_set_r15_opts> processing_timeline_set_r15_e; typedef enumerated<processing_timeline_set_r15_opts> processing_timeline_set_r15_e;
@ -2132,7 +2092,7 @@ struct mimo_ue_params_per_tm_v1430_s {
enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value; enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<nmax_res_r14_opts> nmax_res_r14_e_; typedef enumerated<nmax_res_r14_opts> nmax_res_r14_e_;
@ -2146,7 +2106,7 @@ struct mimo_ue_params_per_tm_v1430_s {
enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value; enum options { ffs1, ffs2, ffs3, ffs4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<nmax_res_r14_opts> nmax_res_r14_e_; typedef enumerated<nmax_res_r14_opts> nmax_res_r14_e_;
@ -2194,7 +2154,7 @@ struct mimo_ue_params_per_tm_v1470_s {
enum options { n8, n12, n16, n20, n24, n28, nulltype } value; enum options { n8, n12, n16, n20, n24, n28, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<csi_report_advanced_max_ports_r14_opts> csi_report_advanced_max_ports_r14_e_; typedef enumerated<csi_report_advanced_max_ports_r14_opts> csi_report_advanced_max_ports_r14_e_;
@ -2264,7 +2224,7 @@ struct naics_cap_entry_r12_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<nof_aggregated_prb_r12_opts> nof_aggregated_prb_r12_e_; typedef enumerated<nof_aggregated_prb_r12_opts> nof_aggregated_prb_r12_e_;
@ -2339,7 +2299,7 @@ struct pdcp_params_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<max_num_rohc_context_sessions_opts> max_num_rohc_context_sessions_e_; typedef enumerated<max_num_rohc_context_sessions_opts> max_num_rohc_context_sessions_e_;
@ -2416,7 +2376,7 @@ struct pdcp_params_nr_r15_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<rohc_context_max_sessions_r15_opts> rohc_context_max_sessions_r15_e_; typedef enumerated<rohc_context_max_sessions_r15_opts> rohc_context_max_sessions_r15_e_;
@ -2523,7 +2483,7 @@ struct phy_layer_params_v1430_s {
enum options { bw5, bw20, nulltype } value; enum options { bw5, bw20, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ce_pdsch_pusch_max_bw_r14_opts> ce_pdsch_pusch_max_bw_r14_e_; typedef enumerated<ce_pdsch_pusch_max_bw_r14_opts> ce_pdsch_pusch_max_bw_r14_e_;
@ -2531,7 +2491,7 @@ struct phy_layer_params_v1430_s {
enum options { n0, n1, nulltype } value; enum options { n0, n1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ce_retuning_symbols_r14_opts> ce_retuning_symbols_r14_e_; typedef enumerated<ce_retuning_symbols_r14_opts> ce_retuning_symbols_r14_e_;
@ -2583,14 +2543,14 @@ struct phy_layer_params_v1530_s {
enum options { one_layer, two_layers, four_layers, nulltype } value; enum options { one_layer, two_layers, four_layers, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<max_layers_slot_or_subslot_pusch_r15_opts> max_layers_slot_or_subslot_pusch_r15_e_; typedef enumerated<max_layers_slot_or_subslot_pusch_r15_opts> max_layers_slot_or_subslot_pusch_r15_e_;
struct sps_stti_r15_opts { struct sps_stti_r15_opts {
enum options { slot, subslot, slot_and_subslot, nulltype } value; enum options { slot, subslot, slot_and_subslot, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<sps_stti_r15_opts> sps_stti_r15_e_; typedef enumerated<sps_stti_r15_opts> sps_stti_r15_e_;
@ -2930,7 +2890,7 @@ struct supported_band_eutra_v1320_s {
enum options { class1, class2, class4, nulltype } value; enum options { class1, class2, class4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ue_pwr_class_n_r13_opts> ue_pwr_class_n_r13_e_; typedef enumerated<ue_pwr_class_n_r13_opts> ue_pwr_class_n_r13_e_;
@ -3207,7 +3167,7 @@ struct sl_params_r12_s {
enum options { n50, n400, nulltype } value; enum options { n50, n400, nulltype } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<disc_supported_proc_r12_opts> disc_supported_proc_r12_e_; typedef enumerated<disc_supported_proc_r12_opts> disc_supported_proc_r12_e_;
@ -3302,7 +3262,7 @@ struct sl_params_v1530_s {
struct slss_supported_tx_freq_r15_opts { struct slss_supported_tx_freq_r15_opts {
enum options { single, multiple, nulltype } value; enum options { single, multiple, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<slss_supported_tx_freq_r15_opts> slss_supported_tx_freq_r15_e_; typedef enumerated<slss_supported_tx_freq_r15_opts> slss_supported_tx_freq_r15_e_;
@ -3416,9 +3376,9 @@ struct rf_params_v1570_s {
enum options { v1, v1dot2, v1dot25, nulltype } value; enum options { v1, v1dot2, v1dot25, nulltype } value;
typedef float number_type; typedef float number_type;
std::string to_string() const; const char* to_string() const;
float to_number() const; float to_number() const;
std::string to_number_string() const; const char* to_number_string() const;
}; };
typedef enumerated<dl_minus1024_qam_scaling_factor_r15_opts> dl_minus1024_qam_scaling_factor_r15_e_; typedef enumerated<dl_minus1024_qam_scaling_factor_r15_opts> dl_minus1024_qam_scaling_factor_r15_e_;
@ -3918,7 +3878,7 @@ struct laa_params_v1430_s {
enum options { nplus1, nplus2, nplus3, nulltype } value; enum options { nplus1, nplus2, nplus3, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<two_step_sched_timing_info_r14_opts> two_step_sched_timing_info_r14_e_; typedef enumerated<two_step_sched_timing_info_r14_opts> two_step_sched_timing_info_r14_e_;
@ -4055,7 +4015,7 @@ struct pdcp_params_v1430_s {
} value; } value;
typedef uint16_t number_type; typedef uint16_t number_type;
std::string to_string() const; const char* to_string() const;
uint16_t to_number() const; uint16_t to_number() const;
}; };
typedef enumerated<max_num_rohc_context_sessions_r14_opts> max_num_rohc_context_sessions_r14_e_; typedef enumerated<max_num_rohc_context_sessions_r14_opts> max_num_rohc_context_sessions_r14_e_;
@ -4133,7 +4093,7 @@ struct ue_eutra_cap_v1430_ies_s {
enum options { n16, n17, n18, n19, n20, m2, nulltype } value; enum options { n16, n17, n18, n19, n20, m2, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ue_category_ul_v1430_opts> ue_category_ul_v1430_e_; typedef enumerated<ue_category_ul_v1430_opts> ue_category_ul_v1430_e_;
@ -4505,7 +4465,7 @@ struct ue_eutra_cap_v1310_ies_s {
enum options { n17, m1, nulltype } value; enum options { n17, m1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ue_category_dl_v1310_opts> ue_category_dl_v1310_e_; typedef enumerated<ue_category_dl_v1310_opts> ue_category_dl_v1310_e_;
@ -4513,7 +4473,7 @@ struct ue_eutra_cap_v1310_ies_s {
enum options { n14, m1, nulltype } value; enum options { n14, m1, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<ue_category_ul_v1310_opts> ue_category_ul_v1310_e_; typedef enumerated<ue_category_ul_v1310_opts> ue_category_ul_v1310_e_;
@ -5125,7 +5085,7 @@ struct access_stratum_release_opts {
enum options { rel8, rel9, rel10, rel11, rel12, rel13, rel14, rel15, /*...*/ nulltype } value; enum options { rel8, rel9, rel10, rel11, rel12, rel13, rel14, rel15, /*...*/ nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<access_stratum_release_opts, true> access_stratum_release_e; typedef enumerated<access_stratum_release_opts, true> access_stratum_release_e;
@ -5228,7 +5188,7 @@ struct mbms_params_v1470_s {
struct types_opts { struct types_opts {
enum options { implicit_value, explicit_value, nulltype } value; enum options { implicit_value, explicit_value, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -5242,20 +5202,16 @@ struct mbms_params_v1470_s {
// getters // getters
uint8_t& explicit_value() uint8_t& explicit_value()
{ {
assert_choice_type("explicitValue", type_.to_string(), "mbms-MaxBW-r14"); assert_choice_type(types::explicit_value, type_, "mbms-MaxBW-r14");
return c; return c;
} }
const uint8_t& explicit_value() const const uint8_t& explicit_value() const
{ {
assert_choice_type("explicitValue", type_.to_string(), "mbms-MaxBW-r14"); assert_choice_type(types::explicit_value, type_, "mbms-MaxBW-r14");
return c;
}
void set_implicit_value() { set(types::implicit_value); }
uint8_t& set_explicit_value()
{
set(types::explicit_value);
return c; return c;
} }
void set_implicit_value();
uint8_t& set_explicit_value();
private: private:
types type_; types type_;
@ -5265,7 +5221,7 @@ struct mbms_params_v1470_s {
enum options { n3, n6, n9, n12, nulltype } value; enum options { n3, n6, n9, n12, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<mbms_scaling_factor1dot25_r14_opts> mbms_scaling_factor1dot25_r14_e_; typedef enumerated<mbms_scaling_factor1dot25_r14_opts> mbms_scaling_factor1dot25_r14_e_;
@ -5273,7 +5229,7 @@ struct mbms_params_v1470_s {
enum options { n1, n2, n3, n4, nulltype } value; enum options { n1, n2, n3, n4, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<mbms_scaling_factor7dot5_r14_opts> mbms_scaling_factor7dot5_r14_e_; typedef enumerated<mbms_scaling_factor7dot5_r14_opts> mbms_scaling_factor7dot5_r14_e_;
@ -5727,7 +5683,7 @@ struct ue_radio_access_cap_info_s {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -5741,26 +5697,22 @@ struct ue_radio_access_cap_info_s {
// getters // getters
ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8() ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8()
{ {
assert_choice_type("ueRadioAccessCapabilityInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_radio_access_cap_info_r8, type_, "c1");
return c; return c;
} }
const ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8() const const ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_r8() const
{ {
assert_choice_type("ueRadioAccessCapabilityInformation-r8", type_.to_string(), "c1"); assert_choice_type(types::ue_radio_access_cap_info_r8, type_, "c1");
return c; return c;
} }
ue_radio_access_cap_info_r8_ies_s& set_ue_radio_access_cap_info_r8() ue_radio_access_cap_info_r8_ies_s& set_ue_radio_access_cap_info_r8();
{ void set_spare7();
set(types::ue_radio_access_cap_info_r8); void set_spare6();
return c; void set_spare5();
} void set_spare4();
void set_spare7() { set(types::spare7); } void set_spare3();
void set_spare6() { set(types::spare6); } void set_spare2();
void set_spare5() { set(types::spare5); } void set_spare1();
void set_spare4() { set(types::spare4); }
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -5778,20 +5730,16 @@ struct ue_radio_access_cap_info_s {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c; return c;
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "criticalExtensions"); assert_choice_type(types::c1, type_, "criticalExtensions");
return c;
}
c1_c_& set_c1()
{
set(types::c1);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } c1_c_& set_c1();
void set_crit_exts_future();
private: private:
types type_; types type_;

@ -51,7 +51,7 @@ struct establishment_cause_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<establishment_cause_opts> establishment_cause_e; typedef enumerated<establishment_cause_opts> establishment_cause_e;
@ -69,7 +69,7 @@ struct establishment_cause_minus5_gc_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<establishment_cause_minus5_gc_opts> establishment_cause_minus5_gc_e; typedef enumerated<establishment_cause_minus5_gc_opts> establishment_cause_minus5_gc_e;
@ -78,7 +78,7 @@ struct init_ue_id_c {
struct types_opts { struct types_opts {
enum options { s_tmsi, random_value, nulltype } value; enum options { s_tmsi, random_value, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -95,34 +95,26 @@ struct init_ue_id_c {
// getters // getters
s_tmsi_s& s_tmsi() s_tmsi_s& s_tmsi()
{ {
assert_choice_type("s-TMSI", type_.to_string(), "InitialUE-Identity"); assert_choice_type(types::s_tmsi, type_, "InitialUE-Identity");
return c.get<s_tmsi_s>(); return c.get<s_tmsi_s>();
} }
fixed_bitstring<40>& random_value() fixed_bitstring<40>& random_value()
{ {
assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity"); assert_choice_type(types::random_value, type_, "InitialUE-Identity");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const s_tmsi_s& s_tmsi() const const s_tmsi_s& s_tmsi() const
{ {
assert_choice_type("s-TMSI", type_.to_string(), "InitialUE-Identity"); assert_choice_type(types::s_tmsi, type_, "InitialUE-Identity");
return c.get<s_tmsi_s>(); return c.get<s_tmsi_s>();
} }
const fixed_bitstring<40>& random_value() const const fixed_bitstring<40>& random_value() const
{ {
assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity"); assert_choice_type(types::random_value, type_, "InitialUE-Identity");
return c.get<fixed_bitstring<40> >();
}
s_tmsi_s& set_s_tmsi()
{
set(types::s_tmsi);
return c.get<s_tmsi_s>();
}
fixed_bitstring<40>& set_random_value()
{
set(types::random_value);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
s_tmsi_s& set_s_tmsi();
fixed_bitstring<40>& set_random_value();
private: private:
types type_; types type_;
@ -137,7 +129,7 @@ struct init_ue_id_minus5_gc_c {
enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value; enum options { ng_minus5_g_s_tmsi_part1, random_value, nulltype } value;
typedef int8_t number_type; typedef int8_t number_type;
std::string to_string() const; const char* to_string() const;
int8_t to_number() const; int8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -155,34 +147,26 @@ struct init_ue_id_minus5_gc_c {
// getters // getters
fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1()
{ {
assert_choice_type("ng-5G-S-TMSI-Part1", type_.to_string(), "InitialUE-Identity-5GC"); assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<40>& random_value() fixed_bitstring<40>& random_value()
{ {
assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity-5GC"); assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const const fixed_bitstring<40>& ng_minus5_g_s_tmsi_part1() const
{ {
assert_choice_type("ng-5G-S-TMSI-Part1", type_.to_string(), "InitialUE-Identity-5GC"); assert_choice_type(types::ng_minus5_g_s_tmsi_part1, type_, "InitialUE-Identity-5GC");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<40>& random_value() const const fixed_bitstring<40>& random_value() const
{ {
assert_choice_type("randomValue", type_.to_string(), "InitialUE-Identity-5GC"); assert_choice_type(types::random_value, type_, "InitialUE-Identity-5GC");
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1()
{
set(types::ng_minus5_g_s_tmsi_part1);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<40>& set_random_value()
{
set(types::random_value);
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<40>& set_ng_minus5_g_s_tmsi_part1();
fixed_bitstring<40>& set_random_value();
private: private:
types type_; types type_;
@ -219,7 +203,7 @@ struct reestab_ue_id_s {
struct reest_cause_opts { struct reest_cause_opts {
enum options { recfg_fail, ho_fail, other_fail, spare1, nulltype } value; enum options { recfg_fail, ho_fail, other_fail, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<reest_cause_opts> reest_cause_e; typedef enumerated<reest_cause_opts> reest_cause_e;
@ -237,7 +221,7 @@ struct resume_cause_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<resume_cause_opts> resume_cause_e; typedef enumerated<resume_cause_opts> resume_cause_e;
@ -255,7 +239,7 @@ struct resume_cause_r15_opts {
nulltype nulltype
} value; } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<resume_cause_r15_opts> resume_cause_r15_e; typedef enumerated<resume_cause_r15_opts> resume_cause_r15_e;
@ -301,7 +285,7 @@ struct rrc_conn_resume_request_minus5_gc_r15_ies_s {
struct types_opts { struct types_opts {
enum options { full_i_rnti_r15, short_i_rnti_r15, nulltype } value; enum options { full_i_rnti_r15, short_i_rnti_r15, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -318,34 +302,26 @@ struct rrc_conn_resume_request_minus5_gc_r15_ies_s {
// getters // getters
fixed_bitstring<40>& full_i_rnti_r15() fixed_bitstring<40>& full_i_rnti_r15()
{ {
assert_choice_type("fullI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); assert_choice_type(types::full_i_rnti_r15, type_, "resumeIdentity-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<24>& short_i_rnti_r15() fixed_bitstring<24>& short_i_rnti_r15()
{ {
assert_choice_type("shortI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); assert_choice_type(types::short_i_rnti_r15, type_, "resumeIdentity-r15");
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
const fixed_bitstring<40>& full_i_rnti_r15() const const fixed_bitstring<40>& full_i_rnti_r15() const
{ {
assert_choice_type("fullI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); assert_choice_type(types::full_i_rnti_r15, type_, "resumeIdentity-r15");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<24>& short_i_rnti_r15() const const fixed_bitstring<24>& short_i_rnti_r15() const
{ {
assert_choice_type("shortI-RNTI-r15", type_.to_string(), "resumeIdentity-r15"); assert_choice_type(types::short_i_rnti_r15, type_, "resumeIdentity-r15");
return c.get<fixed_bitstring<24> >();
}
fixed_bitstring<40>& set_full_i_rnti_r15()
{
set(types::full_i_rnti_r15);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<24>& set_short_i_rnti_r15()
{
set(types::short_i_rnti_r15);
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
fixed_bitstring<40>& set_full_i_rnti_r15();
fixed_bitstring<24>& set_short_i_rnti_r15();
private: private:
types type_; types type_;
@ -372,7 +348,7 @@ struct rrc_conn_resume_request_r13_ies_s {
struct types_opts { struct types_opts {
enum options { resume_id_r13, truncated_resume_id_r13, nulltype } value; enum options { resume_id_r13, truncated_resume_id_r13, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -389,34 +365,26 @@ struct rrc_conn_resume_request_r13_ies_s {
// getters // getters
fixed_bitstring<40>& resume_id_r13() fixed_bitstring<40>& resume_id_r13()
{ {
assert_choice_type("resumeID-r13", type_.to_string(), "resumeIdentity-r13"); assert_choice_type(types::resume_id_r13, type_, "resumeIdentity-r13");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
fixed_bitstring<24>& truncated_resume_id_r13() fixed_bitstring<24>& truncated_resume_id_r13()
{ {
assert_choice_type("truncatedResumeID-r13", type_.to_string(), "resumeIdentity-r13"); assert_choice_type(types::truncated_resume_id_r13, type_, "resumeIdentity-r13");
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
const fixed_bitstring<40>& resume_id_r13() const const fixed_bitstring<40>& resume_id_r13() const
{ {
assert_choice_type("resumeID-r13", type_.to_string(), "resumeIdentity-r13"); assert_choice_type(types::resume_id_r13, type_, "resumeIdentity-r13");
return c.get<fixed_bitstring<40> >(); return c.get<fixed_bitstring<40> >();
} }
const fixed_bitstring<24>& truncated_resume_id_r13() const const fixed_bitstring<24>& truncated_resume_id_r13() const
{ {
assert_choice_type("truncatedResumeID-r13", type_.to_string(), "resumeIdentity-r13"); assert_choice_type(types::truncated_resume_id_r13, type_, "resumeIdentity-r13");
return c.get<fixed_bitstring<24> >();
}
fixed_bitstring<40>& set_resume_id_r13()
{
set(types::resume_id_r13);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<24>& set_truncated_resume_id_r13()
{
set(types::truncated_resume_id_r13);
return c.get<fixed_bitstring<24> >(); return c.get<fixed_bitstring<24> >();
} }
fixed_bitstring<40>& set_resume_id_r13();
fixed_bitstring<24>& set_truncated_resume_id_r13();
private: private:
types type_; types type_;
@ -442,7 +410,7 @@ struct rrc_early_data_request_r15_ies_s {
struct establishment_cause_r15_opts { struct establishment_cause_r15_opts {
enum options { mo_data, delay_tolerant_access, nulltype } value; enum options { mo_data, delay_tolerant_access, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<establishment_cause_r15_opts> establishment_cause_r15_e_; typedef enumerated<establishment_cause_r15_opts> establishment_cause_r15_e_;
@ -465,7 +433,7 @@ struct rrc_conn_reest_request_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_reest_request_r8, crit_exts_future, nulltype } value; enum options { rrc_conn_reest_request_r8, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -479,20 +447,16 @@ struct rrc_conn_reest_request_s {
// getters // getters
rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8()
{ {
assert_choice_type("rrcConnectionReestablishmentRequest-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_reest_request_r8, type_, "criticalExtensions");
return c; return c;
} }
const rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() const const rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_r8() const
{ {
assert_choice_type("rrcConnectionReestablishmentRequest-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_reest_request_r8, type_, "criticalExtensions");
return c;
}
rrc_conn_reest_request_r8_ies_s& set_rrc_conn_reest_request_r8()
{
set(types::rrc_conn_reest_request_r8);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } rrc_conn_reest_request_r8_ies_s& set_rrc_conn_reest_request_r8();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -514,7 +478,7 @@ struct rrc_conn_request_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_request_r8, rrc_conn_request_r15, nulltype } value; enum options { rrc_conn_request_r8, rrc_conn_request_r15, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -531,34 +495,26 @@ struct rrc_conn_request_s {
// getters // getters
rrc_conn_request_r8_ies_s& rrc_conn_request_r8() rrc_conn_request_r8_ies_s& rrc_conn_request_r8()
{ {
assert_choice_type("rrcConnectionRequest-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_request_r8, type_, "criticalExtensions");
return c.get<rrc_conn_request_r8_ies_s>(); return c.get<rrc_conn_request_r8_ies_s>();
} }
rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15()
{ {
assert_choice_type("rrcConnectionRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_request_r15, type_, "criticalExtensions");
return c.get<rrc_conn_request_minus5_gc_r15_ies_s>(); return c.get<rrc_conn_request_minus5_gc_r15_ies_s>();
} }
const rrc_conn_request_r8_ies_s& rrc_conn_request_r8() const const rrc_conn_request_r8_ies_s& rrc_conn_request_r8() const
{ {
assert_choice_type("rrcConnectionRequest-r8", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_request_r8, type_, "criticalExtensions");
return c.get<rrc_conn_request_r8_ies_s>(); return c.get<rrc_conn_request_r8_ies_s>();
} }
const rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() const const rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_r15() const
{ {
assert_choice_type("rrcConnectionRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_request_r15, type_, "criticalExtensions");
return c.get<rrc_conn_request_minus5_gc_r15_ies_s>();
}
rrc_conn_request_r8_ies_s& set_rrc_conn_request_r8()
{
set(types::rrc_conn_request_r8);
return c.get<rrc_conn_request_r8_ies_s>();
}
rrc_conn_request_minus5_gc_r15_ies_s& set_rrc_conn_request_r15()
{
set(types::rrc_conn_request_r15);
return c.get<rrc_conn_request_minus5_gc_r15_ies_s>(); return c.get<rrc_conn_request_minus5_gc_r15_ies_s>();
} }
rrc_conn_request_r8_ies_s& set_rrc_conn_request_r8();
rrc_conn_request_minus5_gc_r15_ies_s& set_rrc_conn_request_r15();
private: private:
types type_; types type_;
@ -582,7 +538,7 @@ struct rrc_conn_resume_request_r13_s {
struct types_opts { struct types_opts {
enum options { rrc_conn_resume_request_r13, rrc_conn_resume_request_r15, nulltype } value; enum options { rrc_conn_resume_request_r13, rrc_conn_resume_request_r15, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -599,34 +555,26 @@ struct rrc_conn_resume_request_r13_s {
// getters // getters
rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13()
{ {
assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_resume_request_r13, type_, "criticalExtensions");
return c.get<rrc_conn_resume_request_r13_ies_s>(); return c.get<rrc_conn_resume_request_r13_ies_s>();
} }
rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15()
{ {
assert_choice_type("rrcConnectionResumeRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_resume_request_r15, type_, "criticalExtensions");
return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>(); return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>();
} }
const rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() const const rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13() const
{ {
assert_choice_type("rrcConnectionResumeRequest-r13", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_resume_request_r13, type_, "criticalExtensions");
return c.get<rrc_conn_resume_request_r13_ies_s>(); return c.get<rrc_conn_resume_request_r13_ies_s>();
} }
const rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() const const rrc_conn_resume_request_minus5_gc_r15_ies_s& rrc_conn_resume_request_r15() const
{ {
assert_choice_type("rrcConnectionResumeRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_conn_resume_request_r15, type_, "criticalExtensions");
return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>();
}
rrc_conn_resume_request_r13_ies_s& set_rrc_conn_resume_request_r13()
{
set(types::rrc_conn_resume_request_r13);
return c.get<rrc_conn_resume_request_r13_ies_s>();
}
rrc_conn_resume_request_minus5_gc_r15_ies_s& set_rrc_conn_resume_request_r15()
{
set(types::rrc_conn_resume_request_r15);
return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>(); return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>();
} }
rrc_conn_resume_request_r13_ies_s& set_rrc_conn_resume_request_r13();
rrc_conn_resume_request_minus5_gc_r15_ies_s& set_rrc_conn_resume_request_r15();
private: private:
types type_; types type_;
@ -650,7 +598,7 @@ struct rrc_early_data_request_r15_s {
struct types_opts { struct types_opts {
enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value; enum options { rrc_early_data_request_r15, crit_exts_future, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -664,20 +612,16 @@ struct rrc_early_data_request_r15_s {
// getters // getters
rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15()
{ {
assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
return c; return c;
} }
const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const const rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15() const
{ {
assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "criticalExtensions"); assert_choice_type(types::rrc_early_data_request_r15, type_, "criticalExtensions");
return c;
}
rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15()
{
set(types::rrc_early_data_request_r15);
return c; return c;
} }
void set_crit_exts_future() { set(types::crit_exts_future); } rrc_early_data_request_r15_ies_s& set_rrc_early_data_request_r15();
void set_crit_exts_future();
private: private:
types type_; types type_;
@ -699,7 +643,7 @@ struct ul_ccch_msg_type_c {
struct types_opts { struct types_opts {
enum options { rrc_conn_reest_request, rrc_conn_request, nulltype } value; enum options { rrc_conn_reest_request, rrc_conn_request, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -716,34 +660,26 @@ struct ul_ccch_msg_type_c {
// getters // getters
rrc_conn_reest_request_s& rrc_conn_reest_request() rrc_conn_reest_request_s& rrc_conn_reest_request()
{ {
assert_choice_type("rrcConnectionReestablishmentRequest", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_request, type_, "c1");
return c.get<rrc_conn_reest_request_s>(); return c.get<rrc_conn_reest_request_s>();
} }
rrc_conn_request_s& rrc_conn_request() rrc_conn_request_s& rrc_conn_request()
{ {
assert_choice_type("rrcConnectionRequest", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_request, type_, "c1");
return c.get<rrc_conn_request_s>(); return c.get<rrc_conn_request_s>();
} }
const rrc_conn_reest_request_s& rrc_conn_reest_request() const const rrc_conn_reest_request_s& rrc_conn_reest_request() const
{ {
assert_choice_type("rrcConnectionReestablishmentRequest", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_reest_request, type_, "c1");
return c.get<rrc_conn_reest_request_s>(); return c.get<rrc_conn_reest_request_s>();
} }
const rrc_conn_request_s& rrc_conn_request() const const rrc_conn_request_s& rrc_conn_request() const
{ {
assert_choice_type("rrcConnectionRequest", type_.to_string(), "c1"); assert_choice_type(types::rrc_conn_request, type_, "c1");
return c.get<rrc_conn_request_s>();
}
rrc_conn_reest_request_s& set_rrc_conn_reest_request()
{
set(types::rrc_conn_reest_request);
return c.get<rrc_conn_reest_request_s>();
}
rrc_conn_request_s& set_rrc_conn_request()
{
set(types::rrc_conn_request);
return c.get<rrc_conn_request_s>(); return c.get<rrc_conn_request_s>();
} }
rrc_conn_reest_request_s& set_rrc_conn_reest_request();
rrc_conn_request_s& set_rrc_conn_request();
private: private:
types type_; types type_;
@ -756,7 +692,7 @@ struct ul_ccch_msg_type_c {
struct types_opts { struct types_opts {
enum options { rrc_conn_resume_request_r13, nulltype } value; enum options { rrc_conn_resume_request_r13, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -777,7 +713,7 @@ struct ul_ccch_msg_type_c {
struct types_opts { struct types_opts {
enum options { rrc_early_data_request_r15, spare3, spare2, spare1, nulltype } value; enum options { rrc_early_data_request_r15, spare3, spare2, spare1, nulltype } value;
std::string to_string() const; const char* to_string() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -791,22 +727,18 @@ struct ul_ccch_msg_type_c {
// getters // getters
rrc_early_data_request_r15_s& rrc_early_data_request_r15() rrc_early_data_request_r15_s& rrc_early_data_request_r15()
{ {
assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "c3"); assert_choice_type(types::rrc_early_data_request_r15, type_, "c3");
return c; return c;
} }
const rrc_early_data_request_r15_s& rrc_early_data_request_r15() const const rrc_early_data_request_r15_s& rrc_early_data_request_r15() const
{ {
assert_choice_type("rrcEarlyDataRequest-r15", type_.to_string(), "c3"); assert_choice_type(types::rrc_early_data_request_r15, type_, "c3");
return c; return c;
} }
rrc_early_data_request_r15_s& set_rrc_early_data_request_r15() rrc_early_data_request_r15_s& set_rrc_early_data_request_r15();
{ void set_spare3();
set(types::rrc_early_data_request_r15); void set_spare2();
return c; void set_spare1();
}
void set_spare3() { set(types::spare3); }
void set_spare2() { set(types::spare2); }
void set_spare1() { set(types::spare1); }
private: private:
types type_; types type_;
@ -816,7 +748,7 @@ struct ul_ccch_msg_type_c {
enum options { c3, msg_class_ext_future_r15, nulltype } value; enum options { c3, msg_class_ext_future_r15, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -831,20 +763,16 @@ struct ul_ccch_msg_type_c {
// getters // getters
c3_c_& c3() c3_c_& c3()
{ {
assert_choice_type("c3", type_.to_string(), "messageClassExtensionFuture-r13"); assert_choice_type(types::c3, type_, "messageClassExtensionFuture-r13");
return c; return c;
} }
const c3_c_& c3() const const c3_c_& c3() const
{ {
assert_choice_type("c3", type_.to_string(), "messageClassExtensionFuture-r13"); assert_choice_type(types::c3, type_, "messageClassExtensionFuture-r13");
return c;
}
c3_c_& set_c3()
{
set(types::c3);
return c; return c;
} }
void set_msg_class_ext_future_r15() { set(types::msg_class_ext_future_r15); } c3_c_& set_c3();
void set_msg_class_ext_future_r15();
private: private:
types type_; types type_;
@ -854,7 +782,7 @@ struct ul_ccch_msg_type_c {
enum options { c2, msg_class_ext_future_r13, nulltype } value; enum options { c2, msg_class_ext_future_r13, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -872,34 +800,26 @@ struct ul_ccch_msg_type_c {
// getters // getters
c2_c_& c2() c2_c_& c2()
{ {
assert_choice_type("c2", type_.to_string(), "messageClassExtension"); assert_choice_type(types::c2, type_, "messageClassExtension");
return c.get<c2_c_>(); return c.get<c2_c_>();
} }
msg_class_ext_future_r13_c_& msg_class_ext_future_r13() msg_class_ext_future_r13_c_& msg_class_ext_future_r13()
{ {
assert_choice_type("messageClassExtensionFuture-r13", type_.to_string(), "messageClassExtension"); assert_choice_type(types::msg_class_ext_future_r13, type_, "messageClassExtension");
return c.get<msg_class_ext_future_r13_c_>(); return c.get<msg_class_ext_future_r13_c_>();
} }
const c2_c_& c2() const const c2_c_& c2() const
{ {
assert_choice_type("c2", type_.to_string(), "messageClassExtension"); assert_choice_type(types::c2, type_, "messageClassExtension");
return c.get<c2_c_>(); return c.get<c2_c_>();
} }
const msg_class_ext_future_r13_c_& msg_class_ext_future_r13() const const msg_class_ext_future_r13_c_& msg_class_ext_future_r13() const
{ {
assert_choice_type("messageClassExtensionFuture-r13", type_.to_string(), "messageClassExtension"); assert_choice_type(types::msg_class_ext_future_r13, type_, "messageClassExtension");
return c.get<msg_class_ext_future_r13_c_>();
}
c2_c_& set_c2()
{
set(types::c2);
return c.get<c2_c_>();
}
msg_class_ext_future_r13_c_& set_msg_class_ext_future_r13()
{
set(types::msg_class_ext_future_r13);
return c.get<msg_class_ext_future_r13_c_>(); return c.get<msg_class_ext_future_r13_c_>();
} }
c2_c_& set_c2();
msg_class_ext_future_r13_c_& set_msg_class_ext_future_r13();
private: private:
types type_; types type_;
@ -911,7 +831,7 @@ struct ul_ccch_msg_type_c {
enum options { c1, msg_class_ext, nulltype } value; enum options { c1, msg_class_ext, nulltype } value;
typedef uint8_t number_type; typedef uint8_t number_type;
std::string to_string() const; const char* to_string() const;
uint8_t to_number() const; uint8_t to_number() const;
}; };
typedef enumerated<types_opts> types; typedef enumerated<types_opts> types;
@ -929,34 +849,26 @@ struct ul_ccch_msg_type_c {
// getters // getters
c1_c_& c1() c1_c_& c1()
{ {
assert_choice_type("c1", type_.to_string(), "UL-CCCH-MessageType"); assert_choice_type(types::c1, type_, "UL-CCCH-MessageType");
return c.get<c1_c_>(); return c.get<c1_c_>();
} }
msg_class_ext_c_& msg_class_ext() msg_class_ext_c_& msg_class_ext()
{ {
assert_choice_type("messageClassExtension", type_.to_string(), "UL-CCCH-MessageType"); assert_choice_type(types::msg_class_ext, type_, "UL-CCCH-MessageType");
return c.get<msg_class_ext_c_>(); return c.get<msg_class_ext_c_>();
} }
const c1_c_& c1() const const c1_c_& c1() const
{ {
assert_choice_type("c1", type_.to_string(), "UL-CCCH-MessageType"); assert_choice_type(types::c1, type_, "UL-CCCH-MessageType");
return c.get<c1_c_>(); return c.get<c1_c_>();
} }
const msg_class_ext_c_& msg_class_ext() const const msg_class_ext_c_& msg_class_ext() const
{ {
assert_choice_type("messageClassExtension", type_.to_string(), "UL-CCCH-MessageType"); assert_choice_type(types::msg_class_ext, type_, "UL-CCCH-MessageType");
return c.get<msg_class_ext_c_>();
}
c1_c_& set_c1()
{
set(types::c1);
return c.get<c1_c_>();
}
msg_class_ext_c_& set_msg_class_ext()
{
set(types::msg_class_ext);
return c.get<msg_class_ext_c_>(); return c.get<msg_class_ext_c_>();
} }
c1_c_& set_c1();
msg_class_ext_c_& set_msg_class_ext();
private: private:
types type_; types type_;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -153,9 +153,10 @@ private:
// used to unlock select // used to unlock select
struct ctrl_cmd_t { struct ctrl_cmd_t {
enum class cmd_id_t { EXIT, NEW_FD, RM_FD }; enum class cmd_id_t { EXIT, NEW_FD, RM_FD };
cmd_id_t cmd = cmd_id_t::EXIT; cmd_id_t cmd;
int new_fd = -1; int new_fd;
bool signal_rm_complete = false; bool signal_rm_complete;
ctrl_cmd_t() { bzero(this, sizeof(ctrl_cmd_t)); }
}; };
std::map<int, recv_callback_t>::iterator remove_socket_unprotected(int fd, fd_set* total_fd_set, int* max_fd); std::map<int, recv_callback_t>::iterator remove_socket_unprotected(int fd, fd_set* total_fd_set, int* max_fd);

@ -29,6 +29,7 @@
#define srsran_terminate(fmt, ...) \ #define srsran_terminate(fmt, ...) \
std::fprintf(stderr, "%s:%d: " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__); \ std::fprintf(stderr, "%s:%d: " fmt "\n", __FILE__, __LINE__, ##__VA_ARGS__); \
srslog::flush(); \
std::abort() std::abort()
#ifdef ASSERTS_ENABLED #ifdef ASSERTS_ENABLED
@ -65,13 +66,11 @@
#else // ASSERTS_ENABLED #else // ASSERTS_ENABLED
#define srslte_assert(condition, fmt, ...) \ #define srsran_assert(condition, fmt, ...) \
do { \ do { \
} while (0) } while (0)
#define srsran_expect(condition, fmt, ...) \ #define srsran_expect(condition, fmt, ...) srsran_assert(condition, fmt, ##__VA_ARGS__)
do { \
} while (0)
#endif #endif

@ -274,6 +274,9 @@ public:
timer.run(); timer.run();
} }
// useful for testing
static size_t get_wheel_size() { return WHEEL_SIZE; }
private: private:
timer_impl& alloc_timer() timer_impl& alloc_timer()
{ {
@ -315,7 +318,8 @@ private:
uint32_t timeout = cur_time + timer.duration; uint32_t timeout = cur_time + timer.duration;
size_t new_wheel_pos = timeout & WHEEL_MASK; size_t new_wheel_pos = timeout & WHEEL_MASK;
if (timer.is_running() and (timer.timeout & WHEEL_MASK) == new_wheel_pos) { if (timer.is_running() and (timer.timeout & WHEEL_MASK) == new_wheel_pos) {
// If no change in timer wheel position // If no change in timer wheel position. Just update absolute timeout
timer.timeout = timeout;
return; return;
} }

@ -31,7 +31,7 @@
namespace srsran { namespace srsran {
enum class rlc_mode_t { tm, um, am, nulltype }; enum class rlc_mode_t { tm, um, am, nulltype };
inline std::string to_string(const rlc_mode_t& mode, bool long_txt = true) inline const char* to_string(const rlc_mode_t& mode, bool long_txt = true)
{ {
constexpr static const char* long_options[] = {"Transparent Mode", "Unacknowledged Mode", "Acknowledged Mode"}; constexpr static const char* long_options[] = {"Transparent Mode", "Unacknowledged Mode", "Acknowledged Mode"};
constexpr static const char* short_options[] = {"TM", "UM", "AM"}; constexpr static const char* short_options[] = {"TM", "UM", "AM"};

@ -48,7 +48,7 @@ struct phy_cfg_nr_t {
/** /**
* @param carrier * @param carrier
*/ */
srsran_dci_cfg_nr_t get_dci_cfg(const srsran_carrier_nr_t& carrier) const srsran_dci_cfg_nr_t get_dci_cfg() const
{ {
srsran_dci_cfg_nr_t dci_cfg = {}; srsran_dci_cfg_nr_t dci_cfg = {};

@ -176,7 +176,7 @@ public:
struct phy_args_nr_t { struct phy_args_nr_t {
uint32_t nof_carriers = 1; uint32_t nof_carriers = 1;
uint32_t nof_prb = 52; uint32_t max_nof_prb = 106;
uint32_t nof_phy_threads = 3; uint32_t nof_phy_threads = 3;
uint32_t worker_cpu_mask = 0; uint32_t worker_cpu_mask = 0;
srsran::phy_log_args_t log = {}; srsran::phy_log_args_t log = {};
@ -188,11 +188,16 @@ struct phy_args_nr_t {
phy_args_nr_t() phy_args_nr_t()
{ {
dl.nof_rx_antennas = 1; dl.nof_rx_antennas = 1;
dl.nof_max_prb = 100; dl.nof_max_prb = 106;
dl.pdsch.max_prb = 106;
dl.pdsch.max_layers = 1;
dl.pdsch.measure_evm = true; dl.pdsch.measure_evm = true;
dl.pdsch.measure_time = true; dl.pdsch.measure_time = true;
dl.pdsch.sch.disable_simd = false; dl.pdsch.sch.disable_simd = false;
ul.nof_max_prb = 100; dl.pdsch.sch.max_nof_iter = 10;
ul.nof_max_prb = 106;
ul.pusch.max_prb = 106;
ul.pusch.max_layers = 1;
ul.pusch.measure_time = true; ul.pusch.measure_time = true;
ul.pusch.sch.disable_simd = false; ul.pusch.sch.disable_simd = false;

@ -62,7 +62,7 @@ struct phy_args_t {
uint32_t nof_lte_carriers = 1; uint32_t nof_lte_carriers = 1;
uint32_t nof_nr_carriers = 0; uint32_t nof_nr_carriers = 0;
uint32_t nr_nof_prb = 50; uint32_t nr_max_nof_prb = 106;
double nr_freq_hz = 2630e6; double nr_freq_hz = 2630e6;
uint32_t nof_rx_ant = 1; uint32_t nof_rx_ant = 1;
std::string equalizer_mode = "mmse"; std::string equalizer_mode = "mmse";

@ -290,7 +290,7 @@ typedef struct SRSRAN_API {
uint32_t absolute_frequency_ssb; uint32_t absolute_frequency_ssb;
uint32_t absolute_frequency_point_a; uint32_t absolute_frequency_point_a;
srsran_subcarrier_spacing_t scs; srsran_subcarrier_spacing_t scs;
uint32_t nof_prb; uint32_t nof_prb; ///< @brief See TS 38.101-1 Table 5.3.2-1 for more details
uint32_t start; uint32_t start;
uint32_t max_mimo_layers; ///< @brief DL: Indicates the maximum number of MIMO layers to be used for PDSCH in all BWPs uint32_t max_mimo_layers; ///< @brief DL: Indicates the maximum number of MIMO layers to be used for PDSCH in all BWPs
///< of this serving cell. (see TS 38.212 [17], clause 5.4.2.1). UL: Indicates the maximum ///< of this serving cell. (see TS 38.212 [17], clause 5.4.2.1). UL: Indicates the maximum
@ -475,6 +475,8 @@ SRSRAN_API bool srsran_tdd_nr_is_dl(const srsran_tdd_config_nr_t* cfg, uint32_t
*/ */
SRSRAN_API bool srsran_tdd_nr_is_ul(const srsran_tdd_config_nr_t* cfg, uint32_t numerology, uint32_t slot_idx); SRSRAN_API bool srsran_tdd_nr_is_ul(const srsran_tdd_config_nr_t* cfg, uint32_t numerology, uint32_t slot_idx);
SRSRAN_API int srsran_carrier_to_cell(const srsran_carrier_nr_t* carrier, srsran_cell_t* cell);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

@ -54,7 +54,7 @@ typedef struct SRSRAN_API {
/// Common Formats 0_1 and 1_1 /// Common Formats 0_1 and 1_1
uint32_t carrier_indicator_size; ///< Defined in TS 38.213 clause 10.1 uint32_t carrier_indicator_size; ///< Defined in TS 38.213 clause 10.1
srsran_harq_ack_codebook_t harq_ack_codebok; ///< PDSCH HARQ-ACK codebook mode srsran_harq_ack_codebook_t harq_ack_codebok; ///< PDSCH HARQ-ACK codebook mode
uint32_t nof_rb_groups; ///< Defined in TS 38.214 clause 6.1.2.2.1 uint32_t nof_rb_groups; ///< For allocation type 0, defined in TS 38.214 clause 6.1.2.2.1
/// Format 0_1 specific configuration (for PUSCH only) /// Format 0_1 specific configuration (for PUSCH only)
uint32_t nof_ul_bwp; ///< Number of UL BWPs excluding the initial UL BWP, mentioned in the TS as N_BWP_RRC uint32_t nof_ul_bwp; ///< Number of UL BWPs excluding the initial UL BWP, mentioned in the TS as N_BWP_RRC
@ -65,7 +65,7 @@ typedef struct SRSRAN_API {
uint32_t report_trigger_size; ///< determined by reportTriggerSize uint32_t report_trigger_size; ///< determined by reportTriggerSize
bool enable_transform_precoding; ///< Set to true if PUSCH transform precoding is enabled bool enable_transform_precoding; ///< Set to true if PUSCH transform precoding is enabled
bool dynamic_dual_harq_ack_codebook; ///< Set to true if HARQ-ACK codebook is set to dynamic with 2 sub-codebooks bool dynamic_dual_harq_ack_codebook; ///< Set to true if HARQ-ACK codebook is set to dynamic with 2 sub-codebooks
bool pusch_tx_config_codebook; ///< Set to true if PUSCH txConfig is set to codebook bool pusch_tx_config_non_codebook; ///< Set to true if PUSCH txConfig is set to non-codebook
bool pusch_dmrs_type2; ///< Set to true if PUSCH DMRS are type 2 bool pusch_dmrs_type2; ///< Set to true if PUSCH DMRS are type 2
bool pusch_dmrs_double; ///< Set to true if PUSCH DMRS are 2 symbol long bool pusch_dmrs_double; ///< Set to true if PUSCH DMRS are 2 symbol long
bool pusch_ptrs; ///< Set to true if PT-RS are enabled for PUSCH transmission bool pusch_ptrs; ///< Set to true if PT-RS are enabled for PUSCH transmission
@ -74,21 +74,21 @@ typedef struct SRSRAN_API {
/// Format 1_1 specific configuration (for PDSCH only) /// Format 1_1 specific configuration (for PDSCH only)
uint32_t nof_dl_bwp; ///< Number of DL BWPs excluding the initial UL BWP, mentioned in the TS as N_BWP_RRC uint32_t nof_dl_bwp; ///< Number of DL BWPs excluding the initial UL BWP, mentioned in the TS as N_BWP_RRC
srsran_resource_alloc_t pdsch_alloc_type; ///< PDSCH resource allocation type, set to 0 for default
uint32_t nof_dl_time_res; ///< Number of dedicated PDSCH time domain resource assigment uint32_t nof_dl_time_res; ///< Number of dedicated PDSCH time domain resource assigment
uint32_t nof_aperiodic_zp; ///< Number of aperiodic ZP CSI-RS resource sets configured uint32_t nof_aperiodic_zp; ///< Number of aperiodic ZP CSI-RS resource sets configured
uint32_t pdsch_nof_cbg; ///< determined by maxCodeBlockGroupsPerTransportBlock for PDSCH
uint32_t nof_dl_to_ul_ack; ///< Number of entries in the dl-DataToUL-ACK
bool pdsch_inter_prb_to_prb; ///< Set to true if interleaved VRB to PRB mapping is enabled bool pdsch_inter_prb_to_prb; ///< Set to true if interleaved VRB to PRB mapping is enabled
bool pdsch_rm_pattern1; ///< Set to true if rateMatchPatternGroup1 is configured bool pdsch_rm_pattern1; ///< Set to true if rateMatchPatternGroup1 is configured
bool pdsch_rm_pattern2; ///< Set to true if rateMatchPatternGroup2 is configured bool pdsch_rm_pattern2; ///< Set to true if rateMatchPatternGroup2 is configured
bool pdsch_2cw; ///< Set to true if maxNrofCodeWordsScheduledByDCI is set to 2 in any BWP bool pdsch_2cw; ///< Set to true if maxNrofCodeWordsScheduledByDCI is set to 2 in any BWP
uint32_t pdsch_nof_cbg; ///< determined by maxCodeBlockGroupsPerTransportBlock for PDSCH
bool multiple_scell; ///< Set to true if configured with multiple serving cell bool multiple_scell; ///< Set to true if configured with multiple serving cell
bool nof_dl_to_ul_ack; ///< Number of entries in the dl-DataToUL-ACK
bool pdsch_dmrs_type2; ///< Set to true if PDSCH DMRS are type 2 bool pdsch_dmrs_type2; ///< Set to true if PDSCH DMRS are type 2
bool pdsch_dmrs_double; ///< Set to true if PDSCH DMRS are 2 symbol long bool pdsch_dmrs_double; ///< Set to true if PDSCH DMRS are 2 symbol long
bool pdsch_tci; ///< Set to true if tci-PresentInDCI is enabled bool pdsch_tci; ///< Set to true if tci-PresentInDCI is enabled
bool pdsch_cbg_flush; ///< Set to true if codeBlockGroupFlushIndicator is true bool pdsch_cbg_flush; ///< Set to true if codeBlockGroupFlushIndicator is true
bool pdsch_dynamic_bundling; ///< Set to true if prb-BundlingType is set to dynamicBundling bool pdsch_dynamic_bundling; ///< Set to true if prb-BundlingType is set to dynamicBundling
srsran_resource_alloc_t pdsch_alloc_type; ///< PDSCH resource allocation type, set to 0 for default
} srsran_dci_cfg_nr_t; } srsran_dci_cfg_nr_t;
@ -127,14 +127,6 @@ typedef struct SRSRAN_API {
srsran_rnti_type_t rnti_type; ///< RNTI type srsran_rnti_type_t rnti_type; ///< RNTI type
srsran_dci_format_nr_t format; ///< DCI format srsran_dci_format_nr_t format; ///< DCI format
uint16_t rnti; ///< UE temporal RNTI uint16_t rnti; ///< UE temporal RNTI
uint32_t coreset0_bw; ///< CORESET0 DL bandwidth, set to 0 if not present
uint32_t bwp_dl_initial_bw; ///< Initial DL/UL BWP bandwidth
uint32_t bwp_dl_active_bw; ///< Active DL/UL BWP bandwidth in PRB
uint32_t bwp_ul_initial_bw; ///< Initial UL BWP bandwidth
uint32_t bwp_ul_active_bw; ///< Active UL BWP bandwidth in PRB
bool monitor_common_0_0; ///< Set to true if Format 0_0 is monitored in common SS
bool enable_sul; ///< Set to true if supplementary uplink is configured
bool enable_hopping; ///< Set to true if frequency hopping is enabled
} srsran_dci_ctx_t; } srsran_dci_ctx_t;
/** /**
@ -176,6 +168,24 @@ typedef struct SRSRAN_API {
// SI-RNTI specific fields // SI-RNTI specific fields
uint32_t sii; ///< System information indicator uint32_t sii; ///< System information indicator
// Second TB (Optional)
uint32_t mcs2; ///< Modulation and coding scheme for the second transport block
uint32_t ndi2; ///< New data indicator for the second transport block
uint32_t rv2; ///< Redundancy version for the second transport block
// Optional fields
uint32_t cc_id; ///< Carrier indicator
uint32_t bwp_id; ///< BWP indicator
uint32_t rm_pattern1; ///< Rate matching pattern 1 indicator
uint32_t rm_pattern2; ///< Rate matching pattern 2 indicator
uint32_t zp_csi_rs_id; ///< ZP-CSI-RS trigger
uint32_t ports; ///< Antenna ports
uint32_t tci; ///< Transmission configuration indication
uint32_t srs_request; ///< SRS request
uint32_t cbg_info; ///< CBG transmission information (CBGTI)
uint32_t cbg_flush; ///< CBG flushing out information (CBGFI)
uint32_t dmrs_id; ///< DMRS sequence initialization
} srsran_dci_dl_nr_t; } srsran_dci_dl_nr_t;
/** /**
@ -198,17 +208,27 @@ typedef struct SRSRAN_API {
uint32_t ndi; ///< New data indicator uint32_t ndi; ///< New data indicator
uint32_t pid; ///< HARQ process number uint32_t pid; ///< HARQ process number
uint32_t tpc; ///< TPC command for scheduled PUCCH uint32_t tpc; ///< TPC command for scheduled PUCCH
uint32_t pucch_resource; ///< PUCCH resource indicator
uint32_t harq_feedback; ///< PDSCH-to-HARQ_feedback timing indicator
// Frequency hopping // Frequency hopping
uint32_t frequency_offset; ///< frequency offset uint32_t frequency_offset; ///< frequency offset
// Random Access Response Grant // Random Access Response Grant
uint32_t csi_request; uint32_t csi_request; ///< CSI request
// Other fields // Optional fields
uint32_t sul; ///< Supplementary Uplink flag uint32_t sul; ///< Supplementary Uplink flag
uint32_t cc_id; ///< Carrier indicator
uint32_t bwp_id; ///< BWP indicator
uint32_t dai1; ///< First DAI
uint32_t dai2; ///< Second DAI
uint32_t srs_id; ///< SRS resource indicator
uint32_t ports; ///< Antenna ports
uint32_t srs_request; ///< SRS request
uint32_t cbg_info; ///< CBG transmission information (CBGTI)
uint32_t ptrs_id; ///< PTRS-DMRS association
uint32_t beta_id; ///< beta_offset indicator
uint32_t dmrs_id; ///< DMRS sequence initialization
uint32_t ulsch; ///< UL-SCH indicator
} srsran_dci_ul_nr_t; } srsran_dci_ul_nr_t;
/** /**
@ -278,21 +298,34 @@ SRSRAN_API int srsran_dci_nr_ul_pack(const srsran_dci_nr_t* q, const srsran_dci_
SRSRAN_API int srsran_dci_nr_ul_unpack(const srsran_dci_nr_t* q, srsran_dci_msg_nr_t* msg, srsran_dci_ul_nr_t* dci); SRSRAN_API int srsran_dci_nr_ul_unpack(const srsran_dci_nr_t* q, srsran_dci_msg_nr_t* msg, srsran_dci_ul_nr_t* dci);
/** /**
* @brief Stringifies an DL NR DCI structure * @brief Stringifies an NR DCI conxtext
* @param ctx Provides NR DCI context
* @param[out] str Destination string
* @param str_len Destination string length
* @return The number of written characters
*/
SRSRAN_API int srsran_dci_ctx_to_str(const srsran_dci_ctx_t* ctx, char* str, uint32_t str_len);
/**
* @brief Stringifies a DL NR DCI structure
* @param q NR DCI object with precomputed DCI parameters
* @param dci DL NR SCI structure to stringify * @param dci DL NR SCI structure to stringify
* @param[out] str Destination string * @param[out] str Destination string
* @param str_len Destination string length * @param str_len Destination string length
* @return The number of written characters * @return The number of written characters
*/ */
SRSRAN_API int srsran_dci_dl_nr_to_str(const srsran_dci_dl_nr_t* dci, char* str, uint32_t str_len); SRSRAN_API int
srsran_dci_dl_nr_to_str(const srsran_dci_nr_t* q, const srsran_dci_dl_nr_t* dci, char* str, uint32_t str_len);
/** /**
* @brief Stringifies an UL NR DCI structure * @brief Stringifies an UL NR DCI structure
* @param q NR DCI object with precomputed DCI parameters
* @param dci UL NR SCI structure to stringify * @param dci UL NR SCI structure to stringify
* @param[out] str Destination string * @param[out] str Destination string
* @param str_len Destination string length * @param str_len Destination string length
* @return The number of written characters * @return The number of written characters
*/ */
SRSRAN_API int srsran_dci_ul_nr_to_str(const srsran_dci_ul_nr_t* dci, char* str, uint32_t str_len); SRSRAN_API int
srsran_dci_ul_nr_to_str(const srsran_dci_nr_t* q, const srsran_dci_ul_nr_t* dci, char* str, uint32_t str_len);
#endif // SRSRAN_DCI_NR_H #endif // SRSRAN_DCI_NR_H

@ -46,6 +46,8 @@ typedef struct SRSRAN_API {
srsran_sch_nr_args_t sch; srsran_sch_nr_args_t sch;
bool measure_evm; bool measure_evm;
bool measure_time; bool measure_time;
uint32_t max_prb;
uint32_t max_layers;
} srsran_pdsch_nr_args_t; } srsran_pdsch_nr_args_t;
/** /**

@ -40,6 +40,8 @@ typedef struct SRSRAN_API {
srsran_uci_nr_args_t uci; srsran_uci_nr_args_t uci;
bool measure_evm; bool measure_evm;
bool measure_time; bool measure_time;
uint32_t max_layers;
uint32_t max_prb;
} srsran_pusch_nr_args_t; } srsran_pusch_nr_args_t;
/** /**

@ -50,7 +50,7 @@ struct metrics_container {
/// Returns the value of metric T. /// Returns the value of metric T.
template <typename T> template <typename T>
auto read() const -> const decltype(T::value)& auto read() const -> const decltype(T::value) &
{ {
constexpr std::size_t index = detail::get_type_index_in_tuple<T, Ts...>(); constexpr std::size_t index = detail::get_type_index_in_tuple<T, Ts...>();
return std::get<index>(metrics).value; return std::get<index>(metrics).value;
@ -133,18 +133,13 @@ struct metric {
static const char* units() { return Units::units(); } static const char* units() { return Units::units(); }
/// Returns the formatting kind of the metric. /// Returns the formatting kind of the metric.
static metric_kind kind() static metric_kind kind() { return metric_kind_selector<metric<Ty, Name, Units> >::kind; }
{
return metric_kind_selector<metric<Ty, Name, Units>>::kind;
}
}; };
/// Template specialization that tags metrics with arithmetic values (integers /// Template specialization that tags metrics with arithmetic values (integers
/// and floating point) as numeric. /// and floating point) as numeric.
template <typename Ty, typename Name, typename Units> template <typename Ty, typename Name, typename Units>
struct metric_kind_selector< struct metric_kind_selector<metric<Ty, Name, Units>, typename std::enable_if<std::is_arithmetic<Ty>::value>::type> {
metric<Ty, Name, Units>,
typename std::enable_if<std::is_arithmetic<Ty>::value>::type> {
static const metric_kind kind = metric_kind::numeric; static const metric_kind kind = metric_kind::numeric;
}; };
@ -177,8 +172,7 @@ namespace detail {
/// eg: using my_metric_t = srslog::build_metric_set_type<m1_t, set1_t, m2_t>; /// eg: using my_metric_t = srslog::build_metric_set_type<m1_t, set1_t, m2_t>;
/// NOTE: Adding duplicated types into the list is not allowed. /// NOTE: Adding duplicated types into the list is not allowed.
template <typename Name, typename... Ts> template <typename Name, typename... Ts>
using build_metric_set_type = using build_metric_set_type = metric_set<Name, typename std::decay<Ts>::type...>;
metric_set<Name, typename std::decay<Ts>::type...>;
} // namespace detail } // namespace detail
@ -209,9 +203,8 @@ using build_context_type = context<typename std::decay<Ts>::type...>;
static const char* name() { return _name_rep; } \ static const char* name() { return _name_rep; } \
}; \ }; \
} \ } \
using _type = srslog::metric<typename std::decay<_value_type>::type, \ using _type = srslog:: \
metric_info::_type##__name_rep, \ metric<typename std::decay<_value_type>::type, metric_info::_type##__name_rep, metric_info::_type##__units>
metric_info::_type##__units>
/// This macro defines a new metric set type using the following attributes: /// This macro defines a new metric set type using the following attributes:
/// a) name: encoded as a string. /// a) name: encoded as a string.
@ -231,8 +224,7 @@ using build_context_type = context<typename std::decay<Ts>::type...>;
static const char* name() { return _name_rep; } \ static const char* name() { return _name_rep; } \
}; \ }; \
} \ } \
using _type = srslog::detail:: \ using _type = srslog::detail::build_metric_set_type<metric_set_info::_type##__name_rep, __VA_ARGS__>
build_metric_set_type<metric_set_info::_type##__name_rep, __VA_ARGS__>
/// This macro defines a list of metric sets of the same type: /// This macro defines a list of metric sets of the same type:
/// a) name: encoded as a string. /// a) name: encoded as a string.
@ -251,8 +243,7 @@ using build_context_type = context<typename std::decay<Ts>::type...>;
static const char* name() { return _name_rep; } \ static const char* name() { return _name_rep; } \
}; \ }; \
} \ } \
using _type = srslog::metric_list<list_info::_type##__name_rep, \ using _type = srslog::metric_list<list_info::_type##__name_rep, typename std::decay<_list_type>::type>
typename std::decay<_list_type>::type>
} // namespace srslog } // namespace srslog

@ -39,12 +39,11 @@ struct flush_backend_cmd {
/// This structure packs all the required data required to create a log entry in /// This structure packs all the required data required to create a log entry in
/// the backend. /// the backend.
//:TODO: replace this object using a real command pattern when we have a raw //: TODO: replace this object using a real command pattern when we have a raw
// memory queue for passing entries. // memory queue for passing entries.
struct log_entry { struct log_entry {
sink* s; sink* s;
std::function<void(log_entry_metadata&& metadata, fmt::memory_buffer& buffer)> std::function<void(log_entry_metadata&& metadata, fmt::memory_buffer& buffer)> format_func;
format_func;
log_entry_metadata metadata; log_entry_metadata metadata;
std::unique_ptr<flush_backend_cmd> flush_cmd; std::unique_ptr<flush_backend_cmd> flush_cmd;
}; };

@ -33,7 +33,7 @@ using small_str_buffer = fmt::basic_memory_buffer<char, 64>;
namespace detail { namespace detail {
/// This structure gives the user a way to log generic information as a context. /// This structure gives the user a way to log generic information as a context.
//:TODO: legacy struct, will get replaced by the new context framework. //: TODO: legacy struct, will get replaced by the new context framework.
struct log_context { struct log_context {
/// Generic context value. /// Generic context value.
uint32_t value; uint32_t value;

@ -39,7 +39,7 @@ struct in_place_type_t {
template <typename T> template <typename T>
struct is_in_place_type_t : std::false_type {}; struct is_in_place_type_t : std::false_type {};
template <typename T> template <typename T>
struct is_in_place_type_t<in_place_type_t<T>> : std::true_type {}; struct is_in_place_type_t<in_place_type_t<T> > : std::true_type {};
/// This is a very minimalist and non compliant implementation of std::any which /// This is a very minimalist and non compliant implementation of std::any which
/// is included in C++17. /// is included in C++17.
@ -48,7 +48,7 @@ struct is_in_place_type_t<in_place_type_t<T>> : std::true_type {};
class any class any
{ {
public: public:
//:TODO: Clang 3.8 does not compile when default constructing a const object //: TODO: Clang 3.8 does not compile when default constructing a const object
// due to DR253. Declare the defaulted constructor out of the class. // due to DR253. Declare the defaulted constructor out of the class.
any(); any();
@ -63,15 +63,12 @@ public:
/// b) is move constructible. /// b) is move constructible.
/// c) is not an specialization of in_place_type_t. /// c) is not an specialization of in_place_type_t.
/// Otherwise the rest of special member functions are considered. /// Otherwise the rest of special member functions are considered.
template < template <typename T,
typename T, typename std::enable_if<!std::is_same<typename std::decay<T>::type, any>{} &&
typename std::enable_if<
!std::is_same<typename std::decay<T>::type, any>{} &&
std::is_move_constructible<typename std::decay<T>::type>{} && std::is_move_constructible<typename std::decay<T>::type>{} &&
!is_in_place_type_t<typename std::decay<T>::type>{}, !is_in_place_type_t<typename std::decay<T>::type>{},
int>::type = 0> int>::type = 0>
explicit any(T&& t) : explicit any(T&& t) : storage(new storage_impl<typename std::decay<T>::type>(std::forward<T>(t)))
storage(new storage_impl<typename std::decay<T>::type>(std::forward<T>(t)))
{} {}
/// Constructs an object of type decayed T directly into the internal storage /// Constructs an object of type decayed T directly into the internal storage
@ -82,12 +79,9 @@ public:
/// Otherwise the rest of special member functions are considered. /// Otherwise the rest of special member functions are considered.
template <typename T, template <typename T,
typename... Args, typename... Args,
typename std::enable_if< typename std::enable_if<std::is_constructible<typename std::decay<T>::type, Args...>{}, int>::type = 0>
std::is_constructible<typename std::decay<T>::type, Args...>{},
int>::type = 0>
explicit any(in_place_type_t<T>, Args&&... args) : explicit any(in_place_type_t<T>, Args&&... args) :
storage(new storage_impl<typename std::decay<T>::type>( storage(new storage_impl<typename std::decay<T>::type>(std::forward<Args>(args)...))
std::forward<Args>(args)...))
{} {}
any(any&& other) : storage(std::move(other.storage)) {} any(any&& other) : storage(std::move(other.storage)) {}
@ -149,7 +143,7 @@ private:
std::unique_ptr<type_interface> storage; std::unique_ptr<type_interface> storage;
}; };
//:TODO: declared out of line, see TODO above. //: TODO: declared out of line, see TODO above.
inline any::any() = default; inline any::any() = default;
/// Constructs an any object containing an object of type T, passing the /// Constructs an any object containing an object of type T, passing the
@ -169,8 +163,7 @@ inline T* any_cast(any* operand)
if (!operand || !operand->storage) if (!operand || !operand->storage)
return nullptr; return nullptr;
using U = using U = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
typename std::remove_cv<typename std::remove_reference<T>::type>::type;
if (operand->storage->type() != &any::type_tag<U>::tag) if (operand->storage->type() != &any::type_tag<U>::tag)
return nullptr; return nullptr;
@ -186,8 +179,7 @@ inline const T* any_cast(const any* operand)
if (!operand || !operand->storage) if (!operand || !operand->storage)
return nullptr; return nullptr;
using U = using U = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
typename std::remove_cv<typename std::remove_reference<T>::type>::type;
if (operand->storage->type() != &any::type_tag<U>::tag) if (operand->storage->type() != &any::type_tag<U>::tag)
return nullptr; return nullptr;

@ -36,13 +36,9 @@ class memory_buffer
const size_t length; const size_t length;
public: public:
memory_buffer(const char* buffer, size_t length) : memory_buffer(const char* buffer, size_t length) : buffer(buffer), length(length) {}
buffer(buffer), length(length)
{}
explicit memory_buffer(const std::string& s) : explicit memory_buffer(const std::string& s) : buffer(s.data()), length(s.size()) {}
buffer(s.data()), length(s.size())
{}
/// Returns a pointer to the start of the memory block. /// Returns a pointer to the start of the memory block.
const char* data() const { return buffer; } const char* data() const { return buffer; }

@ -28,7 +28,7 @@ namespace srslog {
namespace detail { namespace detail {
//:TODO: these are temp helpers that will be replaced by std utils. //: TODO: these are temp helpers that will be replaced by std utils.
/// Abstraction of a pthread mutex. /// Abstraction of a pthread mutex.
class mutex class mutex
@ -127,10 +127,7 @@ public:
/// Blocks the calling thread on this condition variable up to the specified /// Blocks the calling thread on this condition variable up to the specified
/// timeout. Returns true on timeout expiration, otherwise false. /// timeout. Returns true on timeout expiration, otherwise false.
bool wait(timespec ts) bool wait(timespec ts) { return (::pthread_cond_timedwait(&cond_var, m.raw(), &ts) == ETIMEDOUT); }
{
return (::pthread_cond_timedwait(&cond_var, m.raw(), &ts) == ETIMEDOUT);
}
/// Builds an absolute time timespec structure adding the specified time out /// Builds an absolute time timespec structure adding the specified time out
/// in ms. /// in ms.
@ -161,11 +158,7 @@ class cond_var_scoped_lock
condition_variable& cond_var; condition_variable& cond_var;
public: public:
explicit cond_var_scoped_lock(condition_variable& cond_var) : explicit cond_var_scoped_lock(condition_variable& cond_var) : cond_var(cond_var) { cond_var.lock(); }
cond_var(cond_var)
{
cond_var.lock();
}
cond_var_scoped_lock(const cond_var_scoped_lock&) = delete; cond_var_scoped_lock(const cond_var_scoped_lock&) = delete;
cond_var_scoped_lock& operator=(const cond_var_scoped_lock&) = delete; cond_var_scoped_lock& operator=(const cond_var_scoped_lock&) = delete;

@ -37,8 +37,7 @@ template <std::size_t...>
struct index_sequence {}; struct index_sequence {};
template <std::size_t N, std::size_t... Next> template <std::size_t N, std::size_t... Next>
struct index_sequence_helper struct index_sequence_helper : public index_sequence_helper<N - 1U, N - 1U, Next...> {};
: public index_sequence_helper<N - 1U, N - 1U, Next...> {};
template <std::size_t... Next> template <std::size_t... Next>
struct index_sequence_helper<0U, Next...> { struct index_sequence_helper<0U, Next...> {
@ -56,20 +55,19 @@ template <typename T, typename Tuple>
struct tuple_index; struct tuple_index;
template <typename T, typename... Ts> template <typename T, typename... Ts>
struct tuple_index<T, std::tuple<T, Ts...>> { struct tuple_index<T, std::tuple<T, Ts...> > {
static constexpr std::size_t value = 0; static constexpr std::size_t value = 0;
}; };
template <typename T, typename U, typename... Ts> template <typename T, typename U, typename... Ts>
struct tuple_index<T, std::tuple<U, Ts...>> { struct tuple_index<T, std::tuple<U, Ts...> > {
static constexpr std::size_t value = static constexpr std::size_t value = 1 + tuple_index<T, std::tuple<Ts...> >::value;
1 + tuple_index<T, std::tuple<Ts...>>::value;
}; };
template <typename T, typename... Ts> template <typename T, typename... Ts>
constexpr std::size_t get_type_index_in_tuple() constexpr std::size_t get_type_index_in_tuple()
{ {
return tuple_index<T, std::tuple<Ts...>>::value; return tuple_index<T, std::tuple<Ts...> >::value;
} }
} // namespace detail } // namespace detail

@ -30,7 +30,7 @@ namespace srslog {
namespace detail { namespace detail {
//:TODO: this is a temp work queue. //: TODO: this is a temp work queue.
/// Thread safe generic data type work queue. /// Thread safe generic data type work queue.
template <typename T, size_t capacity = SRSLOG_QUEUE_CAPACITY> template <typename T, size_t capacity = SRSLOG_QUEUE_CAPACITY>

@ -48,8 +48,7 @@ log_channel& fetch_log_channel(const std::string& id);
/// Returns an instance of a log_channel with the specified id that writes to /// Returns an instance of a log_channel with the specified id that writes to
/// the specified sink. /// the specified sink.
/// NOTE: Any '#' characters in the id will get removed. /// NOTE: Any '#' characters in the id will get removed.
log_channel& log_channel& fetch_log_channel(const std::string& id, sink& s, log_channel_config config);
fetch_log_channel(const std::string& id, sink& s, log_channel_config config);
/// Creates a new log channel instance with the specified id string and sink, /// Creates a new log channel instance with the specified id string and sink,
/// then registers it in the log channel repository so that it can be later /// then registers it in the log channel repository so that it can be later
@ -89,16 +88,13 @@ inline T* find_logger(const std::string& id)
/// specified id string. All logger channels will write into the default sink. /// specified id string. All logger channels will write into the default sink.
/// The context value of the logger can be printed on each log entry by setting /// The context value of the logger can be printed on each log entry by setting
/// to true the should_print_context argument. /// to true the should_print_context argument.
basic_logger& fetch_basic_logger(const std::string& id, basic_logger& fetch_basic_logger(const std::string& id, bool should_print_context = true);
bool should_print_context = true);
/// Returns an instance of a basic logger (see basic_logger type) with the /// Returns an instance of a basic logger (see basic_logger type) with the
/// specified id string. All logger channels will write into the specified sink. /// specified id string. All logger channels will write into the specified sink.
/// The context value of the logger can be printed on each log entry by setting /// The context value of the logger can be printed on each log entry by setting
/// to true the should_print_context argument. /// to true the should_print_context argument.
basic_logger& fetch_basic_logger(const std::string& id, basic_logger& fetch_basic_logger(const std::string& id, sink& s, bool should_print_context = true);
sink& s,
bool should_print_context = true);
/// Returns a logger instance with the specified id string, type and channel /// Returns a logger instance with the specified id string, type and channel
/// references. /// references.
@ -107,7 +103,7 @@ template <typename T, typename... Args>
inline T& fetch_logger(const std::string& id, Args&&... args) inline T& fetch_logger(const std::string& id, Args&&... args)
{ {
static_assert(detail::is_logger<T>::value, "T should be a logger type"); static_assert(detail::is_logger<T>::value, "T should be a logger type");
if (auto *logger = find_logger<T>(id)) { if (auto* logger = find_logger<T>(id)) {
return *logger; return *logger;
} }
auto logger = detail::make_any<T>(id, std::forward<Args>(args)...); auto logger = detail::make_any<T>(id, std::forward<Args>(args)...);
@ -124,9 +120,7 @@ inline T& fetch_logger(const std::string& id, Args&&... args)
/// the specified sink. Returns a pointer to the newly created logger, otherwise /// the specified sink. Returns a pointer to the newly created logger, otherwise
/// when a logger is already registered with the same id it returns nullptr. /// when a logger is already registered with the same id it returns nullptr.
/// NOTE: Deprecated, use fetch_basic_logger instead. /// NOTE: Deprecated, use fetch_basic_logger instead.
basic_logger* create_basic_logger(const std::string& id, basic_logger* create_basic_logger(const std::string& id, sink& s, bool should_print_context = true);
sink& s,
bool should_print_context = true);
/// Creates a new logger instance with the specified id string, type and channel /// Creates a new logger instance with the specified id string, type and channel
/// references, registering it into the logger repository so that it can be /// references, registering it into the logger repository so that it can be
@ -181,15 +175,13 @@ sink* find_sink(const std::string& id);
/// Returns an instance of a sink that writes to the stdout stream. You may use /// Returns an instance of a sink that writes to the stdout stream. You may use
/// different ids if you need to create multiple stdout sinks with different /// different ids if you need to create multiple stdout sinks with different
/// formatters. /// formatters.
sink& fetch_stdout_sink( sink& fetch_stdout_sink(const std::string& id = "stdout",
const std::string& id = "stdout",
std::unique_ptr<log_formatter> f = get_default_log_formatter()); std::unique_ptr<log_formatter> f = get_default_log_formatter());
/// Returns an instance of a sink that writes to the stderr stream. You may use /// Returns an instance of a sink that writes to the stderr stream. You may use
/// different ids if you need to create multiple stderr sinks with different /// different ids if you need to create multiple stderr sinks with different
/// formatters. /// formatters.
sink& fetch_stderr_sink( sink& fetch_stderr_sink(const std::string& id = "stderr",
const std::string& id = "stderr",
std::unique_ptr<log_formatter> f = get_default_log_formatter()); std::unique_ptr<log_formatter> f = get_default_log_formatter());
/// Returns an instance of a sink that writes into a file in the specified path. /// Returns an instance of a sink that writes into a file in the specified path.
@ -197,8 +189,7 @@ sink& fetch_stderr_sink(
/// new file each time the current file exceeds this value. The units of /// new file each time the current file exceeds this value. The units of
/// max_size are bytes. /// max_size are bytes.
/// NOTE: Any '#' characters in the path will get removed. /// NOTE: Any '#' characters in the path will get removed.
sink& fetch_file_sink( sink& fetch_file_sink(const std::string& path,
const std::string& path,
size_t max_size = 0, size_t max_size = 0,
std::unique_ptr<log_formatter> f = get_default_log_formatter()); std::unique_ptr<log_formatter> f = get_default_log_formatter());

@ -75,8 +75,7 @@ srslog_log_channel* srslog_find_log_channel(const char* id);
/** /**
* Controls whether the specified channel accepts incoming log entries. * Controls whether the specified channel accepts incoming log entries.
*/ */
void srslog_set_log_channel_enabled(srslog_log_channel* channel, void srslog_set_log_channel_enabled(srslog_log_channel* channel, srslog_bool enabled);
srslog_bool enabled);
/** /**
* Returns 1 if the specified channel is accepting incoming log entries, * Returns 1 if the specified channel is accepting incoming log entries,

@ -41,21 +41,11 @@ void invalid_enum_number(int value, const char* name)
void assert_choice_type(uint32_t val, uint32_t choice_id) void assert_choice_type(uint32_t val, uint32_t choice_id)
{ {
if (val != choice_id) { if (srsran_unlikely(val != choice_id)) {
log_invalid_access_choice_id(val, choice_id); log_invalid_access_choice_id(val, choice_id);
} }
} }
void assert_choice_type(const std::string& access_type, const std::string& current_type, const std::string& choice_type)
{
if (access_type != current_type) {
log_error("Invalid field access for choice type \"%s\" (\"%s\"!=\"%s\")",
choice_type.c_str(),
access_type.c_str(),
current_type.c_str());
}
}
/************************ /************************
error handling error handling
************************/ ************************/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -547,6 +547,16 @@ plmn_id_info2_r12_c& plmn_id_info2_r12_c::operator=(const plmn_id_info2_r12_c& o
return *this; return *this;
} }
uint8_t& plmn_id_info2_r12_c::set_plmn_idx_r12()
{
set(types::plmn_idx_r12);
return c.get<uint8_t>();
}
plmn_id_s& plmn_id_info2_r12_c::set_plmn_id_r12()
{
set(types::plmn_id_r12);
return c.get<plmn_id_s>();
}
void plmn_id_info2_r12_c::to_json(json_writer& j) const void plmn_id_info2_r12_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -690,6 +700,16 @@ sys_time_info_cdma2000_s::cdma_sys_time_c_::operator=(const sys_time_info_cdma20
return *this; return *this;
} }
fixed_bitstring<39>& sys_time_info_cdma2000_s::cdma_sys_time_c_::set_sync_sys_time()
{
set(types::sync_sys_time);
return c.get<fixed_bitstring<39> >();
}
fixed_bitstring<49>& sys_time_info_cdma2000_s::cdma_sys_time_c_::set_async_sys_time()
{
set(types::async_sys_time);
return c.get<fixed_bitstring<49> >();
}
void sys_time_info_cdma2000_s::cdma_sys_time_c_::to_json(json_writer& j) const void sys_time_info_cdma2000_s::cdma_sys_time_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -967,6 +987,15 @@ void params_cdma2000_r11_s::sys_time_info_r11_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
sys_time_info_cdma2000_s& params_cdma2000_r11_s::sys_time_info_r11_c_::set_explicit_value()
{
set(types::explicit_value);
return c;
}
void params_cdma2000_r11_s::sys_time_info_r11_c_::set_default_value()
{
set(types::default_value);
}
void params_cdma2000_r11_s::sys_time_info_r11_c_::to_json(json_writer& j) const void params_cdma2000_r11_s::sys_time_info_r11_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1404,7 +1433,7 @@ void carrier_freq_nr_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const const char* carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_opts::to_string() const
{ {
static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240"}; static const char* options[] = {"kHz15", "kHz30", "kHz120", "kHz240"};
return convert_enum_idx(options, 4, value, "carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_e_"); return convert_enum_idx(options, 4, value, "carrier_freq_nr_r15_s::subcarrier_spacing_ssb_r15_e_");
@ -1774,7 +1803,7 @@ void eab_cfg_r11_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string eab_cfg_r11_s::eab_category_r11_opts::to_string() const const char* eab_cfg_r11_s::eab_category_r11_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c"}; static const char* options[] = {"a", "b", "c"};
return convert_enum_idx(options, 3, value, "eab_cfg_r11_s::eab_category_r11_e_"); return convert_enum_idx(options, 3, value, "eab_cfg_r11_s::eab_category_r11_e_");
@ -2484,7 +2513,7 @@ void mbms_carrier_type_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mbms_carrier_type_r14_s::carrier_type_r14_opts::to_string() const const char* mbms_carrier_type_r14_s::carrier_type_r14_opts::to_string() const
{ {
static const char* options[] = {"mbms", "fembmsMixed", "fembmsDedicated"}; static const char* options[] = {"mbms", "fembmsMixed", "fembmsDedicated"};
return convert_enum_idx(options, 3, value, "mbms_carrier_type_r14_s::carrier_type_r14_e_"); return convert_enum_idx(options, 3, value, "mbms_carrier_type_r14_s::carrier_type_r14_e_");
@ -2665,7 +2694,7 @@ void mbsfn_area_info_r9_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mbsfn_area_info_r9_s::non_mbsfn_region_len_opts::to_string() const const char* mbsfn_area_info_r9_s::non_mbsfn_region_len_opts::to_string() const
{ {
static const char* options[] = {"s1", "s2"}; static const char* options[] = {"s1", "s2"};
return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::non_mbsfn_region_len_e_"); return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::non_mbsfn_region_len_e_");
@ -2676,7 +2705,7 @@ uint8_t mbsfn_area_info_r9_s::non_mbsfn_region_len_opts::to_number() const
return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::non_mbsfn_region_len_e_"); return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::non_mbsfn_region_len_e_");
} }
std::string mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_opts::to_string() const const char* mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_opts::to_string() const
{ {
static const char* options[] = {"rf32", "rf64", "rf128", "rf256"}; static const char* options[] = {"rf32", "rf64", "rf128", "rf256"};
return convert_enum_idx(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_e_"); return convert_enum_idx(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_e_");
@ -2687,7 +2716,7 @@ uint16_t mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_opts::to_nu
return map_enum_number(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_e_"); return map_enum_number(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_repeat_period_r9_e_");
} }
std::string mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_opts::to_string() const const char* mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_opts::to_string() const
{ {
static const char* options[] = {"rf512", "rf1024"}; static const char* options[] = {"rf512", "rf1024"};
return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_e_"); return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_e_");
@ -2698,7 +2727,7 @@ uint16_t mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_opts::to_numbe
return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_e_"); return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::mcch_mod_period_r9_e_");
} }
std::string mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_opts::to_string() const const char* mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_opts::to_string() const
{ {
static const char* options[] = {"n2", "n7", "n13", "n19"}; static const char* options[] = {"n2", "n7", "n13", "n19"};
return convert_enum_idx(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_e_"); return convert_enum_idx(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_e_");
@ -2709,7 +2738,7 @@ uint8_t mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_opts::to_number() const
return map_enum_number(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_e_"); return map_enum_number(options, 4, value, "mbsfn_area_info_r9_s::mcch_cfg_r9_s_::sig_mcs_r9_e_");
} }
std::string mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_opts::to_string() const const char* mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_opts::to_string() const
{ {
static const char* options[] = {"rf1", "rf2", "rf4", "rf8", "rf16"}; static const char* options[] = {"rf1", "rf2", "rf4", "rf8", "rf16"};
return convert_enum_idx(options, 5, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_e_"); return convert_enum_idx(options, 5, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_e_");
@ -2720,7 +2749,7 @@ uint8_t mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_opts::to
return map_enum_number(options, 5, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_e_"); return map_enum_number(options, 5, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_repeat_period_v1430_e_");
} }
std::string mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_opts::to_string() const const char* mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_opts::to_string() const
{ {
static const char* options[] = {"rf1", "rf2", "rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "spare7"}; static const char* options[] = {"rf1", "rf2", "rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "spare7"};
return convert_enum_idx(options, 10, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_e_"); return convert_enum_idx(options, 10, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_e_");
@ -2731,7 +2760,7 @@ uint16_t mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_opts::to_n
return map_enum_number(options, 9, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_e_"); return map_enum_number(options, 9, value, "mbsfn_area_info_r9_s::mcch_cfg_r14_s_::mcch_mod_period_v1430_e_");
} }
std::string mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_string() const const char* mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_string() const
{ {
static const char* options[] = {"kHz7dot5", "kHz1dot25"}; static const char* options[] = {"kHz7dot5", "kHz1dot25"};
return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_");
@ -2741,7 +2770,7 @@ float mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number() const
static const float options[] = {7.5, 1.25}; static const float options[] = {7.5, 1.25};
return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); return map_enum_number(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_");
} }
std::string mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number_string() const const char* mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_opts::to_number_string() const
{ {
static const char* options[] = {"7.5", "1.25"}; static const char* options[] = {"7.5", "1.25"};
return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_"); return convert_enum_idx(options, 2, value, "mbsfn_area_info_r9_s::subcarrier_spacing_mbms_r14_e_");
@ -2783,7 +2812,7 @@ void resel_info_relay_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string resel_info_relay_r13_s::min_hyst_r13_opts::to_string() const const char* resel_info_relay_r13_s::min_hyst_r13_opts::to_string() const
{ {
static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12", "dBinf"}; static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12", "dBinf"};
return convert_enum_idx(options, 6, value, "resel_info_relay_r13_s::min_hyst_r13_e_"); return convert_enum_idx(options, 6, value, "resel_info_relay_r13_s::min_hyst_r13_e_");
@ -2822,6 +2851,15 @@ void sib8_per_plmn_r11_s::params_cdma2000_r11_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
params_cdma2000_r11_s& sib8_per_plmn_r11_s::params_cdma2000_r11_c_::set_explicit_value()
{
set(types::explicit_value);
return c;
}
void sib8_per_plmn_r11_s::params_cdma2000_r11_c_::set_default_value()
{
set(types::default_value);
}
void sib8_per_plmn_r11_s::params_cdma2000_r11_c_::to_json(json_writer& j) const void sib8_per_plmn_r11_s::params_cdma2000_r11_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -3030,7 +3068,7 @@ void uac_barr_info_set_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string uac_barr_info_set_r15_s::uac_barr_factor_r15_opts::to_string() const const char* uac_barr_info_set_r15_s::uac_barr_factor_r15_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"}; "p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
@ -3041,14 +3079,14 @@ float uac_barr_info_set_r15_s::uac_barr_factor_r15_opts::to_number() const
static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5}; static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5};
return map_enum_number(options, 16, value, "uac_barr_info_set_r15_s::uac_barr_factor_r15_e_"); return map_enum_number(options, 16, value, "uac_barr_info_set_r15_s::uac_barr_factor_r15_e_");
} }
std::string uac_barr_info_set_r15_s::uac_barr_factor_r15_opts::to_number_string() const const char* uac_barr_info_set_r15_s::uac_barr_factor_r15_opts::to_number_string() const
{ {
static const char* options[] = { static const char* options[] = {
"0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"}; "0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
return convert_enum_idx(options, 16, value, "uac_barr_info_set_r15_s::uac_barr_factor_r15_e_"); return convert_enum_idx(options, 16, value, "uac_barr_info_set_r15_s::uac_barr_factor_r15_e_");
} }
std::string uac_barr_info_set_r15_s::uac_barr_time_r15_opts::to_string() const const char* uac_barr_info_set_r15_s::uac_barr_time_r15_opts::to_string() const
{ {
static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"}; static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
return convert_enum_idx(options, 8, value, "uac_barr_info_set_r15_s::uac_barr_time_r15_e_"); return convert_enum_idx(options, 8, value, "uac_barr_info_set_r15_s::uac_barr_time_r15_e_");
@ -3162,6 +3200,17 @@ uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_& uac_barr_per_plmn_r15_s::
return *this; return *this;
} }
uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::uac_implicit_ac_barr_list_r15_l_&
uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::set_uac_implicit_ac_barr_list_r15()
{
set(types::uac_implicit_ac_barr_list_r15);
return c.get<uac_implicit_ac_barr_list_r15_l_>();
}
uac_barr_per_cat_list_r15_l& uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::set_uac_explicit_ac_barr_list_r15()
{
set(types::uac_explicit_ac_barr_list_r15);
return c.get<uac_barr_per_cat_list_r15_l>();
}
void uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::to_json(json_writer& j) const void uac_barr_per_plmn_r15_s::uac_ac_barr_list_type_r15_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -3268,7 +3317,7 @@ void cell_resel_info_common_v1460_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string cell_resel_info_common_v1460_s::s_search_delta_p_r14_opts::to_string() const const char* cell_resel_info_common_v1460_s::s_search_delta_p_r14_opts::to_string() const
{ {
static const char* options[] = {"dB6", "dB9", "dB12", "dB15"}; static const char* options[] = {"dB6", "dB9", "dB12", "dB15"};
return convert_enum_idx(options, 4, value, "cell_resel_info_common_v1460_s::s_search_delta_p_r14_e_"); return convert_enum_idx(options, 4, value, "cell_resel_info_common_v1460_s::s_search_delta_p_r14_e_");
@ -3448,7 +3497,7 @@ void mbms_notif_cfg_r9_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mbms_notif_cfg_r9_s::notif_repeat_coeff_r9_opts::to_string() const const char* mbms_notif_cfg_r9_s::notif_repeat_coeff_r9_opts::to_string() const
{ {
static const char* options[] = {"n2", "n4"}; static const char* options[] = {"n2", "n4"};
return convert_enum_idx(options, 2, value, "mbms_notif_cfg_r9_s::notif_repeat_coeff_r9_e_"); return convert_enum_idx(options, 2, value, "mbms_notif_cfg_r9_s::notif_repeat_coeff_r9_e_");
@ -3540,7 +3589,7 @@ void redist_serving_info_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string redist_serving_info_r13_s::t360_r13_opts::to_string() const const char* redist_serving_info_r13_s::t360_r13_opts::to_string() const
{ {
static const char* options[] = {"min4", "min8", "min16", "min32", "infinity", "spare3", "spare2", "spare1"}; static const char* options[] = {"min4", "min8", "min16", "min32", "infinity", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "redist_serving_info_r13_s::t360_r13_e_"); return convert_enum_idx(options, 8, value, "redist_serving_info_r13_s::t360_r13_e_");
@ -3580,7 +3629,7 @@ void sc_mcch_sched_info_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_opts::to_string() const const char* sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_opts::to_string() const
{ {
static const char* options[] = {"psf10", "psf20", "psf100", "psf300", "psf500", "psf1000", "psf1200", "psf1600"}; static const char* options[] = {"psf10", "psf20", "psf100", "psf300", "psf500", "psf1000", "psf1200", "psf1600"};
return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_e_"); return convert_enum_idx(options, 8, value, "sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_e_");
@ -3591,7 +3640,7 @@ uint16_t sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_opts::to_number() cons
return map_enum_number(options, 8, value, "sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_e_"); return map_enum_number(options, 8, value, "sc_mcch_sched_info_r14_s::on_dur_timer_scptm_r14_e_");
} }
std::string sc_mcch_sched_info_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() const const char* sc_mcch_sched_info_r14_s::drx_inactivity_timer_scptm_r14_opts::to_string() const
{ {
static const char* options[] = {"psf0", static const char* options[] = {"psf0",
"psf1", "psf1",
@ -3747,6 +3796,86 @@ sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::operator=(
return *this; return *this;
} }
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf10()
{
set(types::sf10);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf20()
{
set(types::sf20);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf32()
{
set(types::sf32);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf40()
{
set(types::sf40);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf64()
{
set(types::sf64);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf80()
{
set(types::sf80);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf128()
{
set(types::sf128);
return c.get<uint8_t>();
}
uint8_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf160()
{
set(types::sf160);
return c.get<uint8_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf256()
{
set(types::sf256);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf320()
{
set(types::sf320);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf512()
{
set(types::sf512);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf640()
{
set(types::sf640);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf1024()
{
set(types::sf1024);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf2048()
{
set(types::sf2048);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf4096()
{
set(types::sf4096);
return c.get<uint16_t>();
}
uint16_t& sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::set_sf8192()
{
set(types::sf8192);
return c.get<uint16_t>();
}
void sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const void sc_mcch_sched_info_r14_s::sched_period_start_offset_scptm_r14_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -3986,7 +4115,7 @@ void sl_disc_cfg_relay_ue_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_opts::to_string() const const char* sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_opts::to_string() const
{ {
static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12", "dBinf"}; static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12", "dBinf"};
return convert_enum_idx(options, 6, value, "sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_e_"); return convert_enum_idx(options, 6, value, "sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_e_");
@ -3997,7 +4126,7 @@ uint8_t sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_opts::to_number() const
return map_enum_number(options, 5, value, "sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_e_"); return map_enum_number(options, 5, value, "sl_disc_cfg_relay_ue_r13_s::hyst_max_r13_e_");
} }
std::string sl_disc_cfg_relay_ue_r13_s::hyst_min_r13_opts::to_string() const const char* sl_disc_cfg_relay_ue_r13_s::hyst_min_r13_opts::to_string() const
{ {
static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12"}; static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12"};
return convert_enum_idx(options, 5, value, "sl_disc_cfg_relay_ue_r13_s::hyst_min_r13_e_"); return convert_enum_idx(options, 5, value, "sl_disc_cfg_relay_ue_r13_s::hyst_min_r13_e_");
@ -4053,7 +4182,7 @@ void sl_disc_cfg_remote_ue_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_opts::to_string() const const char* sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_opts::to_string() const
{ {
static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12"}; static const char* options[] = {"dB0", "dB3", "dB6", "dB9", "dB12"};
return convert_enum_idx(options, 5, value, "sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_e_"); return convert_enum_idx(options, 5, value, "sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_e_");
@ -4065,7 +4194,7 @@ uint8_t sl_disc_cfg_remote_ue_r13_s::hyst_max_r13_opts::to_number() const
} }
// UAC-AC1-SelectAssistInfo-r15 ::= ENUMERATED // UAC-AC1-SelectAssistInfo-r15 ::= ENUMERATED
std::string uac_ac1_select_assist_info_r15_opts::to_string() const const char* uac_ac1_select_assist_info_r15_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c"}; static const char* options[] = {"a", "b", "c"};
return convert_enum_idx(options, 3, value, "uac_ac1_select_assist_info_r15_e"); return convert_enum_idx(options, 3, value, "uac_ac1_select_assist_info_r15_e");
@ -4269,7 +4398,7 @@ void sib_type11_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type11_s::warning_msg_segment_type_opts::to_string() const const char* sib_type11_s::warning_msg_segment_type_opts::to_string() const
{ {
static const char* options[] = {"notLastSegment", "lastSegment"}; static const char* options[] = {"notLastSegment", "lastSegment"};
return convert_enum_idx(options, 2, value, "sib_type11_s::warning_msg_segment_type_e_"); return convert_enum_idx(options, 2, value, "sib_type11_s::warning_msg_segment_type_e_");
@ -4365,7 +4494,7 @@ void sib_type12_r9_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type12_r9_s::warning_msg_segment_type_r9_opts::to_string() const const char* sib_type12_r9_s::warning_msg_segment_type_r9_opts::to_string() const
{ {
static const char* options[] = {"notLastSegment", "lastSegment"}; static const char* options[] = {"notLastSegment", "lastSegment"};
return convert_enum_idx(options, 2, value, "sib_type12_r9_s::warning_msg_segment_type_r9_e_"); return convert_enum_idx(options, 2, value, "sib_type12_r9_s::warning_msg_segment_type_r9_e_");
@ -4593,6 +4722,17 @@ sib_type14_r11_s::eab_param_r11_c_::operator=(const sib_type14_r11_s::eab_param_
return *this; return *this;
} }
eab_cfg_r11_s& sib_type14_r11_s::eab_param_r11_c_::set_eab_common_r11()
{
set(types::eab_common_r11);
return c.get<eab_cfg_r11_s>();
}
sib_type14_r11_s::eab_param_r11_c_::eab_per_plmn_list_r11_l_&
sib_type14_r11_s::eab_param_r11_c_::set_eab_per_plmn_list_r11()
{
set(types::eab_per_plmn_list_r11);
return c.get<eab_per_plmn_list_r11_l_>();
}
void sib_type14_r11_s::eab_param_r11_c_::to_json(json_writer& j) const void sib_type14_r11_s::eab_param_r11_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -4648,7 +4788,7 @@ SRSASN_CODE sib_type14_r11_s::eab_param_r11_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type14_r11_s::eab_per_rsrp_r15_opts::to_string() const const char* sib_type14_r11_s::eab_per_rsrp_r15_opts::to_string() const
{ {
static const char* options[] = {"thresh0", "thresh1", "thresh2", "thresh3"}; static const char* options[] = {"thresh0", "thresh1", "thresh2", "thresh3"};
return convert_enum_idx(options, 4, value, "sib_type14_r11_s::eab_per_rsrp_r15_e_"); return convert_enum_idx(options, 4, value, "sib_type14_r11_s::eab_per_rsrp_r15_e_");
@ -5506,7 +5646,7 @@ void sib_type20_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type20_r13_s::sc_mcch_repeat_period_r13_opts::to_string() const const char* sib_type20_r13_s::sc_mcch_repeat_period_r13_opts::to_string() const
{ {
static const char* options[] = {"rf2", "rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf256"}; static const char* options[] = {"rf2", "rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf256"};
return convert_enum_idx(options, 8, value, "sib_type20_r13_s::sc_mcch_repeat_period_r13_e_"); return convert_enum_idx(options, 8, value, "sib_type20_r13_s::sc_mcch_repeat_period_r13_e_");
@ -5517,7 +5657,7 @@ uint16_t sib_type20_r13_s::sc_mcch_repeat_period_r13_opts::to_number() const
return map_enum_number(options, 8, value, "sib_type20_r13_s::sc_mcch_repeat_period_r13_e_"); return map_enum_number(options, 8, value, "sib_type20_r13_s::sc_mcch_repeat_period_r13_e_");
} }
std::string sib_type20_r13_s::sc_mcch_mod_period_r13_opts::to_string() const const char* sib_type20_r13_s::sc_mcch_mod_period_r13_opts::to_string() const
{ {
static const char* options[] = {"rf2", static const char* options[] = {"rf2",
"rf4", "rf4",
@ -5543,7 +5683,7 @@ uint32_t sib_type20_r13_s::sc_mcch_mod_period_r13_opts::to_number() const
return map_enum_number(options, 16, value, "sib_type20_r13_s::sc_mcch_mod_period_r13_e_"); return map_enum_number(options, 16, value, "sib_type20_r13_s::sc_mcch_mod_period_r13_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_num_repeat_sc_mcch_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_num_repeat_sc_mcch_r14_opts::to_string() const
{ {
static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256"}; static const char* options[] = {"r1", "r2", "r4", "r8", "r16", "r32", "r64", "r128", "r256"};
return convert_enum_idx(options, 9, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_num_repeat_sc_mcch_r14_e_"); return convert_enum_idx(options, 9, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_num_repeat_sc_mcch_r14_e_");
@ -5600,6 +5740,18 @@ sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::operator=(
return *this; return *this;
} }
sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_e_&
sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::set_fdd_r14()
{
set(types::fdd_r14);
return c.get<fdd_r14_e_>();
}
sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::tdd_r14_e_&
sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::set_tdd_r14()
{
set(types::tdd_r14);
return c.get<tdd_r14_e_>();
}
void sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::to_json(json_writer& j) const void sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -5650,7 +5802,7 @@ SRSASN_CODE sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_opts::to_string() const
{ {
static const char* options[] = {"v1", "v1dot5", "v2", "v2dot5", "v4", "v5", "v8", "v10"}; static const char* options[] = {"v1", "v1dot5", "v2", "v2dot5", "v4", "v5", "v8", "v10"};
return convert_enum_idx( return convert_enum_idx(
@ -5662,14 +5814,14 @@ float sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_
return map_enum_number( return map_enum_number(
options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_e_"); options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_opts::to_number_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_opts::to_number_string() const
{ {
static const char* options[] = {"1", "1.5", "2", "2.5", "4", "5", "8", "10"}; static const char* options[] = {"1", "1.5", "2", "2.5", "4", "5", "8", "10"};
return convert_enum_idx( return convert_enum_idx(
options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_e_"); options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::fdd_r14_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::tdd_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::tdd_r14_opts::to_string() const
{ {
static const char* options[] = {"v1", "v2", "v4", "v5", "v8", "v10", "v20"}; static const char* options[] = {"v1", "v2", "v4", "v5", "v8", "v10", "v20"};
return convert_enum_idx( return convert_enum_idx(
@ -5682,14 +5834,14 @@ uint8_t sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::td
options, 7, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::tdd_r14_e_"); options, 7, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_start_sf_sc_mcch_r14_c_::tdd_r14_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_pdsch_hop_cfg_sc_mcch_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_pdsch_hop_cfg_sc_mcch_r14_opts::to_string() const
{ {
static const char* options[] = {"off", "ce-ModeA", "ce-ModeB"}; static const char* options[] = {"off", "ce-ModeA", "ce-ModeB"};
return convert_enum_idx( return convert_enum_idx(
options, 3, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_"); options, 3, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::mpdcch_pdsch_hop_cfg_sc_mcch_r14_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_opts::to_string() const
{ {
static const char* options[] = {"rf32", "rf128", "rf512", "rf1024", "rf2048", "rf4096", "rf8192", "rf16384"}; static const char* options[] = {"rf32", "rf128", "rf512", "rf1024", "rf2048", "rf4096", "rf8192", "rf16384"};
return convert_enum_idx(options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_e_"); return convert_enum_idx(options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_e_");
@ -5700,7 +5852,7 @@ uint16_t sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_opts
return map_enum_number(options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_e_"); return map_enum_number(options, 8, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_repeat_period_br_r14_e_");
} }
std::string sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_mod_period_br_r14_opts::to_string() const const char* sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_mod_period_br_r14_opts::to_string() const
{ {
static const char* options[] = {"rf32", static const char* options[] = {"rf32",
"rf128", "rf128",
@ -5726,7 +5878,7 @@ uint32_t sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_mod_period_br_r14_opts::t
return map_enum_number(options, 15, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_mod_period_br_r14_e_"); return map_enum_number(options, 15, value, "sib_type20_r13_s::br_bcch_cfg_r14_s_::sc_mcch_mod_period_br_r14_e_");
} }
std::string sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_opts::to_string() const const char* sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_opts::to_string() const
{ {
static const char* options[] = {"r16", "r32"}; static const char* options[] = {"r16", "r32"};
return convert_enum_idx(options, 2, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_"); return convert_enum_idx(options, 2, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_");
@ -5737,7 +5889,7 @@ uint8_t sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_opts::to_num
return map_enum_number(options, 2, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_"); return map_enum_number(options, 2, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_a_sc_mtch_r14_e_");
} }
std::string sib_type20_r13_s::pdsch_max_num_repeat_cemode_b_sc_mtch_r14_opts::to_string() const const char* sib_type20_r13_s::pdsch_max_num_repeat_cemode_b_sc_mtch_r14_opts::to_string() const
{ {
static const char* options[] = {"r192", "r256", "r384", "r512", "r768", "r1024", "r1536", "r2048"}; static const char* options[] = {"r192", "r256", "r384", "r512", "r768", "r1024", "r1536", "r2048"};
return convert_enum_idx(options, 8, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_"); return convert_enum_idx(options, 8, value, "sib_type20_r13_s::pdsch_max_num_repeat_cemode_b_sc_mtch_r14_e_");
@ -6000,6 +6152,17 @@ sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_& sib_type25_r15_s::uac_ac1_s
return *this; return *this;
} }
uac_ac1_select_assist_info_r15_e& sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::set_plmn_common_r15()
{
set(types::plmn_common_r15);
return c.get<uac_ac1_select_assist_info_r15_e>();
}
sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::individual_plmn_list_r15_l_&
sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::set_individual_plmn_list_r15()
{
set(types::individual_plmn_list_r15);
return c.get<individual_plmn_list_r15_l_>();
}
void sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::to_json(json_writer& j) const void sib_type25_r15_s::uac_ac1_select_assist_info_r15_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -6627,7 +6790,7 @@ void sib_type3_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type3_s::cell_resel_info_common_s_::q_hyst_opts::to_string() const const char* sib_type3_s::cell_resel_info_common_s_::q_hyst_opts::to_string() const
{ {
static const char* options[] = {"dB0", static const char* options[] = {"dB0",
"dB1", "dB1",
@ -6653,7 +6816,7 @@ uint8_t sib_type3_s::cell_resel_info_common_s_::q_hyst_opts::to_number() const
return map_enum_number(options, 16, value, "sib_type3_s::cell_resel_info_common_s_::q_hyst_e_"); return map_enum_number(options, 16, value, "sib_type3_s::cell_resel_info_common_s_::q_hyst_e_");
} }
std::string const char*
sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_opts::to_string() const sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_opts::to_string() const
{ {
static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"}; static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"};
@ -6674,7 +6837,7 @@ sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_:
"sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_e_"); "sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_medium_e_");
} }
std::string const char*
sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_opts::to_string() const sib_type3_s::cell_resel_info_common_s_::speed_state_resel_pars_s_::q_hyst_sf_s_::sf_high_opts::to_string() const
{ {
static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"}; static const char* options[] = {"dB-6", "dB-4", "dB-2", "dB0"};
@ -8088,6 +8251,141 @@ pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::operator=(
return *this; return *this;
} }
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus1_r15()
{
set(types::pos_sib1_minus1_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus2_r15()
{
set(types::pos_sib1_minus2_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus3_r15()
{
set(types::pos_sib1_minus3_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus4_r15()
{
set(types::pos_sib1_minus4_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus5_r15()
{
set(types::pos_sib1_minus5_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus6_r15()
{
set(types::pos_sib1_minus6_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib1_minus7_r15()
{
set(types::pos_sib1_minus7_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus1_r15()
{
set(types::pos_sib2_minus1_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus2_r15()
{
set(types::pos_sib2_minus2_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus3_r15()
{
set(types::pos_sib2_minus3_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus4_r15()
{
set(types::pos_sib2_minus4_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus5_r15()
{
set(types::pos_sib2_minus5_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus6_r15()
{
set(types::pos_sib2_minus6_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus7_r15()
{
set(types::pos_sib2_minus7_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus8_r15()
{
set(types::pos_sib2_minus8_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus9_r15()
{
set(types::pos_sib2_minus9_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus10_r15()
{
set(types::pos_sib2_minus10_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus11_r15()
{
set(types::pos_sib2_minus11_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus12_r15()
{
set(types::pos_sib2_minus12_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus13_r15()
{
set(types::pos_sib2_minus13_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus14_r15()
{
set(types::pos_sib2_minus14_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus15_r15()
{
set(types::pos_sib2_minus15_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus16_r15()
{
set(types::pos_sib2_minus16_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus17_r15()
{
set(types::pos_sib2_minus17_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus18_r15()
{
set(types::pos_sib2_minus18_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib2_minus19_r15()
{
set(types::pos_sib2_minus19_r15);
return c.get<sib_pos_r15_s>();
}
sib_pos_r15_s& pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::set_pos_sib3_minus1_r15()
{
set(types::pos_sib3_minus1_r15);
return c.get<sib_pos_r15_s>();
}
void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::to_json(json_writer& j) const void pos_sys_info_r15_ies_s::pos_sib_type_and_info_r15_item_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -8709,6 +9007,121 @@ sib_info_item_c& sib_info_item_c::operator=(const sib_info_item_c& other)
return *this; return *this;
} }
sib_type2_s& sib_info_item_c::set_sib2()
{
set(types::sib2);
return c.get<sib_type2_s>();
}
sib_type3_s& sib_info_item_c::set_sib3()
{
set(types::sib3);
return c.get<sib_type3_s>();
}
sib_type4_s& sib_info_item_c::set_sib4()
{
set(types::sib4);
return c.get<sib_type4_s>();
}
sib_type5_s& sib_info_item_c::set_sib5()
{
set(types::sib5);
return c.get<sib_type5_s>();
}
sib_type6_s& sib_info_item_c::set_sib6()
{
set(types::sib6);
return c.get<sib_type6_s>();
}
sib_type7_s& sib_info_item_c::set_sib7()
{
set(types::sib7);
return c.get<sib_type7_s>();
}
sib_type8_s& sib_info_item_c::set_sib8()
{
set(types::sib8);
return c.get<sib_type8_s>();
}
sib_type9_s& sib_info_item_c::set_sib9()
{
set(types::sib9);
return c.get<sib_type9_s>();
}
sib_type10_s& sib_info_item_c::set_sib10()
{
set(types::sib10);
return c.get<sib_type10_s>();
}
sib_type11_s& sib_info_item_c::set_sib11()
{
set(types::sib11);
return c.get<sib_type11_s>();
}
sib_type12_r9_s& sib_info_item_c::set_sib12_v920()
{
set(types::sib12_v920);
return c.get<sib_type12_r9_s>();
}
sib_type13_r9_s& sib_info_item_c::set_sib13_v920()
{
set(types::sib13_v920);
return c.get<sib_type13_r9_s>();
}
sib_type14_r11_s& sib_info_item_c::set_sib14_v1130()
{
set(types::sib14_v1130);
return c.get<sib_type14_r11_s>();
}
sib_type15_r11_s& sib_info_item_c::set_sib15_v1130()
{
set(types::sib15_v1130);
return c.get<sib_type15_r11_s>();
}
sib_type16_r11_s& sib_info_item_c::set_sib16_v1130()
{
set(types::sib16_v1130);
return c.get<sib_type16_r11_s>();
}
sib_type17_r12_s& sib_info_item_c::set_sib17_v1250()
{
set(types::sib17_v1250);
return c.get<sib_type17_r12_s>();
}
sib_type18_r12_s& sib_info_item_c::set_sib18_v1250()
{
set(types::sib18_v1250);
return c.get<sib_type18_r12_s>();
}
sib_type19_r12_s& sib_info_item_c::set_sib19_v1250()
{
set(types::sib19_v1250);
return c.get<sib_type19_r12_s>();
}
sib_type20_r13_s& sib_info_item_c::set_sib20_v1310()
{
set(types::sib20_v1310);
return c.get<sib_type20_r13_s>();
}
sib_type21_r14_s& sib_info_item_c::set_sib21_v1430()
{
set(types::sib21_v1430);
return c.get<sib_type21_r14_s>();
}
sib_type24_r15_s& sib_info_item_c::set_sib24_v1530()
{
set(types::sib24_v1530);
return c.get<sib_type24_r15_s>();
}
sib_type25_r15_s& sib_info_item_c::set_sib25_v1530()
{
set(types::sib25_v1530);
return c.get<sib_type25_r15_s>();
}
sib_type26_r15_s& sib_info_item_c::set_sib26_v1530()
{
set(types::sib26_v1530);
return c.get<sib_type26_r15_s>();
}
void sib_info_item_c::to_json(json_writer& j) const void sib_info_item_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9123,6 +9536,16 @@ sys_info_s::crit_exts_c_& sys_info_s::crit_exts_c_::operator=(const sys_info_s::
return *this; return *this;
} }
sys_info_r8_ies_s& sys_info_s::crit_exts_c_::set_sys_info_r8()
{
set(types::sys_info_r8);
return c.get<sys_info_r8_ies_s>();
}
sys_info_s::crit_exts_c_::crit_exts_future_r15_c_& sys_info_s::crit_exts_c_::set_crit_exts_future_r15()
{
set(types::crit_exts_future_r15);
return c.get<crit_exts_future_r15_c_>();
}
void sys_info_s::crit_exts_c_::to_json(json_writer& j) const void sys_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9179,6 +9602,15 @@ void sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
pos_sys_info_r15_ies_s& sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::set_pos_sys_info_r15()
{
set(types::pos_sys_info_r15);
return c;
}
void sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::to_json(json_writer& j) const void sys_info_s::crit_exts_c_::crit_exts_future_r15_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9232,6 +9664,15 @@ void bcch_dl_sch_msg_type_c::set(types::options e)
{ {
type_ = e; type_ = e;
} }
bcch_dl_sch_msg_type_c::c1_c_& bcch_dl_sch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void bcch_dl_sch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void bcch_dl_sch_msg_type_c::to_json(json_writer& j) const void bcch_dl_sch_msg_type_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9347,6 +9788,16 @@ bcch_dl_sch_msg_type_c::c1_c_& bcch_dl_sch_msg_type_c::c1_c_::operator=(const bc
return *this; return *this;
} }
sys_info_s& bcch_dl_sch_msg_type_c::c1_c_::set_sys_info()
{
set(types::sys_info);
return c.get<sys_info_s>();
}
sib_type1_s& bcch_dl_sch_msg_type_c::c1_c_::set_sib_type1()
{
set(types::sib_type1);
return c.get<sib_type1_s>();
}
void bcch_dl_sch_msg_type_c::c1_c_::to_json(json_writer& j) const void bcch_dl_sch_msg_type_c::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9433,6 +9884,15 @@ void bcch_dl_sch_msg_type_br_r13_c::set(types::options e)
{ {
type_ = e; type_ = e;
} }
bcch_dl_sch_msg_type_br_r13_c::c1_c_& bcch_dl_sch_msg_type_br_r13_c::set_c1()
{
set(types::c1);
return c;
}
void bcch_dl_sch_msg_type_br_r13_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void bcch_dl_sch_msg_type_br_r13_c::to_json(json_writer& j) const void bcch_dl_sch_msg_type_br_r13_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9549,6 +10009,16 @@ bcch_dl_sch_msg_type_br_r13_c::c1_c_::operator=(const bcch_dl_sch_msg_type_br_r1
return *this; return *this;
} }
sys_info_br_r13_s& bcch_dl_sch_msg_type_br_r13_c::c1_c_::set_sys_info_br_r13()
{
set(types::sys_info_br_r13);
return c.get<sys_info_br_r13_s>();
}
sib_type1_br_r13_s& bcch_dl_sch_msg_type_br_r13_c::c1_c_::set_sib_type1_br_r13()
{
set(types::sib_type1_br_r13);
return c.get<sib_type1_br_r13_s>();
}
void bcch_dl_sch_msg_type_br_r13_c::c1_c_::to_json(json_writer& j) const void bcch_dl_sch_msg_type_br_r13_c::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -9631,7 +10101,7 @@ void bcch_dl_sch_msg_br_s::to_json(json_writer& j) const
} }
// SIB-Type-MBMS-r14 ::= ENUMERATED // SIB-Type-MBMS-r14 ::= ENUMERATED
std::string sib_type_mbms_r14_opts::to_string() const const char* sib_type_mbms_r14_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType15-v1130", "sibType16-v1130"}; "sibType10", "sibType11", "sibType12-v920", "sibType13-v920", "sibType15-v1130", "sibType16-v1130"};
@ -9670,7 +10140,7 @@ void sched_info_mbms_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sched_info_mbms_r14_s::si_periodicity_r14_opts::to_string() const const char* sched_info_mbms_r14_s::si_periodicity_r14_opts::to_string() const
{ {
static const char* options[] = {"rf16", "rf32", "rf64", "rf128", "rf256", "rf512"}; static const char* options[] = {"rf16", "rf32", "rf64", "rf128", "rf256", "rf512"};
return convert_enum_idx(options, 6, value, "sched_info_mbms_r14_s::si_periodicity_r14_e_"); return convert_enum_idx(options, 6, value, "sched_info_mbms_r14_s::si_periodicity_r14_e_");
@ -9707,7 +10177,7 @@ void non_mbsfn_sf_cfg_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string non_mbsfn_sf_cfg_r14_s::radio_frame_alloc_period_r14_opts::to_string() const const char* non_mbsfn_sf_cfg_r14_s::radio_frame_alloc_period_r14_opts::to_string() const
{ {
static const char* options[] = {"rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf512"}; static const char* options[] = {"rf4", "rf8", "rf16", "rf32", "rf64", "rf128", "rf512"};
return convert_enum_idx(options, 7, value, "non_mbsfn_sf_cfg_r14_s::radio_frame_alloc_period_r14_e_"); return convert_enum_idx(options, 7, value, "non_mbsfn_sf_cfg_r14_s::radio_frame_alloc_period_r14_e_");
@ -9834,7 +10304,7 @@ void sib_type1_mbms_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type1_mbms_r14_s::si_win_len_r14_opts::to_string() const const char* sib_type1_mbms_r14_s::si_win_len_r14_opts::to_string() const
{ {
static const char* options[] = {"ms1", "ms2", "ms5", "ms10", "ms15", "ms20", "ms40", "ms80"}; static const char* options[] = {"ms1", "ms2", "ms5", "ms10", "ms15", "ms20", "ms40", "ms80"};
return convert_enum_idx(options, 8, value, "sib_type1_mbms_r14_s::si_win_len_r14_e_"); return convert_enum_idx(options, 8, value, "sib_type1_mbms_r14_s::si_win_len_r14_e_");
@ -10072,7 +10542,7 @@ void inter_freq_carrier_freq_info_v9e0_s::to_json(json_writer& j) const
} }
// SIB-Type-v12j0 ::= ENUMERATED // SIB-Type-v12j0 ::= ENUMERATED
std::string sib_type_v12j0_opts::to_string() const const char* sib_type_v12j0_opts::to_string() const
{ {
static const char* options[] = {"sibType19-v1250", static const char* options[] = {"sibType19-v1250",
"sibType20-v1310", "sibType20-v1310",

@ -94,14 +94,14 @@ void plmn_id_info_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string plmn_id_info_s::cell_reserved_for_oper_opts::to_string() const const char* plmn_id_info_s::cell_reserved_for_oper_opts::to_string() const
{ {
static const char* options[] = {"reserved", "notReserved"}; static const char* options[] = {"reserved", "notReserved"};
return convert_enum_idx(options, 2, value, "plmn_id_info_s::cell_reserved_for_oper_e_"); return convert_enum_idx(options, 2, value, "plmn_id_info_s::cell_reserved_for_oper_e_");
} }
// Alpha-r12 ::= ENUMERATED // Alpha-r12 ::= ENUMERATED
std::string alpha_r12_opts::to_string() const const char* alpha_r12_opts::to_string() const
{ {
static const char* options[] = {"al0", "al04", "al05", "al06", "al07", "al08", "al09", "al1"}; static const char* options[] = {"al0", "al04", "al05", "al06", "al07", "al08", "al09", "al1"};
return convert_enum_idx(options, 8, value, "alpha_r12_e"); return convert_enum_idx(options, 8, value, "alpha_r12_e");
@ -111,14 +111,14 @@ float alpha_r12_opts::to_number() const
static const float options[] = {0.0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0}; static const float options[] = {0.0, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0};
return map_enum_number(options, 8, value, "alpha_r12_e"); return map_enum_number(options, 8, value, "alpha_r12_e");
} }
std::string alpha_r12_opts::to_number_string() const const char* alpha_r12_opts::to_number_string() const
{ {
static const char* options[] = {"0", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1"}; static const char* options[] = {"0", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1"};
return convert_enum_idx(options, 8, value, "alpha_r12_e"); return convert_enum_idx(options, 8, value, "alpha_r12_e");
} }
// BandclassCDMA2000 ::= ENUMERATED // BandclassCDMA2000 ::= ENUMERATED
std::string bandclass_cdma2000_opts::to_string() const const char* bandclass_cdma2000_opts::to_string() const
{ {
static const char* options[] = {"bc0", "bc1", "bc2", "bc3", "bc4", "bc5", "bc6", static const char* options[] = {"bc0", "bc1", "bc2", "bc3", "bc4", "bc5", "bc6",
"bc7", "bc8", "bc9", "bc10", "bc11", "bc12", "bc13", "bc7", "bc8", "bc9", "bc10", "bc11", "bc12", "bc13",
@ -134,7 +134,7 @@ uint8_t bandclass_cdma2000_opts::to_number() const
} }
// FilterCoefficient ::= ENUMERATED // FilterCoefficient ::= ENUMERATED
std::string filt_coef_opts::to_string() const const char* filt_coef_opts::to_string() const
{ {
static const char* options[] = {"fc0", static const char* options[] = {"fc0",
"fc1", "fc1",
@ -192,7 +192,7 @@ bool mbsfn_sf_cfg_s::operator==(const mbsfn_sf_cfg_s& other) const
radioframe_alloc_offset == other.radioframe_alloc_offset and sf_alloc == other.sf_alloc; radioframe_alloc_offset == other.radioframe_alloc_offset and sf_alloc == other.sf_alloc;
} }
std::string mbsfn_sf_cfg_s::radioframe_alloc_period_opts::to_string() const const char* mbsfn_sf_cfg_s::radioframe_alloc_period_opts::to_string() const
{ {
static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32"}; static const char* options[] = {"n1", "n2", "n4", "n8", "n16", "n32"};
return convert_enum_idx(options, 6, value, "mbsfn_sf_cfg_s::radioframe_alloc_period_e_"); return convert_enum_idx(options, 6, value, "mbsfn_sf_cfg_s::radioframe_alloc_period_e_");
@ -270,6 +270,16 @@ mbsfn_sf_cfg_s::sf_alloc_c_& mbsfn_sf_cfg_s::sf_alloc_c_::operator=(const mbsfn_
return *this; return *this;
} }
fixed_bitstring<6>& mbsfn_sf_cfg_s::sf_alloc_c_::set_one_frame()
{
set(types::one_frame);
return c.get<fixed_bitstring<6> >();
}
fixed_bitstring<24>& mbsfn_sf_cfg_s::sf_alloc_c_::set_four_frames()
{
set(types::four_frames);
return c.get<fixed_bitstring<24> >();
}
void mbsfn_sf_cfg_s::sf_alloc_c_::to_json(json_writer& j) const void mbsfn_sf_cfg_s::sf_alloc_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -428,6 +438,16 @@ mbsfn_sf_cfg_v1430_s::sf_alloc_v1430_c_::operator=(const mbsfn_sf_cfg_v1430_s::s
return *this; return *this;
} }
fixed_bitstring<2>& mbsfn_sf_cfg_v1430_s::sf_alloc_v1430_c_::set_one_frame_v1430()
{
set(types::one_frame_v1430);
return c.get<fixed_bitstring<2> >();
}
fixed_bitstring<8>& mbsfn_sf_cfg_v1430_s::sf_alloc_v1430_c_::set_four_frames_v1430()
{
set(types::four_frames_v1430);
return c.get<fixed_bitstring<8> >();
}
void mbsfn_sf_cfg_v1430_s::sf_alloc_v1430_c_::to_json(json_writer& j) const void mbsfn_sf_cfg_v1430_s::sf_alloc_v1430_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -561,6 +581,16 @@ meas_sf_pattern_r10_c& meas_sf_pattern_r10_c::operator=(const meas_sf_pattern_r1
return *this; return *this;
} }
fixed_bitstring<40>& meas_sf_pattern_r10_c::set_sf_pattern_fdd_r10()
{
set(types::sf_pattern_fdd_r10);
return c.get<fixed_bitstring<40> >();
}
meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_& meas_sf_pattern_r10_c::set_sf_pattern_tdd_r10()
{
set(types::sf_pattern_tdd_r10);
return c.get<sf_pattern_tdd_r10_c_>();
}
void meas_sf_pattern_r10_c::to_json(json_writer& j) const void meas_sf_pattern_r10_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -708,6 +738,21 @@ meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::operator=(const meas_sf_pattern_r1
return *this; return *this;
} }
fixed_bitstring<20>& meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::set_sf_cfg1_minus5_r10()
{
set(types::sf_cfg1_minus5_r10);
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<70>& meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::set_sf_cfg0_r10()
{
set(types::sf_cfg0_r10);
return c.get<fixed_bitstring<70> >();
}
fixed_bitstring<60>& meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::set_sf_cfg6_r10()
{
set(types::sf_cfg6_r10);
return c.get<fixed_bitstring<60> >();
}
void meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::to_json(json_writer& j) const void meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -785,7 +830,7 @@ bool meas_sf_pattern_r10_c::sf_pattern_tdd_r10_c_::operator==(const sf_pattern_t
} }
// CipheringAlgorithm-r12 ::= ENUMERATED // CipheringAlgorithm-r12 ::= ENUMERATED
std::string ciphering_algorithm_r12_opts::to_string() const const char* ciphering_algorithm_r12_opts::to_string() const
{ {
static const char* options[] = {"eea0", "eea1", "eea2", "eea3-v1130", "spare4", "spare3", "spare2", "spare1"}; static const char* options[] = {"eea0", "eea1", "eea2", "eea3-v1130", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "ciphering_algorithm_r12_e"); return convert_enum_idx(options, 8, value, "ciphering_algorithm_r12_e");
@ -797,7 +842,7 @@ uint8_t ciphering_algorithm_r12_opts::to_number() const
} }
// WLAN-BandIndicator-r13 ::= ENUMERATED // WLAN-BandIndicator-r13 ::= ENUMERATED
std::string wlan_band_ind_r13_opts::to_string() const const char* wlan_band_ind_r13_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"band2dot4", "band5", "band60-v1430", "spare5", "spare4", "spare3", "spare2", "spare1"}; "band2dot4", "band5", "band60-v1430", "spare5", "spare4", "spare3", "spare2", "spare1"};
@ -808,7 +853,7 @@ float wlan_band_ind_r13_opts::to_number() const
static const float options[] = {2.4, 5.0, 60.0}; static const float options[] = {2.4, 5.0, 60.0};
return map_enum_number(options, 3, value, "wlan_band_ind_r13_e"); return map_enum_number(options, 3, value, "wlan_band_ind_r13_e");
} }
std::string wlan_band_ind_r13_opts::to_number_string() const const char* wlan_band_ind_r13_opts::to_number_string() const
{ {
static const char* options[] = {"2.4", "5", "60"}; static const char* options[] = {"2.4", "5", "60"};
return convert_enum_idx(options, 8, value, "wlan_band_ind_r13_e"); return convert_enum_idx(options, 8, value, "wlan_band_ind_r13_e");

@ -57,6 +57,15 @@ void sl_tx_pwr_r14_c::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void sl_tx_pwr_r14_c::set_minusinfinity_r14()
{
set(types::minusinfinity_r14);
}
int8_t& sl_tx_pwr_r14_c::set_tx_pwr_r14()
{
set(types::tx_pwr_r14);
return c;
}
void sl_tx_pwr_r14_c::to_json(json_writer& j) const void sl_tx_pwr_r14_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -244,7 +253,7 @@ void sl_pssch_tx_params_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_pssch_tx_params_r14_s::allowed_retx_num_pssch_r14_opts::to_string() const const char* sl_pssch_tx_params_r14_s::allowed_retx_num_pssch_r14_opts::to_string() const
{ {
static const char* options[] = {"n0", "n1", "both", "spare1"}; static const char* options[] = {"n0", "n1", "both", "spare1"};
return convert_enum_idx(options, 4, value, "sl_pssch_tx_params_r14_s::allowed_retx_num_pssch_r14_e_"); return convert_enum_idx(options, 4, value, "sl_pssch_tx_params_r14_s::allowed_retx_num_pssch_r14_e_");
@ -279,7 +288,7 @@ void sl_pssch_tx_params_v1530_s::to_json(json_writer& j) const
} }
// SL-RestrictResourceReservationPeriod-r14 ::= ENUMERATED // SL-RestrictResourceReservationPeriod-r14 ::= ENUMERATED
std::string sl_restrict_res_reserv_period_r14_opts::to_string() const const char* sl_restrict_res_reserv_period_r14_opts::to_string() const
{ {
static const char* options[] = {"v0dot2", static const char* options[] = {"v0dot2",
"v0dot5", "v0dot5",
@ -304,21 +313,21 @@ float sl_restrict_res_reserv_period_r14_opts::to_number() const
static const float options[] = {0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; static const float options[] = {0.2, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
return map_enum_number(options, 12, value, "sl_restrict_res_reserv_period_r14_e"); return map_enum_number(options, 12, value, "sl_restrict_res_reserv_period_r14_e");
} }
std::string sl_restrict_res_reserv_period_r14_opts::to_number_string() const const char* sl_restrict_res_reserv_period_r14_opts::to_number_string() const
{ {
static const char* options[] = {"0.2", "0.5", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; static const char* options[] = {"0.2", "0.5", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
return convert_enum_idx(options, 16, value, "sl_restrict_res_reserv_period_r14_e"); return convert_enum_idx(options, 16, value, "sl_restrict_res_reserv_period_r14_e");
} }
// SL-TypeTxSync-r14 ::= ENUMERATED // SL-TypeTxSync-r14 ::= ENUMERATED
std::string sl_type_tx_sync_r14_opts::to_string() const const char* sl_type_tx_sync_r14_opts::to_string() const
{ {
static const char* options[] = {"gnss", "enb", "ue"}; static const char* options[] = {"gnss", "enb", "ue"};
return convert_enum_idx(options, 3, value, "sl_type_tx_sync_r14_e"); return convert_enum_idx(options, 3, value, "sl_type_tx_sync_r14_e");
} }
// SL-CP-Len-r12 ::= ENUMERATED // SL-CP-Len-r12 ::= ENUMERATED
std::string sl_cp_len_r12_opts::to_string() const const char* sl_cp_len_r12_opts::to_string() const
{ {
static const char* options[] = {"normal", "extended"}; static const char* options[] = {"normal", "extended"};
return convert_enum_idx(options, 2, value, "sl_cp_len_r12_e"); return convert_enum_idx(options, 2, value, "sl_cp_len_r12_e");
@ -368,6 +377,16 @@ sl_offset_ind_r12_c& sl_offset_ind_r12_c::operator=(const sl_offset_ind_r12_c& o
return *this; return *this;
} }
uint16_t& sl_offset_ind_r12_c::set_small_r12()
{
set(types::small_r12);
return c.get<uint16_t>();
}
uint16_t& sl_offset_ind_r12_c::set_large_r12()
{
set(types::large_r12);
return c.get<uint16_t>();
}
void sl_offset_ind_r12_c::to_json(json_writer& j) const void sl_offset_ind_r12_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -538,7 +557,7 @@ void sl_pssch_tx_cfg_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_pssch_tx_cfg_r14_s::thres_ue_speed_r14_opts::to_string() const const char* sl_pssch_tx_cfg_r14_s::thres_ue_speed_r14_opts::to_string() const
{ {
static const char* options[] = {"kmph60", "kmph80", "kmph100", "kmph120", "kmph140", "kmph160", "kmph180", "kmph200"}; static const char* options[] = {"kmph60", "kmph80", "kmph100", "kmph120", "kmph140", "kmph160", "kmph180", "kmph200"};
return convert_enum_idx(options, 8, value, "sl_pssch_tx_cfg_r14_s::thres_ue_speed_r14_e_"); return convert_enum_idx(options, 8, value, "sl_pssch_tx_cfg_r14_s::thres_ue_speed_r14_e_");
@ -732,6 +751,41 @@ sf_bitmap_sl_r12_c& sf_bitmap_sl_r12_c::operator=(const sf_bitmap_sl_r12_c& othe
return *this; return *this;
} }
fixed_bitstring<4>& sf_bitmap_sl_r12_c::set_bs4_r12()
{
set(types::bs4_r12);
return c.get<fixed_bitstring<4> >();
}
fixed_bitstring<8>& sf_bitmap_sl_r12_c::set_bs8_r12()
{
set(types::bs8_r12);
return c.get<fixed_bitstring<8> >();
}
fixed_bitstring<12>& sf_bitmap_sl_r12_c::set_bs12_r12()
{
set(types::bs12_r12);
return c.get<fixed_bitstring<12> >();
}
fixed_bitstring<16>& sf_bitmap_sl_r12_c::set_bs16_r12()
{
set(types::bs16_r12);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<30>& sf_bitmap_sl_r12_c::set_bs30_r12()
{
set(types::bs30_r12);
return c.get<fixed_bitstring<30> >();
}
fixed_bitstring<40>& sf_bitmap_sl_r12_c::set_bs40_r12()
{
set(types::bs40_r12);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<42>& sf_bitmap_sl_r12_c::set_bs42_r12()
{
set(types::bs42_r12);
return c.get<fixed_bitstring<42> >();
}
void sf_bitmap_sl_r12_c::to_json(json_writer& j) const void sf_bitmap_sl_r12_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -967,6 +1021,46 @@ sf_bitmap_sl_r14_c& sf_bitmap_sl_r14_c::operator=(const sf_bitmap_sl_r14_c& othe
return *this; return *this;
} }
fixed_bitstring<10>& sf_bitmap_sl_r14_c::set_bs10_r14()
{
set(types::bs10_r14);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<16>& sf_bitmap_sl_r14_c::set_bs16_r14()
{
set(types::bs16_r14);
return c.get<fixed_bitstring<16> >();
}
fixed_bitstring<20>& sf_bitmap_sl_r14_c::set_bs20_r14()
{
set(types::bs20_r14);
return c.get<fixed_bitstring<20> >();
}
fixed_bitstring<30>& sf_bitmap_sl_r14_c::set_bs30_r14()
{
set(types::bs30_r14);
return c.get<fixed_bitstring<30> >();
}
fixed_bitstring<40>& sf_bitmap_sl_r14_c::set_bs40_r14()
{
set(types::bs40_r14);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<50>& sf_bitmap_sl_r14_c::set_bs50_r14()
{
set(types::bs50_r14);
return c.get<fixed_bitstring<50> >();
}
fixed_bitstring<60>& sf_bitmap_sl_r14_c::set_bs60_r14()
{
set(types::bs60_r14);
return c.get<fixed_bitstring<60> >();
}
fixed_bitstring<100>& sf_bitmap_sl_r14_c::set_bs100_r14()
{
set(types::bs100_r14);
return c.get<fixed_bitstring<100> >();
}
void sf_bitmap_sl_r14_c::to_json(json_writer& j) const void sf_bitmap_sl_r14_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1312,7 +1406,7 @@ void sl_comm_res_pool_v2x_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_comm_res_pool_v2x_r14_s::size_subch_r14_opts::to_string() const const char* sl_comm_res_pool_v2x_r14_s::size_subch_r14_opts::to_string() const
{ {
static const char* options[] = {"n4", "n5", "n6", "n8", "n9", "n10", "n12", "n15", static const char* options[] = {"n4", "n5", "n6", "n8", "n9", "n10", "n12", "n15",
"n16", "n18", "n20", "n25", "n30", "n48", "n50", "n72", "n16", "n18", "n20", "n25", "n30", "n48", "n50", "n72",
@ -1326,7 +1420,7 @@ uint8_t sl_comm_res_pool_v2x_r14_s::size_subch_r14_opts::to_number() const
return map_enum_number(options, 19, value, "sl_comm_res_pool_v2x_r14_s::size_subch_r14_e_"); return map_enum_number(options, 19, value, "sl_comm_res_pool_v2x_r14_s::size_subch_r14_e_");
} }
std::string sl_comm_res_pool_v2x_r14_s::num_subch_r14_opts::to_string() const const char* sl_comm_res_pool_v2x_r14_s::num_subch_r14_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n5", "n8", "n10", "n15", "n20", "spare1"}; static const char* options[] = {"n1", "n3", "n5", "n8", "n10", "n15", "n20", "spare1"};
return convert_enum_idx(options, 8, value, "sl_comm_res_pool_v2x_r14_s::num_subch_r14_e_"); return convert_enum_idx(options, 8, value, "sl_comm_res_pool_v2x_r14_s::num_subch_r14_e_");
@ -1533,7 +1627,7 @@ void sl_sync_cfg_nfreq_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_sync_cfg_nfreq_r13_s::rx_params_r13_s_::disc_sync_win_r13_opts::to_string() const const char* sl_sync_cfg_nfreq_r13_s::rx_params_r13_s_::disc_sync_win_r13_opts::to_string() const
{ {
static const char* options[] = {"w1", "w2"}; static const char* options[] = {"w1", "w2"};
return convert_enum_idx(options, 2, value, "sl_sync_cfg_nfreq_r13_s::rx_params_r13_s_::disc_sync_win_r13_e_"); return convert_enum_idx(options, 2, value, "sl_sync_cfg_nfreq_r13_s::rx_params_r13_s_::disc_sync_win_r13_e_");
@ -1659,7 +1753,7 @@ void sl_comm_tx_pool_sensing_cfg_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_opts::to_string() const const char* sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_opts::to_string() const
{ {
static const char* options[] = {"v0", "v0dot2", "v0dot4", "v0dot6", "v0dot8", "spare3", "spare2", "spare1"}; static const char* options[] = {"v0", "v0dot2", "v0dot4", "v0dot6", "v0dot8", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_"); return convert_enum_idx(options, 8, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_");
@ -1669,13 +1763,13 @@ float sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_opts::to_number() con
static const float options[] = {0.0, 0.2, 0.4, 0.6, 0.8}; static const float options[] = {0.0, 0.2, 0.4, 0.6, 0.8};
return map_enum_number(options, 5, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_"); return map_enum_number(options, 5, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_");
} }
std::string sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_opts::to_number_string() const const char* sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_opts::to_number_string() const
{ {
static const char* options[] = {"0", "0.2", "0.4", "0.6", "0.8"}; static const char* options[] = {"0", "0.2", "0.4", "0.6", "0.8"};
return convert_enum_idx(options, 8, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_"); return convert_enum_idx(options, 8, value, "sl_comm_tx_pool_sensing_cfg_r14_s::prob_res_keep_r14_e_");
} }
std::string sl_comm_tx_pool_sensing_cfg_r14_s::sl_reselect_after_r14_opts::to_string() const const char* sl_comm_tx_pool_sensing_cfg_r14_s::sl_reselect_after_r14_opts::to_string() const
{ {
static const char* options[] = {"n1", static const char* options[] = {"n1",
"n2", "n2",
@ -1885,7 +1979,7 @@ void sl_disc_res_pool_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_disc_res_pool_r12_s::disc_period_r12_opts::to_string() const const char* sl_disc_res_pool_r12_s::disc_period_r12_opts::to_string() const
{ {
static const char* options[] = {"rf32", "rf64", "rf128", "rf256", "rf512", "rf1024", "rf16-v1310", "spare"}; static const char* options[] = {"rf32", "rf64", "rf128", "rf256", "rf512", "rf1024", "rf16-v1310", "spare"};
return convert_enum_idx(options, 8, value, "sl_disc_res_pool_r12_s::disc_period_r12_e_"); return convert_enum_idx(options, 8, value, "sl_disc_res_pool_r12_s::disc_period_r12_e_");
@ -1900,6 +1994,16 @@ void sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r
{ {
type_ = e; type_ = e;
} }
sl_pool_sel_cfg_r12_s&
sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_::set_rsrp_based_r12()
{
set(types::rsrp_based_r12);
return c;
}
void sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_::set_random_r12()
{
set(types::random_r12);
}
void sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_::to_json(json_writer& j) const void sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::pool_sel_r12_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1948,7 +2052,7 @@ SRSASN_CODE sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::poo
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::tx_probability_r12_opts::to_string() const const char* sl_disc_res_pool_r12_s::tx_params_r12_s_::ue_sel_res_cfg_r12_s_::tx_probability_r12_opts::to_string() const
{ {
static const char* options[] = {"p25", "p50", "p75", "p100"}; static const char* options[] = {"p25", "p50", "p75", "p100"};
return convert_enum_idx( return convert_enum_idx(
@ -1965,6 +2069,15 @@ void sl_disc_res_pool_r12_s::disc_period_v1310_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void sl_disc_res_pool_r12_s::disc_period_v1310_c_::set_release()
{
set(types::release);
}
sl_disc_res_pool_r12_s::disc_period_v1310_c_::setup_e_& sl_disc_res_pool_r12_s::disc_period_v1310_c_::set_setup()
{
set(types::setup);
return c;
}
void sl_disc_res_pool_r12_s::disc_period_v1310_c_::to_json(json_writer& j) const void sl_disc_res_pool_r12_s::disc_period_v1310_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2012,7 +2125,7 @@ SRSASN_CODE sl_disc_res_pool_r12_s::disc_period_v1310_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sl_disc_res_pool_r12_s::disc_period_v1310_c_::setup_opts::to_string() const const char* sl_disc_res_pool_r12_s::disc_period_v1310_c_::setup_opts::to_string() const
{ {
static const char* options[] = {"rf4", "rf6", "rf7", "rf8", "rf12", "rf14", "rf24", "rf28"}; static const char* options[] = {"rf4", "rf6", "rf7", "rf8", "rf12", "rf14", "rf24", "rf28"};
return convert_enum_idx(options, 8, value, "sl_disc_res_pool_r12_s::disc_period_v1310_c_::setup_e_"); return convert_enum_idx(options, 8, value, "sl_disc_res_pool_r12_s::disc_period_v1310_c_::setup_e_");
@ -2027,6 +2140,16 @@ void sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::set(types::options
{ {
type_ = e; type_ = e;
} }
void sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::set_release()
{
set(types::release);
}
sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::setup_s_&
sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::set_setup()
{
set(types::setup);
return c;
}
void sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::to_json(json_writer& j) const void sl_disc_res_pool_r12_s::rx_params_add_neigh_freq_r13_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2085,6 +2208,16 @@ void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::set(types::options
{ {
type_ = e; type_ = e;
} }
void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::set_release()
{
set(types::release);
}
sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::setup_s_&
sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::set_setup()
{
set(types::setup);
return c;
}
void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::to_json(json_writer& j) const void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2216,7 +2349,7 @@ SRSASN_CODE sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::unpack(cbit
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string const char*
sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::setup_s_::freq_info_s_::ul_bw_opts::to_string() const sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_r13_c_::setup_s_::freq_info_s_::ul_bw_opts::to_string() const
{ {
static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"}; static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"};
@ -2234,6 +2367,16 @@ void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::set(types::optio
{ {
type_ = e; type_ = e;
} }
void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::set_release()
{
set(types::release);
}
sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::setup_s_&
sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::set_setup()
{
set(types::setup);
return c;
}
void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::to_json(json_writer& j) const void sl_disc_res_pool_r12_s::tx_params_add_neigh_freq_v1370_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2316,7 +2459,7 @@ void sl_zone_cfg_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_zone_cfg_r14_s::zone_len_r14_opts::to_string() const const char* sl_zone_cfg_r14_s::zone_len_r14_opts::to_string() const
{ {
static const char* options[] = {"m5", "m10", "m20", "m50", "m100", "m200", "m500", "spare1"}; static const char* options[] = {"m5", "m10", "m20", "m50", "m100", "m200", "m500", "spare1"};
return convert_enum_idx(options, 8, value, "sl_zone_cfg_r14_s::zone_len_r14_e_"); return convert_enum_idx(options, 8, value, "sl_zone_cfg_r14_s::zone_len_r14_e_");
@ -2327,7 +2470,7 @@ uint16_t sl_zone_cfg_r14_s::zone_len_r14_opts::to_number() const
return map_enum_number(options, 7, value, "sl_zone_cfg_r14_s::zone_len_r14_e_"); return map_enum_number(options, 7, value, "sl_zone_cfg_r14_s::zone_len_r14_e_");
} }
std::string sl_zone_cfg_r14_s::zone_width_r14_opts::to_string() const const char* sl_zone_cfg_r14_s::zone_width_r14_opts::to_string() const
{ {
static const char* options[] = {"m5", "m10", "m20", "m50", "m100", "m200", "m500", "spare1"}; static const char* options[] = {"m5", "m10", "m20", "m50", "m100", "m200", "m500", "spare1"};
return convert_enum_idx(options, 8, value, "sl_zone_cfg_r14_s::zone_width_r14_e_"); return convert_enum_idx(options, 8, value, "sl_zone_cfg_r14_s::zone_width_r14_e_");
@ -2375,7 +2518,7 @@ bool pci_range_s::operator==(const pci_range_s& other) const
return start == other.start and range_present == other.range_present and (not range_present or range == other.range); return start == other.start and range_present == other.range_present and (not range_present or range == other.range);
} }
std::string pci_range_s::range_opts::to_string() const const char* pci_range_s::range_opts::to_string() const
{ {
static const char* options[] = {"n4", static const char* options[] = {"n4",
"n8", "n8",
@ -2626,7 +2769,7 @@ void sl_v2x_inter_freq_ue_cfg_r14_s::to_json(json_writer& j) const
} }
// AllowedMeasBandwidth ::= ENUMERATED // AllowedMeasBandwidth ::= ENUMERATED
std::string allowed_meas_bw_opts::to_string() const const char* allowed_meas_bw_opts::to_string() const
{ {
static const char* options[] = {"mbw6", "mbw15", "mbw25", "mbw50", "mbw75", "mbw100"}; static const char* options[] = {"mbw6", "mbw15", "mbw25", "mbw50", "mbw75", "mbw100"};
return convert_enum_idx(options, 6, value, "allowed_meas_bw_e"); return convert_enum_idx(options, 6, value, "allowed_meas_bw_e");
@ -2679,7 +2822,7 @@ void cell_sel_info_nfreq_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string cell_sel_info_nfreq_r13_s::q_hyst_r13_opts::to_string() const const char* cell_sel_info_nfreq_r13_s::q_hyst_r13_opts::to_string() const
{ {
static const char* options[] = {"dB0", static const char* options[] = {"dB0",
"dB1", "dB1",
@ -2741,6 +2884,23 @@ void sl_disc_tx_res_inter_freq_r13_c::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void sl_disc_tx_res_inter_freq_r13_c::set_acquire_si_from_carrier_r13()
{
set(types::acquire_si_from_carrier_r13);
}
sl_disc_tx_pool_list_r12_l& sl_disc_tx_res_inter_freq_r13_c::set_disc_tx_pool_common_r13()
{
set(types::disc_tx_pool_common_r13);
return c;
}
void sl_disc_tx_res_inter_freq_r13_c::set_request_ded_r13()
{
set(types::request_ded_r13);
}
void sl_disc_tx_res_inter_freq_r13_c::set_no_tx_on_carrier_r13()
{
set(types::no_tx_on_carrier_r13);
}
void sl_disc_tx_res_inter_freq_r13_c::to_json(json_writer& j) const void sl_disc_tx_res_inter_freq_r13_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2897,7 +3057,7 @@ void meas_idle_carrier_eutra_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string meas_idle_carrier_eutra_r15_s::report_quantities_opts::to_string() const const char* meas_idle_carrier_eutra_r15_s::report_quantities_opts::to_string() const
{ {
static const char* options[] = {"rsrp", "rsrq", "both"}; static const char* options[] = {"rsrp", "rsrq", "both"};
return convert_enum_idx(options, 3, value, "meas_idle_carrier_eutra_r15_s::report_quantities_e_"); return convert_enum_idx(options, 3, value, "meas_idle_carrier_eutra_r15_s::report_quantities_e_");
@ -2953,7 +3113,7 @@ void sl_hop_cfg_comm_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_hop_cfg_comm_r12_s::num_subbands_r12_opts::to_string() const const char* sl_hop_cfg_comm_r12_s::num_subbands_r12_opts::to_string() const
{ {
static const char* options[] = {"ns1", "ns2", "ns4"}; static const char* options[] = {"ns1", "ns2", "ns4"};
return convert_enum_idx(options, 3, value, "sl_hop_cfg_comm_r12_s::num_subbands_r12_e_"); return convert_enum_idx(options, 3, value, "sl_hop_cfg_comm_r12_s::num_subbands_r12_e_");
@ -3113,7 +3273,7 @@ void sl_inter_freq_info_v2x_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_inter_freq_info_v2x_r14_s::sl_bw_r14_opts::to_string() const const char* sl_inter_freq_info_v2x_r14_s::sl_bw_r14_opts::to_string() const
{ {
static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"}; static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"};
return convert_enum_idx(options, 6, value, "sl_inter_freq_info_v2x_r14_s::sl_bw_r14_e_"); return convert_enum_idx(options, 6, value, "sl_inter_freq_info_v2x_r14_s::sl_bw_r14_e_");
@ -3170,6 +3330,16 @@ sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::operator=(
return *this; return *this;
} }
uint8_t& sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::set_add_spec_emission_r14()
{
set(types::add_spec_emission_r14);
return c.get<uint8_t>();
}
uint16_t& sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::set_add_spec_emission_v1440()
{
set(types::add_spec_emission_v1440);
return c.get<uint16_t>();
}
void sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::to_json(json_writer& j) const void sl_inter_freq_info_v2x_r14_s::add_spec_emission_v2x_r14_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -3267,7 +3437,7 @@ void sl_pppr_dest_carrier_freq_s::to_json(json_writer& j) const
} }
// SL-PeriodComm-r12 ::= ENUMERATED // SL-PeriodComm-r12 ::= ENUMERATED
std::string sl_period_comm_r12_opts::to_string() const const char* sl_period_comm_r12_opts::to_string() const
{ {
static const char* options[] = {"sf40", static const char* options[] = {"sf40",
"sf60", "sf60",
@ -3513,7 +3683,7 @@ void sl_sync_cfg_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_sync_cfg_r12_s::rx_params_ncell_r12_s_::disc_sync_win_r12_opts::to_string() const const char* sl_sync_cfg_r12_s::rx_params_ncell_r12_s_::disc_sync_win_r12_opts::to_string() const
{ {
static const char* options[] = {"w1", "w2"}; static const char* options[] = {"w1", "w2"};
return convert_enum_idx(options, 2, value, "sl_sync_cfg_r12_s::rx_params_ncell_r12_s_::disc_sync_win_r12_e_"); return convert_enum_idx(options, 2, value, "sl_sync_cfg_r12_s::rx_params_ncell_r12_s_::disc_sync_win_r12_e_");
@ -3586,7 +3756,7 @@ bool wlan_ids_r12_s::operator==(const wlan_ids_r12_s& other) const
} }
// WLAN-backhaulRate-r12 ::= ENUMERATED // WLAN-backhaulRate-r12 ::= ENUMERATED
std::string wlan_backhaul_rate_r12_opts::to_string() const const char* wlan_backhaul_rate_r12_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"r0", "r4", "r8", "r16", "r32", "r64", "r128", "r256", "r0", "r4", "r8", "r16", "r32", "r64", "r128", "r256",
@ -4389,7 +4559,7 @@ void sl_gap_pattern_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_gap_pattern_r13_s::gap_period_r13_opts::to_string() const const char* sl_gap_pattern_r13_s::gap_period_r13_opts::to_string() const
{ {
static const char* options[] = {"sf40", static const char* options[] = {"sf40",
"sf60", "sf60",

@ -334,14 +334,14 @@ void rrc_conn_reject_v1130_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_type_r11_opts::to_string() const const char* rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_type_r11_opts::to_string() const
{ {
static const char* options[] = {"frequency", "e-utra"}; static const char* options[] = {"frequency", "e-utra"};
return convert_enum_idx( return convert_enum_idx(
options, 2, value, "rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_type_r11_e_"); options, 2, value, "rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_type_r11_e_");
} }
std::string rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_timer_r11_opts::to_string() const const char* rrc_conn_reject_v1130_ies_s::depriorit_req_r11_s_::depriorit_timer_r11_opts::to_string() const
{ {
static const char* options[] = {"min5", "min10", "min15", "min30"}; static const char* options[] = {"min5", "min10", "min15", "min30"};
return convert_enum_idx( return convert_enum_idx(
@ -656,7 +656,7 @@ void idle_mode_mob_ctrl_info_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string idle_mode_mob_ctrl_info_s::t320_opts::to_string() const const char* idle_mode_mob_ctrl_info_s::t320_opts::to_string() const
{ {
static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "spare1"}; static const char* options[] = {"min5", "min10", "min20", "min30", "min60", "min120", "min180", "spare1"};
return convert_enum_idx(options, 8, value, "idle_mode_mob_ctrl_info_s::t320_e_"); return convert_enum_idx(options, 8, value, "idle_mode_mob_ctrl_info_s::t320_e_");
@ -990,6 +990,36 @@ redirected_carrier_info_r15_ies_c::operator=(const redirected_carrier_info_r15_i
return *this; return *this;
} }
uint32_t& redirected_carrier_info_r15_ies_c::set_eutra_r15()
{
set(types::eutra_r15);
return c.get<uint32_t>();
}
carrier_freqs_geran_s& redirected_carrier_info_r15_ies_c::set_geran_r15()
{
set(types::geran_r15);
return c.get<carrier_freqs_geran_s>();
}
uint16_t& redirected_carrier_info_r15_ies_c::set_utra_fdd_r15()
{
set(types::utra_fdd_r15);
return c.get<uint16_t>();
}
carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_hrpd_r15()
{
set(types::cdma2000_hrpd_r15);
return c.get<carrier_freq_cdma2000_s>();
}
carrier_freq_cdma2000_s& redirected_carrier_info_r15_ies_c::set_cdma2000_minus1x_rtt_r15()
{
set(types::cdma2000_minus1x_rtt_r15);
return c.get<carrier_freq_cdma2000_s>();
}
carrier_freq_list_utra_tdd_r10_l& redirected_carrier_info_r15_ies_c::set_utra_tdd_r15()
{
set(types::utra_tdd_r15);
return c.get<carrier_freq_list_utra_tdd_r10_l>();
}
void redirected_carrier_info_r15_ies_c::to_json(json_writer& j) const void redirected_carrier_info_r15_ies_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1340,6 +1370,15 @@ void rrc_conn_reest_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reest_s::crit_exts_c_::c1_c_& rrc_conn_reest_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void rrc_conn_reest_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_conn_reest_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_reest_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1392,6 +1431,39 @@ void rrc_conn_reest_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reest_r8_ies_s& rrc_conn_reest_s::crit_exts_c_::c1_c_::set_rrc_conn_reest_r8()
{
set(types::rrc_conn_reest_r8);
return c;
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void rrc_conn_reest_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void rrc_conn_reest_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1501,6 +1573,15 @@ void rrc_conn_reest_reject_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reest_reject_r8_ies_s& rrc_conn_reest_reject_s::crit_exts_c_::set_rrc_conn_reest_reject_r8()
{
set(types::rrc_conn_reest_reject_r8);
return c;
}
void rrc_conn_reest_reject_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_conn_reest_reject_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_reest_reject_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1574,6 +1655,15 @@ void rrc_conn_reject_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reject_s::crit_exts_c_::c1_c_& rrc_conn_reject_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void rrc_conn_reject_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_conn_reject_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_reject_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1626,6 +1716,23 @@ void rrc_conn_reject_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reject_r8_ies_s& rrc_conn_reject_s::crit_exts_c_::c1_c_::set_rrc_conn_reject_r8()
{
set(types::rrc_conn_reject_r8);
return c;
}
void rrc_conn_reject_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void rrc_conn_reject_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void rrc_conn_reject_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void rrc_conn_reject_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void rrc_conn_reject_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1714,6 +1821,15 @@ void rrc_conn_setup_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_setup_s::crit_exts_c_::c1_c_& rrc_conn_setup_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void rrc_conn_setup_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_conn_setup_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_setup_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1766,6 +1882,39 @@ void rrc_conn_setup_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_setup_r8_ies_s& rrc_conn_setup_s::crit_exts_c_::c1_c_::set_rrc_conn_setup_r8()
{
set(types::rrc_conn_setup_r8);
return c;
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void rrc_conn_setup_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void rrc_conn_setup_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1875,6 +2024,15 @@ void rrc_early_data_complete_r15_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_early_data_complete_r15_ies_s& rrc_early_data_complete_r15_s::crit_exts_c_::set_rrc_early_data_complete_r15()
{
set(types::rrc_early_data_complete_r15);
return c;
}
void rrc_early_data_complete_r15_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_early_data_complete_r15_s::crit_exts_c_::to_json(json_writer& j) const void rrc_early_data_complete_r15_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1991,6 +2149,16 @@ dl_ccch_msg_type_c& dl_ccch_msg_type_c::operator=(const dl_ccch_msg_type_c& othe
return *this; return *this;
} }
dl_ccch_msg_type_c::c1_c_& dl_ccch_msg_type_c::set_c1()
{
set(types::c1);
return c.get<c1_c_>();
}
dl_ccch_msg_type_c::msg_class_ext_c_& dl_ccch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
return c.get<msg_class_ext_c_>();
}
void dl_ccch_msg_type_c::to_json(json_writer& j) const void dl_ccch_msg_type_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2134,6 +2302,26 @@ dl_ccch_msg_type_c::c1_c_& dl_ccch_msg_type_c::c1_c_::operator=(const dl_ccch_ms
return *this; return *this;
} }
rrc_conn_reest_s& dl_ccch_msg_type_c::c1_c_::set_rrc_conn_reest()
{
set(types::rrc_conn_reest);
return c.get<rrc_conn_reest_s>();
}
rrc_conn_reest_reject_s& dl_ccch_msg_type_c::c1_c_::set_rrc_conn_reest_reject()
{
set(types::rrc_conn_reest_reject);
return c.get<rrc_conn_reest_reject_s>();
}
rrc_conn_reject_s& dl_ccch_msg_type_c::c1_c_::set_rrc_conn_reject()
{
set(types::rrc_conn_reject);
return c.get<rrc_conn_reject_s>();
}
rrc_conn_setup_s& dl_ccch_msg_type_c::c1_c_::set_rrc_conn_setup()
{
set(types::rrc_conn_setup);
return c.get<rrc_conn_setup_s>();
}
void dl_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const void dl_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2210,6 +2398,15 @@ void dl_ccch_msg_type_c::msg_class_ext_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_& dl_ccch_msg_type_c::msg_class_ext_c_::set_c2()
{
set(types::c2);
return c;
}
void dl_ccch_msg_type_c::msg_class_ext_c_::set_msg_class_ext_future_r15()
{
set(types::msg_class_ext_future_r15);
}
void dl_ccch_msg_type_c::msg_class_ext_c_::to_json(json_writer& j) const void dl_ccch_msg_type_c::msg_class_ext_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2262,6 +2459,23 @@ void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_early_data_complete_r15_s& dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::set_rrc_early_data_complete_r15()
{
set(types::rrc_early_data_complete_r15);
return c;
}
void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare3()
{
set(types::spare3);
}
void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare2()
{
set(types::spare2);
}
void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::set_spare1()
{
set(types::spare1);
}
void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::to_json(json_writer& j) const void dl_ccch_msg_type_c::msg_class_ext_c_::c2_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

File diff suppressed because it is too large Load Diff

@ -292,6 +292,15 @@ void scg_cfg_r12_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
scg_cfg_r12_s::crit_exts_c_::c1_c_& scg_cfg_r12_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void scg_cfg_r12_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void scg_cfg_r12_s::crit_exts_c_::to_json(json_writer& j) const void scg_cfg_r12_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -344,6 +353,39 @@ void scg_cfg_r12_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
scg_cfg_r12_ies_s& scg_cfg_r12_s::crit_exts_c_::c1_c_::set_scg_cfg_r12()
{
set(types::scg_cfg_r12);
return c;
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void scg_cfg_r12_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void scg_cfg_r12_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1349,6 +1391,15 @@ void ho_cmd_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ho_cmd_s::crit_exts_c_::c1_c_& ho_cmd_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ho_cmd_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ho_cmd_s::crit_exts_c_::to_json(json_writer& j) const void ho_cmd_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1401,6 +1452,39 @@ void ho_cmd_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ho_cmd_r8_ies_s& ho_cmd_s::crit_exts_c_::c1_c_::set_ho_cmd_r8()
{
set(types::ho_cmd_r8);
return c;
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ho_cmd_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ho_cmd_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ho_cmd_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1892,7 +1976,7 @@ void ho_prep_info_v920_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ho_prep_info_v920_ies_s::ue_cfg_release_r9_opts::to_string() const const char* ho_prep_info_v920_ies_s::ue_cfg_release_r9_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15"}; "rel9", "rel10", "rel11", "rel12", "v10j0", "v11e0", "v1280", "rel13", "rel14", "rel15"};
@ -1995,7 +2079,7 @@ void rrm_cfg_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string rrm_cfg_s::ue_inactive_time_opts::to_string() const const char* rrm_cfg_s::ue_inactive_time_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s25", "s30", "s1", "s2", "s3", "s5", "s7", "s10", "s15", "s20", "s25", "s30",
@ -2107,6 +2191,15 @@ void ho_prep_info_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ho_prep_info_s::crit_exts_c_::c1_c_& ho_prep_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ho_prep_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ho_prep_info_s::crit_exts_c_::to_json(json_writer& j) const void ho_prep_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2159,6 +2252,39 @@ void ho_prep_info_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ho_prep_info_r8_ies_s& ho_prep_info_s::crit_exts_c_::c1_c_::set_ho_prep_info_r8()
{
set(types::ho_prep_info_r8);
return c;
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ho_prep_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ho_prep_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2608,6 +2734,15 @@ void var_meas_cfg_s::speed_state_pars_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void var_meas_cfg_s::speed_state_pars_c_::set_release()
{
set(types::release);
}
var_meas_cfg_s::speed_state_pars_c_::setup_s_& var_meas_cfg_s::speed_state_pars_c_::set_setup()
{
set(types::setup);
return c;
}
void var_meas_cfg_s::speed_state_pars_c_::to_json(json_writer& j) const void var_meas_cfg_s::speed_state_pars_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

File diff suppressed because it is too large Load Diff

@ -250,6 +250,26 @@ paging_ue_id_c& paging_ue_id_c::operator=(const paging_ue_id_c& other)
return *this; return *this;
} }
s_tmsi_s& paging_ue_id_c::set_s_tmsi()
{
set(types::s_tmsi);
return c.get<s_tmsi_s>();
}
imsi_l& paging_ue_id_c::set_imsi()
{
set(types::imsi);
return c.get<imsi_l>();
}
fixed_bitstring<48>& paging_ue_id_c::set_ng_minus5_g_s_tmsi_r15()
{
set(types::ng_minus5_g_s_tmsi_r15);
return c.get<fixed_bitstring<48> >();
}
fixed_bitstring<40>& paging_ue_id_c::set_full_i_rnti_r15()
{
set(types::full_i_rnti_r15);
return c.get<fixed_bitstring<40> >();
}
void paging_ue_id_c::to_json(json_writer& j) const void paging_ue_id_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -389,7 +409,7 @@ void paging_record_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string paging_record_s::cn_domain_opts::to_string() const const char* paging_record_s::cn_domain_opts::to_string() const
{ {
static const char* options[] = {"ps", "cs"}; static const char* options[] = {"ps", "cs"};
return convert_enum_idx(options, 2, value, "paging_record_s::cn_domain_e_"); return convert_enum_idx(options, 2, value, "paging_record_s::cn_domain_e_");
@ -498,6 +518,15 @@ void pcch_msg_type_c::set(types::options e)
{ {
type_ = e; type_ = e;
} }
pcch_msg_type_c::c1_c_& pcch_msg_type_c::set_c1()
{
set(types::c1);
return c;
}
void pcch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
}
void pcch_msg_type_c::to_json(json_writer& j) const void pcch_msg_type_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -655,6 +684,15 @@ void ue_paging_coverage_info_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_paging_coverage_info_s::crit_exts_c_::c1_c_& ue_paging_coverage_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_paging_coverage_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_paging_coverage_info_s::crit_exts_c_::to_json(json_writer& j) const void ue_paging_coverage_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -707,6 +745,39 @@ void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_paging_coverage_info_r13_ies_s& ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_ue_paging_coverage_info_r13()
{
set(types::ue_paging_coverage_info_r13);
return c;
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ue_paging_coverage_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -893,6 +964,15 @@ void ue_radio_paging_info_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_radio_paging_info_s::crit_exts_c_::c1_c_& ue_radio_paging_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_radio_paging_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_radio_paging_info_s::crit_exts_c_::to_json(json_writer& j) const void ue_radio_paging_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -945,6 +1025,39 @@ void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_radio_paging_info_r12_ies_s& ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_ue_radio_paging_info_r12()
{
set(types::ue_radio_paging_info_r12);
return c;
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_radio_paging_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ue_radio_paging_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -52,7 +52,7 @@ void security_algorithm_cfg_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string security_algorithm_cfg_s::integrity_prot_algorithm_opts::to_string() const const char* security_algorithm_cfg_s::integrity_prot_algorithm_opts::to_string() const
{ {
static const char* options[] = {"eia0-v920", "eia1", "eia2", "eia3-v1130", "spare4", "spare3", "spare2", "spare1"}; static const char* options[] = {"eia0-v920", "eia1", "eia2", "eia3-v1130", "spare4", "spare3", "spare2", "spare1"};
return convert_enum_idx(options, 8, value, "security_algorithm_cfg_s::integrity_prot_algorithm_e_"); return convert_enum_idx(options, 8, value, "security_algorithm_cfg_s::integrity_prot_algorithm_e_");
@ -167,6 +167,24 @@ security_cfg_ho_v1530_s::handov_type_v1530_c_::operator=(const security_cfg_ho_v
return *this; return *this;
} }
security_cfg_ho_v1530_s::handov_type_v1530_c_::intra5_gc_r15_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_intra5_gc_r15()
{
set(types::intra5_gc_r15);
return c.get<intra5_gc_r15_s_>();
}
security_cfg_ho_v1530_s::handov_type_v1530_c_::fivegc_to_epc_r15_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_fivegc_to_epc_r15()
{
set(types::fivegc_to_epc_r15);
return c.get<fivegc_to_epc_r15_s_>();
}
security_cfg_ho_v1530_s::handov_type_v1530_c_::epc_to5_gc_r15_s_&
security_cfg_ho_v1530_s::handov_type_v1530_c_::set_epc_to5_gc_r15()
{
set(types::epc_to5_gc_r15);
return c.get<epc_to5_gc_r15_s_>();
}
void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const void security_cfg_ho_v1530_s::handov_type_v1530_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -363,6 +381,16 @@ security_cfg_ho_s::handov_type_c_::operator=(const security_cfg_ho_s::handov_typ
return *this; return *this;
} }
security_cfg_ho_s::handov_type_c_::intra_lte_s_& security_cfg_ho_s::handov_type_c_::set_intra_lte()
{
set(types::intra_lte);
return c.get<intra_lte_s_>();
}
security_cfg_ho_s::handov_type_c_::inter_rat_s_& security_cfg_ho_s::handov_type_c_::set_inter_rat()
{
set(types::inter_rat);
return c.get<inter_rat_s_>();
}
void security_cfg_ho_s::handov_type_c_::to_json(json_writer& j) const void security_cfg_ho_s::handov_type_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -561,6 +589,15 @@ void security_mode_cmd_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
security_mode_cmd_s::crit_exts_c_::c1_c_& security_mode_cmd_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void security_mode_cmd_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_cmd_s::crit_exts_c_::to_json(json_writer& j) const void security_mode_cmd_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -613,6 +650,23 @@ void security_mode_cmd_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
security_mode_cmd_r8_ies_s& security_mode_cmd_s::crit_exts_c_::c1_c_::set_security_mode_cmd_r8()
{
set(types::security_mode_cmd_r8);
return c;
}
void security_mode_cmd_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void security_mode_cmd_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void security_mode_cmd_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void security_mode_cmd_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void security_mode_cmd_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -837,6 +891,15 @@ void security_mode_complete_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
security_mode_complete_r8_ies_s& security_mode_complete_s::crit_exts_c_::set_security_mode_complete_r8()
{
set(types::security_mode_complete_r8);
return c;
}
void security_mode_complete_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_complete_s::crit_exts_c_::to_json(json_writer& j) const void security_mode_complete_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -913,6 +976,15 @@ void security_mode_fail_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
security_mode_fail_r8_ies_s& security_mode_fail_s::crit_exts_c_::set_security_mode_fail_r8()
{
set(types::security_mode_fail_r8);
return c;
}
void security_mode_fail_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void security_mode_fail_s::crit_exts_c_::to_json(json_writer& j) const void security_mode_fail_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

@ -65,7 +65,7 @@ void mib_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mib_s::dl_bw_opts::to_string() const const char* mib_s::dl_bw_opts::to_string() const
{ {
static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"}; static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"};
return convert_enum_idx(options, 6, value, "mib_s::dl_bw_e_"); return convert_enum_idx(options, 6, value, "mib_s::dl_bw_e_");
@ -98,7 +98,7 @@ void gnss_id_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string gnss_id_r15_s::gnss_id_r15_opts::to_string() const const char* gnss_id_r15_s::gnss_id_r15_opts::to_string() const
{ {
static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds"}; static const char* options[] = {"gps", "sbas", "qzss", "galileo", "glonass", "bds"};
return convert_enum_idx(options, 6, value, "gnss_id_r15_s::gnss_id_r15_e_"); return convert_enum_idx(options, 6, value, "gnss_id_r15_s::gnss_id_r15_e_");
@ -126,7 +126,7 @@ void sbas_id_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sbas_id_r15_s::sbas_id_r15_opts::to_string() const const char* sbas_id_r15_s::sbas_id_r15_opts::to_string() const
{ {
static const char* options[] = {"waas", "egnos", "msas", "gagan"}; static const char* options[] = {"waas", "egnos", "msas", "gagan"};
return convert_enum_idx(options, 4, value, "sbas_id_r15_s::sbas_id_r15_e_"); return convert_enum_idx(options, 4, value, "sbas_id_r15_s::sbas_id_r15_e_");
@ -185,7 +185,7 @@ void pos_sib_type_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string pos_sib_type_r15_s::pos_sib_type_r15_opts::to_string() const const char* pos_sib_type_r15_s::pos_sib_type_r15_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4", "posSibType1-5", "posSibType1-6", "posSibType1-1", "posSibType1-2", "posSibType1-3", "posSibType1-4", "posSibType1-5", "posSibType1-6",
@ -216,7 +216,7 @@ void plmn_id_info_v1530_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string plmn_id_info_v1530_s::cell_reserved_for_oper_crs_r15_opts::to_string() const const char* plmn_id_info_v1530_s::cell_reserved_for_oper_crs_r15_opts::to_string() const
{ {
static const char* options[] = {"reserved", "notReserved"}; static const char* options[] = {"reserved", "notReserved"};
return convert_enum_idx(options, 2, value, "plmn_id_info_v1530_s::cell_reserved_for_oper_crs_r15_e_"); return convert_enum_idx(options, 2, value, "plmn_id_info_v1530_s::cell_reserved_for_oper_crs_r15_e_");
@ -249,7 +249,7 @@ void pos_sched_info_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string pos_sched_info_r15_s::pos_si_periodicity_r15_opts::to_string() const const char* pos_sched_info_r15_s::pos_si_periodicity_r15_opts::to_string() const
{ {
static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"}; static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"};
return convert_enum_idx(options, 7, value, "pos_sched_info_r15_s::pos_si_periodicity_r15_e_"); return convert_enum_idx(options, 7, value, "pos_sched_info_r15_s::pos_si_periodicity_r15_e_");
@ -280,7 +280,7 @@ void cell_sel_info_ce_v1530_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string cell_sel_info_ce_v1530_s::pwr_class14dbm_offset_r15_opts::to_string() const const char* cell_sel_info_ce_v1530_s::pwr_class14dbm_offset_r15_opts::to_string() const
{ {
static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"}; static const char* options[] = {"dB-6", "dB-3", "dB3", "dB6", "dB9", "dB12"};
return convert_enum_idx(options, 6, value, "cell_sel_info_ce_v1530_s::pwr_class14dbm_offset_r15_e_"); return convert_enum_idx(options, 6, value, "cell_sel_info_ce_v1530_s::pwr_class14dbm_offset_r15_e_");
@ -454,6 +454,16 @@ void sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::set_crs_intf_mitig_enabled()
{
set(types::crs_intf_mitig_enabled);
}
sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_e_&
sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::set_crs_intf_mitig_num_prbs()
{
set(types::crs_intf_mitig_num_prbs);
return c;
}
void sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::to_json(json_writer& j) const void sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -501,7 +511,7 @@ SRSASN_CODE sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::unpack(cbit_ref& b
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_opts::to_string() const const char* sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_opts::to_string() const
{ {
static const char* options[] = {"n6", "n24"}; static const char* options[] = {"n6", "n24"};
return convert_enum_idx( return convert_enum_idx(
@ -514,13 +524,13 @@ uint8_t sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prb
options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_e_"); options, 2, value, "sib_type1_v1530_ies_s::crs_intf_mitig_cfg_r15_c_::crs_intf_mitig_num_prbs_e_");
} }
std::string sib_type1_v1530_ies_s::cell_barred_crs_r15_opts::to_string() const const char* sib_type1_v1530_ies_s::cell_barred_crs_r15_opts::to_string() const
{ {
static const char* options[] = {"barred", "notBarred"}; static const char* options[] = {"barred", "notBarred"};
return convert_enum_idx(options, 2, value, "sib_type1_v1530_ies_s::cell_barred_crs_r15_e_"); return convert_enum_idx(options, 2, value, "sib_type1_v1530_ies_s::cell_barred_crs_r15_e_");
} }
std::string const char*
sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_r15_opts::to_string() const sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_r15_opts::to_string() const
{ {
static const char* options[] = {"barred", "notBarred"}; static const char* options[] = {"barred", "notBarred"};
@ -531,7 +541,7 @@ sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_mi
"sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_r15_e_"); "sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_r15_e_");
} }
std::string const char*
sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_crs_r15_opts::to_string() const sib_type1_v1530_ies_s::cell_access_related_info_minus5_gc_r15_s_::cell_barred_minus5_gc_crs_r15_opts::to_string() const
{ {
static const char* options[] = {"barred", "notBarred"}; static const char* options[] = {"barred", "notBarred"};
@ -797,7 +807,7 @@ void sched_info_br_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sched_info_br_r13_s::si_tbs_r13_opts::to_string() const const char* sched_info_br_r13_s::si_tbs_r13_opts::to_string() const
{ {
static const char* options[] = {"b152", "b208", "b256", "b328", "b408", "b504", "b600", "b712", "b808", "b936"}; static const char* options[] = {"b152", "b208", "b256", "b328", "b408", "b504", "b600", "b712", "b808", "b936"};
return convert_enum_idx(options, 10, value, "sched_info_br_r13_s::si_tbs_r13_e_"); return convert_enum_idx(options, 10, value, "sched_info_br_r13_s::si_tbs_r13_e_");
@ -890,7 +900,7 @@ void barr_per_acdc_category_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_opts::to_string() const const char* barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"}; "p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
@ -903,7 +913,7 @@ float barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_opt
return map_enum_number( return map_enum_number(
options, 16, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_e_"); options, 16, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_e_");
} }
std::string barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_opts::to_number_string() const const char* barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_opts::to_number_string() const
{ {
static const char* options[] = { static const char* options[] = {
"0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"}; "0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
@ -911,7 +921,7 @@ std::string barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r
options, 16, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_e_"); options, 16, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_factor_r13_e_");
} }
std::string barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_time_r13_opts::to_string() const const char* barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_time_r13_opts::to_string() const
{ {
static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"}; static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
return convert_enum_idx(options, 8, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_time_r13_e_"); return convert_enum_idx(options, 8, value, "barr_per_acdc_category_r13_s::acdc_barr_cfg_r13_s_::ac_barr_time_r13_e_");
@ -1043,7 +1053,7 @@ void sib_type1_v1320_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::mpdcch_pdsch_hop_nb_r13_opts::to_string() const const char* sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::mpdcch_pdsch_hop_nb_r13_opts::to_string() const
{ {
static const char* options[] = {"nb2", "nb4"}; static const char* options[] = {"nb2", "nb4"};
return convert_enum_idx( return convert_enum_idx(
@ -1105,6 +1115,18 @@ sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_
return *this; return *this;
} }
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::interv_fdd_r13_e_&
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::set_interv_fdd_r13()
{
set(types::interv_fdd_r13);
return c.get<interv_fdd_r13_e_>();
}
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::interv_tdd_r13_e_&
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::set_interv_tdd_r13()
{
set(types::interv_tdd_r13);
return c.get<interv_tdd_r13_e_>();
}
void sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::to_json( void sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::to_json(
json_writer& j) const json_writer& j) const
{ {
@ -1161,7 +1183,7 @@ sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_:: const char* sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::
interv_fdd_r13_opts::to_string() const interv_fdd_r13_opts::to_string() const
{ {
static const char* options[] = {"int1", "int2", "int4", "int8"}; static const char* options[] = {"int1", "int2", "int4", "int8"};
@ -1182,7 +1204,7 @@ uint8_t sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_comm
"sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::interv_fdd_r13_e_"); "sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::interv_fdd_r13_e_");
} }
std::string sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_:: const char* sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_a_r13_c_::
interv_tdd_r13_opts::to_string() const interv_tdd_r13_opts::to_string() const
{ {
static const char* options[] = {"int1", "int5", "int10", "int20"}; static const char* options[] = {"int1", "int5", "int10", "int20"};
@ -1252,6 +1274,18 @@ sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_
return *this; return *this;
} }
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::interv_fdd_r13_e_&
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::set_interv_fdd_r13()
{
set(types::interv_fdd_r13);
return c.get<interv_fdd_r13_e_>();
}
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::interv_tdd_r13_e_&
sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::set_interv_tdd_r13()
{
set(types::interv_tdd_r13);
return c.get<interv_tdd_r13_e_>();
}
void sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::to_json( void sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::to_json(
json_writer& j) const json_writer& j) const
{ {
@ -1308,7 +1342,7 @@ sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_:: const char* sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::
interv_fdd_r13_opts::to_string() const interv_fdd_r13_opts::to_string() const
{ {
static const char* options[] = {"int2", "int4", "int8", "int16"}; static const char* options[] = {"int2", "int4", "int8", "int16"};
@ -1329,7 +1363,7 @@ uint8_t sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_comm
"sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::interv_fdd_r13_e_"); "sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::interv_fdd_r13_e_");
} }
std::string sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_:: const char* sib_type1_v1320_ies_s::freq_hop_params_dl_r13_s_::interv_dl_hop_cfg_common_mode_b_r13_c_::
interv_tdd_r13_opts::to_string() const interv_tdd_r13_opts::to_string() const
{ {
static const char* options[] = {"int5", "int10", "int20", "int40"}; static const char* options[] = {"int5", "int10", "int20", "int40"};
@ -1376,7 +1410,7 @@ void ac_barr_cfg_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ac_barr_cfg_s::ac_barr_factor_opts::to_string() const const char* ac_barr_cfg_s::ac_barr_factor_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"}; "p00", "p05", "p10", "p15", "p20", "p25", "p30", "p40", "p50", "p60", "p70", "p75", "p80", "p85", "p90", "p95"};
@ -1387,14 +1421,14 @@ float ac_barr_cfg_s::ac_barr_factor_opts::to_number() const
static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5}; static const float options[] = {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5};
return map_enum_number(options, 16, value, "ac_barr_cfg_s::ac_barr_factor_e_"); return map_enum_number(options, 16, value, "ac_barr_cfg_s::ac_barr_factor_e_");
} }
std::string ac_barr_cfg_s::ac_barr_factor_opts::to_number_string() const const char* ac_barr_cfg_s::ac_barr_factor_opts::to_number_string() const
{ {
static const char* options[] = { static const char* options[] = {
"0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"}; "0.0", "0.5", "1.0", "1.5", "2.0", "2.5", "3.0", "4.0", "5.0", "6.0", "7.0", "7.5", "8.0", "8.5", "9.0", "9.5"};
return convert_enum_idx(options, 16, value, "ac_barr_cfg_s::ac_barr_factor_e_"); return convert_enum_idx(options, 16, value, "ac_barr_cfg_s::ac_barr_factor_e_");
} }
std::string ac_barr_cfg_s::ac_barr_time_opts::to_string() const const char* ac_barr_cfg_s::ac_barr_time_opts::to_string() const
{ {
static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"}; static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
return convert_enum_idx(options, 8, value, "ac_barr_cfg_s::ac_barr_time_e_"); return convert_enum_idx(options, 8, value, "ac_barr_cfg_s::ac_barr_time_e_");
@ -1568,7 +1602,7 @@ void sib_type1_v1310_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_win_len_br_r13_opts::to_string() const const char* sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_win_len_br_r13_opts::to_string() const
{ {
static const char* options[] = {"ms20", "ms40", "ms60", "ms80", "ms120", "ms160", "ms200", "spare"}; static const char* options[] = {"ms20", "ms40", "ms60", "ms80", "ms120", "ms160", "ms200", "spare"};
return convert_enum_idx( return convert_enum_idx(
@ -1581,7 +1615,7 @@ uint8_t sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_win_len
options, 7, value, "sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_win_len_br_r13_e_"); options, 7, value, "sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_win_len_br_r13_e_");
} }
std::string sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_repeat_pattern_r13_opts::to_string() const const char* sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_repeat_pattern_r13_opts::to_string() const
{ {
static const char* options[] = {"everyRF", "every2ndRF", "every4thRF", "every8thRF"}; static const char* options[] = {"everyRF", "every2ndRF", "every4thRF", "every8thRF"};
return convert_enum_idx( return convert_enum_idx(
@ -1678,6 +1712,18 @@ sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_b
return *this; return *this;
} }
fixed_bitstring<10>&
sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_bitmap_br_r13_c_::set_sf_pattern10_r13()
{
set(types::sf_pattern10_r13);
return c.get<fixed_bitstring<10> >();
}
fixed_bitstring<40>&
sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_bitmap_br_r13_c_::set_sf_pattern40_r13()
{
set(types::sf_pattern40_r13);
return c.get<fixed_bitstring<40> >();
}
void sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_bitmap_br_r13_c_::to_json( void sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_bitmap_br_r13_c_::to_json(
json_writer& j) const json_writer& j) const
{ {
@ -1734,7 +1780,7 @@ sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::fdd_dl_or_tdd_sf_b
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_hop_cfg_common_r13_opts::to_string() const const char* sib_type1_v1310_ies_s::bw_reduced_access_related_info_r13_s_::si_hop_cfg_common_r13_opts::to_string() const
{ {
static const char* options[] = {"on", "off"}; static const char* options[] = {"on", "off"};
return convert_enum_idx( return convert_enum_idx(
@ -1776,7 +1822,7 @@ void udt_restricting_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string udt_restricting_r13_s::udt_restricting_time_r13_opts::to_string() const const char* udt_restricting_r13_s::udt_restricting_time_r13_opts::to_string() const
{ {
static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"}; static const char* options[] = {"s4", "s8", "s16", "s32", "s64", "s128", "s256", "s512"};
return convert_enum_idx(options, 8, value, "udt_restricting_r13_s::udt_restricting_time_r13_e_"); return convert_enum_idx(options, 8, value, "udt_restricting_r13_s::udt_restricting_time_r13_e_");
@ -2003,7 +2049,7 @@ void plmn_info_r15_s::to_json(json_writer& j) const
} }
// SIB-Type ::= ENUMERATED // SIB-Type ::= ENUMERATED
std::string sib_type_opts::to_string() const const char* sib_type_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8", "sibType3", "sibType4", "sibType5", "sibType6", "sibType7", "sibType8",
@ -2169,7 +2215,7 @@ void cell_sel_info_v920_s::to_json(json_writer& j) const
} }
// SI-Periodicity-r12 ::= ENUMERATED // SI-Periodicity-r12 ::= ENUMERATED
std::string si_periodicity_r12_opts::to_string() const const char* si_periodicity_r12_opts::to_string() const
{ {
static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"}; static const char* options[] = {"rf8", "rf16", "rf32", "rf64", "rf128", "rf256", "rf512"};
return convert_enum_idx(options, 7, value, "si_periodicity_r12_e"); return convert_enum_idx(options, 7, value, "si_periodicity_r12_e");
@ -2356,7 +2402,7 @@ void ue_timers_and_consts_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ue_timers_and_consts_s::t300_opts::to_string() const const char* ue_timers_and_consts_s::t300_opts::to_string() const
{ {
static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"}; static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_e_");
@ -2367,7 +2413,7 @@ uint16_t ue_timers_and_consts_s::t300_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t300_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t300_e_");
} }
std::string ue_timers_and_consts_s::t301_opts::to_string() const const char* ue_timers_and_consts_s::t301_opts::to_string() const
{ {
static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"}; static const char* options[] = {"ms100", "ms200", "ms300", "ms400", "ms600", "ms1000", "ms1500", "ms2000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t301_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t301_e_");
@ -2378,7 +2424,7 @@ uint16_t ue_timers_and_consts_s::t301_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t301_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t301_e_");
} }
std::string ue_timers_and_consts_s::t310_opts::to_string() const const char* ue_timers_and_consts_s::t310_opts::to_string() const
{ {
static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000"}; static const char* options[] = {"ms0", "ms50", "ms100", "ms200", "ms500", "ms1000", "ms2000"};
return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t310_e_"); return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t310_e_");
@ -2389,7 +2435,7 @@ uint16_t ue_timers_and_consts_s::t310_opts::to_number() const
return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t310_e_"); return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t310_e_");
} }
std::string ue_timers_and_consts_s::n310_opts::to_string() const const char* ue_timers_and_consts_s::n310_opts::to_string() const
{ {
static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"}; static const char* options[] = {"n1", "n2", "n3", "n4", "n6", "n8", "n10", "n20"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n310_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n310_e_");
@ -2400,7 +2446,7 @@ uint8_t ue_timers_and_consts_s::n310_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n310_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n310_e_");
} }
std::string ue_timers_and_consts_s::t311_opts::to_string() const const char* ue_timers_and_consts_s::t311_opts::to_string() const
{ {
static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"}; static const char* options[] = {"ms1000", "ms3000", "ms5000", "ms10000", "ms15000", "ms20000", "ms30000"};
return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t311_e_"); return convert_enum_idx(options, 7, value, "ue_timers_and_consts_s::t311_e_");
@ -2411,7 +2457,7 @@ uint16_t ue_timers_and_consts_s::t311_opts::to_number() const
return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t311_e_"); return map_enum_number(options, 7, value, "ue_timers_and_consts_s::t311_e_");
} }
std::string ue_timers_and_consts_s::n311_opts::to_string() const const char* ue_timers_and_consts_s::n311_opts::to_string() const
{ {
static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"}; static const char* options[] = {"n1", "n2", "n3", "n4", "n5", "n6", "n8", "n10"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n311_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::n311_e_");
@ -2422,7 +2468,7 @@ uint8_t ue_timers_and_consts_s::n311_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n311_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::n311_e_");
} }
std::string ue_timers_and_consts_s::t300_v1310_opts::to_string() const const char* ue_timers_and_consts_s::t300_v1310_opts::to_string() const
{ {
static const char* options[] = {"ms2500", "ms3000", "ms3500", "ms4000", "ms5000", "ms6000", "ms8000", "ms10000"}; static const char* options[] = {"ms2500", "ms3000", "ms3500", "ms4000", "ms5000", "ms6000", "ms8000", "ms10000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_v1310_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_v1310_e_");
@ -2433,7 +2479,7 @@ uint16_t ue_timers_and_consts_s::t300_v1310_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t300_v1310_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t300_v1310_e_");
} }
std::string ue_timers_and_consts_s::t301_v1310_opts::to_string() const const char* ue_timers_and_consts_s::t301_v1310_opts::to_string() const
{ {
static const char* options[] = {"ms2500", "ms3000", "ms3500", "ms4000", "ms5000", "ms6000", "ms8000", "ms10000"}; static const char* options[] = {"ms2500", "ms3000", "ms3500", "ms4000", "ms5000", "ms6000", "ms8000", "ms10000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t301_v1310_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t301_v1310_e_");
@ -2444,7 +2490,7 @@ uint16_t ue_timers_and_consts_s::t301_v1310_opts::to_number() const
return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t301_v1310_e_"); return map_enum_number(options, 8, value, "ue_timers_and_consts_s::t301_v1310_e_");
} }
std::string ue_timers_and_consts_s::t310_v1330_opts::to_string() const const char* ue_timers_and_consts_s::t310_v1330_opts::to_string() const
{ {
static const char* options[] = {"ms4000", "ms6000"}; static const char* options[] = {"ms4000", "ms6000"};
return convert_enum_idx(options, 2, value, "ue_timers_and_consts_s::t310_v1330_e_"); return convert_enum_idx(options, 2, value, "ue_timers_and_consts_s::t310_v1330_e_");
@ -2455,7 +2501,7 @@ uint16_t ue_timers_and_consts_s::t310_v1330_opts::to_number() const
return map_enum_number(options, 2, value, "ue_timers_and_consts_s::t310_v1330_e_"); return map_enum_number(options, 2, value, "ue_timers_and_consts_s::t310_v1330_e_");
} }
std::string ue_timers_and_consts_s::t300_r15_opts::to_string() const const char* ue_timers_and_consts_s::t300_r15_opts::to_string() const
{ {
static const char* options[] = {"ms4000", "ms6000", "ms8000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"}; static const char* options[] = {"ms4000", "ms6000", "ms8000", "ms10000", "ms15000", "ms25000", "ms40000", "ms60000"};
return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_r15_e_"); return convert_enum_idx(options, 8, value, "ue_timers_and_consts_s::t300_r15_e_");
@ -3023,7 +3069,7 @@ void sib_type2_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type2_s::freq_info_s_::ul_bw_opts::to_string() const const char* sib_type2_s::freq_info_s_::ul_bw_opts::to_string() const
{ {
static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"}; static const char* options[] = {"n6", "n15", "n25", "n50", "n75", "n100"};
return convert_enum_idx(options, 6, value, "sib_type2_s::freq_info_s_::ul_bw_e_"); return convert_enum_idx(options, 6, value, "sib_type2_s::freq_info_s_::ul_bw_e_");
@ -3199,19 +3245,19 @@ void sib_type1_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sib_type1_s::cell_access_related_info_s_::cell_barred_opts::to_string() const const char* sib_type1_s::cell_access_related_info_s_::cell_barred_opts::to_string() const
{ {
static const char* options[] = {"barred", "notBarred"}; static const char* options[] = {"barred", "notBarred"};
return convert_enum_idx(options, 2, value, "sib_type1_s::cell_access_related_info_s_::cell_barred_e_"); return convert_enum_idx(options, 2, value, "sib_type1_s::cell_access_related_info_s_::cell_barred_e_");
} }
std::string sib_type1_s::cell_access_related_info_s_::intra_freq_resel_opts::to_string() const const char* sib_type1_s::cell_access_related_info_s_::intra_freq_resel_opts::to_string() const
{ {
static const char* options[] = {"allowed", "notAllowed"}; static const char* options[] = {"allowed", "notAllowed"};
return convert_enum_idx(options, 2, value, "sib_type1_s::cell_access_related_info_s_::intra_freq_resel_e_"); return convert_enum_idx(options, 2, value, "sib_type1_s::cell_access_related_info_s_::intra_freq_resel_e_");
} }
std::string sib_type1_s::si_win_len_opts::to_string() const const char* sib_type1_s::si_win_len_opts::to_string() const
{ {
static const char* options[] = {"ms1", "ms2", "ms5", "ms10", "ms15", "ms20", "ms40"}; static const char* options[] = {"ms1", "ms2", "ms5", "ms10", "ms15", "ms20", "ms40"};
return convert_enum_idx(options, 7, value, "sib_type1_s::si_win_len_e_"); return convert_enum_idx(options, 7, value, "sib_type1_s::si_win_len_e_");

@ -30,7 +30,7 @@ using namespace asn1::rrc;
******************************************************************************/ ******************************************************************************/
// CA-BandwidthClass-r10 ::= ENUMERATED // CA-BandwidthClass-r10 ::= ENUMERATED
std::string ca_bw_class_r10_opts::to_string() const const char* ca_bw_class_r10_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c", "d", "e", "f"}; static const char* options[] = {"a", "b", "c", "d", "e", "f"};
return convert_enum_idx(options, 6, value, "ca_bw_class_r10_e"); return convert_enum_idx(options, 6, value, "ca_bw_class_r10_e");
@ -355,7 +355,7 @@ void ue_cap_enquiry_v1310_ies_s::to_json(json_writer& j) const
} }
// RAT-Type ::= ENUMERATED // RAT-Type ::= ENUMERATED
std::string rat_type_opts::to_string() const const char* rat_type_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"eutra", "utra", "geran-cs", "geran-ps", "cdma2000-1XRTT", "nr", "eutra-nr", "spare1"}; "eutra", "utra", "geran-cs", "geran-ps", "cdma2000-1XRTT", "nr", "eutra-nr", "spare1"};
@ -524,6 +524,15 @@ void ue_cap_enquiry_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_cap_enquiry_s::crit_exts_c_::c1_c_& ue_cap_enquiry_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_cap_enquiry_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_cap_enquiry_s::crit_exts_c_::to_json(json_writer& j) const void ue_cap_enquiry_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -576,6 +585,23 @@ void ue_cap_enquiry_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_cap_enquiry_r8_ies_s& ue_cap_enquiry_s::crit_exts_c_::c1_c_::set_ue_cap_enquiry_r8()
{
set(types::ue_cap_enquiry_r8);
return c;
}
void ue_cap_enquiry_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_cap_enquiry_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_cap_enquiry_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_cap_enquiry_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ue_cap_enquiry_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -750,7 +776,7 @@ void ue_radio_paging_info_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_opts::to_string() const const char* ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_opts::to_string() const
{ {
static const char* options[] = {"ms40", "ms240", "ms1000", "ms2000"}; static const char* options[] = {"ms40", "ms240", "ms1000", "ms2000"};
return convert_enum_idx(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_e_"); return convert_enum_idx(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_e_");
@ -761,7 +787,7 @@ uint16_t ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_opts::to_n
return map_enum_number(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_e_"); return map_enum_number(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_r15_e_");
} }
std::string ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_tdd_r15_opts::to_string() const const char* ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_tdd_r15_opts::to_string() const
{ {
static const char* options[] = {"ms40", "ms240", "ms1000", "ms2000"}; static const char* options[] = {"ms40", "ms240", "ms1000", "ms2000"};
return convert_enum_idx(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_tdd_r15_e_"); return convert_enum_idx(options, 4, value, "ue_radio_paging_info_r12_s::wake_up_signal_min_gap_e_drx_tdd_r15_e_");
@ -941,6 +967,15 @@ void ue_cap_info_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_cap_info_s::crit_exts_c_::c1_c_& ue_cap_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_cap_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_cap_info_s::crit_exts_c_::to_json(json_writer& j) const void ue_cap_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -993,6 +1028,39 @@ void ue_cap_info_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_cap_info_r8_ies_s& ue_cap_info_s::crit_exts_c_::c1_c_::set_ue_cap_info_r8()
{
set(types::ue_cap_info_r8);
return c;
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_cap_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ue_cap_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1159,7 +1227,7 @@ void band_info_eutra_s::to_json(json_writer& j) const
} }
// MIMO-CapabilityDL-r10 ::= ENUMERATED // MIMO-CapabilityDL-r10 ::= ENUMERATED
std::string mimo_cap_dl_r10_opts::to_string() const const char* mimo_cap_dl_r10_opts::to_string() const
{ {
static const char* options[] = {"twoLayers", "fourLayers", "eightLayers"}; static const char* options[] = {"twoLayers", "fourLayers", "eightLayers"};
return convert_enum_idx(options, 3, value, "mimo_cap_dl_r10_e"); return convert_enum_idx(options, 3, value, "mimo_cap_dl_r10_e");
@ -1171,7 +1239,7 @@ uint8_t mimo_cap_dl_r10_opts::to_number() const
} }
// MIMO-CapabilityUL-r10 ::= ENUMERATED // MIMO-CapabilityUL-r10 ::= ENUMERATED
std::string mimo_cap_ul_r10_opts::to_string() const const char* mimo_cap_ul_r10_opts::to_string() const
{ {
static const char* options[] = {"twoLayers", "fourLayers"}; static const char* options[] = {"twoLayers", "fourLayers"};
return convert_enum_idx(options, 2, value, "mimo_cap_ul_r10_e"); return convert_enum_idx(options, 2, value, "mimo_cap_ul_r10_e");
@ -1363,7 +1431,7 @@ void band_params_r11_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string band_params_r11_s::supported_csi_proc_r11_opts::to_string() const const char* band_params_r11_s::supported_csi_proc_r11_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "band_params_r11_s::supported_csi_proc_r11_e_"); return convert_enum_idx(options, 3, value, "band_params_r11_s::supported_csi_proc_r11_e_");
@ -1473,7 +1541,7 @@ void intra_band_contiguous_cc_info_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string intra_band_contiguous_cc_info_r12_s::supported_csi_proc_r12_opts::to_string() const const char* intra_band_contiguous_cc_info_r12_s::supported_csi_proc_r12_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "intra_band_contiguous_cc_info_r12_s::supported_csi_proc_r12_e_"); return convert_enum_idx(options, 3, value, "intra_band_contiguous_cc_info_r12_s::supported_csi_proc_r12_e_");
@ -1586,7 +1654,7 @@ void band_params_r13_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string band_params_r13_s::supported_csi_proc_r13_opts::to_string() const const char* band_params_r13_s::supported_csi_proc_r13_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "band_params_r13_s::supported_csi_proc_r13_e_"); return convert_enum_idx(options, 3, value, "band_params_r13_s::supported_csi_proc_r13_e_");
@ -1785,6 +1853,24 @@ band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_
return *this; return *this;
} }
fixed_bitstring<3>&
band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_::set_three_entries_r13()
{
set(types::three_entries_r13);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<7>&
band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_::set_four_entries_r13()
{
set(types::four_entries_r13);
return c.get<fixed_bitstring<7> >();
}
fixed_bitstring<15>&
band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_::set_five_entries_r13()
{
set(types::five_entries_r13);
return c.get<fixed_bitstring<15> >();
}
void band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_::to_json(json_writer& j) const void band_combination_params_r13_s::dc_support_r13_s_::supported_cell_grouping_r13_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1976,7 +2062,7 @@ void band_params_v1130_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string band_params_v1130_s::supported_csi_proc_r11_opts::to_string() const const char* band_params_v1130_s::supported_csi_proc_r11_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "band_params_v1130_s::supported_csi_proc_r11_e_"); return convert_enum_idx(options, 3, value, "band_params_v1130_s::supported_csi_proc_r11_e_");
@ -2189,6 +2275,24 @@ band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_
return *this; return *this;
} }
fixed_bitstring<3>&
band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::set_three_entries_r12()
{
set(types::three_entries_r12);
return c.get<fixed_bitstring<3> >();
}
fixed_bitstring<7>&
band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::set_four_entries_r12()
{
set(types::four_entries_r12);
return c.get<fixed_bitstring<7> >();
}
fixed_bitstring<15>&
band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::set_five_entries_r12()
{
set(types::five_entries_r12);
return c.get<fixed_bitstring<15> >();
}
void band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::to_json(json_writer& j) const void band_combination_params_v1250_s::dc_support_r12_s_::supported_cell_grouping_r12_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -2745,7 +2849,7 @@ void srs_cap_per_band_pair_r14_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_string() const const char* srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_string() const
{ {
static const char* options[] = {"n0", static const char* options[] = {"n0",
"n0dot5", "n0dot5",
@ -2772,7 +2876,7 @@ float srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opt
return map_enum_number( return map_enum_number(
options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_");
} }
std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number_string() const const char* srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_opts::to_number_string() const
{ {
static const char* options[] = { static const char* options[] = {
"0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"}; "0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"};
@ -2780,7 +2884,7 @@ std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r
options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_"); options, 16, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_dl_r14_e_");
} }
std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_string() const const char* srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_string() const
{ {
static const char* options[] = {"n0", static const char* options[] = {"n0",
"n0dot5", "n0dot5",
@ -2807,7 +2911,7 @@ float srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opt
return map_enum_number( return map_enum_number(
options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_"); options, 15, value, "srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_e_");
} }
std::string srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number_string() const const char* srs_cap_per_band_pair_r14_s::retuning_info_s_::rf_retuning_time_ul_r14_opts::to_number_string() const
{ {
static const char* options[] = { static const char* options[] = {
"0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"}; "0", "0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4", "4.5", "5", "5.5", "6", "6.5", "7"};
@ -3096,7 +3200,7 @@ void mimo_ca_params_per_bo_bc_per_tm_v1470_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mimo_ca_params_per_bo_bc_per_tm_v1470_s::csi_report_advanced_max_ports_r14_opts::to_string() const const char* mimo_ca_params_per_bo_bc_per_tm_v1470_s::csi_report_advanced_max_ports_r14_opts::to_string() const
{ {
static const char* options[] = {"n8", "n12", "n16", "n20", "n24", "n28"}; static const char* options[] = {"n8", "n12", "n16", "n20", "n24", "n28"};
return convert_enum_idx( return convert_enum_idx(
@ -3645,7 +3749,7 @@ void stti_spt_band_params_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string stti_spt_band_params_r15_s::stti_supported_csi_proc_r15_opts::to_string() const const char* stti_spt_band_params_r15_s::stti_supported_csi_proc_r15_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "stti_spt_band_params_r15_s::stti_supported_csi_proc_r15_e_"); return convert_enum_idx(options, 3, value, "stti_spt_band_params_r15_s::stti_supported_csi_proc_r15_e_");
@ -3835,7 +3939,7 @@ void band_combination_params_ext_r10_s::to_json(json_writer& j) const
} }
// V2X-BandwidthClass-r14 ::= ENUMERATED // V2X-BandwidthClass-r14 ::= ENUMERATED
std::string v2x_bw_class_r14_opts::to_string() const const char* v2x_bw_class_r14_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c", "d", "e", "f", "c1-v1530"}; static const char* options[] = {"a", "b", "c", "d", "e", "f", "c1-v1530"};
return convert_enum_idx(options, 7, value, "v2x_bw_class_r14_e"); return convert_enum_idx(options, 7, value, "v2x_bw_class_r14_e");
@ -3962,7 +4066,7 @@ void feature_set_dl_per_cc_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string feature_set_dl_per_cc_r15_s::supported_csi_proc_r15_opts::to_string() const const char* feature_set_dl_per_cc_r15_s::supported_csi_proc_r15_opts::to_string() const
{ {
static const char* options[] = {"n1", "n3", "n4"}; static const char* options[] = {"n1", "n3", "n4"};
return convert_enum_idx(options, 3, value, "feature_set_dl_per_cc_r15_s::supported_csi_proc_r15_e_"); return convert_enum_idx(options, 3, value, "feature_set_dl_per_cc_r15_s::supported_csi_proc_r15_e_");
@ -4345,13 +4449,13 @@ void irat_params_cdma2000_minus1_xrtt_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string irat_params_cdma2000_minus1_xrtt_s::tx_cfg1_xrtt_opts::to_string() const const char* irat_params_cdma2000_minus1_xrtt_s::tx_cfg1_xrtt_opts::to_string() const
{ {
static const char* options[] = {"single", "dual"}; static const char* options[] = {"single", "dual"};
return convert_enum_idx(options, 2, value, "irat_params_cdma2000_minus1_xrtt_s::tx_cfg1_xrtt_e_"); return convert_enum_idx(options, 2, value, "irat_params_cdma2000_minus1_xrtt_s::tx_cfg1_xrtt_e_");
} }
std::string irat_params_cdma2000_minus1_xrtt_s::rx_cfg1_xrtt_opts::to_string() const const char* irat_params_cdma2000_minus1_xrtt_s::rx_cfg1_xrtt_opts::to_string() const
{ {
static const char* options[] = {"single", "dual"}; static const char* options[] = {"single", "dual"};
return convert_enum_idx(options, 2, value, "irat_params_cdma2000_minus1_xrtt_s::rx_cfg1_xrtt_e_"); return convert_enum_idx(options, 2, value, "irat_params_cdma2000_minus1_xrtt_s::rx_cfg1_xrtt_e_");
@ -4387,20 +4491,20 @@ void irat_params_cdma2000_hrpd_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string irat_params_cdma2000_hrpd_s::tx_cfg_hrpd_opts::to_string() const const char* irat_params_cdma2000_hrpd_s::tx_cfg_hrpd_opts::to_string() const
{ {
static const char* options[] = {"single", "dual"}; static const char* options[] = {"single", "dual"};
return convert_enum_idx(options, 2, value, "irat_params_cdma2000_hrpd_s::tx_cfg_hrpd_e_"); return convert_enum_idx(options, 2, value, "irat_params_cdma2000_hrpd_s::tx_cfg_hrpd_e_");
} }
std::string irat_params_cdma2000_hrpd_s::rx_cfg_hrpd_opts::to_string() const const char* irat_params_cdma2000_hrpd_s::rx_cfg_hrpd_opts::to_string() const
{ {
static const char* options[] = {"single", "dual"}; static const char* options[] = {"single", "dual"};
return convert_enum_idx(options, 2, value, "irat_params_cdma2000_hrpd_s::rx_cfg_hrpd_e_"); return convert_enum_idx(options, 2, value, "irat_params_cdma2000_hrpd_s::rx_cfg_hrpd_e_");
} }
// SupportedBandGERAN ::= ENUMERATED // SupportedBandGERAN ::= ENUMERATED
std::string supported_band_geran_opts::to_string() const const char* supported_band_geran_opts::to_string() const
{ {
static const char* options[] = {"gsm450", static const char* options[] = {"gsm450",
"gsm480", "gsm480",
@ -4602,7 +4706,7 @@ void irat_params_nr_v1540_s::to_json(json_writer& j) const
} }
// SupportedBandUTRA-FDD ::= ENUMERATED // SupportedBandUTRA-FDD ::= ENUMERATED
std::string supported_band_utra_fdd_opts::to_string() const const char* supported_band_utra_fdd_opts::to_string() const
{ {
static const char* options[] = {"bandI", "bandII", "bandIII", "bandIV", "bandV", static const char* options[] = {"bandI", "bandII", "bandIII", "bandIV", "bandV",
"bandVI", "bandVII", "bandVIII", "bandIX", "bandX", "bandVI", "bandVII", "bandVIII", "bandIX", "bandX",
@ -4639,7 +4743,7 @@ void irat_params_utra_fdd_s::to_json(json_writer& j) const
} }
// SupportedBandUTRA-TDD128 ::= ENUMERATED // SupportedBandUTRA-TDD128 ::= ENUMERATED
std::string supported_band_utra_tdd128_opts::to_string() const const char* supported_band_utra_tdd128_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}; static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"};
return convert_enum_idx(options, 16, value, "supported_band_utra_tdd128_e"); return convert_enum_idx(options, 16, value, "supported_band_utra_tdd128_e");
@ -4670,7 +4774,7 @@ void irat_params_utra_tdd128_s::to_json(json_writer& j) const
} }
// SupportedBandUTRA-TDD384 ::= ENUMERATED // SupportedBandUTRA-TDD384 ::= ENUMERATED
std::string supported_band_utra_tdd384_opts::to_string() const const char* supported_band_utra_tdd384_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}; static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"};
return convert_enum_idx(options, 16, value, "supported_band_utra_tdd384_e"); return convert_enum_idx(options, 16, value, "supported_band_utra_tdd384_e");
@ -4701,7 +4805,7 @@ void irat_params_utra_tdd384_s::to_json(json_writer& j) const
} }
// SupportedBandUTRA-TDD768 ::= ENUMERATED // SupportedBandUTRA-TDD768 ::= ENUMERATED
std::string supported_band_utra_tdd768_opts::to_string() const const char* supported_band_utra_tdd768_opts::to_string() const
{ {
static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"}; static const char* options[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"};
return convert_enum_idx(options, 16, value, "supported_band_utra_tdd768_e"); return convert_enum_idx(options, 16, value, "supported_band_utra_tdd768_e");
@ -4766,7 +4870,7 @@ void irat_params_wlan_r13_s::to_json(json_writer& j) const
} }
// ProcessingTimelineSet-r15 ::= ENUMERATED // ProcessingTimelineSet-r15 ::= ENUMERATED
std::string processing_timeline_set_r15_opts::to_string() const const char* processing_timeline_set_r15_opts::to_string() const
{ {
static const char* options[] = {"set1", "set2"}; static const char* options[] = {"set1", "set2"};
return convert_enum_idx(options, 2, value, "processing_timeline_set_r15_e"); return convert_enum_idx(options, 2, value, "processing_timeline_set_r15_e");
@ -5153,7 +5257,7 @@ void mimo_ue_params_per_tm_v1430_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_opts::to_string() const const char* mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_opts::to_string() const
{ {
static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"}; static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"};
return convert_enum_idx( return convert_enum_idx(
@ -5166,7 +5270,7 @@ uint8_t mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_re
options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_e_"); options, 4, value, "mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_aperiodic_info_r14_s_::nmax_res_r14_e_");
} }
std::string mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_opts::to_string() const const char* mimo_ue_params_per_tm_v1430_s::nzp_csi_rs_periodic_info_r14_s_::nmax_res_r14_opts::to_string() const
{ {
static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"}; static const char* options[] = {"ffs1", "ffs2", "ffs3", "ffs4"};
return convert_enum_idx( return convert_enum_idx(
@ -5252,7 +5356,7 @@ void mimo_ue_params_per_tm_v1470_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string mimo_ue_params_per_tm_v1470_s::csi_report_advanced_max_ports_r14_opts::to_string() const const char* mimo_ue_params_per_tm_v1470_s::csi_report_advanced_max_ports_r14_opts::to_string() const
{ {
static const char* options[] = {"n8", "n12", "n16", "n20", "n24", "n28"}; static const char* options[] = {"n8", "n12", "n16", "n20", "n24", "n28"};
return convert_enum_idx(options, 6, value, "mimo_ue_params_per_tm_v1470_s::csi_report_advanced_max_ports_r14_e_"); return convert_enum_idx(options, 6, value, "mimo_ue_params_per_tm_v1470_s::csi_report_advanced_max_ports_r14_e_");
@ -5361,7 +5465,7 @@ void naics_cap_entry_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string naics_cap_entry_r12_s::nof_aggregated_prb_r12_opts::to_string() const const char* naics_cap_entry_r12_s::nof_aggregated_prb_r12_opts::to_string() const
{ {
static const char* options[] = {"n50", static const char* options[] = {"n50",
"n75", "n75",
@ -5489,7 +5593,7 @@ void pdcp_params_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string pdcp_params_s::max_num_rohc_context_sessions_opts::to_string() const const char* pdcp_params_s::max_num_rohc_context_sessions_opts::to_string() const
{ {
static const char* options[] = {"cs2", static const char* options[] = {"cs2",
"cs4", "cs4",
@ -5676,7 +5780,7 @@ void pdcp_params_nr_r15_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string pdcp_params_nr_r15_s::rohc_context_max_sessions_r15_opts::to_string() const const char* pdcp_params_nr_r15_s::rohc_context_max_sessions_r15_opts::to_string() const
{ {
static const char* options[] = {"cs2", static const char* options[] = {"cs2",
"cs4", "cs4",
@ -6090,7 +6194,7 @@ void phy_layer_params_v1430_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_opts::to_string() const const char* phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_opts::to_string() const
{ {
static const char* options[] = {"bw5", "bw20"}; static const char* options[] = {"bw5", "bw20"};
return convert_enum_idx(options, 2, value, "phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_e_"); return convert_enum_idx(options, 2, value, "phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_e_");
@ -6101,7 +6205,7 @@ uint8_t phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_opts::to_number() co
return map_enum_number(options, 2, value, "phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_e_"); return map_enum_number(options, 2, value, "phy_layer_params_v1430_s::ce_pdsch_pusch_max_bw_r14_e_");
} }
std::string phy_layer_params_v1430_s::ce_retuning_symbols_r14_opts::to_string() const const char* phy_layer_params_v1430_s::ce_retuning_symbols_r14_opts::to_string() const
{ {
static const char* options[] = {"n0", "n1"}; static const char* options[] = {"n0", "n1"};
return convert_enum_idx(options, 2, value, "phy_layer_params_v1430_s::ce_retuning_symbols_r14_e_"); return convert_enum_idx(options, 2, value, "phy_layer_params_v1430_s::ce_retuning_symbols_r14_e_");
@ -6646,7 +6750,7 @@ void phy_layer_params_v1530_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string phy_layer_params_v1530_s::stti_spt_cap_r15_s_::max_layers_slot_or_subslot_pusch_r15_opts::to_string() const const char* phy_layer_params_v1530_s::stti_spt_cap_r15_s_::max_layers_slot_or_subslot_pusch_r15_opts::to_string() const
{ {
static const char* options[] = {"oneLayer", "twoLayers", "fourLayers"}; static const char* options[] = {"oneLayer", "twoLayers", "fourLayers"};
return convert_enum_idx( return convert_enum_idx(
@ -6659,7 +6763,7 @@ uint8_t phy_layer_params_v1530_s::stti_spt_cap_r15_s_::max_layers_slot_or_subslo
options, 3, value, "phy_layer_params_v1530_s::stti_spt_cap_r15_s_::max_layers_slot_or_subslot_pusch_r15_e_"); options, 3, value, "phy_layer_params_v1530_s::stti_spt_cap_r15_s_::max_layers_slot_or_subslot_pusch_r15_e_");
} }
std::string phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_opts::to_string() const const char* phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_opts::to_string() const
{ {
static const char* options[] = {"slot", "subslot", "slotAndSubslot"}; static const char* options[] = {"slot", "subslot", "slotAndSubslot"};
return convert_enum_idx(options, 3, value, "phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_e_"); return convert_enum_idx(options, 3, value, "phy_layer_params_v1530_s::stti_spt_cap_r15_s_::sps_stti_r15_e_");
@ -7268,7 +7372,7 @@ void supported_band_eutra_v1320_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string supported_band_eutra_v1320_s::ue_pwr_class_n_r13_opts::to_string() const const char* supported_band_eutra_v1320_s::ue_pwr_class_n_r13_opts::to_string() const
{ {
static const char* options[] = {"class1", "class2", "class4"}; static const char* options[] = {"class1", "class2", "class4"};
return convert_enum_idx(options, 3, value, "supported_band_eutra_v1320_s::ue_pwr_class_n_r13_e_"); return convert_enum_idx(options, 3, value, "supported_band_eutra_v1320_s::ue_pwr_class_n_r13_e_");
@ -8039,7 +8143,7 @@ void sl_params_r12_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_params_r12_s::disc_supported_proc_r12_opts::to_string() const const char* sl_params_r12_s::disc_supported_proc_r12_opts::to_string() const
{ {
static const char* options[] = {"n50", "n400"}; static const char* options[] = {"n50", "n400"};
return convert_enum_idx(options, 2, value, "sl_params_r12_s::disc_supported_proc_r12_e_"); return convert_enum_idx(options, 2, value, "sl_params_r12_s::disc_supported_proc_r12_e_");
@ -8300,7 +8404,7 @@ void sl_params_v1530_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string sl_params_v1530_s::slss_supported_tx_freq_r15_opts::to_string() const const char* sl_params_v1530_s::slss_supported_tx_freq_r15_opts::to_string() const
{ {
static const char* options[] = {"single", "multiple"}; static const char* options[] = {"single", "multiple"};
return convert_enum_idx(options, 2, value, "sl_params_v1530_s::slss_supported_tx_freq_r15_e_"); return convert_enum_idx(options, 2, value, "sl_params_v1530_s::slss_supported_tx_freq_r15_e_");
@ -8568,7 +8672,7 @@ void rf_params_v1570_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_string() const const char* rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_string() const
{ {
static const char* options[] = {"v1", "v1dot2", "v1dot25"}; static const char* options[] = {"v1", "v1dot2", "v1dot25"};
return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_");
@ -8578,7 +8682,7 @@ float rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_number() c
static const float options[] = {1.0, 1.2, 1.25}; static const float options[] = {1.0, 1.2, 1.25};
return map_enum_number(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); return map_enum_number(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_");
} }
std::string rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_number_string() const const char* rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_opts::to_number_string() const
{ {
static const char* options[] = {"1", "1.2", "1.25"}; static const char* options[] = {"1", "1.2", "1.25"};
return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_"); return convert_enum_idx(options, 3, value, "rf_params_v1570_s::dl_minus1024_qam_scaling_factor_r15_e_");
@ -10173,7 +10277,7 @@ void laa_params_v1430_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string laa_params_v1430_s::two_step_sched_timing_info_r14_opts::to_string() const const char* laa_params_v1430_s::two_step_sched_timing_info_r14_opts::to_string() const
{ {
static const char* options[] = {"nPlus1", "nPlus2", "nPlus3"}; static const char* options[] = {"nPlus1", "nPlus2", "nPlus3"};
return convert_enum_idx(options, 3, value, "laa_params_v1430_s::two_step_sched_timing_info_r14_e_"); return convert_enum_idx(options, 3, value, "laa_params_v1430_s::two_step_sched_timing_info_r14_e_");
@ -10477,7 +10581,7 @@ void pdcp_params_v1430_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string pdcp_params_v1430_s::max_num_rohc_context_sessions_r14_opts::to_string() const const char* pdcp_params_v1430_s::max_num_rohc_context_sessions_r14_opts::to_string() const
{ {
static const char* options[] = {"cs2", static const char* options[] = {"cs2",
"cs4", "cs4",
@ -10899,7 +11003,7 @@ void ue_eutra_cap_v1430_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_opts::to_string() const const char* ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_opts::to_string() const
{ {
static const char* options[] = {"n16", "n17", "n18", "n19", "n20", "m2"}; static const char* options[] = {"n16", "n17", "n18", "n19", "n20", "m2"};
return convert_enum_idx(options, 6, value, "ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_e_"); return convert_enum_idx(options, 6, value, "ue_eutra_cap_v1430_ies_s::ue_category_ul_v1430_e_");
@ -12083,7 +12187,7 @@ void ue_eutra_cap_v1310_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_opts::to_string() const const char* ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_opts::to_string() const
{ {
static const char* options[] = {"n17", "m1"}; static const char* options[] = {"n17", "m1"};
return convert_enum_idx(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_e_"); return convert_enum_idx(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_e_");
@ -12094,7 +12198,7 @@ uint8_t ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_opts::to_number() const
return map_enum_number(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_e_"); return map_enum_number(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_dl_v1310_e_");
} }
std::string ue_eutra_cap_v1310_ies_s::ue_category_ul_v1310_opts::to_string() const const char* ue_eutra_cap_v1310_ies_s::ue_category_ul_v1310_opts::to_string() const
{ {
static const char* options[] = {"n14", "m1"}; static const char* options[] = {"n14", "m1"};
return convert_enum_idx(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_ul_v1310_e_"); return convert_enum_idx(options, 2, value, "ue_eutra_cap_v1310_ies_s::ue_category_ul_v1310_e_");
@ -13898,7 +14002,7 @@ void ue_eutra_cap_v940_ies_s::to_json(json_writer& j) const
} }
// AccessStratumRelease ::= ENUMERATED // AccessStratumRelease ::= ENUMERATED
std::string access_stratum_release_opts::to_string() const const char* access_stratum_release_opts::to_string() const
{ {
static const char* options[] = {"rel8", "rel9", "rel10", "rel11", "rel12", "rel13", "rel14", "rel15"}; static const char* options[] = {"rel8", "rel9", "rel10", "rel11", "rel12", "rel13", "rel14", "rel15"};
return convert_enum_idx(options, 8, value, "access_stratum_release_e"); return convert_enum_idx(options, 8, value, "access_stratum_release_e");
@ -14272,6 +14376,15 @@ void mbms_params_v1470_s::mbms_max_bw_r14_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
void mbms_params_v1470_s::mbms_max_bw_r14_c_::set_implicit_value()
{
set(types::implicit_value);
}
uint8_t& mbms_params_v1470_s::mbms_max_bw_r14_c_::set_explicit_value()
{
set(types::explicit_value);
return c;
}
void mbms_params_v1470_s::mbms_max_bw_r14_c_::to_json(json_writer& j) const void mbms_params_v1470_s::mbms_max_bw_r14_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -14319,7 +14432,7 @@ SRSASN_CODE mbms_params_v1470_s::mbms_max_bw_r14_c_::unpack(cbit_ref& bref)
return SRSASN_SUCCESS; return SRSASN_SUCCESS;
} }
std::string mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_opts::to_string() const const char* mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_opts::to_string() const
{ {
static const char* options[] = {"n3", "n6", "n9", "n12"}; static const char* options[] = {"n3", "n6", "n9", "n12"};
return convert_enum_idx(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_e_"); return convert_enum_idx(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_e_");
@ -14330,7 +14443,7 @@ uint8_t mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_opts::to_number() con
return map_enum_number(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_e_"); return map_enum_number(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor1dot25_r14_e_");
} }
std::string mbms_params_v1470_s::mbms_scaling_factor7dot5_r14_opts::to_string() const const char* mbms_params_v1470_s::mbms_scaling_factor7dot5_r14_opts::to_string() const
{ {
static const char* options[] = {"n1", "n2", "n3", "n4"}; static const char* options[] = {"n1", "n2", "n3", "n4"};
return convert_enum_idx(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor7dot5_r14_e_"); return convert_enum_idx(options, 4, value, "mbms_params_v1470_s::mbms_scaling_factor7dot5_r14_e_");
@ -15703,6 +15816,15 @@ void ue_radio_access_cap_info_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_radio_access_cap_info_s::crit_exts_c_::c1_c_& ue_radio_access_cap_info_s::crit_exts_c_::set_c1()
{
set(types::c1);
return c;
}
void ue_radio_access_cap_info_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void ue_radio_access_cap_info_s::crit_exts_c_::to_json(json_writer& j) const void ue_radio_access_cap_info_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -15755,6 +15877,39 @@ void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
ue_radio_access_cap_info_r8_ies_s& ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_ue_radio_access_cap_info_r8()
{
set(types::ue_radio_access_cap_info_r8);
return c;
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare7()
{
set(types::spare7);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare6()
{
set(types::spare6);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare5()
{
set(types::spare5);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare4()
{
set(types::spare4);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare3()
{
set(types::spare3);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare2()
{
set(types::spare2);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::set_spare1()
{
set(types::spare1);
}
void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const void ue_radio_access_cap_info_s::crit_exts_c_::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

@ -30,7 +30,7 @@ using namespace asn1::rrc;
******************************************************************************/ ******************************************************************************/
// EstablishmentCause ::= ENUMERATED // EstablishmentCause ::= ENUMERATED
std::string establishment_cause_opts::to_string() const const char* establishment_cause_opts::to_string() const
{ {
static const char* options[] = {"emergency", static const char* options[] = {"emergency",
"highPriorityAccess", "highPriorityAccess",
@ -44,7 +44,7 @@ std::string establishment_cause_opts::to_string() const
} }
// EstablishmentCause-5GC ::= ENUMERATED // EstablishmentCause-5GC ::= ENUMERATED
std::string establishment_cause_minus5_gc_opts::to_string() const const char* establishment_cause_minus5_gc_opts::to_string() const
{ {
static const char* options[] = { static const char* options[] = {
"emergency", "highPriorityAccess", "mt-Access", "mo-Signalling", "mo-Data", "mo-VoiceCall", "spare2", "spare1"}; "emergency", "highPriorityAccess", "mt-Access", "mo-Signalling", "mo-Data", "mo-VoiceCall", "spare2", "spare1"};
@ -119,6 +119,16 @@ init_ue_id_c& init_ue_id_c::operator=(const init_ue_id_c& other)
return *this; return *this;
} }
s_tmsi_s& init_ue_id_c::set_s_tmsi()
{
set(types::s_tmsi);
return c.get<s_tmsi_s>();
}
fixed_bitstring<40>& init_ue_id_c::set_random_value()
{
set(types::random_value);
return c.get<fixed_bitstring<40> >();
}
void init_ue_id_c::to_json(json_writer& j) const void init_ue_id_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -238,6 +248,16 @@ init_ue_id_minus5_gc_c& init_ue_id_minus5_gc_c::operator=(const init_ue_id_minus
return *this; return *this;
} }
fixed_bitstring<40>& init_ue_id_minus5_gc_c::set_ng_minus5_g_s_tmsi_part1()
{
set(types::ng_minus5_g_s_tmsi_part1);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<40>& init_ue_id_minus5_gc_c::set_random_value()
{
set(types::random_value);
return c.get<fixed_bitstring<40> >();
}
void init_ue_id_minus5_gc_c::to_json(json_writer& j) const void init_ue_id_minus5_gc_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -352,14 +372,14 @@ void reestab_ue_id_s::to_json(json_writer& j) const
} }
// ReestablishmentCause ::= ENUMERATED // ReestablishmentCause ::= ENUMERATED
std::string reest_cause_opts::to_string() const const char* reest_cause_opts::to_string() const
{ {
static const char* options[] = {"reconfigurationFailure", "handoverFailure", "otherFailure", "spare1"}; static const char* options[] = {"reconfigurationFailure", "handoverFailure", "otherFailure", "spare1"};
return convert_enum_idx(options, 4, value, "reest_cause_e"); return convert_enum_idx(options, 4, value, "reest_cause_e");
} }
// ResumeCause ::= ENUMERATED // ResumeCause ::= ENUMERATED
std::string resume_cause_opts::to_string() const const char* resume_cause_opts::to_string() const
{ {
static const char* options[] = {"emergency", static const char* options[] = {"emergency",
"highPriorityAccess", "highPriorityAccess",
@ -373,7 +393,7 @@ std::string resume_cause_opts::to_string() const
} }
// ResumeCause-r15 ::= ENUMERATED // ResumeCause-r15 ::= ENUMERATED
std::string resume_cause_r15_opts::to_string() const const char* resume_cause_r15_opts::to_string() const
{ {
static const char* options[] = {"emergency", static const char* options[] = {"emergency",
"highPriorityAccess", "highPriorityAccess",
@ -567,6 +587,16 @@ rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::operator=(
return *this; return *this;
} }
fixed_bitstring<40>& rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::set_full_i_rnti_r15()
{
set(types::full_i_rnti_r15);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<24>& rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::set_short_i_rnti_r15()
{
set(types::short_i_rnti_r15);
return c.get<fixed_bitstring<24> >();
}
void rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::to_json(json_writer& j) const void rrc_conn_resume_request_minus5_gc_r15_ies_s::resume_id_r15_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -716,6 +746,16 @@ rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_& rrc_conn_resume_request_r13
return *this; return *this;
} }
fixed_bitstring<40>& rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_::set_resume_id_r13()
{
set(types::resume_id_r13);
return c.get<fixed_bitstring<40> >();
}
fixed_bitstring<24>& rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_::set_truncated_resume_id_r13()
{
set(types::truncated_resume_id_r13);
return c.get<fixed_bitstring<24> >();
}
void rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_::to_json(json_writer& j) const void rrc_conn_resume_request_r13_ies_s::resume_id_r13_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -807,7 +847,7 @@ void rrc_early_data_request_r15_ies_s::to_json(json_writer& j) const
j.end_obj(); j.end_obj();
} }
std::string rrc_early_data_request_r15_ies_s::establishment_cause_r15_opts::to_string() const const char* rrc_early_data_request_r15_ies_s::establishment_cause_r15_opts::to_string() const
{ {
static const char* options[] = {"mo-Data", "delayTolerantAccess"}; static const char* options[] = {"mo-Data", "delayTolerantAccess"};
return convert_enum_idx(options, 2, value, "rrc_early_data_request_r15_ies_s::establishment_cause_r15_e_"); return convert_enum_idx(options, 2, value, "rrc_early_data_request_r15_ies_s::establishment_cause_r15_e_");
@ -838,6 +878,15 @@ void rrc_conn_reest_request_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_conn_reest_request_r8_ies_s& rrc_conn_reest_request_s::crit_exts_c_::set_rrc_conn_reest_request_r8()
{
set(types::rrc_conn_reest_request_r8);
return c;
}
void rrc_conn_reest_request_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_conn_reest_request_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_reest_request_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -975,6 +1024,16 @@ rrc_conn_request_s::crit_exts_c_::operator=(const rrc_conn_request_s::crit_exts_
return *this; return *this;
} }
rrc_conn_request_r8_ies_s& rrc_conn_request_s::crit_exts_c_::set_rrc_conn_request_r8()
{
set(types::rrc_conn_request_r8);
return c.get<rrc_conn_request_r8_ies_s>();
}
rrc_conn_request_minus5_gc_r15_ies_s& rrc_conn_request_s::crit_exts_c_::set_rrc_conn_request_r15()
{
set(types::rrc_conn_request_r15);
return c.get<rrc_conn_request_minus5_gc_r15_ies_s>();
}
void rrc_conn_request_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_request_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1116,6 +1175,17 @@ rrc_conn_resume_request_r13_s::crit_exts_c_::operator=(const rrc_conn_resume_req
return *this; return *this;
} }
rrc_conn_resume_request_r13_ies_s& rrc_conn_resume_request_r13_s::crit_exts_c_::set_rrc_conn_resume_request_r13()
{
set(types::rrc_conn_resume_request_r13);
return c.get<rrc_conn_resume_request_r13_ies_s>();
}
rrc_conn_resume_request_minus5_gc_r15_ies_s&
rrc_conn_resume_request_r13_s::crit_exts_c_::set_rrc_conn_resume_request_r15()
{
set(types::rrc_conn_resume_request_r15);
return c.get<rrc_conn_resume_request_minus5_gc_r15_ies_s>();
}
void rrc_conn_resume_request_r13_s::crit_exts_c_::to_json(json_writer& j) const void rrc_conn_resume_request_r13_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1193,6 +1263,15 @@ void rrc_early_data_request_r15_s::crit_exts_c_::set(types::options e)
{ {
type_ = e; type_ = e;
} }
rrc_early_data_request_r15_ies_s& rrc_early_data_request_r15_s::crit_exts_c_::set_rrc_early_data_request_r15()
{
set(types::rrc_early_data_request_r15);
return c;
}
void rrc_early_data_request_r15_s::crit_exts_c_::set_crit_exts_future()
{
set(types::crit_exts_future);
}
void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const void rrc_early_data_request_r15_s::crit_exts_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1309,6 +1388,16 @@ ul_ccch_msg_type_c& ul_ccch_msg_type_c::operator=(const ul_ccch_msg_type_c& othe
return *this; return *this;
} }
ul_ccch_msg_type_c::c1_c_& ul_ccch_msg_type_c::set_c1()
{
set(types::c1);
return c.get<c1_c_>();
}
ul_ccch_msg_type_c::msg_class_ext_c_& ul_ccch_msg_type_c::set_msg_class_ext()
{
set(types::msg_class_ext);
return c.get<msg_class_ext_c_>();
}
void ul_ccch_msg_type_c::to_json(json_writer& j) const void ul_ccch_msg_type_c::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1428,6 +1517,16 @@ ul_ccch_msg_type_c::c1_c_& ul_ccch_msg_type_c::c1_c_::operator=(const ul_ccch_ms
return *this; return *this;
} }
rrc_conn_reest_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_conn_reest_request()
{
set(types::rrc_conn_reest_request);
return c.get<rrc_conn_reest_request_s>();
}
rrc_conn_request_s& ul_ccch_msg_type_c::c1_c_::set_rrc_conn_request()
{
set(types::rrc_conn_request);
return c.get<rrc_conn_request_s>();
}
void ul_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const void ul_ccch_msg_type_c::c1_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1548,6 +1647,17 @@ ul_ccch_msg_type_c::msg_class_ext_c_::operator=(const ul_ccch_msg_type_c::msg_cl
return *this; return *this;
} }
ul_ccch_msg_type_c::msg_class_ext_c_::c2_c_& ul_ccch_msg_type_c::msg_class_ext_c_::set_c2()
{
set(types::c2);
return c.get<c2_c_>();
}
ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_&
ul_ccch_msg_type_c::msg_class_ext_c_::set_msg_class_ext_future_r13()
{
set(types::msg_class_ext_future_r13);
return c.get<msg_class_ext_future_r13_c_>();
}
void ul_ccch_msg_type_c::msg_class_ext_c_::to_json(json_writer& j) const void ul_ccch_msg_type_c::msg_class_ext_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1622,6 +1732,16 @@ void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::set(type
{ {
type_ = e; type_ = e;
} }
ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_&
ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::set_c3()
{
set(types::c3);
return c;
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::set_msg_class_ext_future_r15()
{
set(types::msg_class_ext_future_r15);
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::to_json(json_writer& j) const void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();
@ -1674,6 +1794,24 @@ void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::s
{ {
type_ = e; type_ = e;
} }
rrc_early_data_request_r15_s&
ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::set_rrc_early_data_request_r15()
{
set(types::rrc_early_data_request_r15);
return c;
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::set_spare3()
{
set(types::spare3);
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::set_spare2()
{
set(types::spare2);
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::set_spare1()
{
set(types::spare1);
}
void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::to_json(json_writer& j) const void ul_ccch_msg_type_c::msg_class_ext_c_::msg_class_ext_future_r13_c_::c3_c_::to_json(json_writer& j) const
{ {
j.start_obj(); j.start_obj();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -242,7 +242,6 @@ bool make_phy_rach_cfg(const rach_cfg_common_s& asn1_type, srsran_prach_cfg_t* p
asn1::log_error("PRACH freq offset must be at least one"); asn1::log_error("PRACH freq offset must be at least one");
return false; return false;
} }
prach_cfg->freq_offset--;
switch (prach_cfg->root_seq_idx = asn1_type.prach_root_seq_idx.type()) { switch (prach_cfg->root_seq_idx = asn1_type.prach_root_seq_idx.type()) {
case rach_cfg_common_s::prach_root_seq_idx_c_::types_opts::l839: case rach_cfg_common_s::prach_root_seq_idx_c_::types_opts::l839:
@ -1187,41 +1186,45 @@ bool make_phy_nzp_csi_rs_resource(const asn1::rrc_nr::nzp_csi_rs_res_s& asn1_nz
bool make_phy_carrier_cfg(const freq_info_dl_s& asn1_freq_info_dl, srsran_carrier_nr_t* out_carrier_nr) bool make_phy_carrier_cfg(const freq_info_dl_s& asn1_freq_info_dl, srsran_carrier_nr_t* out_carrier_nr)
{ {
srsran_carrier_nr_t carrier_nr = {}; uint32_t absolute_frequency_ssb = 0;
if (asn1_freq_info_dl.absolute_freq_ssb_present) { if (asn1_freq_info_dl.absolute_freq_ssb_present) {
carrier_nr.absolute_frequency_ssb = asn1_freq_info_dl.absolute_freq_ssb_present; absolute_frequency_ssb = asn1_freq_info_dl.absolute_freq_ssb_present;
} else { } else {
asn1::log_warning("Option absolute_freq_ssb not present"); asn1::log_warning("Option absolute_freq_ssb not present");
return false; return false;
} }
carrier_nr.absolute_frequency_point_a = asn1_freq_info_dl.absolute_freq_point_a; uint32_t absolute_frequency_point_a = asn1_freq_info_dl.absolute_freq_point_a;
if (asn1_freq_info_dl.scs_specific_carrier_list.size() != 1) { if (asn1_freq_info_dl.scs_specific_carrier_list.size() != 1) {
asn1::log_warning("Option absolute_freq_ssb not present"); asn1::log_warning("Option absolute_freq_ssb not present");
return false; return false;
} }
carrier_nr.nof_prb = asn1_freq_info_dl.scs_specific_carrier_list[0].carrier_bw; uint32_t nof_prb = asn1_freq_info_dl.scs_specific_carrier_list[0].carrier_bw;
srsran_subcarrier_spacing_t scs = srsran_subcarrier_spacing_15kHz;
switch (asn1_freq_info_dl.scs_specific_carrier_list[0].subcarrier_spacing) { switch (asn1_freq_info_dl.scs_specific_carrier_list[0].subcarrier_spacing) {
case subcarrier_spacing_opts::options::khz15: case subcarrier_spacing_opts::options::khz15:
carrier_nr.scs = srsran_subcarrier_spacing_15kHz; scs = srsran_subcarrier_spacing_15kHz;
break; break;
case subcarrier_spacing_opts::options::khz30: case subcarrier_spacing_opts::options::khz30:
carrier_nr.scs = srsran_subcarrier_spacing_30kHz; scs = srsran_subcarrier_spacing_30kHz;
break; break;
case subcarrier_spacing_opts::options::khz60: case subcarrier_spacing_opts::options::khz60:
carrier_nr.scs = srsran_subcarrier_spacing_60kHz; scs = srsran_subcarrier_spacing_60kHz;
break; break;
case subcarrier_spacing_opts::options::khz120: case subcarrier_spacing_opts::options::khz120:
carrier_nr.scs = srsran_subcarrier_spacing_120kHz; scs = srsran_subcarrier_spacing_120kHz;
break; break;
case subcarrier_spacing_opts::options::khz240: case subcarrier_spacing_opts::options::khz240:
carrier_nr.scs = srsran_subcarrier_spacing_240kHz; scs = srsran_subcarrier_spacing_240kHz;
break; break;
default: default:
asn1::log_warning("Not supported subcarrier spacing "); asn1::log_warning("Not supported subcarrier spacing ");
} }
*out_carrier_nr = carrier_nr; // As the carrier structure requires parameters from different objects, set fields separately
out_carrier_nr->absolute_frequency_ssb = absolute_frequency_ssb;
out_carrier_nr->absolute_frequency_point_a = absolute_frequency_point_a;
out_carrier_nr->nof_prb = nof_prb;
out_carrier_nr->scs = scs;
return true; return true;
} }
} // namespace srsran } // namespace srsran

@ -116,7 +116,7 @@ srsran_cqi_report_mode_t make_aperiodic_mode(const asn1::rrc::cqi_report_mode_ap
case asn1::rrc::cqi_report_mode_aperiodic_e::rm10_v1310: case asn1::rrc::cqi_report_mode_aperiodic_e::rm10_v1310:
case asn1::rrc::cqi_report_mode_aperiodic_e::rm11_v1310: case asn1::rrc::cqi_report_mode_aperiodic_e::rm11_v1310:
case asn1::rrc::cqi_report_mode_aperiodic_e::rm32_v1250: case asn1::rrc::cqi_report_mode_aperiodic_e::rm32_v1250:
fprintf(stderr, "Aperiodic mode %s not handled\n", asn_mode.to_string().c_str()); fprintf(stderr, "Aperiodic mode %s not handled\n", asn_mode.to_string());
default: default:
return SRSRAN_CQI_MODE_NA; return SRSRAN_CQI_MODE_NA;
} }
@ -646,7 +646,7 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
} else { } else {
fprintf(stderr, fprintf(stderr,
"Transmission mode (R10) %s is not supported\n", "Transmission mode (R10) %s is not supported\n",
asn1_type.ant_info_r10->explicit_value_r10().tx_mode_r10.to_string().c_str()); asn1_type.ant_info_r10->explicit_value_r10().tx_mode_r10.to_string());
} }
} else if (asn1_type.ant_info_present && } else if (asn1_type.ant_info_present &&
asn1_type.ant_info.type() == asn1::rrc::phys_cfg_ded_s::ant_info_c_::types::explicit_value) { asn1_type.ant_info.type() == asn1::rrc::phys_cfg_ded_s::ant_info_c_::types::explicit_value) {
@ -657,7 +657,7 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
} else { } else {
fprintf(stderr, fprintf(stderr,
"Transmission mode (R8) %s is not supported\n", "Transmission mode (R8) %s is not supported\n",
asn1_type.ant_info.explicit_value().tx_mode.to_string().c_str()); asn1_type.ant_info.explicit_value().tx_mode.to_string());
} }
} }
if (asn1_type.sched_request_cfg_present) { if (asn1_type.sched_request_cfg_present) {
@ -815,7 +815,7 @@ void set_phy_cfg_t_scell_config(phy_cfg_t* cfg, const asn1::rrc::scell_to_add_mo
} else { } else {
fprintf(stderr, fprintf(stderr,
"Transmission mode (R10) %s is not supported\n", "Transmission mode (R10) %s is not supported\n",
non_ul_cfg->ant_info_r10.tx_mode_r10.to_string().c_str()); non_ul_cfg->ant_info_r10.tx_mode_r10.to_string());
} }
} }

File diff suppressed because it is too large Load Diff

@ -338,7 +338,8 @@ bool sctp_init_server(unique_socket* socket, net_utils::socket_type socktype, co
socket_manager::socket_manager() : thread("RXsockets"), socket_manager_itf(srslog::fetch_basic_logger("COMN")) socket_manager::socket_manager() : thread("RXsockets"), socket_manager_itf(srslog::fetch_basic_logger("COMN"))
{ {
// register control pipe fd // register control pipe fd
srsran_assert(pipe(pipefd) != -1, "Failed to open control pipe"); int fd = pipe(pipefd);
srsran_assert(fd != -1, "Failed to open control pipe");
start(thread_prio); start(thread_prio);
} }
@ -353,7 +354,7 @@ void socket_manager::stop()
// close thread // close thread
{ {
std::lock_guard<std::mutex> lock(socket_mutex); std::lock_guard<std::mutex> lock(socket_mutex);
ctrl_cmd_t msg{}; ctrl_cmd_t msg;
msg.cmd = ctrl_cmd_t::cmd_id_t::EXIT; msg.cmd = ctrl_cmd_t::cmd_id_t::EXIT;
if (write(pipefd[1], &msg, sizeof(msg)) != sizeof(msg)) { if (write(pipefd[1], &msg, sizeof(msg)) != sizeof(msg)) {
rxSockError("while writing to control pipe"); rxSockError("while writing to control pipe");

@ -48,6 +48,11 @@
*/ */
#define DMRS_SCH_SMOOTH_FILTER_STDDEV 2 #define DMRS_SCH_SMOOTH_FILTER_STDDEV 2
/**
* @brief Default number of PRB at initialization
*/
#define DMRS_SCH_MAX_NOF_PRB 106
int srsran_dmrs_sch_cfg_to_str(const srsran_dmrs_sch_cfg_t* cfg, char* msg, uint32_t max_len) int srsran_dmrs_sch_cfg_to_str(const srsran_dmrs_sch_cfg_t* cfg, char* msg, uint32_t max_len)
{ {
int type = (int)cfg->type + 1; int type = (int)cfg->type + 1;
@ -526,6 +531,58 @@ static uint32_t srsran_dmrs_sch_seed(const srsran_carrier_nr_t* carrier,
(2UL * n_id + n_scid)); (2UL * n_id + n_scid));
} }
static int dmrs_sch_alloc(srsran_dmrs_sch_t* q, uint32_t max_nof_prb)
{
bool max_nof_prb_changed = q->max_nof_prb < max_nof_prb;
// Update maximum number of PRB
q->max_nof_prb = max_nof_prb;
// Resize/allocate temp for gNb and UE
if (max_nof_prb_changed) {
if (q->temp) {
free(q->temp);
}
q->temp = srsran_vec_cf_malloc(max_nof_prb * SRSRAN_NRE);
if (!q->temp) {
ERROR("malloc");
return SRSRAN_ERROR;
}
}
// If it is not UE, quit now
if (!q->is_rx) {
return SRSRAN_SUCCESS;
}
if (max_nof_prb_changed) {
// Resize interpolator only if the number of PRB has increased
srsran_interp_linear_free(&q->interpolator_type1);
srsran_interp_linear_free(&q->interpolator_type2);
if (srsran_interp_linear_init(&q->interpolator_type1, max_nof_prb * SRSRAN_NRE / 2, 2) != SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
if (srsran_interp_linear_init(&q->interpolator_type2, max_nof_prb * SRSRAN_NRE / 3, 6) != SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
if (q->pilot_estimates) {
free(q->pilot_estimates);
}
// The maximum number of pilots is for Type 1
q->pilot_estimates = srsran_vec_cf_malloc(SRSRAN_DMRS_SCH_MAX_SYMBOLS * max_nof_prb * SRSRAN_NRE / 2);
if (!q->pilot_estimates) {
ERROR("malloc");
return SRSRAN_ERROR;
}
}
return SRSRAN_SUCCESS;
}
int srsran_dmrs_sch_init(srsran_dmrs_sch_t* q, bool is_rx) int srsran_dmrs_sch_init(srsran_dmrs_sch_t* q, bool is_rx)
{ {
if (q == NULL) { if (q == NULL) {
@ -548,6 +605,10 @@ int srsran_dmrs_sch_init(srsran_dmrs_sch_t* q, bool is_rx)
} }
#endif // DMRS_SCH_SMOOTH_FILTER_LEN #endif // DMRS_SCH_SMOOTH_FILTER_LEN
if (dmrs_sch_alloc(q, DMRS_SCH_MAX_NOF_PRB) < SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
@ -574,53 +635,12 @@ void srsran_dmrs_sch_free(srsran_dmrs_sch_t* q)
int srsran_dmrs_sch_set_carrier(srsran_dmrs_sch_t* q, const srsran_carrier_nr_t* carrier) int srsran_dmrs_sch_set_carrier(srsran_dmrs_sch_t* q, const srsran_carrier_nr_t* carrier)
{ {
bool max_nof_prb_changed = q->max_nof_prb < carrier->nof_prb; // Set carrier
// Set carrier and update maximum number of PRB
q->carrier = *carrier; q->carrier = *carrier;
q->max_nof_prb = SRSRAN_MAX(q->max_nof_prb, carrier->nof_prb);
// Resize/allocate temp for gNb and UE
if (max_nof_prb_changed) {
if (q->temp) {
free(q->temp);
}
q->temp = srsran_vec_cf_malloc(q->max_nof_prb * SRSRAN_NRE); if (dmrs_sch_alloc(q, carrier->nof_prb) < SRSRAN_SUCCESS) {
if (!q->temp) {
ERROR("malloc");
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
}
// If it is not UE, quit now
if (!q->is_rx) {
return SRSRAN_SUCCESS;
}
if (max_nof_prb_changed) {
// Resize interpolator only if the number of PRB has increased
srsran_interp_linear_free(&q->interpolator_type1);
srsran_interp_linear_free(&q->interpolator_type2);
if (srsran_interp_linear_init(&q->interpolator_type1, carrier->nof_prb * SRSRAN_NRE / 2, 2) != SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
if (srsran_interp_linear_init(&q->interpolator_type2, carrier->nof_prb * SRSRAN_NRE / 3, 6) != SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
if (q->pilot_estimates) {
free(q->pilot_estimates);
}
// The maximum number of pilots is for Type 1
q->pilot_estimates = srsran_vec_cf_malloc(SRSRAN_DMRS_SCH_MAX_SYMBOLS * q->max_nof_prb * SRSRAN_NRE / 2);
if (!q->pilot_estimates) {
ERROR("malloc");
return SRSRAN_ERROR;
}
}
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
@ -779,8 +799,7 @@ int srsran_dmrs_sch_estimate(srsran_dmrs_sch_t* q,
for (uint32_t i = 0; i < nof_symbols; i++) { for (uint32_t i = 0; i < nof_symbols; i++) {
uint32_t l = symbols[i]; // Symbol index inside the slot uint32_t l = symbols[i]; // Symbol index inside the slot
uint32_t cinit = uint32_t cinit = srsran_dmrs_sch_seed(&q->carrier, cfg, grant, SRSRAN_SLOT_NR_MOD(q->carrier.scs, slot->idx), l);
srsran_dmrs_sch_seed(&q->carrier, cfg, grant, SRSRAN_SLOT_NR_MOD(q->carrier.scs, slot->idx), l);
nof_pilots_x_symbol = srsran_dmrs_sch_get_symbol( nof_pilots_x_symbol = srsran_dmrs_sch_get_symbol(
q, cfg, grant, cinit, delta, &sf_symbols[symbol_sz * l], &q->pilot_estimates[nof_pilots_x_symbol * i]); q, cfg, grant, cinit, delta, &sf_symbols[symbol_sz * l], &q->pilot_estimates[nof_pilots_x_symbol * i]);
@ -851,8 +870,7 @@ int srsran_dmrs_sch_estimate(srsran_dmrs_sch_t* q,
cf_t cfo_correction[SRSRAN_NSYMB_PER_SLOT_NR] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; cf_t cfo_correction[SRSRAN_NSYMB_PER_SLOT_NR] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
if (isnormal(cfo_avg)) { if (isnormal(cfo_avg)) {
// Calculate phase of the first OFDM symbol (l = 0) // Calculate phase of the first OFDM symbol (l = 0)
float arg0 = float arg0 = cargf(corr[0]) - 2.0f * M_PI * srsran_symbol_distance_s(0, symbols[0], q->carrier.scs) * cfo_avg;
cargf(corr[0]) - 2.0f * M_PI * srsran_symbol_distance_s(0, symbols[0], q->carrier.scs) * cfo_avg;
// Calculate CFO corrections // Calculate CFO corrections
for (uint32_t l = 0; l < SRSRAN_NSYMB_PER_SLOT_NR; l++) { for (uint32_t l = 0; l < SRSRAN_NSYMB_PER_SLOT_NR; l++) {

@ -20,6 +20,7 @@
*/ */
#include "srsran/phy/common/phy_common_nr.h" #include "srsran/phy/common/phy_common_nr.h"
#include "srsran/phy/utils/vector.h"
#include <string.h> #include <string.h>
const char* srsran_rnti_type_str(srsran_rnti_type_t rnti_type) const char* srsran_rnti_type_str(srsran_rnti_type_t rnti_type)
@ -245,3 +246,33 @@ bool srsran_tdd_nr_is_ul(const srsran_tdd_config_nr_t* cfg, uint32_t numerology,
// Check UL boundaries // Check UL boundaries
return (slot_idx_period > start_ul || (slot_idx_period == start_ul && pattern->nof_ul_symbols != 0)); return (slot_idx_period > start_ul || (slot_idx_period == start_ul && pattern->nof_ul_symbols != 0));
} }
int srsran_carrier_to_cell(const srsran_carrier_nr_t* carrier, srsran_cell_t* cell)
{
// Protect memory access
if (carrier == NULL || cell == NULL) {
return SRSRAN_ERROR_INVALID_INPUTS;
}
// Ensure cell is initialised+
SRSRAN_MEM_ZERO(cell, srsran_cell_t, 1);
// Select number of PRB
if (carrier->nof_prb <= 25) {
cell->nof_prb = 25;
} else if (carrier->nof_prb <= 52) {
cell->nof_prb = 50;
} else if (carrier->nof_prb <= 79) {
cell->nof_prb = 75;
} else if (carrier->nof_prb <= 106) {
cell->nof_prb = 100;
} else {
return SRSRAN_ERROR_OUT_OF_BOUNDS;
}
// Set other parameters
cell->id = carrier->pci;
cell->nof_ports = carrier->max_mimo_layers;
return SRSRAN_SUCCESS;
}

File diff suppressed because it is too large Load Diff

@ -26,6 +26,33 @@
#include "srsran/phy/mimo/precoding.h" #include "srsran/phy/mimo/precoding.h"
#include "srsran/phy/modem/demod_soft.h" #include "srsran/phy/modem/demod_soft.h"
static int pdsch_nr_alloc(srsran_pdsch_nr_t* q, uint32_t max_mimo_layers, uint32_t max_prb)
{
// Reallocate symbols if necessary
if (q->max_layers < max_mimo_layers || q->max_prb < max_prb) {
q->max_layers = max_mimo_layers;
q->max_prb = max_prb;
// Free current allocations
for (uint32_t i = 0; i < SRSRAN_MAX_LAYERS_NR; i++) {
if (q->x[i] != NULL) {
free(q->x[i]);
}
}
// Allocate for new sizes
for (uint32_t i = 0; i < q->max_layers; i++) {
q->x[i] = srsran_vec_cf_malloc(SRSRAN_SLOT_LEN_RE_NR(q->max_prb));
if (q->x[i] == NULL) {
ERROR("Malloc");
return SRSRAN_ERROR;
}
}
}
return SRSRAN_SUCCESS;
}
int pdsch_nr_init_common(srsran_pdsch_nr_t* q, const srsran_pdsch_nr_args_t* args) int pdsch_nr_init_common(srsran_pdsch_nr_t* q, const srsran_pdsch_nr_args_t* args)
{ {
SRSRAN_MEM_ZERO(q, srsran_pdsch_nr_t, 1); SRSRAN_MEM_ZERO(q, srsran_pdsch_nr_t, 1);
@ -40,6 +67,10 @@ int pdsch_nr_init_common(srsran_pdsch_nr_t* q, const srsran_pdsch_nr_args_t* arg
} }
} }
if (pdsch_nr_alloc(q, args->max_layers, args->max_prb) < SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
@ -94,27 +125,9 @@ int srsran_pdsch_nr_set_carrier(srsran_pdsch_nr_t* q, const srsran_carrier_nr_t*
// Set carrier // Set carrier
q->carrier = *carrier; q->carrier = *carrier;
// Reallocate symbols if necessary if (pdsch_nr_alloc(q, carrier->max_mimo_layers, carrier->nof_prb) < SRSRAN_SUCCESS) {
if (q->max_layers < carrier->max_mimo_layers || q->max_prb < carrier->nof_prb) {
q->max_layers = carrier->max_mimo_layers;
q->max_prb = carrier->nof_prb;
// Free current allocations
for (uint32_t i = 0; i < SRSRAN_MAX_LAYERS_NR; i++) {
if (q->x[i] != NULL) {
free(q->x[i]);
}
}
// Allocate for new sizes
for (uint32_t i = 0; i < q->max_layers; i++) {
q->x[i] = srsran_vec_cf_malloc(SRSRAN_SLOT_LEN_RE_NR(q->max_prb));
if (q->x[i] == NULL) {
ERROR("Malloc");
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
}
}
// Allocate code words according to table 7.3.1.3-1 // Allocate code words according to table 7.3.1.3-1
uint32_t max_cw = (q->max_layers > 5) ? 2 : 1; uint32_t max_cw = (q->max_layers > 5) ? 2 : 1;

@ -27,6 +27,33 @@
#include "srsran/phy/phch/ra_nr.h" #include "srsran/phy/phch/ra_nr.h"
#include "srsran/phy/phch/uci_cfg.h" #include "srsran/phy/phch/uci_cfg.h"
static int pusch_nr_alloc(srsran_pusch_nr_t* q, uint32_t max_mimo_layers, uint32_t max_prb)
{
// Reallocate symbols if necessary
if (q->max_layers < max_mimo_layers || q->max_prb < max_prb) {
q->max_layers = max_mimo_layers;
q->max_prb = max_prb;
// Free current allocations
for (uint32_t i = 0; i < SRSRAN_MAX_LAYERS_NR; i++) {
if (q->x[i] != NULL) {
free(q->x[i]);
}
}
// Allocate for new sizes
for (uint32_t i = 0; i < q->max_layers; i++) {
q->x[i] = srsran_vec_cf_malloc(SRSRAN_SLOT_LEN_RE_NR(q->max_prb));
if (q->x[i] == NULL) {
ERROR("Malloc");
return SRSRAN_ERROR;
}
}
}
return SRSRAN_SUCCESS;
}
int pusch_nr_init_common(srsran_pusch_nr_t* q, const srsran_pusch_nr_args_t* args) int pusch_nr_init_common(srsran_pusch_nr_t* q, const srsran_pusch_nr_args_t* args)
{ {
for (srsran_mod_t mod = SRSRAN_MOD_BPSK; mod < SRSRAN_MOD_NITEMS; mod++) { for (srsran_mod_t mod = SRSRAN_MOD_BPSK; mod < SRSRAN_MOD_NITEMS; mod++) {
@ -39,6 +66,10 @@ int pusch_nr_init_common(srsran_pusch_nr_t* q, const srsran_pusch_nr_args_t* arg
} }
} }
if (pusch_nr_alloc(q, args->max_layers, args->max_prb) < SRSRAN_SUCCESS) {
return SRSRAN_ERROR;
}
if (srsran_uci_nr_init(&q->uci, &args->uci) < SRSRAN_SUCCESS) { if (srsran_uci_nr_init(&q->uci, &args->uci) < SRSRAN_SUCCESS) {
ERROR("Initialising UCI"); ERROR("Initialising UCI");
return SRSRAN_ERROR; return SRSRAN_ERROR;
@ -116,27 +147,9 @@ int srsran_pusch_nr_set_carrier(srsran_pusch_nr_t* q, const srsran_carrier_nr_t*
// Set carrier // Set carrier
q->carrier = *carrier; q->carrier = *carrier;
// Reallocate symbols if necessary if (pusch_nr_alloc(q, carrier->max_mimo_layers, carrier->nof_prb) < SRSRAN_SUCCESS) {
if (q->max_layers < carrier->max_mimo_layers || q->max_prb < carrier->nof_prb) {
q->max_layers = carrier->max_mimo_layers;
q->max_prb = carrier->nof_prb;
// Free current allocations
for (uint32_t i = 0; i < SRSRAN_MAX_LAYERS_NR; i++) {
if (q->x[i] != NULL) {
free(q->x[i]);
}
}
// Allocate for new sizes
for (uint32_t i = 0; i < q->max_layers; i++) {
q->x[i] = srsran_vec_cf_malloc(SRSRAN_SLOT_LEN_RE_NR(q->max_prb));
if (q->x[i] == NULL) {
ERROR("Malloc");
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
}
}
// Allocate code words according to table 7.3.1.3-1 // Allocate code words according to table 7.3.1.3-1
uint32_t max_cw = (q->max_layers > 5) ? 2 : 1; uint32_t max_cw = (q->max_layers > 5) ? 2 : 1;

@ -34,7 +34,8 @@ typedef struct {
uint32_t L; uint32_t L;
} ue_ra_time_resource_t; } ue_ra_time_resource_t;
static const ue_ra_time_resource_t ue_ul_default_A_lut[16] = {{srsran_sch_mapping_type_A, 0, 0, 14}, static const ue_ra_time_resource_t ue_ul_default_A_lut[SRSRAN_MAX_NOF_TIME_RA] = {
{srsran_sch_mapping_type_A, 0, 0, 14},
{srsran_sch_mapping_type_A, 0, 0, 12}, {srsran_sch_mapping_type_A, 0, 0, 12},
{srsran_sch_mapping_type_A, 0, 0, 10}, {srsran_sch_mapping_type_A, 0, 0, 10},
{srsran_sch_mapping_type_B, 0, 2, 10}, {srsran_sch_mapping_type_B, 0, 2, 10},
@ -64,7 +65,7 @@ int srsran_ra_ul_nr_pusch_time_resource_default_A(uint32_t scs_cfg, uint32_t m,
return SRSRAN_ERROR; return SRSRAN_ERROR;
} }
if (m >= 16) { if (m >= SRSRAN_MAX_NOF_TIME_RA) {
ERROR("m (%d) is out-of-range", m); ERROR("m (%d) is out-of-range", m);
return SRSRAN_ERROR_INVALID_INPUTS; return SRSRAN_ERROR_INVALID_INPUTS;
} }

@ -21,8 +21,14 @@
#include "srsran/common/test_common.h" #include "srsran/common/test_common.h"
#include "srsran/phy/phch/dci_nr.h" #include "srsran/phy/phch/dci_nr.h"
#include "srsran/phy/utils/debug.h"
#include "srsran/phy/utils/random.h"
#include <getopt.h>
static int test_52prb() static uint32_t nof_repetitions = 1024;
static srsran_random_t random_gen = NULL;
static int test_52prb_base()
{ {
// Default configuration with all options disabled // Default configuration with all options disabled
srsran_dci_cfg_nr_t cfg = {}; srsran_dci_cfg_nr_t cfg = {};
@ -39,6 +45,49 @@ static int test_52prb()
cfg.monitor_0_0_and_1_0 = true; cfg.monitor_0_0_and_1_0 = true;
cfg.monitor_0_1_and_1_1 = true; cfg.monitor_0_1_and_1_1 = true;
// Common parameters
cfg.enable_hopping = false;
cfg.enable_sul = false;
// Common DCI 0_1 and 1_1 parameters
cfg.carrier_indicator_size = 0;
cfg.harq_ack_codebok = srsran_pdsch_harq_ack_codebook_dynamic;
cfg.nof_rb_groups = 0; // Only for allocation type 0
// DCI 0_1 parameters
cfg.nof_ul_bwp = 0;
cfg.nof_ul_time_res = 2;
cfg.nof_srs = 1;
cfg.nof_ul_layers = 1;
cfg.pusch_nof_cbg = 0;
cfg.report_trigger_size = 0;
cfg.enable_transform_precoding = false;
cfg.dynamic_dual_harq_ack_codebook = false;
cfg.pusch_tx_config_non_codebook = false;
cfg.pusch_dmrs_type2 = false;
cfg.pusch_dmrs_double = false;
cfg.pusch_ptrs = false;
cfg.pusch_dynamic_betas = false;
cfg.pusch_alloc_type = srsran_resource_alloc_type1;
// DCI 1_1 parameters
cfg.nof_dl_bwp = 0;
cfg.nof_dl_time_res = 1;
cfg.nof_aperiodic_zp = 0;
cfg.pdsch_nof_cbg = 0;
cfg.nof_dl_to_ul_ack = 5;
cfg.pdsch_inter_prb_to_prb = false;
cfg.pdsch_rm_pattern1 = false;
cfg.pdsch_rm_pattern2 = false;
cfg.pdsch_2cw = false;
cfg.multiple_scell = false;
cfg.pdsch_dmrs_type2 = false;
cfg.pdsch_dmrs_double = false;
cfg.pdsch_tci = false;
cfg.pdsch_cbg_flush = false;
cfg.pdsch_dynamic_bundling = false;
cfg.pdsch_alloc_type = srsran_resource_alloc_type1;
// Configure DCI // Configure DCI
srsran_dci_nr_t dci = {}; srsran_dci_nr_t dci = {};
TESTASSERT(srsran_dci_nr_set_cfg(&dci, &cfg) == SRSRAN_SUCCESS); TESTASSERT(srsran_dci_nr_set_cfg(&dci, &cfg) == SRSRAN_SUCCESS);
@ -48,15 +97,259 @@ static int test_52prb()
TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_common_3, srsran_dci_format_nr_1_0) == 39); TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_common_3, srsran_dci_format_nr_1_0) == 39);
TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_0_0) == 39); TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_0_0) == 39);
TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_1_0) == 39); TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_1_0) == 39);
TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_0_1) == 28); TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_0_1) == 36);
TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_1_1) == 26); TESTASSERT(srsran_dci_nr_size(&dci, srsran_search_space_type_ue, srsran_dci_format_nr_1_1) == 41);
srsran_dci_ctx_t ctx = {};
ctx.rnti = 0x1234;
ctx.ss_type = srsran_search_space_type_common_3;
ctx.rnti_type = srsran_rnti_type_c;
// Test UL DCI 0_0 Packing/Unpacking and info
ctx.format = srsran_dci_format_nr_0_0;
for (uint32_t i = 0; i < nof_repetitions; i++) {
srsran_dci_ul_nr_t dci_tx = {};
dci_tx.ctx = ctx;
dci_tx.freq_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)(1U << 11U) - 1);
dci_tx.time_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)cfg.nof_ul_time_res - 1);
dci_tx.freq_hopping_flag = 0; // unavailable
dci_tx.mcs = srsran_random_uniform_int_dist(random_gen, 0, 31);
dci_tx.rv = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.ndi = srsran_random_uniform_int_dist(random_gen, 0, 1);
dci_tx.pid = srsran_random_uniform_int_dist(random_gen, 0, 15);
dci_tx.tpc = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.frequency_offset = 0; // unavailable
dci_tx.csi_request = 0; // unavailable
dci_tx.sul = 0; // unavailable
dci_tx.cc_id = 0; // unavailable
dci_tx.bwp_id = 0; // unavailable
dci_tx.dai1 = 0; // unavailable
dci_tx.dai2 = 0; // unavailable
dci_tx.srs_id = 0; // unavailable
dci_tx.ports = 0; // unavailable
dci_tx.srs_request = 0; // unavailable
dci_tx.cbg_info = 0; // unavailable
dci_tx.ptrs_id = 0; // unavailable
dci_tx.beta_id = 0; // unavailable
dci_tx.dmrs_id = 0; // unavailable
dci_tx.ulsch = 0; // unavailable
// Pack
srsran_dci_msg_nr_t dci_msg = {};
TESTASSERT(srsran_dci_nr_ul_pack(&dci, &dci_tx, &dci_msg) == SRSRAN_SUCCESS);
// Unpack
srsran_dci_ul_nr_t dci_rx = {};
TESTASSERT(srsran_dci_nr_ul_unpack(&dci, &dci_msg, &dci_rx) == SRSRAN_SUCCESS);
// To string
char str[512];
TESTASSERT(srsran_dci_ul_nr_to_str(&dci, &dci_tx, str, (uint32_t)sizeof(str)) != 0);
INFO("Tx: %s", str);
TESTASSERT(srsran_dci_ul_nr_to_str(&dci, &dci_rx, str, (uint32_t)sizeof(str)) != 0);
INFO("Rx: %s", str);
// Assert
TESTASSERT(memcmp(&dci_tx, &dci_rx, sizeof(srsran_dci_ul_nr_t)) == 0);
}
// Test UL DCI 0_1 Packing/Unpacking and info
ctx.ss_type = srsran_search_space_type_ue;
ctx.format = srsran_dci_format_nr_0_1;
for (uint32_t i = 0; i < nof_repetitions; i++) {
srsran_dci_ul_nr_t dci_tx = {};
dci_tx.ctx = ctx;
dci_tx.freq_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)(1U << 11U) - 1);
dci_tx.time_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)cfg.nof_ul_time_res - 1);
dci_tx.freq_hopping_flag = 0; // unavailable
dci_tx.mcs = srsran_random_uniform_int_dist(random_gen, 0, 31);
dci_tx.rv = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.ndi = srsran_random_uniform_int_dist(random_gen, 0, 1);
dci_tx.pid = srsran_random_uniform_int_dist(random_gen, 0, 15);
dci_tx.tpc = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.frequency_offset = 0; // unavailable
dci_tx.csi_request = 0; // unavailable
dci_tx.sul = 0; // unavailable
dci_tx.cc_id = 0; // unavailable
dci_tx.bwp_id = 0; // unavailable
dci_tx.dai1 = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.dai2 = 0; // unavailable
dci_tx.srs_id = 0; // unavailable
dci_tx.ports = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.srs_request = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.cbg_info = 0; // unavailable
dci_tx.ptrs_id = 0; // unavailable
dci_tx.beta_id = 0; // unavailable
dci_tx.dmrs_id = srsran_random_uniform_int_dist(random_gen, 0, 1);
dci_tx.ulsch = srsran_random_uniform_int_dist(random_gen, 0, 1);
// Pack
srsran_dci_msg_nr_t dci_msg = {};
TESTASSERT(srsran_dci_nr_ul_pack(&dci, &dci_tx, &dci_msg) == SRSRAN_SUCCESS);
// Unpack
srsran_dci_ul_nr_t dci_rx = {};
TESTASSERT(srsran_dci_nr_ul_unpack(&dci, &dci_msg, &dci_rx) == SRSRAN_SUCCESS);
// To string
char str[512];
TESTASSERT(srsran_dci_ul_nr_to_str(&dci, &dci_tx, str, (uint32_t)sizeof(str)) != 0);
INFO("Tx: %s", str);
TESTASSERT(srsran_dci_ul_nr_to_str(&dci, &dci_rx, str, (uint32_t)sizeof(str)) != 0);
INFO("Rx: %s", str);
// Assert
TESTASSERT(memcmp(&dci_tx, &dci_rx, sizeof(srsran_dci_ul_nr_t)) == 0);
}
// Test UL DCI 1_0 Packing/Unpacking and info
ctx.format = srsran_dci_format_nr_1_0;
for (uint32_t i = 0; i < nof_repetitions; i++) {
srsran_dci_dl_nr_t dci_tx = {};
dci_tx.ctx = ctx;
dci_tx.freq_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)(1U << 11U) - 1);
dci_tx.time_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)cfg.nof_ul_time_res - 1);
dci_tx.vrb_to_prb_mapping = 0; // unavailable
dci_tx.mcs = srsran_random_uniform_int_dist(random_gen, 0, 31);
dci_tx.rv = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.ndi = srsran_random_uniform_int_dist(random_gen, 0, 1);
dci_tx.pid = srsran_random_uniform_int_dist(random_gen, 0, 15);
dci_tx.tpc = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.pucch_resource = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.harq_feedback = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.smi = 0; // unavailable
dci_tx.sm = 0; // unavailable
dci_tx.tb_scaling = 0; // unavailable
dci_tx.sii = 0; // unavailable
dci_tx.mcs2 = 0; // unavailable
dci_tx.ndi2 = 0; // unavailable
dci_tx.rv2 = 0; // unavailable
dci_tx.cc_id = 0; // unavailable
dci_tx.bwp_id = 0; // unavailable
dci_tx.rm_pattern1 = 0; // unavailable
dci_tx.rm_pattern2 = 0; // unavailable
dci_tx.zp_csi_rs_id = 0; // unavailable
dci_tx.ports = 0; // unavailable
dci_tx.tci = 0; // unavailable
dci_tx.srs_request = 0; // unavailable
dci_tx.cbg_info = 0; // unavailable
dci_tx.cbg_flush = 0; // unavailable
dci_tx.dmrs_id = 0; // unavailable
// Pack
srsran_dci_msg_nr_t dci_msg = {};
TESTASSERT(srsran_dci_nr_dl_pack(&dci, &dci_tx, &dci_msg) == SRSRAN_SUCCESS);
// Unpack
srsran_dci_dl_nr_t dci_rx = {};
TESTASSERT(srsran_dci_nr_dl_unpack(&dci, &dci_msg, &dci_rx) == SRSRAN_SUCCESS);
// To string
char str[512];
TESTASSERT(srsran_dci_dl_nr_to_str(&dci, &dci_tx, str, (uint32_t)sizeof(str)) != 0);
INFO("Tx: %s", str);
TESTASSERT(srsran_dci_dl_nr_to_str(&dci, &dci_rx, str, (uint32_t)sizeof(str)) != 0);
INFO("Rx: %s", str);
// Assert
TESTASSERT(memcmp(&dci_tx, &dci_rx, sizeof(srsran_dci_dl_nr_t)) == 0);
}
// Test UL DCI 1_0 Packing/Unpacking and info
ctx.format = srsran_dci_format_nr_1_1;
for (uint32_t i = 0; i < nof_repetitions; i++) {
srsran_dci_dl_nr_t dci_tx = {};
dci_tx.ctx = ctx;
dci_tx.freq_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)(1U << 11U) - 1);
dci_tx.time_domain_assigment = srsran_random_uniform_int_dist(random_gen, 0, (int)cfg.nof_dl_time_res - 1);
dci_tx.vrb_to_prb_mapping = 0; // unavailable
dci_tx.mcs = srsran_random_uniform_int_dist(random_gen, 0, 31);
dci_tx.rv = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.ndi = srsran_random_uniform_int_dist(random_gen, 0, 1);
dci_tx.pid = srsran_random_uniform_int_dist(random_gen, 0, 15);
dci_tx.tpc = srsran_random_uniform_int_dist(random_gen, 0, 3);
dci_tx.pucch_resource = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.harq_feedback = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.smi = 0; // unavailable
dci_tx.sm = 0; // unavailable
dci_tx.tb_scaling = 0; // unavailable
dci_tx.sii = 0; // unavailable
dci_tx.mcs2 = 0; // unavailable
dci_tx.ndi2 = 0; // unavailable
dci_tx.rv2 = 0; // unavailable
dci_tx.cc_id = 0; // unavailable
dci_tx.bwp_id = 0; // unavailable
dci_tx.rm_pattern1 = 0; // unavailable
dci_tx.rm_pattern2 = 0; // unavailable
dci_tx.zp_csi_rs_id = 0; // unavailable
dci_tx.ports = srsran_random_uniform_int_dist(random_gen, 0, 7);
dci_tx.tci = 0; // unavailable
dci_tx.srs_request = 0; // unavailable
dci_tx.cbg_info = 0; // unavailable
dci_tx.cbg_flush = 0; // unavailable
dci_tx.dmrs_id = 0; // unavailable
// Pack
srsran_dci_msg_nr_t dci_msg = {};
TESTASSERT(srsran_dci_nr_dl_pack(&dci, &dci_tx, &dci_msg) == SRSRAN_SUCCESS);
// Unpack
srsran_dci_dl_nr_t dci_rx = {};
TESTASSERT(srsran_dci_nr_dl_unpack(&dci, &dci_msg, &dci_rx) == SRSRAN_SUCCESS);
// To string
char str[512];
TESTASSERT(srsran_dci_dl_nr_to_str(&dci, &dci_tx, str, (uint32_t)sizeof(str)) != 0);
INFO("Tx: %s", str);
TESTASSERT(srsran_dci_dl_nr_to_str(&dci, &dci_rx, str, (uint32_t)sizeof(str)) != 0);
INFO("Rx: %s", str);
// Assert
TESTASSERT(memcmp(&dci_tx, &dci_rx, sizeof(srsran_dci_dl_nr_t)) == 0);
}
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
static void usage(char* prog)
{
printf("Usage: %s [cpndv]\n", prog);
printf("\t-v Increase verbose [default none]\n");
printf("\t-R Set number of Packing/Unpacking [default %d]\n", nof_repetitions);
}
static void parse_args(int argc, char** argv)
{
int opt;
while ((opt = getopt(argc, argv, "vR")) != -1) {
switch (opt) {
case 'v':
srsran_verbose++;
break;
case 'R':
nof_repetitions = (uint32_t)strtol(argv[optind], NULL, 10);
break;
default:
usage(argv[0]);
exit(-1);
}
}
}
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
TESTASSERT(test_52prb() == SRSRAN_SUCCESS); parse_args(argc, argv);
return SRSRAN_SUCCESS; int ret = SRSRAN_ERROR;
random_gen = srsran_random_init(1234);
if (test_52prb_base() < SRSRAN_SUCCESS) {
goto clean_exit;
}
ret = SRSRAN_SUCCESS;
clean_exit:
srsran_random_free(random_gen);
return ret;
} }

@ -96,7 +96,7 @@ int srsran_ue_dl_nr_init(srsran_ue_dl_nr_t* q, cf_t* input[SRSRAN_MAX_PORTS], co
srsran_ofdm_cfg_t fft_cfg = {}; srsran_ofdm_cfg_t fft_cfg = {};
fft_cfg.nof_prb = args->nof_max_prb; fft_cfg.nof_prb = args->nof_max_prb;
fft_cfg.symbol_sz = srsran_symbol_sz(args->nof_max_prb); fft_cfg.symbol_sz = srsran_min_symbol_sz_rb(args->nof_max_prb);
fft_cfg.keep_dc = true; fft_cfg.keep_dc = true;
fft_cfg.rx_window_offset = UE_DL_NR_FFT_WINDOW_OFFSET; fft_cfg.rx_window_offset = UE_DL_NR_FFT_WINDOW_OFFSET;

@ -48,7 +48,7 @@ void srslog::event_trace_init()
static constexpr char default_file_name[] = "event_trace.log"; static constexpr char default_file_name[] = "event_trace.log";
// Create the default event trace channel. // Create the default event trace channel.
//:TODO: handle name reservation. //: TODO: handle name reservation.
sink* s = create_file_sink(default_file_name); sink* s = create_file_sink(default_file_name);
assert(s && "Default event file sink is reserved"); assert(s && "Default event file sink is reserved");
tracer = create_log_channel("event_trace_channel", *s); tracer = create_log_channel("event_trace_channel", *s);

@ -33,9 +33,7 @@ namespace srslog {
class file_sink : public sink class file_sink : public sink
{ {
public: public:
file_sink(std::string name, file_sink(std::string name, size_t max_size, std::unique_ptr<log_formatter> f) :
size_t max_size,
std::unique_ptr<log_formatter> f) :
sink(std::move(f)), sink(std::move(f)),
max_size((max_size == 0) ? 0 : std::max<size_t>(max_size, 4 * 1024)), max_size((max_size == 0) ? 0 : std::max<size_t>(max_size, 4 * 1024)),
base_filename(std::move(name)) base_filename(std::move(name))
@ -81,8 +79,7 @@ private:
/// Creates a new file and increments the file index counter. /// Creates a new file and increments the file index counter.
detail::error_string create_file() detail::error_string create_file()
{ {
return handler.create( return handler.create(file_utils::build_filename_with_index(base_filename, file_index++));
file_utils::build_filename_with_index(base_filename, file_index++));
} }
/// Handles the file rotation feature when it is activated. /// Handles the file rotation feature when it is activated.

@ -40,8 +40,7 @@ inline std::string format_error(const std::string& error, int error_code)
} }
/// Splits the specified path into a filename and its extension (if present). /// Splits the specified path into a filename and its extension (if present).
inline std::pair<std::string, std::string> inline std::pair<std::string, std::string> split_filename_extension(const std::string& filename)
split_filename_extension(const std::string& filename)
{ {
// Search for the last dot. // Search for the last dot.
auto dot_pos = filename.find_last_of('.'); auto dot_pos = filename.find_last_of('.');
@ -50,8 +49,7 @@ split_filename_extension(const std::string& filename)
// a) No dot found: my_file // a) No dot found: my_file
// b) Dot found at the beginning: .my_file // b) Dot found at the beginning: .my_file
// c) Dot found at the end: my_file. // c) Dot found at the end: my_file.
if (dot_pos == std::string::npos || dot_pos == 0 || if (dot_pos == std::string::npos || dot_pos == 0 || dot_pos == filename.size() - 1) {
dot_pos == filename.size() - 1) {
return {filename, ""}; return {filename, ""};
} }
@ -70,8 +68,7 @@ split_filename_extension(const std::string& filename)
} }
/// Builds a file name formatting the input base name and file index. /// Builds a file name formatting the input base name and file index.
inline std::string build_filename_with_index(const std::string& basename, inline std::string build_filename_with_index(const std::string& basename, size_t index)
size_t index)
{ {
if (index == 0) { if (index == 0) {
return basename; return basename;
@ -110,19 +107,15 @@ public:
return {}; return {};
} }
return format_error( return format_error(fmt::format("Unable to create log file \"{}\"", new_path), errno);
fmt::format("Unable to create log file \"{}\"", new_path), errno);
} }
/// Writes the provided memory buffer into an open file, otherwise does /// Writes the provided memory buffer into an open file, otherwise does
/// nothing. /// nothing.
detail::error_string write(detail::memory_buffer buffer) detail::error_string write(detail::memory_buffer buffer)
{ {
if (handle && if (handle && std::fwrite(buffer.data(), sizeof(char), buffer.size(), handle) != buffer.size()) {
std::fwrite(buffer.data(), sizeof(char), buffer.size(), handle) != auto err_str = format_error(fmt::format("Unable to write log file \"{}\"", path), errno);
buffer.size()) {
auto err_str = format_error(
fmt::format("Unable to write log file \"{}\"", path), errno);
close(); close();
return err_str; return err_str;
} }
@ -134,9 +127,7 @@ public:
detail::error_string flush() detail::error_string flush()
{ {
if (handle && ::fflush(handle) == EOF) { if (handle && ::fflush(handle) == EOF) {
auto err_str = format_error( auto err_str = format_error(fmt::format("Error encountered while flushing log file \"{}\"", path), errno);
fmt::format("Error encountered while flushing log file \"{}\"", path),
errno);
close(); close();
return err_str; return err_str;
} }

@ -34,8 +34,7 @@ class stream_sink : public sink
{ {
public: public:
stream_sink(sink_stream_type s, std::unique_ptr<log_formatter> f) : stream_sink(sink_stream_type s, std::unique_ptr<log_formatter> f) :
sink(std::move(f)), sink(std::move(f)), handle((s == sink_stream_type::stdout) ? stdout : stderr)
handle((s == sink_stream_type::stdout) ? stdout : stderr)
{} {}
stream_sink(const stream_sink& other) = delete; stream_sink(const stream_sink& other) = delete;

@ -164,7 +164,7 @@ sink& srslog::fetch_file_sink(const std::string& path, size_t max_size, std::uni
return *s; return *s;
} }
//:TODO: GCC5 or lower versions emits an error if we use the new() expression //: TODO: GCC5 or lower versions emits an error if we use the new() expression
// directly, use redundant piecewise_construct instead. // directly, use redundant piecewise_construct instead.
auto& s = srslog_instance::get().get_sink_repo().emplace( auto& s = srslog_instance::get().get_sink_repo().emplace(
std::piecewise_construct, std::piecewise_construct,
@ -371,7 +371,7 @@ sink* srslog::create_stderr_sink(const std::string& name)
sink* srslog::create_file_sink(const std::string& path, size_t max_size) sink* srslog::create_file_sink(const std::string& path, size_t max_size)
{ {
//:TODO: GCC5 or lower versions emits an error if we use the new() expression //: TODO: GCC5 or lower versions emits an error if we use the new() expression
// directly, use redundant piecewise_construct instead. // directly, use redundant piecewise_construct instead.
return srslog_instance::get() return srslog_instance::get()
.get_sink_repo() .get_sink_repo()

@ -65,8 +65,7 @@ srslog_log_channel* srslog_find_log_channel(const char* id)
return c_cast<srslog_log_channel>(find_log_channel(id)); return c_cast<srslog_log_channel>(find_log_channel(id));
} }
void srslog_set_log_channel_enabled(srslog_log_channel* channel, void srslog_set_log_channel_enabled(srslog_log_channel* channel, srslog_bool enabled)
srslog_bool enabled)
{ {
assert(channel && "Expected a valid channel"); assert(channel && "Expected a valid channel");
c_cast<log_channel>(channel)->set_enabled(enabled); c_cast<log_channel>(channel)->set_enabled(enabled);

@ -36,18 +36,16 @@ class srslog_instance
srslog_instance() srslog_instance()
{ {
// stdout and stderr sinks are always present. // stdout and stderr sinks are always present.
auto& stdout_sink = sink_repo.emplace( auto& stdout_sink =
std::piecewise_construct, sink_repo.emplace(std::piecewise_construct,
std::forward_as_tuple("stdout"), std::forward_as_tuple("stdout"),
std::forward_as_tuple(new stream_sink( std::forward_as_tuple(new stream_sink(sink_stream_type::stdout,
sink_stream_type::stdout,
std::unique_ptr<log_formatter>(new text_formatter)))); std::unique_ptr<log_formatter>(new text_formatter))));
default_sink = stdout_sink.get(); default_sink = stdout_sink.get();
sink_repo.emplace(std::piecewise_construct, sink_repo.emplace(std::piecewise_construct,
std::forward_as_tuple("stderr"), std::forward_as_tuple("stderr"),
std::forward_as_tuple(new stream_sink( std::forward_as_tuple(new stream_sink(sink_stream_type::stderr,
sink_stream_type::stderr,
std::unique_ptr<log_formatter>(new text_formatter)))); std::unique_ptr<log_formatter>(new text_formatter))));
// Initialize the default formatter pointer with a text formatter. // Initialize the default formatter pointer with a text formatter.
@ -79,7 +77,7 @@ public:
const channel_repo_type& get_channel_repo() const { return channel_repo; } const channel_repo_type& get_channel_repo() const { return channel_repo; }
/// Sink repository accessor. /// Sink repository accessor.
using sink_repo_type = object_repository<std::string, std::unique_ptr<sink>>; using sink_repo_type = object_repository<std::string, std::unique_ptr<sink> >;
sink_repo_type& get_sink_repo() { return sink_repo; } sink_repo_type& get_sink_repo() { return sink_repo; }
const sink_repo_type& get_sink_repo() const { return sink_repo; } const sink_repo_type& get_sink_repo() const { return sink_repo; }
@ -88,10 +86,7 @@ public:
const detail::log_backend& get_backend() const { return backend; } const detail::log_backend& get_backend() const { return backend; }
/// Installs the specified error handler into the backend. /// Installs the specified error handler into the backend.
void set_error_handler(error_handler callback) void set_error_handler(error_handler callback) { backend.set_error_handler(std::move(callback)); }
{
backend.set_error_handler(std::move(callback));
}
/// Set the specified sink as the default one. /// Set the specified sink as the default one.
void set_default_sink(sink& s) { default_sink = &s; } void set_default_sink(sink& s) { default_sink = &s; }

@ -772,7 +772,7 @@ void pdcp_entity_lte::notify_failure(const pdcp_sn_vector_t& pdcp_sns)
***************************************************************************/ ***************************************************************************/
bool pdcp_entity_lte::check_valid_config() bool pdcp_entity_lte::check_valid_config()
{ {
if (cfg.sn_len != PDCP_SN_LEN_5 && cfg.sn_len != PDCP_SN_LEN_7 && cfg.sn_len != PDCP_SN_LEN_12) { if (cfg.sn_len != PDCP_SN_LEN_5 && cfg.sn_len != PDCP_SN_LEN_7 && cfg.sn_len != PDCP_SN_LEN_12 && cfg.sn_len != PDCP_SN_LEN_18) {
logger.error("Trying to configure bearer with invalid SN LEN=%d", cfg.sn_len); logger.error("Trying to configure bearer with invalid SN LEN=%d", cfg.sn_len);
return false; return false;
} }

@ -471,8 +471,7 @@ void rlc::add_bearer(uint32_t lcid, const rlc_config_t& cnfg)
goto delete_and_exit; goto delete_and_exit;
} }
logger.info( logger.info("Added %s radio bearer with LCID %d in %s", to_string(cnfg.rat), lcid, to_string(cnfg.rlc_mode));
"Added %s radio bearer with LCID %d in %s", to_string(cnfg.rat), lcid, to_string(cnfg.rlc_mode).c_str());
rlc_entity = NULL; rlc_entity = NULL;
} }
@ -484,8 +483,7 @@ void rlc::add_bearer(uint32_t lcid, const rlc_config_t& cnfg)
} }
} }
logger.info( logger.info("Configured %s radio bearer with LCID %d in %s", to_string(cnfg.rat), lcid, to_string(cnfg.rlc_mode));
"Configured %s radio bearer with LCID %d in %s", to_string(cnfg.rat), lcid, to_string(cnfg.rlc_mode).c_str());
delete_and_exit: delete_and_exit:
if (rlc_entity) { if (rlc_entity) {

@ -161,7 +161,7 @@ int rlc_tm::read_pdu(uint8_t* payload, uint32_t nof_bytes)
pdu_size, pdu_size,
"%s Tx %s PDU, queue size=%d, bytes=%d", "%s Tx %s PDU, queue size=%d, bytes=%d",
rrc->get_rb_name(lcid), rrc->get_rb_name(lcid),
srsran::to_string(rlc_mode_t::tm).c_str(), srsran::to_string(rlc_mode_t::tm),
ul_queue.size(), ul_queue.size(),
ul_queue.size_bytes()); ul_queue.size_bytes());

@ -61,7 +61,7 @@ bool rlc_um_lte::configure(const rlc_config_t& cnfg_)
logger.info("%s configured in %s: t_reordering=%d ms, rx_sn_field_length=%u bits, tx_sn_field_length=%u bits", logger.info("%s configured in %s: t_reordering=%d ms, rx_sn_field_length=%u bits, tx_sn_field_length=%u bits",
rb_name.c_str(), rb_name.c_str(),
srsran::to_string(cnfg_.rlc_mode).c_str(), srsran::to_string(cnfg_.rlc_mode),
cfg.um.t_reordering, cfg.um.t_reordering,
srsran::to_number(cfg.um.rx_sn_field_length), srsran::to_number(cfg.um.rx_sn_field_length),
srsran::to_number(cfg.um.tx_sn_field_length)); srsran::to_number(cfg.um.tx_sn_field_length));

@ -60,7 +60,7 @@ bool rlc_um_nr::configure(const rlc_config_t& cnfg_)
logger.info("%s configured in %s: sn_field_length=%u bits", logger.info("%s configured in %s: sn_field_length=%u bits",
rb_name.c_str(), rb_name.c_str(),
srsran::to_string(cnfg_.rlc_mode).c_str(), srsran::to_string(cnfg_.rlc_mode),
srsran::to_number(cfg.um_nr.sn_field_length)); srsran::to_number(cfg.um_nr.sn_field_length));
rx_enabled = true; rx_enabled = true;

@ -54,9 +54,9 @@ add_executable(rrc_asn1_test rrc_test.cc)
target_link_libraries(rrc_asn1_test rrc_asn1 asn1_utils srsran_common) target_link_libraries(rrc_asn1_test rrc_asn1 asn1_utils srsran_common)
add_test(rrc_asn1_test rrc_asn1_test) add_test(rrc_asn1_test rrc_asn1_test)
add_executable(srsran_asn1_rrc_nr_test srsran_asn1_rrc_nr_test.cc) add_executable(rrc_nr_asn1_test rrc_nr_test.cc)
target_link_libraries(srsran_asn1_rrc_nr_test rrc_nr_asn1 asn1_utils srsran_common) target_link_libraries(rrc_nr_asn1_test rrc_nr_asn1 asn1_utils srsran_common)
add_test(srsran_asn1_rrc_nr_test srsran_asn1_rrc_nr_test) add_test(rrc_nr_asn1_test rrc_nr_asn1_test)
add_executable(ngap_asn1_test ngap_test.cc) add_executable(ngap_asn1_test ngap_test.cc)
target_link_libraries(ngap_asn1_test ngap_nr_asn1 srsran_common) target_link_libraries(ngap_asn1_test ngap_nr_asn1 srsran_common)

@ -325,6 +325,7 @@ int main()
TESTASSERT(test_cell_group_config() == SRSRAN_SUCCESS); TESTASSERT(test_cell_group_config() == SRSRAN_SUCCESS);
srslog::flush(); srslog::flush();
printf("Success\n"); printf("Success\n");
return 0; return 0;
} }

@ -58,6 +58,7 @@ add_executable(bcd_helpers_test bcd_helpers_test.cc)
target_link_libraries(bcd_helpers_test srsran_common) target_link_libraries(bcd_helpers_test srsran_common)
add_executable(stack_procedure_test stack_procedure_test.cc) add_executable(stack_procedure_test stack_procedure_test.cc)
target_link_libraries(stack_procedure_test srsran_common)
add_test(stack_procedure_test stack_procedure_test) add_test(stack_procedure_test stack_procedure_test)
add_executable(queue_test multiqueue_test.cc) add_executable(queue_test multiqueue_test.cc)

@ -31,53 +31,56 @@ typedef struct {
byte_buffer_queue* q; byte_buffer_queue* q;
} args_t; } args_t;
void* write_thread(void* a) void write_thread(byte_buffer_queue* q)
{ {
args_t* args = (args_t*)a; unique_byte_buffer_t b;
for (uint32_t i = 0; i < NMSGS; i++) { for (uint32_t i = 0; i < NMSGS; i++) {
unique_byte_buffer_t b = srsran::make_byte_buffer(); do {
b = srsran::make_byte_buffer();
if (b == nullptr) { if (b == nullptr) {
return nullptr; // wait until pool is not depleted
std::this_thread::yield();
} }
} while (b == nullptr);
memcpy(b->msg, &i, 4); memcpy(b->msg, &i, 4);
b->N_bytes = 4; b->N_bytes = 4;
args->q->write(std::move(b)); q->write(std::move(b));
} }
return NULL;
} }
int main(int argc, char** argv) int test_concurrent_writeread()
{ {
bool result;
byte_buffer_queue q; byte_buffer_queue q;
unique_byte_buffer_t b; unique_byte_buffer_t b;
pthread_t thread; int result = 0;
args_t args;
u_int32_t r;
result = true;
args.q = &q;
pthread_create(&thread, NULL, &write_thread, &args); std::thread t([&q]() { write_thread(&q); });
for (uint32_t i = 0; i < NMSGS; i++) { for (uint32_t i = 0; i < NMSGS; i++) {
b = q.read(); b = q.read();
uint32_t r = 0;
memcpy(&r, b->msg, 4); memcpy(&r, b->msg, 4);
if (r != i) if (r != i) {
result = false; result = -1;
break;
}
} }
pthread_join(thread, NULL); t.join();
if (q.size() != 0 || q.size_bytes() != 0) { if (q.size() != 0 || q.size_bytes() != 0) {
result = false; result = -1;
} }
if (result) { if (result == 0) {
printf("Passed\n"); printf("Passed\n");
exit(0);
} else { } else {
printf("Failed\n;"); printf("Failed\n;");
exit(1);
} }
return result;
}
int main()
{
return test_concurrent_writeread();
} }

@ -34,6 +34,7 @@ int timers_test1()
uint32_t dur = 5; uint32_t dur = 5;
{ {
// TEST: default ctor places unique_timer in correct state
timer_handler::unique_timer t = timers.get_unique_timer(); timer_handler::unique_timer t = timers.get_unique_timer();
TESTASSERT(not t.is_running() and not t.is_expired()); TESTASSERT(not t.is_running() and not t.is_expired());
TESTASSERT(t.id() == 0); TESTASSERT(t.id() == 0);
@ -112,7 +113,6 @@ int timers_test1()
timers.step_all(); timers.step_all();
TESTASSERT(t.is_expired() and t2.is_expired() and t3.is_expired()); TESTASSERT(t.is_expired() and t2.is_expired() and t3.is_expired());
TESTASSERT(first_id == 1); TESTASSERT(first_id == 1);
printf("Last timer id=%d\n", last_id);
TESTASSERT(last_id == 2); TESTASSERT(last_id == 2);
} }
// TEST: timer dtor is called and removes "timer" from "timers" // TEST: timer dtor is called and removes "timer" from "timers"
@ -121,13 +121,13 @@ int timers_test1()
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int timers_test2() /**
{
/**
* Description: * Description:
* - calling stop() early, forbids the timer from getting expired * - calling stop() early, forbids the timer from getting expired
* - calling stop() after timer has expired should be a noop * - calling stop() after timer has expired should be a noop
*/ */
int timers_test2()
{
timer_handler timers; timer_handler timers;
uint32_t duration = 2; uint32_t duration = 2;
@ -156,12 +156,12 @@ int timers_test2()
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
int timers_test3() /**
{
/**
* Description: * Description:
* - setting a new duration while the timer is already running should not stop timer, and should extend timeout * - setting a new duration while the timer is already running should not stop timer, and should extend timeout
*/ */
int timers_test3()
{
timer_handler timers; timer_handler timers;
uint32_t duration = 5; uint32_t duration = 5;
@ -182,7 +182,7 @@ int timers_test3()
TESTASSERT(utimer.is_running()); TESTASSERT(utimer.is_running());
} }
timers.step_all(); timers.step_all();
TESTASSERT(not utimer.is_running()); TESTASSERT(not utimer.is_running() and utimer.is_expired());
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
@ -400,6 +400,56 @@ int timers_test6()
return SRSRAN_SUCCESS; return SRSRAN_SUCCESS;
} }
/**
* Tests specific to timer_handler wheel-based implementation:
* - check if timer update is safe when its new updated wheel position matches the previous wheel position
* - multime timers can exist in the same wheel position
*/
int timers_test7()
{
timer_handler timers;
size_t wheel_size = timer_handler::get_wheel_size();
unique_timer t = timers.get_unique_timer();
t.set(2);
t.run();
timers.step_all();
TESTASSERT(not t.is_expired() and t.is_running());
// should fall in same wheel position as previous timer run
t.set(1 + wheel_size);
for (size_t i = 0; i < wheel_size; ++i) {
timers.step_all();
TESTASSERT(not t.is_expired() and t.is_running());
}
timers.step_all();
TESTASSERT(t.is_expired() and not t.is_running());
// the three timers will all fall in the same wheel position. However, only t and t3 should trigger
unique_timer t2 = timers.get_unique_timer();
unique_timer t3 = timers.get_unique_timer();
t.set(5);
t2.set(5 + wheel_size);
t3.set(5);
t.run();
t2.run();
t3.run();
TESTASSERT(timers.nof_running_timers() == 3 and timers.nof_timers() == 3);
for (size_t i = 0; i < 5; ++i) {
TESTASSERT(not t.is_expired() and t.is_running());
TESTASSERT(not t2.is_expired() and t2.is_running());
TESTASSERT(not t3.is_expired() and t3.is_running());
timers.step_all();
}
TESTASSERT(t.is_expired() and not t.is_running());
TESTASSERT(not t2.is_expired() and t2.is_running());
TESTASSERT(t3.is_expired() and not t3.is_running());
TESTASSERT(timers.nof_running_timers() == 1 and timers.nof_timers() == 3);
return SRSRAN_SUCCESS;
}
int main() int main()
{ {
TESTASSERT(timers_test1() == SRSRAN_SUCCESS); TESTASSERT(timers_test1() == SRSRAN_SUCCESS);
@ -408,6 +458,7 @@ int main()
TESTASSERT(timers_test4() == SRSRAN_SUCCESS); TESTASSERT(timers_test4() == SRSRAN_SUCCESS);
TESTASSERT(timers_test5() == SRSRAN_SUCCESS); TESTASSERT(timers_test5() == SRSRAN_SUCCESS);
TESTASSERT(timers_test6() == SRSRAN_SUCCESS); TESTASSERT(timers_test6() == SRSRAN_SUCCESS);
TESTASSERT(timers_test7() == SRSRAN_SUCCESS);
printf("Success\n"); printf("Success\n");
return 0; return 0;
} }

@ -31,10 +31,7 @@ static constexpr char log_filename[] = "file_sink_test.log";
static bool when_data_is_written_to_file_then_contents_are_valid() static bool when_data_is_written_to_file_then_contents_are_valid()
{ {
file_test_utils::scoped_file_deleter deleter(log_filename); file_test_utils::scoped_file_deleter deleter(log_filename);
file_sink file( file_sink file(log_filename, 0, std::unique_ptr<log_formatter>(new test_dummies::log_formatter_dummy));
log_filename,
0,
std::unique_ptr<log_formatter>(new test_dummies::log_formatter_dummy));
std::vector<std::string> entries; std::vector<std::string> entries;
for (unsigned i = 0; i != 10; ++i) { for (unsigned i = 0; i != 10; ++i) {
@ -46,8 +43,7 @@ static bool when_data_is_written_to_file_then_contents_are_valid()
file.flush(); file.flush();
ASSERT_EQ(file_test_utils::file_exists(log_filename), true); ASSERT_EQ(file_test_utils::file_exists(log_filename), true);
ASSERT_EQ(file_test_utils::compare_file_contents(log_filename, entries), ASSERT_EQ(file_test_utils::compare_file_contents(log_filename, entries), true);
true);
return true; return true;
} }
@ -58,10 +54,7 @@ class file_sink_subclass : public file_sink
{ {
public: public:
file_sink_subclass(std::string name, size_t max_size) : file_sink_subclass(std::string name, size_t max_size) :
file_sink( file_sink(std::move(name), max_size, std::unique_ptr<log_formatter>(new test_dummies::log_formatter_dummy))
std::move(name),
max_size,
std::unique_ptr<log_formatter>(new test_dummies::log_formatter_dummy))
{} {}
uint32_t get_num_of_files() const { return get_file_index(); } uint32_t get_num_of_files() const { return get_file_index(); }
@ -69,14 +62,10 @@ public:
static bool when_data_written_exceeds_size_threshold_then_new_file_is_created() static bool when_data_written_exceeds_size_threshold_then_new_file_is_created()
{ {
std::string filename0 = std::string filename0 = file_utils::build_filename_with_index(log_filename, 0);
file_utils::build_filename_with_index(log_filename, 0); std::string filename1 = file_utils::build_filename_with_index(log_filename, 1);
std::string filename1 = std::string filename2 = file_utils::build_filename_with_index(log_filename, 2);
file_utils::build_filename_with_index(log_filename, 1); file_test_utils::scoped_file_deleter deleter = {filename0, filename1, filename2};
std::string filename2 =
file_utils::build_filename_with_index(log_filename, 2);
file_test_utils::scoped_file_deleter deleter = {
filename0, filename1, filename2};
file_sink_subclass file(log_filename, 5001); file_sink_subclass file(log_filename, 5001);
@ -121,8 +110,7 @@ static bool when_data_written_exceeds_size_threshold_then_new_file_is_created()
int main() int main()
{ {
TEST_FUNCTION(when_data_is_written_to_file_then_contents_are_valid); TEST_FUNCTION(when_data_is_written_to_file_then_contents_are_valid);
TEST_FUNCTION( TEST_FUNCTION(when_data_written_exceeds_size_threshold_then_new_file_is_created);
when_data_written_exceeds_size_threshold_then_new_file_is_created);
return 0; return 0;
} }

@ -56,8 +56,7 @@ inline bool file_exists(const std::string& path)
/// Reads the contents of the file specified in path and returns true if they /// Reads the contents of the file specified in path and returns true if they
/// match with the data in entries, otherwise returns false. /// match with the data in entries, otherwise returns false.
inline bool compare_file_contents(const std::string& path, inline bool compare_file_contents(const std::string& path, const std::vector<std::string>& entries)
const std::vector<std::string>& entries)
{ {
std::ifstream file(path, std::ios::binary); std::ifstream file(path, std::ios::binary);
if (!file.is_open()) { if (!file.is_open()) {

@ -30,9 +30,7 @@ static constexpr char log_filename2[] = "file_utils_test2.log";
static bool filename_extension_split_test() static bool filename_extension_split_test()
{ {
auto checker = [](const std::string& base, auto checker = [](const std::string& base, const std::string& file, const std::string& ext) {
const std::string& file,
const std::string& ext) {
auto result = file_utils::split_filename_extension(base); auto result = file_utils::split_filename_extension(base);
return (result.first == file && result.second == ext); return (result.first == file && result.second == ext);
}; };
@ -57,10 +55,8 @@ static bool filename_with_index_build_test()
ASSERT_EQ(file_utils::build_filename_with_index("filename", 0), "filename"); ASSERT_EQ(file_utils::build_filename_with_index("filename", 0), "filename");
ASSERT_EQ(file_utils::build_filename_with_index("filename", 1), "filename.1"); ASSERT_EQ(file_utils::build_filename_with_index("filename", 1), "filename.1");
ASSERT_EQ(file_utils::build_filename_with_index("filename.txt", 0), ASSERT_EQ(file_utils::build_filename_with_index("filename.txt", 0), "filename.txt");
"filename.txt"); ASSERT_EQ(file_utils::build_filename_with_index("filename.txt", 1), "filename.1.txt");
ASSERT_EQ(file_utils::build_filename_with_index("filename.txt", 1),
"filename.1.txt");
return true; return true;
} }
@ -91,8 +87,7 @@ static bool when_created_method_is_called_then_file_is_created()
return true; return true;
} }
static bool static bool when_created_method_is_called_twice_then_file_is_closed_and_created()
when_created_method_is_called_twice_then_file_is_closed_and_created()
{ {
file_test_utils::scoped_file_deleter deleter = {log_filename, log_filename2}; file_test_utils::scoped_file_deleter deleter = {log_filename, log_filename2};
file_utils::file f; file_utils::file f;
@ -146,8 +141,7 @@ static bool when_data_is_written_to_file_then_contents_are_valid()
err_str = f.flush(); err_str = f.flush();
ASSERT_EQ(err_str.get_error().empty(), true); ASSERT_EQ(err_str.get_error().empty(), true);
ASSERT_EQ(file_test_utils::compare_file_contents(log_filename, {"test\n"}), ASSERT_EQ(file_test_utils::compare_file_contents(log_filename, {"test\n"}), true);
true);
return true; return true;
} }
@ -175,8 +169,7 @@ int main()
TEST_FUNCTION(filename_with_index_build_test); TEST_FUNCTION(filename_with_index_build_test);
TEST_FUNCTION(when_default_constructing_file_then_no_file_is_created); TEST_FUNCTION(when_default_constructing_file_then_no_file_is_created);
TEST_FUNCTION(when_created_method_is_called_then_file_is_created); TEST_FUNCTION(when_created_method_is_called_then_file_is_created);
TEST_FUNCTION( TEST_FUNCTION(when_created_method_is_called_twice_then_file_is_closed_and_created);
when_created_method_is_called_twice_then_file_is_closed_and_created);
TEST_FUNCTION(when_write_method_is_called_with_no_file_then_nothing_happens); TEST_FUNCTION(when_write_method_is_called_with_no_file_then_nothing_happens);
TEST_FUNCTION(when_flush_method_is_called_with_no_file_then_nothing_happens); TEST_FUNCTION(when_flush_method_is_called_with_no_file_then_nothing_happens);
TEST_FUNCTION(when_data_is_written_to_file_then_contents_are_valid); TEST_FUNCTION(when_data_is_written_to_file_then_contents_are_valid);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save