addition of configuration (DU) for F1AP and filling of F1AP_SET_REQ parameters
This commit is contained in:
@@ -53,6 +53,9 @@
|
||||
#include "PHY/defs_L1_NB_IoT.h"
|
||||
|
||||
#include "RRC/LTE/defs_NB_IoT.h"
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
/// RAN context config file name
|
||||
char *config_file_name;
|
||||
|
||||
+345
-345
@@ -199,348 +199,348 @@
|
||||
#define T_LEGACY_CLI_WARNING T_ID(196)
|
||||
#define T_LEGACY_CLI_DEBUG T_ID(197)
|
||||
#define T_LEGACY_CLI_TRACE T_ID(198)
|
||||
#define T_UE_MASTER_TICK T_ID(199)
|
||||
#define T_UE_PHY_UL_TICK T_ID(200)
|
||||
#define T_UE_PHY_DL_TICK T_ID(201)
|
||||
#define T_UE_PHY_DLSCH_UE_DCI T_ID(202)
|
||||
#define T_UE_PHY_DLSCH_UE_ACK T_ID(203)
|
||||
#define T_UE_PHY_DLSCH_UE_NACK T_ID(204)
|
||||
#define T_UE_PHY_ULSCH_UE_DCI T_ID(205)
|
||||
#define T_UE_PHY_ULSCH_UE_ACK T_ID(206)
|
||||
#define T_UE_PHY_ULSCH_UE_NACK T_ID(207)
|
||||
#define T_UE_PHY_INPUT_SIGNAL T_ID(208)
|
||||
#define T_UE_PHY_DL_CHANNEL_ESTIMATE T_ID(209)
|
||||
#define T_UE_PHY_PDCCH_IQ T_ID(210)
|
||||
#define T_UE_PHY_PDCCH_ENERGY T_ID(211)
|
||||
#define T_UE_PHY_PDSCH_IQ T_ID(212)
|
||||
#define T_UE_PHY_PDSCH_ENERGY T_ID(213)
|
||||
#define T_UE_PHY_PUSCH_TX_POWER T_ID(214)
|
||||
#define T_UE_PHY_PUCCH_TX_POWER T_ID(215)
|
||||
#define T_UE_PHY_MEAS T_ID(216)
|
||||
#define T_first T_ID(217)
|
||||
#define T_buf_test T_ID(218)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_ENB T_ID(219)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_ENB T_ID(220)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_ENB T_ID(221)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_ENB T_ID(222)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_ENB T_ID(223)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_ENB T_ID(224)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_ENB T_ID(225)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_ENB T_ID(226)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_RU T_ID(227)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_RU T_ID(228)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_RU T_ID(229)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_RU T_ID(230)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_RU T_ID(231)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_RU T_ID(232)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_RU T_ID(233)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_RU T_ID(234)
|
||||
#define T_VCD_VARIABLE_RUNTIME_TX_ENB T_ID(235)
|
||||
#define T_VCD_VARIABLE_RUNTIME_RX_ENB T_ID(236)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_UE T_ID(237)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_UE T_ID(238)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_UE T_ID(239)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_UE T_ID(240)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_UE T_ID(241)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_UE T_ID(242)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_UE T_ID(243)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_UE T_ID(244)
|
||||
#define T_VCD_VARIABLE_UE_RX_OFFSET T_ID(245)
|
||||
#define T_VCD_VARIABLE_DIFF T_ID(246)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME T_ID(247)
|
||||
#define T_VCD_VARIABLE_HW_FRAME T_ID(248)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME_RX T_ID(249)
|
||||
#define T_VCD_VARIABLE_HW_FRAME_RX T_ID(250)
|
||||
#define T_VCD_VARIABLE_TXCNT T_ID(251)
|
||||
#define T_VCD_VARIABLE_RXCNT T_ID(252)
|
||||
#define T_VCD_VARIABLE_TRX_TS T_ID(253)
|
||||
#define T_VCD_VARIABLE_TRX_TST T_ID(254)
|
||||
#define T_VCD_VARIABLE_TRX_TS_UE T_ID(255)
|
||||
#define T_VCD_VARIABLE_TRX_TST_UE T_ID(256)
|
||||
#define T_VCD_VARIABLE_TRX_WRITE_FLAGS T_ID(257)
|
||||
#define T_VCD_VARIABLE_TX_TS T_ID(258)
|
||||
#define T_VCD_VARIABLE_RX_TS T_ID(259)
|
||||
#define T_VCD_VARIABLE_RX_HWCNT T_ID(260)
|
||||
#define T_VCD_VARIABLE_RX_LHWCNT T_ID(261)
|
||||
#define T_VCD_VARIABLE_TX_HWCNT T_ID(262)
|
||||
#define T_VCD_VARIABLE_TX_LHWCNT T_ID(263)
|
||||
#define T_VCD_VARIABLE_RX_PCK T_ID(264)
|
||||
#define T_VCD_VARIABLE_TX_PCK T_ID(265)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM T_ID(266)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM_PRV T_ID(267)
|
||||
#define T_VCD_VARIABLE_TX_SEQ_NUM T_ID(268)
|
||||
#define T_VCD_VARIABLE_CNT T_ID(269)
|
||||
#define T_VCD_VARIABLE_DUMMY_DUMP T_ID(270)
|
||||
#define T_VCD_VARIABLE_ITTI_SEND_MSG T_ID(271)
|
||||
#define T_VCD_VARIABLE_ITTI_POLL_MSG T_ID(272)
|
||||
#define T_VCD_VARIABLE_ITTI_RECV_MSG T_ID(273)
|
||||
#define T_VCD_VARIABLE_ITTI_ALLOC_MSG T_ID(274)
|
||||
#define T_VCD_VARIABLE_MP_ALLOC T_ID(275)
|
||||
#define T_VCD_VARIABLE_MP_FREE T_ID(276)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_RX T_ID(277)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_TX T_ID(278)
|
||||
#define T_VCD_VARIABLE_DCI_INFO T_ID(279)
|
||||
#define T_VCD_VARIABLE_UE0_BSR T_ID(280)
|
||||
#define T_VCD_VARIABLE_UE0_BO T_ID(281)
|
||||
#define T_VCD_VARIABLE_UE0_SCHEDULED T_ID(282)
|
||||
#define T_VCD_VARIABLE_UE0_TIMING_ADVANCE T_ID(283)
|
||||
#define T_VCD_VARIABLE_UE0_SR_ENERGY T_ID(284)
|
||||
#define T_VCD_VARIABLE_UE0_SR_THRES T_ID(285)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI0 T_ID(286)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI1 T_ID(287)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI2 T_ID(288)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI3 T_ID(289)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI4 T_ID(290)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI5 T_ID(291)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI6 T_ID(292)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI7 T_ID(293)
|
||||
#define T_VCD_VARIABLE_UE0_RES0 T_ID(294)
|
||||
#define T_VCD_VARIABLE_UE0_RES1 T_ID(295)
|
||||
#define T_VCD_VARIABLE_UE0_RES2 T_ID(296)
|
||||
#define T_VCD_VARIABLE_UE0_RES3 T_ID(297)
|
||||
#define T_VCD_VARIABLE_UE0_RES4 T_ID(298)
|
||||
#define T_VCD_VARIABLE_UE0_RES5 T_ID(299)
|
||||
#define T_VCD_VARIABLE_UE0_RES6 T_ID(300)
|
||||
#define T_VCD_VARIABLE_UE0_RES7 T_ID(301)
|
||||
#define T_VCD_VARIABLE_UE0_MCS0 T_ID(302)
|
||||
#define T_VCD_VARIABLE_UE0_MCS1 T_ID(303)
|
||||
#define T_VCD_VARIABLE_UE0_MCS2 T_ID(304)
|
||||
#define T_VCD_VARIABLE_UE0_MCS3 T_ID(305)
|
||||
#define T_VCD_VARIABLE_UE0_MCS4 T_ID(306)
|
||||
#define T_VCD_VARIABLE_UE0_MCS5 T_ID(307)
|
||||
#define T_VCD_VARIABLE_UE0_MCS6 T_ID(308)
|
||||
#define T_VCD_VARIABLE_UE0_MCS7 T_ID(309)
|
||||
#define T_VCD_VARIABLE_UE0_RB0 T_ID(310)
|
||||
#define T_VCD_VARIABLE_UE0_RB1 T_ID(311)
|
||||
#define T_VCD_VARIABLE_UE0_RB2 T_ID(312)
|
||||
#define T_VCD_VARIABLE_UE0_RB3 T_ID(313)
|
||||
#define T_VCD_VARIABLE_UE0_RB4 T_ID(314)
|
||||
#define T_VCD_VARIABLE_UE0_RB5 T_ID(315)
|
||||
#define T_VCD_VARIABLE_UE0_RB6 T_ID(316)
|
||||
#define T_VCD_VARIABLE_UE0_RB7 T_ID(317)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND0 T_ID(318)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND1 T_ID(319)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND2 T_ID(320)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND3 T_ID(321)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND4 T_ID(322)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND5 T_ID(323)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND6 T_ID(324)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND7 T_ID(325)
|
||||
#define T_VCD_VARIABLE_UE0_SFN0 T_ID(326)
|
||||
#define T_VCD_VARIABLE_UE0_SFN1 T_ID(327)
|
||||
#define T_VCD_VARIABLE_UE0_SFN2 T_ID(328)
|
||||
#define T_VCD_VARIABLE_UE0_SFN3 T_ID(329)
|
||||
#define T_VCD_VARIABLE_UE0_SFN4 T_ID(330)
|
||||
#define T_VCD_VARIABLE_UE0_SFN5 T_ID(331)
|
||||
#define T_VCD_VARIABLE_UE0_SFN6 T_ID(332)
|
||||
#define T_VCD_VARIABLE_UE0_SFN7 T_ID(333)
|
||||
#define T_VCD_VARIABLE_SEND_IF4_SYMBOL T_ID(334)
|
||||
#define T_VCD_VARIABLE_RECV_IF4_SYMBOL T_ID(335)
|
||||
#define T_VCD_VARIABLE_SEND_IF5_PKT_ID T_ID(336)
|
||||
#define T_VCD_VARIABLE_RECV_IF5_PKT_ID T_ID(337)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_SIZE T_ID(338)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_ERR T_ID(339)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS T_ID(340)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS T_ID(341)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS_MISSING T_ID(342)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS_MISSING T_ID(343)
|
||||
#define T_VCD_VARIABLE_CPUID_ENB_THREAD_RXTX T_ID(344)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD T_ID(345)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD_TX T_ID(346)
|
||||
#define T_VCD_FUNCTION_RT_SLEEP T_ID(347)
|
||||
#define T_VCD_FUNCTION_TRX_READ T_ID(348)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE T_ID(349)
|
||||
#define T_VCD_FUNCTION_TRX_READ_UE T_ID(350)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_UE T_ID(351)
|
||||
#define T_VCD_FUNCTION_TRX_READ_IF T_ID(352)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_IF T_ID(353)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX0 T_ID(354)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX1 T_ID(355)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_SYNCH T_ID(356)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX0 T_ID(357)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX1 T_ID(358)
|
||||
#define T_VCD_FUNCTION_TRX_READ_SF9 T_ID(359)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_SF9 T_ID(360)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX0 T_ID(361)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX1 T_ID(362)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX0 T_ID(363)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX1 T_ID(364)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT0 T_ID(365)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT1 T_ID(366)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT0 T_ID(367)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1 T_ID(368)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0 T_ID(369)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1 T_ID(370)
|
||||
#define T_VCD_FUNCTION_SIM_DO_DL_SIGNAL T_ID(371)
|
||||
#define T_VCD_FUNCTION_SIM_DO_UL_SIGNAL T_ID(372)
|
||||
#define T_VCD_FUNCTION_SIM_UE_TRX_READ T_ID(373)
|
||||
#define T_VCD_FUNCTION_eNB_TX T_ID(374)
|
||||
#define T_VCD_FUNCTION_eNB_RX T_ID(375)
|
||||
#define T_VCD_FUNCTION_eNB_TRX T_ID(376)
|
||||
#define T_VCD_FUNCTION_eNB_TM T_ID(377)
|
||||
#define T_VCD_FUNCTION_eNB_RX_SLEEP T_ID(378)
|
||||
#define T_VCD_FUNCTION_eNB_TX_SLEEP T_ID(379)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_SLEEP T_ID(380)
|
||||
#define T_VCD_FUNCTION_TRX_READ_RF T_ID(381)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_RF T_ID(382)
|
||||
#define T_VCD_FUNCTION_UE_SYNCH T_ID(383)
|
||||
#define T_VCD_FUNCTION_UE_SLOT_FEP T_ID(384)
|
||||
#define T_VCD_FUNCTION_UE_RRC_MEASUREMENTS T_ID(385)
|
||||
#define T_VCD_FUNCTION_UE_GAIN_CONTROL T_ID(386)
|
||||
#define T_VCD_FUNCTION_UE_ADJUST_SYNCH T_ID(387)
|
||||
#define T_VCD_FUNCTION_UE_MEASUREMENT_PROCEDURES T_ID(388)
|
||||
#define T_VCD_FUNCTION_UE_PDCCH_PROCEDURES T_ID(389)
|
||||
#define T_VCD_FUNCTION_UE_PBCH_PROCEDURES T_ID(390)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX T_ID(391)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX1 T_ID(392)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX T_ID(393)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX1 T_ID(394)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM T_ID(395)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM1 T_ID(396)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC T_ID(397)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC1 T_ID(398)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC T_ID(399)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC1 T_ID(400)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX T_ID(401)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_RX T_ID(402)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC T_ID(403)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH T_ID(404)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_COMMON T_ID(405)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PRACH T_ID(406)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_RAR T_ID(407)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_LTE T_ID(408)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_LTE T_ID(409)
|
||||
#define T_VCD_FUNCTION_PDSCH_THREAD T_ID(410)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD0 T_ID(411)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD1 T_ID(412)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD2 T_ID(413)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD3 T_ID(414)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD4 T_ID(415)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD5 T_ID(416)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD6 T_ID(417)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD7 T_ID(418)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING0 T_ID(419)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING1 T_ID(420)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING2 T_ID(421)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING3 T_ID(422)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING4 T_ID(423)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING5 T_ID(424)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING6 T_ID(425)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING7 T_ID(426)
|
||||
#define T_VCD_FUNCTION_RX_PDCCH T_ID(427)
|
||||
#define T_VCD_FUNCTION_DCI_DECODING T_ID(428)
|
||||
#define T_VCD_FUNCTION_RX_PHICH T_ID(429)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC T_ID(430)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_SI T_ID(431)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_P T_ID(432)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_RA T_ID(433)
|
||||
#define T_VCD_FUNCTION_PHY_UE_CONFIG_SIB2 T_ID(434)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB1_ENB T_ID(435)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB2_ENB T_ID(436)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_DEDICATED_ENB T_ID(437)
|
||||
#define T_VCD_FUNCTION_PHY_UE_COMPUTE_PRACH T_ID(438)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_MSG3 T_ID(439)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING0 T_ID(440)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING1 T_ID(441)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING2 T_ID(442)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING3 T_ID(443)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING4 T_ID(444)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING5 T_ID(445)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING6 T_ID(446)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING7 T_ID(447)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_SFGEN T_ID(448)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PRACH_RX T_ID(449)
|
||||
#define T_VCD_FUNCTION_PHY_RU_PRACH_RX T_ID(450)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PDCCH_TX T_ID(451)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_RS_TX T_ID(452)
|
||||
#define T_VCD_FUNCTION_UE_GENERATE_PRACH T_ID(453)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_MODULATION T_ID(454)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING T_ID(455)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING_FILL_CQI T_ID(456)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_SCRAMBLING T_ID(457)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_MODULATION T_ID(458)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING T_ID(459)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING_W T_ID(460)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_SCRAMBLING T_ID(461)
|
||||
#define T_VCD_FUNCTION_ENB_BEAM_PRECODING T_ID(462)
|
||||
#define T_VCD_FUNCTION_ENB_OFDM_MODULATION T_ID(463)
|
||||
#define T_VCD_FUNCTION_MACPHY_INIT T_ID(464)
|
||||
#define T_VCD_FUNCTION_MACPHY_EXIT T_ID(465)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ULSCH_SCHEDULER T_ID(466)
|
||||
#define T_VCD_FUNCTION_FILL_RAR T_ID(467)
|
||||
#define T_VCD_FUNCTION_TERMINATE_RA_PROC T_ID(468)
|
||||
#define T_VCD_FUNCTION_INITIATE_RA_PROC T_ID(469)
|
||||
#define T_VCD_FUNCTION_CANCEL_RA_PROC T_ID(470)
|
||||
#define T_VCD_FUNCTION_GET_DCI_SDU T_ID(471)
|
||||
#define T_VCD_FUNCTION_GET_DLSCH_SDU T_ID(472)
|
||||
#define T_VCD_FUNCTION_RX_SDU T_ID(473)
|
||||
#define T_VCD_FUNCTION_MRBCH_PHY_SYNC_FAILURE T_ID(474)
|
||||
#define T_VCD_FUNCTION_SR_INDICATION T_ID(475)
|
||||
#define T_VCD_FUNCTION_DLSCH_PREPROCESSOR T_ID(476)
|
||||
#define T_VCD_FUNCTION_SCHEDULE_DLSCH T_ID(477)
|
||||
#define T_VCD_FUNCTION_FILL_DLSCH_DCI T_ID(478)
|
||||
#define T_VCD_FUNCTION_OUT_OF_SYNC_IND T_ID(479)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_SI T_ID(480)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_PCCH T_ID(481)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_CCCH T_ID(482)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_BCCH T_ID(483)
|
||||
#define T_VCD_FUNCTION_UE_SEND_SDU T_ID(484)
|
||||
#define T_VCD_FUNCTION_UE_GET_SDU T_ID(485)
|
||||
#define T_VCD_FUNCTION_UE_GET_RACH T_ID(486)
|
||||
#define T_VCD_FUNCTION_UE_PROCESS_RAR T_ID(487)
|
||||
#define T_VCD_FUNCTION_UE_SCHEDULER T_ID(488)
|
||||
#define T_VCD_FUNCTION_UE_GET_SR T_ID(489)
|
||||
#define T_VCD_FUNCTION_UE_SEND_MCH_SDU T_ID(490)
|
||||
#define T_VCD_FUNCTION_RLC_DATA_REQ T_ID(491)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_STATUS_IND T_ID(492)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_REQ T_ID(493)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_IND T_ID(494)
|
||||
#define T_VCD_FUNCTION_RLC_UM_TRY_REASSEMBLY T_ID(495)
|
||||
#define T_VCD_FUNCTION_RLC_UM_CHECK_TIMER_DAR_TIME_OUT T_ID(496)
|
||||
#define T_VCD_FUNCTION_RLC_UM_RECEIVE_PROCESS_DAR T_ID(497)
|
||||
#define T_VCD_FUNCTION_PDCP_RUN T_ID(498)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_REQ T_ID(499)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_IND T_ID(500)
|
||||
#define T_VCD_FUNCTION_PDCP_APPLY_SECURITY T_ID(501)
|
||||
#define T_VCD_FUNCTION_PDCP_VALIDATE_SECURITY T_ID(502)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ T_ID(503)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ_BUFFER T_ID(504)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH T_ID(505)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH_BUFFER T_ID(506)
|
||||
#define T_VCD_FUNCTION_RRC_RX_TX T_ID(507)
|
||||
#define T_VCD_FUNCTION_RRC_MAC_CONFIG T_ID(508)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SIB1 T_ID(509)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SI T_ID(510)
|
||||
#define T_VCD_FUNCTION_GTPV1U_ENB_TASK T_ID(511)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_UDP_REQ T_ID(512)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_TUNNEL_DATA_REQ T_ID(513)
|
||||
#define T_VCD_FUNCTION_UDP_ENB_TASK T_ID(514)
|
||||
#define T_VCD_FUNCTION_EMU_TRANSPORT T_ID(515)
|
||||
#define T_VCD_FUNCTION_LOG_RECORD T_ID(516)
|
||||
#define T_VCD_FUNCTION_ITTI_ENQUEUE_MESSAGE T_ID(517)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE T_ID(518)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE_MALLOC T_ID(519)
|
||||
#define T_VCD_FUNCTION_ITTI_RELAY_THREAD T_ID(520)
|
||||
#define T_VCD_FUNCTION_TEST T_ID(521)
|
||||
#define T_VCD_FUNCTION_SEND_IF4 T_ID(522)
|
||||
#define T_VCD_FUNCTION_RECV_IF4 T_ID(523)
|
||||
#define T_VCD_FUNCTION_SEND_IF5 T_ID(524)
|
||||
#define T_VCD_FUNCTION_RECV_IF5 T_ID(525)
|
||||
#define T_VCD_FUNCTION_TRX_COMPR_IF T_ID(526)
|
||||
#define T_VCD_FUNCTION_TRX_DECOMPR_IF T_ID(527)
|
||||
#define T_VCD_FUNCTION_NFAPI T_ID(528)
|
||||
#define T_VCD_FUNCTION_GENERATE_PCFICH T_ID(529)
|
||||
#define T_VCD_FUNCTION_GENERATE_DCI0 T_ID(530)
|
||||
#define T_VCD_FUNCTION_GENERATE_DLSCH T_ID(531)
|
||||
#define T_VCD_FUNCTION_GENERATE_PHICH T_ID(532)
|
||||
#define T_VCD_FUNCTION_PDCCH_SCRAMBLING T_ID(533)
|
||||
#define T_VCD_FUNCTION_PDCCH_MODULATION T_ID(534)
|
||||
#define T_VCD_FUNCTION_PDCCH_INTERLEAVING T_ID(535)
|
||||
#define T_VCD_FUNCTION_PDCCH_TX T_ID(536)
|
||||
#define T_NUMBER_OF_IDS 537
|
||||
|
||||
#define T_LEGACY_PROTO_AGENT_DEBUG T_ID(538)
|
||||
#define T_LEGACY_PROTO_AGENT_INFO T_ID(539)
|
||||
#define T_LEGACY_PROTO_AGENT_ERROR T_ID(540)
|
||||
#define T_LEGACY_F1U_ERROR T_ID(541)
|
||||
#define T_LEGACY_F1U_DEBUG T_ID(542)
|
||||
#define T_LEGACY_PROTO_AGENT_DEBUG T_ID(199)
|
||||
#define T_LEGACY_PROTO_AGENT_INFO T_ID(200)
|
||||
#define T_LEGACY_PROTO_AGENT_ERROR T_ID(201)
|
||||
#define T_LEGACY_F1U_DEBUG T_ID(202)
|
||||
#define T_LEGACY_F1U_INFO T_ID(203)
|
||||
#define T_LEGACY_F1U_ERROR T_ID(204)
|
||||
#define T_UE_MASTER_TICK T_ID(205)
|
||||
#define T_UE_PHY_UL_TICK T_ID(206)
|
||||
#define T_UE_PHY_DL_TICK T_ID(207)
|
||||
#define T_UE_PHY_DLSCH_UE_DCI T_ID(208)
|
||||
#define T_UE_PHY_DLSCH_UE_ACK T_ID(209)
|
||||
#define T_UE_PHY_DLSCH_UE_NACK T_ID(210)
|
||||
#define T_UE_PHY_ULSCH_UE_DCI T_ID(211)
|
||||
#define T_UE_PHY_ULSCH_UE_ACK T_ID(212)
|
||||
#define T_UE_PHY_ULSCH_UE_NACK T_ID(213)
|
||||
#define T_UE_PHY_INPUT_SIGNAL T_ID(214)
|
||||
#define T_UE_PHY_DL_CHANNEL_ESTIMATE T_ID(215)
|
||||
#define T_UE_PHY_PDCCH_IQ T_ID(216)
|
||||
#define T_UE_PHY_PDCCH_ENERGY T_ID(217)
|
||||
#define T_UE_PHY_PDSCH_IQ T_ID(218)
|
||||
#define T_UE_PHY_PDSCH_ENERGY T_ID(219)
|
||||
#define T_UE_PHY_PUSCH_TX_POWER T_ID(220)
|
||||
#define T_UE_PHY_PUCCH_TX_POWER T_ID(221)
|
||||
#define T_UE_PHY_MEAS T_ID(222)
|
||||
#define T_first T_ID(223)
|
||||
#define T_buf_test T_ID(224)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_ENB T_ID(225)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_ENB T_ID(226)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_ENB T_ID(227)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_ENB T_ID(228)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_ENB T_ID(229)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_ENB T_ID(230)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_ENB T_ID(231)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_ENB T_ID(232)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_RU T_ID(233)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_RU T_ID(234)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_RU T_ID(235)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_RU T_ID(236)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_RU T_ID(237)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_RU T_ID(238)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_RU T_ID(239)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_RU T_ID(240)
|
||||
#define T_VCD_VARIABLE_RUNTIME_TX_ENB T_ID(241)
|
||||
#define T_VCD_VARIABLE_RUNTIME_RX_ENB T_ID(242)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX0_UE T_ID(243)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_TX1_UE T_ID(244)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX0_UE T_ID(245)
|
||||
#define T_VCD_VARIABLE_FRAME_NUMBER_RX1_UE T_ID(246)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX0_UE T_ID(247)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_TX1_UE T_ID(248)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX0_UE T_ID(249)
|
||||
#define T_VCD_VARIABLE_SUBFRAME_NUMBER_RX1_UE T_ID(250)
|
||||
#define T_VCD_VARIABLE_UE_RX_OFFSET T_ID(251)
|
||||
#define T_VCD_VARIABLE_DIFF T_ID(252)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME T_ID(253)
|
||||
#define T_VCD_VARIABLE_HW_FRAME T_ID(254)
|
||||
#define T_VCD_VARIABLE_HW_SUBFRAME_RX T_ID(255)
|
||||
#define T_VCD_VARIABLE_HW_FRAME_RX T_ID(256)
|
||||
#define T_VCD_VARIABLE_TXCNT T_ID(257)
|
||||
#define T_VCD_VARIABLE_RXCNT T_ID(258)
|
||||
#define T_VCD_VARIABLE_TRX_TS T_ID(259)
|
||||
#define T_VCD_VARIABLE_TRX_TST T_ID(260)
|
||||
#define T_VCD_VARIABLE_TRX_TS_UE T_ID(261)
|
||||
#define T_VCD_VARIABLE_TRX_TST_UE T_ID(262)
|
||||
#define T_VCD_VARIABLE_TRX_WRITE_FLAGS T_ID(263)
|
||||
#define T_VCD_VARIABLE_TX_TS T_ID(264)
|
||||
#define T_VCD_VARIABLE_RX_TS T_ID(265)
|
||||
#define T_VCD_VARIABLE_RX_HWCNT T_ID(266)
|
||||
#define T_VCD_VARIABLE_RX_LHWCNT T_ID(267)
|
||||
#define T_VCD_VARIABLE_TX_HWCNT T_ID(268)
|
||||
#define T_VCD_VARIABLE_TX_LHWCNT T_ID(269)
|
||||
#define T_VCD_VARIABLE_RX_PCK T_ID(270)
|
||||
#define T_VCD_VARIABLE_TX_PCK T_ID(271)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM T_ID(272)
|
||||
#define T_VCD_VARIABLE_RX_SEQ_NUM_PRV T_ID(273)
|
||||
#define T_VCD_VARIABLE_TX_SEQ_NUM T_ID(274)
|
||||
#define T_VCD_VARIABLE_CNT T_ID(275)
|
||||
#define T_VCD_VARIABLE_DUMMY_DUMP T_ID(276)
|
||||
#define T_VCD_VARIABLE_ITTI_SEND_MSG T_ID(277)
|
||||
#define T_VCD_VARIABLE_ITTI_POLL_MSG T_ID(278)
|
||||
#define T_VCD_VARIABLE_ITTI_RECV_MSG T_ID(279)
|
||||
#define T_VCD_VARIABLE_ITTI_ALLOC_MSG T_ID(280)
|
||||
#define T_VCD_VARIABLE_MP_ALLOC T_ID(281)
|
||||
#define T_VCD_VARIABLE_MP_FREE T_ID(282)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_RX T_ID(283)
|
||||
#define T_VCD_VARIABLE_UE_INST_CNT_TX T_ID(284)
|
||||
#define T_VCD_VARIABLE_DCI_INFO T_ID(285)
|
||||
#define T_VCD_VARIABLE_UE0_BSR T_ID(286)
|
||||
#define T_VCD_VARIABLE_UE0_BO T_ID(287)
|
||||
#define T_VCD_VARIABLE_UE0_SCHEDULED T_ID(288)
|
||||
#define T_VCD_VARIABLE_UE0_TIMING_ADVANCE T_ID(289)
|
||||
#define T_VCD_VARIABLE_UE0_SR_ENERGY T_ID(290)
|
||||
#define T_VCD_VARIABLE_UE0_SR_THRES T_ID(291)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI0 T_ID(292)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI1 T_ID(293)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI2 T_ID(294)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI3 T_ID(295)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI4 T_ID(296)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI5 T_ID(297)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI6 T_ID(298)
|
||||
#define T_VCD_VARIABLE_UE0_RSSI7 T_ID(299)
|
||||
#define T_VCD_VARIABLE_UE0_RES0 T_ID(300)
|
||||
#define T_VCD_VARIABLE_UE0_RES1 T_ID(301)
|
||||
#define T_VCD_VARIABLE_UE0_RES2 T_ID(302)
|
||||
#define T_VCD_VARIABLE_UE0_RES3 T_ID(303)
|
||||
#define T_VCD_VARIABLE_UE0_RES4 T_ID(304)
|
||||
#define T_VCD_VARIABLE_UE0_RES5 T_ID(305)
|
||||
#define T_VCD_VARIABLE_UE0_RES6 T_ID(306)
|
||||
#define T_VCD_VARIABLE_UE0_RES7 T_ID(307)
|
||||
#define T_VCD_VARIABLE_UE0_MCS0 T_ID(308)
|
||||
#define T_VCD_VARIABLE_UE0_MCS1 T_ID(309)
|
||||
#define T_VCD_VARIABLE_UE0_MCS2 T_ID(310)
|
||||
#define T_VCD_VARIABLE_UE0_MCS3 T_ID(311)
|
||||
#define T_VCD_VARIABLE_UE0_MCS4 T_ID(312)
|
||||
#define T_VCD_VARIABLE_UE0_MCS5 T_ID(313)
|
||||
#define T_VCD_VARIABLE_UE0_MCS6 T_ID(314)
|
||||
#define T_VCD_VARIABLE_UE0_MCS7 T_ID(315)
|
||||
#define T_VCD_VARIABLE_UE0_RB0 T_ID(316)
|
||||
#define T_VCD_VARIABLE_UE0_RB1 T_ID(317)
|
||||
#define T_VCD_VARIABLE_UE0_RB2 T_ID(318)
|
||||
#define T_VCD_VARIABLE_UE0_RB3 T_ID(319)
|
||||
#define T_VCD_VARIABLE_UE0_RB4 T_ID(320)
|
||||
#define T_VCD_VARIABLE_UE0_RB5 T_ID(321)
|
||||
#define T_VCD_VARIABLE_UE0_RB6 T_ID(322)
|
||||
#define T_VCD_VARIABLE_UE0_RB7 T_ID(323)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND0 T_ID(324)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND1 T_ID(325)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND2 T_ID(326)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND3 T_ID(327)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND4 T_ID(328)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND5 T_ID(329)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND6 T_ID(330)
|
||||
#define T_VCD_VARIABLE_UE0_ROUND7 T_ID(331)
|
||||
#define T_VCD_VARIABLE_UE0_SFN0 T_ID(332)
|
||||
#define T_VCD_VARIABLE_UE0_SFN1 T_ID(333)
|
||||
#define T_VCD_VARIABLE_UE0_SFN2 T_ID(334)
|
||||
#define T_VCD_VARIABLE_UE0_SFN3 T_ID(335)
|
||||
#define T_VCD_VARIABLE_UE0_SFN4 T_ID(336)
|
||||
#define T_VCD_VARIABLE_UE0_SFN5 T_ID(337)
|
||||
#define T_VCD_VARIABLE_UE0_SFN6 T_ID(338)
|
||||
#define T_VCD_VARIABLE_UE0_SFN7 T_ID(339)
|
||||
#define T_VCD_VARIABLE_SEND_IF4_SYMBOL T_ID(340)
|
||||
#define T_VCD_VARIABLE_RECV_IF4_SYMBOL T_ID(341)
|
||||
#define T_VCD_VARIABLE_SEND_IF5_PKT_ID T_ID(342)
|
||||
#define T_VCD_VARIABLE_RECV_IF5_PKT_ID T_ID(343)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_SIZE T_ID(344)
|
||||
#define T_VCD_VARIABLE_UE_PDCP_FLUSH_ERR T_ID(345)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS T_ID(346)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS T_ID(347)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_READ_NS_MISSING T_ID(348)
|
||||
#define T_VCD_VARIABLE_UE0_TRX_WRITE_NS_MISSING T_ID(349)
|
||||
#define T_VCD_VARIABLE_CPUID_ENB_THREAD_RXTX T_ID(350)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD T_ID(351)
|
||||
#define T_VCD_VARIABLE_CPUID_RU_THREAD_TX T_ID(352)
|
||||
#define T_VCD_FUNCTION_RT_SLEEP T_ID(353)
|
||||
#define T_VCD_FUNCTION_TRX_READ T_ID(354)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE T_ID(355)
|
||||
#define T_VCD_FUNCTION_TRX_READ_UE T_ID(356)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_UE T_ID(357)
|
||||
#define T_VCD_FUNCTION_TRX_READ_IF T_ID(358)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_IF T_ID(359)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX0 T_ID(360)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_RXTX1 T_ID(361)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_SYNCH T_ID(362)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX0 T_ID(363)
|
||||
#define T_VCD_FUNCTION_UE_THREAD_RXTX1 T_ID(364)
|
||||
#define T_VCD_FUNCTION_TRX_READ_SF9 T_ID(365)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_SF9 T_ID(366)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX0 T_ID(367)
|
||||
#define T_VCD_FUNCTION_UE_SIGNAL_COND_RXTX1 T_ID(368)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX0 T_ID(369)
|
||||
#define T_VCD_FUNCTION_UE_WAIT_COND_RXTX1 T_ID(370)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT0 T_ID(371)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_COND_WAIT1 T_ID(372)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT0 T_ID(373)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_DECREMENT1 T_ID(374)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT0 T_ID(375)
|
||||
#define T_VCD_FUNCTION_UE_LOCK_MUTEX_RXTX_FOR_CNT_INCREMENT1 T_ID(376)
|
||||
#define T_VCD_FUNCTION_SIM_DO_DL_SIGNAL T_ID(377)
|
||||
#define T_VCD_FUNCTION_SIM_DO_UL_SIGNAL T_ID(378)
|
||||
#define T_VCD_FUNCTION_SIM_UE_TRX_READ T_ID(379)
|
||||
#define T_VCD_FUNCTION_eNB_TX T_ID(380)
|
||||
#define T_VCD_FUNCTION_eNB_RX T_ID(381)
|
||||
#define T_VCD_FUNCTION_eNB_TRX T_ID(382)
|
||||
#define T_VCD_FUNCTION_eNB_TM T_ID(383)
|
||||
#define T_VCD_FUNCTION_eNB_RX_SLEEP T_ID(384)
|
||||
#define T_VCD_FUNCTION_eNB_TX_SLEEP T_ID(385)
|
||||
#define T_VCD_FUNCTION_eNB_PROC_SLEEP T_ID(386)
|
||||
#define T_VCD_FUNCTION_TRX_READ_RF T_ID(387)
|
||||
#define T_VCD_FUNCTION_TRX_WRITE_RF T_ID(388)
|
||||
#define T_VCD_FUNCTION_UE_SYNCH T_ID(389)
|
||||
#define T_VCD_FUNCTION_UE_SLOT_FEP T_ID(390)
|
||||
#define T_VCD_FUNCTION_UE_RRC_MEASUREMENTS T_ID(391)
|
||||
#define T_VCD_FUNCTION_UE_GAIN_CONTROL T_ID(392)
|
||||
#define T_VCD_FUNCTION_UE_ADJUST_SYNCH T_ID(393)
|
||||
#define T_VCD_FUNCTION_UE_MEASUREMENT_PROCEDURES T_ID(394)
|
||||
#define T_VCD_FUNCTION_UE_PDCCH_PROCEDURES T_ID(395)
|
||||
#define T_VCD_FUNCTION_UE_PBCH_PROCEDURES T_ID(396)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX T_ID(397)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_TX1 T_ID(398)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX T_ID(399)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPRX1 T_ID(400)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM T_ID(401)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_OFDM1 T_ID(402)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC T_ID(403)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_RU_FEPTX_PREC1 T_ID(404)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC T_ID(405)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_RX_UESPEC1 T_ID(406)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX T_ID(407)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_RX T_ID(408)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_UESPEC T_ID(409)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PUCCH T_ID(410)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_COMMON T_ID(411)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_PRACH T_ID(412)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_TX_ULSCH_RAR T_ID(413)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_ENB_LTE T_ID(414)
|
||||
#define T_VCD_FUNCTION_PHY_PROCEDURES_UE_LTE T_ID(415)
|
||||
#define T_VCD_FUNCTION_PDSCH_THREAD T_ID(416)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD0 T_ID(417)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD1 T_ID(418)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD2 T_ID(419)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD3 T_ID(420)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD4 T_ID(421)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD5 T_ID(422)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD6 T_ID(423)
|
||||
#define T_VCD_FUNCTION_DLSCH_THREAD7 T_ID(424)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING0 T_ID(425)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING1 T_ID(426)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING2 T_ID(427)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING3 T_ID(428)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING4 T_ID(429)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING5 T_ID(430)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING6 T_ID(431)
|
||||
#define T_VCD_FUNCTION_DLSCH_DECODING7 T_ID(432)
|
||||
#define T_VCD_FUNCTION_RX_PDCCH T_ID(433)
|
||||
#define T_VCD_FUNCTION_DCI_DECODING T_ID(434)
|
||||
#define T_VCD_FUNCTION_RX_PHICH T_ID(435)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC T_ID(436)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_SI T_ID(437)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_P T_ID(438)
|
||||
#define T_VCD_FUNCTION_PDSCH_PROC_RA T_ID(439)
|
||||
#define T_VCD_FUNCTION_PHY_UE_CONFIG_SIB2 T_ID(440)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB1_ENB T_ID(441)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_SIB2_ENB T_ID(442)
|
||||
#define T_VCD_FUNCTION_PHY_CONFIG_DEDICATED_ENB T_ID(443)
|
||||
#define T_VCD_FUNCTION_PHY_UE_COMPUTE_PRACH T_ID(444)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_MSG3 T_ID(445)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING0 T_ID(446)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING1 T_ID(447)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING2 T_ID(448)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING3 T_ID(449)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING4 T_ID(450)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING5 T_ID(451)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING6 T_ID(452)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_ULSCH_DECODING7 T_ID(453)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_SFGEN T_ID(454)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PRACH_RX T_ID(455)
|
||||
#define T_VCD_FUNCTION_PHY_RU_PRACH_RX T_ID(456)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_PDCCH_TX T_ID(457)
|
||||
#define T_VCD_FUNCTION_PHY_ENB_RS_TX T_ID(458)
|
||||
#define T_VCD_FUNCTION_UE_GENERATE_PRACH T_ID(459)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_MODULATION T_ID(460)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING T_ID(461)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_ENCODING_FILL_CQI T_ID(462)
|
||||
#define T_VCD_FUNCTION_UE_ULSCH_SCRAMBLING T_ID(463)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_MODULATION T_ID(464)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING T_ID(465)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ENCODING_W T_ID(466)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_SCRAMBLING T_ID(467)
|
||||
#define T_VCD_FUNCTION_ENB_BEAM_PRECODING T_ID(468)
|
||||
#define T_VCD_FUNCTION_ENB_OFDM_MODULATION T_ID(469)
|
||||
#define T_VCD_FUNCTION_MACPHY_INIT T_ID(470)
|
||||
#define T_VCD_FUNCTION_MACPHY_EXIT T_ID(471)
|
||||
#define T_VCD_FUNCTION_ENB_DLSCH_ULSCH_SCHEDULER T_ID(472)
|
||||
#define T_VCD_FUNCTION_FILL_RAR T_ID(473)
|
||||
#define T_VCD_FUNCTION_TERMINATE_RA_PROC T_ID(474)
|
||||
#define T_VCD_FUNCTION_INITIATE_RA_PROC T_ID(475)
|
||||
#define T_VCD_FUNCTION_CANCEL_RA_PROC T_ID(476)
|
||||
#define T_VCD_FUNCTION_GET_DCI_SDU T_ID(477)
|
||||
#define T_VCD_FUNCTION_GET_DLSCH_SDU T_ID(478)
|
||||
#define T_VCD_FUNCTION_RX_SDU T_ID(479)
|
||||
#define T_VCD_FUNCTION_MRBCH_PHY_SYNC_FAILURE T_ID(480)
|
||||
#define T_VCD_FUNCTION_SR_INDICATION T_ID(481)
|
||||
#define T_VCD_FUNCTION_DLSCH_PREPROCESSOR T_ID(482)
|
||||
#define T_VCD_FUNCTION_SCHEDULE_DLSCH T_ID(483)
|
||||
#define T_VCD_FUNCTION_FILL_DLSCH_DCI T_ID(484)
|
||||
#define T_VCD_FUNCTION_OUT_OF_SYNC_IND T_ID(485)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_SI T_ID(486)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_PCCH T_ID(487)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_CCCH T_ID(488)
|
||||
#define T_VCD_FUNCTION_UE_DECODE_BCCH T_ID(489)
|
||||
#define T_VCD_FUNCTION_UE_SEND_SDU T_ID(490)
|
||||
#define T_VCD_FUNCTION_UE_GET_SDU T_ID(491)
|
||||
#define T_VCD_FUNCTION_UE_GET_RACH T_ID(492)
|
||||
#define T_VCD_FUNCTION_UE_PROCESS_RAR T_ID(493)
|
||||
#define T_VCD_FUNCTION_UE_SCHEDULER T_ID(494)
|
||||
#define T_VCD_FUNCTION_UE_GET_SR T_ID(495)
|
||||
#define T_VCD_FUNCTION_UE_SEND_MCH_SDU T_ID(496)
|
||||
#define T_VCD_FUNCTION_RLC_DATA_REQ T_ID(497)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_STATUS_IND T_ID(498)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_REQ T_ID(499)
|
||||
#define T_VCD_FUNCTION_MAC_RLC_DATA_IND T_ID(500)
|
||||
#define T_VCD_FUNCTION_RLC_UM_TRY_REASSEMBLY T_ID(501)
|
||||
#define T_VCD_FUNCTION_RLC_UM_CHECK_TIMER_DAR_TIME_OUT T_ID(502)
|
||||
#define T_VCD_FUNCTION_RLC_UM_RECEIVE_PROCESS_DAR T_ID(503)
|
||||
#define T_VCD_FUNCTION_PDCP_RUN T_ID(504)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_REQ T_ID(505)
|
||||
#define T_VCD_FUNCTION_PDCP_DATA_IND T_ID(506)
|
||||
#define T_VCD_FUNCTION_PDCP_APPLY_SECURITY T_ID(507)
|
||||
#define T_VCD_FUNCTION_PDCP_VALIDATE_SECURITY T_ID(508)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ T_ID(509)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_READ_BUFFER T_ID(510)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH T_ID(511)
|
||||
#define T_VCD_FUNCTION_PDCP_FIFO_FLUSH_BUFFER T_ID(512)
|
||||
#define T_VCD_FUNCTION_RRC_RX_TX T_ID(513)
|
||||
#define T_VCD_FUNCTION_RRC_MAC_CONFIG T_ID(514)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SIB1 T_ID(515)
|
||||
#define T_VCD_FUNCTION_RRC_UE_DECODE_SI T_ID(516)
|
||||
#define T_VCD_FUNCTION_GTPV1U_ENB_TASK T_ID(517)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_UDP_REQ T_ID(518)
|
||||
#define T_VCD_FUNCTION_GTPV1U_PROCESS_TUNNEL_DATA_REQ T_ID(519)
|
||||
#define T_VCD_FUNCTION_UDP_ENB_TASK T_ID(520)
|
||||
#define T_VCD_FUNCTION_EMU_TRANSPORT T_ID(521)
|
||||
#define T_VCD_FUNCTION_LOG_RECORD T_ID(522)
|
||||
#define T_VCD_FUNCTION_ITTI_ENQUEUE_MESSAGE T_ID(523)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE T_ID(524)
|
||||
#define T_VCD_FUNCTION_ITTI_DUMP_ENQUEUE_MESSAGE_MALLOC T_ID(525)
|
||||
#define T_VCD_FUNCTION_ITTI_RELAY_THREAD T_ID(526)
|
||||
#define T_VCD_FUNCTION_TEST T_ID(527)
|
||||
#define T_VCD_FUNCTION_SEND_IF4 T_ID(528)
|
||||
#define T_VCD_FUNCTION_RECV_IF4 T_ID(529)
|
||||
#define T_VCD_FUNCTION_SEND_IF5 T_ID(530)
|
||||
#define T_VCD_FUNCTION_RECV_IF5 T_ID(531)
|
||||
#define T_VCD_FUNCTION_TRX_COMPR_IF T_ID(532)
|
||||
#define T_VCD_FUNCTION_TRX_DECOMPR_IF T_ID(533)
|
||||
#define T_VCD_FUNCTION_NFAPI T_ID(534)
|
||||
#define T_VCD_FUNCTION_GENERATE_PCFICH T_ID(535)
|
||||
#define T_VCD_FUNCTION_GENERATE_DCI0 T_ID(536)
|
||||
#define T_VCD_FUNCTION_GENERATE_DLSCH T_ID(537)
|
||||
#define T_VCD_FUNCTION_GENERATE_PHICH T_ID(538)
|
||||
#define T_VCD_FUNCTION_PDCCH_SCRAMBLING T_ID(539)
|
||||
#define T_VCD_FUNCTION_PDCCH_MODULATION T_ID(540)
|
||||
#define T_VCD_FUNCTION_PDCCH_INTERLEAVING T_ID(541)
|
||||
#define T_VCD_FUNCTION_PDCCH_TX T_ID(542)
|
||||
#define T_NUMBER_OF_IDS 543
|
||||
|
||||
@@ -621,7 +621,7 @@ ID = LEGACY_OCM_DEBUG
|
||||
FORMAT = string,log
|
||||
ID = LEGACY_OCM_TRACE
|
||||
DESC = OCM legacy logs - trace level
|
||||
GROUP = ALL:LEGACY_OCM:LEGACY_GROUP_TRACE:LEGACY
|
||||
OGROUP = ALL:LEGACY_OCM:LEGACY_GROUP_TRACE:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_OIP_INFO
|
||||
@@ -838,6 +838,36 @@ ID = LEGACY_CLI_TRACE
|
||||
GROUP = ALL:LEGACY_CLI:LEGACY_GROUP_TRACE:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_PROTO_AGENT_DEBUG
|
||||
DESC = PROTO AGENT DEBUG LEVEL
|
||||
GROUP = ALL:LEGACY_PROTO:LEGACY_GROUP_DEBUG:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_PROTO_AGENT_INFO
|
||||
DESC = PROTO AGENT INFO LEVEL
|
||||
GROUP = ALL:LEGACY_PROTO:LEGACY_GROUP_INFO:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_PROTO_AGENT_ERROR
|
||||
DESC = PROTO AGENT ERROR LEVEL
|
||||
GROUP = ALL:LEGACY_PROTO:LEGACY_GROUP_ERROR:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_F1U_DEBUG
|
||||
DESC = F1U DEBUG LEVEL
|
||||
GROUP = ALL:LEGACY_F1U:LEGACY_GROUP_DEBUG:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_F1U_INFO
|
||||
DESC = F1U INFO LEVEL
|
||||
GROUP = ALL:LEGACY_F1U:LEGACY_GROUP_INFO:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
ID = LEGACY_F1U_ERROR
|
||||
DESC = F1U ERROR LEVEL
|
||||
GROUP = ALL:LEGACY_F1U:LEGACY_GROUP_ERROR:LEGACY
|
||||
FORMAT = string,log
|
||||
|
||||
#################
|
||||
#### UE LOGS ####
|
||||
#################
|
||||
|
||||
@@ -19,59 +19,22 @@
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
/* Messages for S1AP logging */
|
||||
MESSAGE_DEF(S1AP_UPLINK_NAS_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_uplink_nas_log)
|
||||
MESSAGE_DEF(S1AP_UE_CAPABILITY_IND_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_capability_ind_log)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_initial_context_setup_log)
|
||||
MESSAGE_DEF(S1AP_NAS_NON_DELIVERY_IND_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_nas_non_delivery_ind_log)
|
||||
MESSAGE_DEF(S1AP_DOWNLINK_NAS_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_downlink_nas_log)
|
||||
MESSAGE_DEF(S1AP_S1_SETUP_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_s1_setup_log)
|
||||
MESSAGE_DEF(S1AP_INITIAL_UE_MESSAGE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_initial_ue_message_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_REQ_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_req_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMMAND_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_command_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMPLETE_LOG, MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_complete_log)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_ue_context_release_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_setup_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_setup_response_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_modify_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_modify_response_log)
|
||||
MESSAGE_DEF(S1AP_PAGING_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_paging_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_REQUEST_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_release_request_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_RESPONSE_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_e_rab_release_response_log)
|
||||
MESSAGE_DEF(S1AP_E_RAB_ERROR_INDICATION_LOG , MESSAGE_PRIORITY_MED, IttiMsgText , s1ap_error_indication_log)
|
||||
/* eNB application layer -> F1AP messages */
|
||||
MESSAGE_DEF(F1AP_SETUP_REQ , MESSAGE_PRIORITY_MED, f1ap_setup_req_t , f1ap_setup_req)
|
||||
|
||||
/* eNB application layer -> S1AP messages */
|
||||
MESSAGE_DEF(S1AP_REGISTER_ENB_REQ , MESSAGE_PRIORITY_MED, s1ap_register_enb_req_t , s1ap_register_enb_req)
|
||||
/* F1AP -> eNB application layer messages */
|
||||
MESSAGE_DEF(F1AP_SETUP_RESP , MESSAGE_PRIORITY_MED, f1ap_setup_resp_t , f1ap_setup_resp)
|
||||
MESSAGE_DEF(F1AP_SETUP_FAILURE , MESSAGE_PRIORITY_MED, f1ap_setup_failure_t , f1ap_setup_failure)
|
||||
|
||||
/* S1AP -> eNB application layer messages */
|
||||
MESSAGE_DEF(S1AP_REGISTER_ENB_CNF , MESSAGE_PRIORITY_MED, s1ap_register_enb_cnf_t , s1ap_register_enb_cnf)
|
||||
MESSAGE_DEF(S1AP_DEREGISTERED_ENB_IND , MESSAGE_PRIORITY_MED, s1ap_deregistered_enb_ind_t , s1ap_deregistered_enb_ind)
|
||||
/* MAC -> F1AP messages */
|
||||
MESSAGE_DEF(F1AP_INITIAL_UL_RRC_MESSAGE , MESSAGE_PRIORITY_MED, f1ap_initial_ul_rrc_message_t , f1ap_initial_ul_rrc_message)
|
||||
MESSAGE_DEF(F1AP_UL_RRC_MESSAGE , MESSAGE_PRIORITY_MED, f1ap_ul_rrc_message_t , f1ap_ul_rrc_message)
|
||||
//MESSAGE_DEF(F1AP_INITIAL_CONTEXT_SETUP_RESP, MESSAGE_PRIORITY_MED, f1ap_initial_context_setup_resp_t, f1ap_initial_context_setup_resp)
|
||||
//MESSAGE_DEF(F1AP_INITIAL_CONTEXT_SETUP_FAILURE, MESSAGE_PRIORITY_MED, f1ap_initial_context_setup_failure_t, f1ap_initial_context_setup_failure)
|
||||
|
||||
/* RRC -> S1AP messages */
|
||||
MESSAGE_DEF(S1AP_NAS_FIRST_REQ , MESSAGE_PRIORITY_MED, s1ap_nas_first_req_t , s1ap_nas_first_req)
|
||||
MESSAGE_DEF(S1AP_UPLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_uplink_nas_t , s1ap_uplink_nas)
|
||||
MESSAGE_DEF(S1AP_UE_CAPABILITIES_IND , MESSAGE_PRIORITY_MED, s1ap_ue_cap_info_ind_t , s1ap_ue_cap_info_ind)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_RESP, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_resp_t, s1ap_initial_context_setup_resp)
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_FAIL, MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_fail_t, s1ap_initial_context_setup_fail)
|
||||
MESSAGE_DEF(S1AP_NAS_NON_DELIVERY_IND , MESSAGE_PRIORITY_MED, s1ap_nas_non_delivery_ind_t , s1ap_nas_non_delivery_ind)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_RESP , MESSAGE_PRIORITY_MED, s1ap_ue_release_resp_t , s1ap_ue_release_resp)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMPLETE, MESSAGE_PRIORITY_MED, s1ap_ue_release_complete_t , s1ap_ue_release_complete)
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_RESP , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_resp_t , s1ap_ue_ctxt_modification_resp)
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_FAIL , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_fail_t , s1ap_ue_ctxt_modification_fail)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_RESP , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_resp_t , s1ap_e_rab_setup_resp)
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQUEST_FAIL , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_req_fail_t , s1ap_e_rab_setup_request_fail)
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_RESP , MESSAGE_PRIORITY_MED, s1ap_e_rab_modify_resp_t , s1ap_e_rab_modify_resp)
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_RESPONSE , MESSAGE_PRIORITY_MED, s1ap_e_rab_release_resp_t , s1ap_e_rab_release_resp)
|
||||
|
||||
/* S1AP -> RRC messages */
|
||||
MESSAGE_DEF(S1AP_DOWNLINK_NAS , MESSAGE_PRIORITY_MED, s1ap_downlink_nas_t , s1ap_downlink_nas )
|
||||
MESSAGE_DEF(S1AP_INITIAL_CONTEXT_SETUP_REQ , MESSAGE_PRIORITY_MED, s1ap_initial_context_setup_req_t , s1ap_initial_context_setup_req )
|
||||
MESSAGE_DEF(S1AP_UE_CTXT_MODIFICATION_REQ , MESSAGE_PRIORITY_MED, s1ap_ue_ctxt_modification_req_t , s1ap_ue_ctxt_modification_req)
|
||||
MESSAGE_DEF(S1AP_PAGING_IND , MESSAGE_PRIORITY_MED, s1ap_paging_ind_t , s1ap_paging_ind )
|
||||
MESSAGE_DEF(S1AP_E_RAB_SETUP_REQ , MESSAGE_PRIORITY_MED, s1ap_e_rab_setup_req_t , s1ap_e_rab_setup_req )
|
||||
MESSAGE_DEF(S1AP_E_RAB_MODIFY_REQ , MESSAGE_PRIORITY_MED, s1ap_e_rab_modify_req_t , s1ap_e_rab_modify_req )
|
||||
MESSAGE_DEF(S1AP_E_RAB_RELEASE_COMMAND , MESSAGE_PRIORITY_MED, s1ap_e_rab_release_command_t , s1ap_e_rab_release_command)
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_COMMAND, MESSAGE_PRIORITY_MED, s1ap_ue_release_command_t , s1ap_ue_release_command)
|
||||
/* RRC -> F1AP messages */
|
||||
MESSAGE_DEF(F1AP_DL_RRC_MESSAGE , MESSAGE_PRIORITY_MED, f1ap_dl_rrc_message_t , f1ap_downlink_rrc_message )
|
||||
//MESSAGE_DEF(F1AP_INITIAL_CONTEXT_SETUP_REQ , MESSAGE_PRIORITY_MED, f1ap_initial_context_setup_req_t , f1ap_initial_context_setup_req )
|
||||
|
||||
|
||||
/* S1AP <-> RRC messages (can be initiated either by MME or eNB) */
|
||||
MESSAGE_DEF(S1AP_UE_CONTEXT_RELEASE_REQ , MESSAGE_PRIORITY_MED, s1ap_ue_release_req_t , s1ap_ue_release_req)
|
||||
|
||||
@@ -19,628 +19,187 @@
|
||||
* contact@openairinterface.org
|
||||
*/
|
||||
|
||||
#ifndef S1AP_MESSAGES_TYPES_H_
|
||||
#define S1AP_MESSAGES_TYPES_H_
|
||||
#ifndef F1AP_MESSAGES_TYPES_H_
|
||||
#define F1AP_MESSAGES_TYPES_H_
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// Defines to access message fields.
|
||||
|
||||
#define S1AP_REGISTER_ENB_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_req
|
||||
#define F1AP_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.f1ap_setup_req
|
||||
#define F1AP_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.f1ap_setup_resp
|
||||
#define F1AP_SETUP_FAILURE(mSGpTR) (mSGpTR)->ittiMsg.f1ap_setup_failure
|
||||
|
||||
#define S1AP_REGISTER_ENB_CNF(mSGpTR) (mSGpTR)->ittiMsg.s1ap_register_enb_cnf
|
||||
#define S1AP_DEREGISTERED_ENB_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_deregistered_enb_ind
|
||||
#define F1AP_INITIAL_UL_RRC_MESSAGE(mSGpTR) (mSGpTR)->ittiMsg.f1ap_initial_ul_rrc_message
|
||||
#define F1AP_UL_RRC_MESSAGE(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ul_rrc_message
|
||||
#define F1AP_UE_CONTEXT_RELEASE_RESP(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ue_context_release_resp
|
||||
#define F1AP_UE_CONTEXT_MODIFICATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ue_context_modification_resp
|
||||
#define F1AP_UE_CONTEXT_MODIFICATION_FAIL(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ue_context_modification_fail
|
||||
|
||||
#define S1AP_NAS_FIRST_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_nas_first_req
|
||||
#define S1AP_UPLINK_NAS(mSGpTR) (mSGpTR)->ittiMsg.s1ap_uplink_nas
|
||||
#define S1AP_UE_CAPABILITIES_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_cap_info_ind
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_resp
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_fail
|
||||
#define S1AP_UE_CONTEXT_RELEASE_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_resp
|
||||
#define S1AP_NAS_NON_DELIVERY_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_nas_non_delivery_ind
|
||||
#define S1AP_UE_CTXT_MODIFICATION_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_resp
|
||||
#define S1AP_UE_CTXT_MODIFICATION_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_fail
|
||||
#define S1AP_E_RAB_SETUP_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_resp
|
||||
#define S1AP_E_RAB_SETUP_FAIL(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_req_fail
|
||||
#define S1AP_E_RAB_MODIFY_RESP(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modify_resp
|
||||
|
||||
#define S1AP_DOWNLINK_NAS(mSGpTR) (mSGpTR)->ittiMsg.s1ap_downlink_nas
|
||||
#define S1AP_INITIAL_CONTEXT_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_initial_context_setup_req
|
||||
#define S1AP_UE_CTXT_MODIFICATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_ctxt_modification_req
|
||||
#define S1AP_UE_CONTEXT_RELEASE_COMMAND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_command
|
||||
#define S1AP_UE_CONTEXT_RELEASE_COMPLETE(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_complete
|
||||
#define S1AP_E_RAB_SETUP_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_setup_req
|
||||
#define S1AP_E_RAB_MODIFY_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_modify_req
|
||||
#define S1AP_PAGING_IND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_paging_ind
|
||||
|
||||
#define S1AP_UE_CONTEXT_RELEASE_REQ(mSGpTR) (mSGpTR)->ittiMsg.s1ap_ue_release_req
|
||||
#define S1AP_E_RAB_RELEASE_COMMAND(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_release_command
|
||||
#define S1AP_E_RAB_RELEASE_RESPONSE(mSGpTR) (mSGpTR)->ittiMsg.s1ap_e_rab_release_resp
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
/* Maximum number of e-rabs to be setup/deleted in a single message.
|
||||
* Even if only one bearer will be modified by message.
|
||||
*/
|
||||
#define S1AP_MAX_E_RAB 11
|
||||
#define F1AP_DL_RRC_MESSAGE(mSGpTR) (mSGpTR)->ittiMsg.f1ap_dl_rrc_message
|
||||
#define F1AP_UE_CONTEXT_RELEASE_REQ(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ue_context_release_req
|
||||
#define F1AP_UE_CONTEXT_MODIFICATION_REQ(mSGpTR) (mSGpTR)->ittiMsg.f1ap_ue_context_modification_req
|
||||
|
||||
/* Length of the transport layer address string
|
||||
* 160 bits / 8 bits by char.
|
||||
*/
|
||||
#define S1AP_TRANSPORT_LAYER_ADDRESS_SIZE (160 / 8)
|
||||
#define F1AP_TRANSPORT_LAYER_ADDRESS_SIZE (160 / 8)
|
||||
|
||||
#define S1AP_MAX_NB_MME_IP_ADDRESS 10
|
||||
#define S1AP_IMSI_LENGTH 16
|
||||
#define F1AP_MAX_NB_CU_IP_ADDRESS 10
|
||||
|
||||
/* Security key length used within eNB
|
||||
* Even if only 16 bytes will be effectively used,
|
||||
* the key length is 32 bytes (256 bits)
|
||||
*/
|
||||
#define SECURITY_KEY_LENGTH 32
|
||||
#ifndef OCP_FRAMEWORK
|
||||
typedef enum cell_type_e {
|
||||
CELL_MACRO_ENB,
|
||||
CELL_HOME_ENB
|
||||
} cell_type_t;
|
||||
// Note this should be 512 from maxval in 38.473
|
||||
#define F1AP_MAX_NB_CELLS 2
|
||||
|
||||
typedef enum paging_drx_e {
|
||||
PAGING_DRX_32 = 0x0,
|
||||
PAGING_DRX_64 = 0x1,
|
||||
PAGING_DRX_128 = 0x2,
|
||||
PAGING_DRX_256 = 0x3
|
||||
} paging_drx_t;
|
||||
typedef struct f1ap_setup_req_s {
|
||||
|
||||
/* Lower value codepoint
|
||||
* indicates higher priority.
|
||||
*/
|
||||
typedef enum paging_priority_s {
|
||||
PAGING_PRIO_LEVEL1 = 0,
|
||||
PAGING_PRIO_LEVEL2 = 1,
|
||||
PAGING_PRIO_LEVEL3 = 2,
|
||||
PAGING_PRIO_LEVEL4 = 3,
|
||||
PAGING_PRIO_LEVEL5 = 4,
|
||||
PAGING_PRIO_LEVEL6 = 5,
|
||||
PAGING_PRIO_LEVEL7 = 6,
|
||||
PAGING_PRIO_LEVEL8 = 7
|
||||
} paging_priority_t;
|
||||
|
||||
typedef enum cn_domain_s {
|
||||
CN_DOMAIN_PS = 1,
|
||||
CN_DOMAIN_CS = 2
|
||||
} cn_domain_t;
|
||||
#endif
|
||||
|
||||
typedef struct net_ip_address_s {
|
||||
unsigned ipv4:1;
|
||||
unsigned ipv6:1;
|
||||
char ipv4_address[16];
|
||||
char ipv6_address[46];
|
||||
} net_ip_address_t;
|
||||
|
||||
typedef uint64_t bitrate_t;
|
||||
|
||||
typedef struct ambr_s {
|
||||
bitrate_t br_ul;
|
||||
bitrate_t br_dl;
|
||||
} ambr_t;
|
||||
|
||||
#ifndef OCP_FRAMEWORK
|
||||
typedef enum priority_level_s {
|
||||
PRIORITY_LEVEL_SPARE = 0,
|
||||
PRIORITY_LEVEL_HIGHEST = 1,
|
||||
PRIORITY_LEVEL_LOWEST = 14,
|
||||
PRIORITY_LEVEL_NO_PRIORITY = 15
|
||||
} priority_level_t;
|
||||
|
||||
typedef enum pre_emp_capability_e {
|
||||
PRE_EMPTION_CAPABILITY_ENABLED = 0,
|
||||
PRE_EMPTION_CAPABILITY_DISABLED = 1,
|
||||
PRE_EMPTION_CAPABILITY_MAX,
|
||||
} pre_emp_capability_t;
|
||||
|
||||
typedef enum pre_emp_vulnerability_e {
|
||||
PRE_EMPTION_VULNERABILITY_ENABLED = 0,
|
||||
PRE_EMPTION_VULNERABILITY_DISABLED = 1,
|
||||
PRE_EMPTION_VULNERABILITY_MAX,
|
||||
} pre_emp_vulnerability_t;
|
||||
#endif
|
||||
|
||||
typedef struct allocation_retention_priority_s {
|
||||
priority_level_t priority_level;
|
||||
pre_emp_capability_t pre_emp_capability;
|
||||
pre_emp_vulnerability_t pre_emp_vulnerability;
|
||||
} allocation_retention_priority_t;
|
||||
|
||||
typedef struct security_capabilities_s {
|
||||
uint16_t encryption_algorithms;
|
||||
uint16_t integrity_algorithms;
|
||||
} security_capabilities_t;
|
||||
|
||||
/* Provides the establishment cause for the RRC connection request as provided
|
||||
* by the upper layers. W.r.t. the cause value names: highPriorityAccess
|
||||
* concerns AC11..AC15, ‘mt’ stands for ‘Mobile Terminating’ and ‘mo’ for
|
||||
* 'Mobile Originating'. Defined in TS 36.331.
|
||||
*/
|
||||
typedef enum rrc_establishment_cause_e {
|
||||
RRC_CAUSE_EMERGENCY = 0x0,
|
||||
RRC_CAUSE_HIGH_PRIO_ACCESS = 0x1,
|
||||
RRC_CAUSE_MT_ACCESS = 0x2,
|
||||
RRC_CAUSE_MO_SIGNALLING = 0x3,
|
||||
RRC_CAUSE_MO_DATA = 0x4,
|
||||
#if defined(UPDATE_RELEASE_10)
|
||||
RRC_CAUSE_DELAY_TOLERANT_ACCESS = 0x5,
|
||||
#endif
|
||||
RRC_CAUSE_LAST
|
||||
} rrc_establishment_cause_t;
|
||||
|
||||
typedef struct s1ap_gummei_s {
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_len;
|
||||
uint8_t mme_code;
|
||||
uint16_t mme_group_id;
|
||||
} s1ap_gummei_t;
|
||||
|
||||
typedef struct s1ap_imsi_s {
|
||||
uint8_t buffer[S1AP_IMSI_LENGTH];
|
||||
uint8_t length;
|
||||
} s1ap_imsi_t;
|
||||
|
||||
typedef struct s_tmsi_s {
|
||||
uint8_t mme_code;
|
||||
uint32_t m_tmsi;
|
||||
} s_tmsi_t;
|
||||
|
||||
typedef enum ue_paging_identity_presenceMask_e {
|
||||
UE_PAGING_IDENTITY_NONE = 0,
|
||||
UE_PAGING_IDENTITY_imsi = (1 << 1),
|
||||
UE_PAGING_IDENTITY_s_tmsi = (1 << 2),
|
||||
} ue_paging_identity_presenceMask_t;
|
||||
|
||||
typedef struct ue_paging_identity_s {
|
||||
ue_paging_identity_presenceMask_t presenceMask;
|
||||
union {
|
||||
s1ap_imsi_t imsi;
|
||||
s_tmsi_t s_tmsi;
|
||||
} choice;
|
||||
} ue_paging_identity_t;
|
||||
|
||||
typedef enum ue_identities_presenceMask_e {
|
||||
UE_IDENTITIES_NONE = 0,
|
||||
UE_IDENTITIES_s_tmsi = 1 << 1,
|
||||
UE_IDENTITIES_gummei = 1 << 2,
|
||||
} ue_identities_presenceMask_t;
|
||||
|
||||
typedef struct ue_identity_s {
|
||||
ue_identities_presenceMask_t presenceMask;
|
||||
s_tmsi_t s_tmsi;
|
||||
s1ap_gummei_t gummei;
|
||||
} ue_identity_t;
|
||||
|
||||
typedef struct nas_pdu_s {
|
||||
/* Octet string data */
|
||||
uint8_t *buffer;
|
||||
/* Length of the octet string */
|
||||
uint32_t length;
|
||||
} nas_pdu_t, ue_radio_cap_t;
|
||||
|
||||
typedef struct transport_layer_addr_s {
|
||||
/* Length of the transport layer address buffer in bits. S1AP layer received a
|
||||
* bit string<1..160> containing one of the following addresses: ipv4,
|
||||
* ipv6, or ipv4 and ipv6. The layer doesn't interpret the buffer but
|
||||
* silently forward it to S1-U.
|
||||
*/
|
||||
uint8_t length;
|
||||
uint8_t buffer[20]; // in network byte order
|
||||
} transport_layer_addr_t;
|
||||
|
||||
#define TRANSPORT_LAYER_ADDR_COPY(dEST,sOURCE) \
|
||||
do { \
|
||||
AssertFatal(sOURCE.len <= 20); \
|
||||
memcpy(dEST.buffer, sOURCE.buffer, sOURCE.len); \
|
||||
dEST.length = sOURCE.length; \
|
||||
} while (0)
|
||||
|
||||
typedef struct e_rab_level_qos_parameter_s {
|
||||
uint8_t qci;
|
||||
|
||||
allocation_retention_priority_t allocation_retention_priority;
|
||||
} e_rab_level_qos_parameter_t;
|
||||
|
||||
typedef struct e_rab_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
/* Quality of service for this e_rab */
|
||||
e_rab_level_qos_parameter_t qos;
|
||||
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
||||
nas_pdu_t nas_pdu;
|
||||
/* The transport layer address for the IP packets */
|
||||
transport_layer_addr_t sgw_addr;
|
||||
/* S-GW Tunnel endpoint identifier */
|
||||
uint32_t gtp_teid;
|
||||
} e_rab_t;
|
||||
|
||||
typedef struct e_rab_setup_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
|
||||
/* The transport layer address for the IP packets */
|
||||
transport_layer_addr_t eNB_addr;
|
||||
|
||||
/* S-GW Tunnel endpoint identifier */
|
||||
uint32_t gtp_teid;
|
||||
} e_rab_setup_t;
|
||||
|
||||
typedef struct e_rab_modify_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
} e_rab_modify_t;
|
||||
|
||||
typedef enum S1ap_Cause_e {
|
||||
S1AP_CAUSE_NOTHING, /* No components present */
|
||||
S1AP_CAUSE_RADIO_NETWORK,
|
||||
S1AP_CAUSE_TRANSPORT,
|
||||
S1AP_CAUSE_NAS,
|
||||
S1AP_CAUSE_PROTOCOL,
|
||||
S1AP_CAUSE_MISC,
|
||||
/* Extensions may appear below */
|
||||
|
||||
} s1ap_Cause_t;
|
||||
|
||||
typedef struct e_rab_failed_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
/* Cause of the failure */
|
||||
// cause_t cause;
|
||||
s1ap_Cause_t cause;
|
||||
uint8_t cause_value;
|
||||
} e_rab_failed_t;
|
||||
|
||||
typedef enum s1ap_ue_ctxt_modification_present_s {
|
||||
S1AP_UE_CONTEXT_MODIFICATION_SECURITY_KEY = (1 << 0),
|
||||
S1AP_UE_CONTEXT_MODIFICATION_UE_AMBR = (1 << 1),
|
||||
S1AP_UE_CONTEXT_MODIFICATION_UE_SECU_CAP = (1 << 2),
|
||||
} s1ap_ue_ctxt_modification_present_t;
|
||||
|
||||
typedef enum s1ap_paging_ind_present_s {
|
||||
S1AP_PAGING_IND_PAGING_DRX = (1 << 0),
|
||||
S1AP_PAGING_IND_PAGING_PRIORITY = (1 << 1),
|
||||
} s1ap_paging_ind_present_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// eNB application layer -> S1AP messages
|
||||
typedef struct s1ap_register_enb_req_s {
|
||||
/* Unique eNB_id to identify the eNB within EPC.
|
||||
* For macro eNB ids this field should be 20 bits long.
|
||||
* For home eNB ids this field should be 28 bits long.
|
||||
*/
|
||||
uint32_t eNB_id;
|
||||
/* The type of the cell */
|
||||
enum cell_type_e cell_type;
|
||||
|
||||
/* Optional name for the cell
|
||||
* NOTE: the name can be NULL (i.e no name) and will be cropped to 150
|
||||
* characters.
|
||||
*/
|
||||
char *eNB_name;
|
||||
|
||||
/* Tracking area code */
|
||||
uint16_t tac;
|
||||
|
||||
/* Mobile Country Code
|
||||
* Mobile Network Code
|
||||
*/
|
||||
uint16_t mcc;
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_digit_length;
|
||||
|
||||
/* Default Paging DRX of the eNB as defined in TS 36.304 */
|
||||
paging_drx_t default_drx;
|
||||
// Midhaul networking parameters
|
||||
|
||||
/* The eNB IP address to bind */
|
||||
net_ip_address_t enb_ip_address;
|
||||
|
||||
/* Nb of MME to connect to */
|
||||
uint8_t nb_mme;
|
||||
/* List of MME to connect to */
|
||||
net_ip_address_t mme_ip_address[S1AP_MAX_NB_MME_IP_ADDRESS];
|
||||
char CU_ipv4_address[16];
|
||||
int CU_port;
|
||||
|
||||
/* Number of SCTP streams used for a mme association */
|
||||
uint16_t sctp_in_streams;
|
||||
uint16_t sctp_out_streams;
|
||||
} s1ap_register_enb_req_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP -> eNB application layer messages
|
||||
typedef struct s1ap_register_enb_cnf_s {
|
||||
/* Nb of MME connected */
|
||||
uint8_t nb_mme;
|
||||
} s1ap_register_enb_cnf_t;
|
||||
// F1_Setup_Req payload
|
||||
uint32_t gNB_DU_id;
|
||||
char *gNB_DU_name;
|
||||
|
||||
typedef struct s1ap_deregistered_enb_ind_s {
|
||||
/* Nb of MME connected */
|
||||
uint8_t nb_mme;
|
||||
} s1ap_deregistered_enb_ind_t;
|
||||
/// number of DU cells available
|
||||
uint16_t num_cells_available; //0< num_cells_to_available <= 512;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// RRC -> S1AP messages
|
||||
// Served Cell Information
|
||||
/* Tracking area code */
|
||||
uint16_t tac[F1AP_MAX_NB_CELLS];
|
||||
|
||||
/* The NAS First Req is the first message exchanged between RRC and S1AP
|
||||
* for an UE.
|
||||
* The rnti uniquely identifies an UE within a cell. Later the enb_ue_s1ap_id
|
||||
* will be the unique identifier used between RRC and S1AP.
|
||||
*/
|
||||
typedef struct s1ap_nas_first_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* Establishment cause as sent by UE */
|
||||
rrc_establishment_cause_t establishment_cause;
|
||||
|
||||
/* NAS PDU */
|
||||
nas_pdu_t nas_pdu;
|
||||
|
||||
/* If this flag is set S1AP layer is expecting the GUMMEI. If = 0,
|
||||
* the temporary s-tmsi is used.
|
||||
/* Mobile Country Codes
|
||||
* Mobile Network Codes
|
||||
*/
|
||||
ue_identity_t ue_identity;
|
||||
} s1ap_nas_first_req_t;
|
||||
uint16_t mcc[F1AP_MAX_NB_CELLS];
|
||||
uint16_t mnc[F1AP_MAX_NB_CELLS];
|
||||
uint8_t mnc_digit_length[F1AP_MAX_NB_CELLS];
|
||||
|
||||
typedef struct s1ap_uplink_nas_s {
|
||||
/* Unique UE identifier within an eNB */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
// NR Physical Cell Ids
|
||||
uint16_t nr_pci[F1AP_MAX_NB_CELLS];
|
||||
// NR Cell Ids
|
||||
uint8_t nr_cellid[F1AP_MAX_NB_CELLS];
|
||||
// Number of slide support items (max 16, could be increased to as much as 1024)
|
||||
uint16_t num_ssi[F1AP_MAX_NB_CELLS];
|
||||
uint8_t sst[F1AP_MAX_NB_CELLS][16];
|
||||
uint8_t sd[F1AP_MAX_NB_CELLS][16];
|
||||
|
||||
/* NAS pdu */
|
||||
nas_pdu_t nas_pdu;
|
||||
} s1ap_uplink_nas_t;
|
||||
union {
|
||||
struct {
|
||||
uint32_t ul_nr_arfcn;
|
||||
uint8_t ul_scs;
|
||||
uint8_t ul_nrb;
|
||||
|
||||
typedef struct s1ap_ue_cap_info_ind_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
ue_radio_cap_t ue_radio_cap;
|
||||
} s1ap_ue_cap_info_ind_t;
|
||||
uint32_t dl_nr_arfcn;
|
||||
uint8_t dl_scs;
|
||||
uint8_t dl_nrb;
|
||||
|
||||
typedef struct s1ap_initial_context_setup_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
uint32_t sul_active;
|
||||
uint32_t sul_nr_arfcn;
|
||||
uint8_t sul_scs;
|
||||
uint8_t sul_nrb;
|
||||
|
||||
/* Number of e_rab setup-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab setup-ed by RRC layers */
|
||||
e_rab_setup_t e_rabs[S1AP_MAX_E_RAB];
|
||||
uint8_t num_frequency_bands;
|
||||
uint16_t nr_band[32];
|
||||
uint8_t num_sul_frequency_bands;
|
||||
uint16_t nr_sul_band[32];
|
||||
} fdd;
|
||||
struct {
|
||||
|
||||
/* Number of e_rab failed to be setup in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be setup */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_initial_context_setup_resp_t;
|
||||
uint32_t nr_arfcn;
|
||||
uint8_t scs;
|
||||
uint8_t nrb;
|
||||
|
||||
typedef struct s1ap_initial_context_setup_fail_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
uint32_t sul_active;
|
||||
uint32_t sul_nr_arfcn;
|
||||
uint8_t sul_scs;
|
||||
uint8_t sul_nrb;
|
||||
|
||||
/* TODO add cause */
|
||||
} s1ap_initial_context_setup_fail_t, s1ap_ue_ctxt_modification_fail_t, s1ap_e_rab_setup_req_fail_t;
|
||||
uint8_t num_frequency_bands;
|
||||
uint16_t nr_band[32];
|
||||
uint8_t num_sul_frequency_bands;
|
||||
uint16_t nr_sul_band[32];
|
||||
|
||||
typedef struct s1ap_nas_non_delivery_ind_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
nas_pdu_t nas_pdu;
|
||||
/* TODO: add cause */
|
||||
} s1ap_nas_non_delivery_ind_t;
|
||||
} tdd;
|
||||
} nr_mode_info[F1AP_MAX_NB_CELLS];
|
||||
|
||||
typedef struct s1ap_ue_ctxt_modification_req_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
char *measurement_timing_information[F1AP_MAX_NB_CELLS];
|
||||
uint8_t ranac[F1AP_MAX_NB_CELLS];
|
||||
|
||||
/* Bit-mask of possible present parameters */
|
||||
s1ap_ue_ctxt_modification_present_t present;
|
||||
|
||||
/* Following fields are optionnaly present */
|
||||
|
||||
/* Security key */
|
||||
uint8_t security_key[SECURITY_KEY_LENGTH];
|
||||
|
||||
/* UE aggregate maximum bitrate */
|
||||
ambr_t ue_ambr;
|
||||
|
||||
/* Security capabilities */
|
||||
security_capabilities_t security_capabilities;
|
||||
} s1ap_ue_ctxt_modification_req_t;
|
||||
|
||||
typedef struct s1ap_ue_ctxt_modification_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
} s1ap_ue_ctxt_modification_resp_t;
|
||||
|
||||
typedef struct s1ap_ue_release_complete_s {
|
||||
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
} s1ap_ue_release_complete_t;
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP -> RRC messages
|
||||
typedef struct s1ap_downlink_nas_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* Unique UE identifier within an eNB */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* NAS pdu */
|
||||
nas_pdu_t nas_pdu;
|
||||
} s1ap_downlink_nas_t;
|
||||
// System Information
|
||||
uint8_t *mib[F1AP_MAX_NB_CELLS];
|
||||
uint8_t *sib1[F1AP_MAX_NB_CELLS];
|
||||
|
||||
|
||||
typedef struct s1ap_initial_context_setup_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
} f1ap_setup_req_t;
|
||||
|
||||
/* UE aggregate maximum bitrate */
|
||||
ambr_t ue_ambr;
|
||||
typedef struct f1ap_setup_resp_s {
|
||||
/// string holding gNB_CU_name
|
||||
char *gNB_CU_name;
|
||||
/// number of DU cells to activate
|
||||
uint16_t num_cells_to_activate; //0< num_cells_to_activate <= 512;
|
||||
/// mcc of DU cells
|
||||
uint16_t mcc[F1AP_MAX_NB_CELLS];
|
||||
/// mnc of DU cells
|
||||
uint16_t mnc[F1AP_MAX_NB_CELLS];
|
||||
/// mnc digit length of DU cells
|
||||
uint8_t mnc_digit_length[F1AP_MAX_NB_CELLS];
|
||||
/// NRPCI
|
||||
uint16_t nrpci[F1AP_MAX_NB_CELLS];
|
||||
/// num SI messages per DU cell
|
||||
uint8_t num_SI[F1AP_MAX_NB_CELLS];
|
||||
/// SI message containers (up to 21 messages per cell)
|
||||
uint8_t *SI_container[F1AP_MAX_NB_CELLS][21];
|
||||
} f1ap_setup_resp_t;
|
||||
|
||||
/* Security algorithms */
|
||||
security_capabilities_t security_capabilities;
|
||||
typedef struct f1ap_setup_failure_s {
|
||||
uint16_t cause;
|
||||
uint16_t time_to_wait;
|
||||
uint16_t criticality_diagnostics;
|
||||
} f1ap_setup_failure_t;
|
||||
|
||||
/* Security key */
|
||||
uint8_t security_key[SECURITY_KEY_LENGTH];
|
||||
typedef struct f1ap_dl_rrc_message_s {
|
||||
|
||||
/* Number of e_rab to be setup in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab to be setup by RRC layers */
|
||||
e_rab_t e_rab_param[S1AP_MAX_E_RAB];
|
||||
} s1ap_initial_context_setup_req_t;
|
||||
uint32_t gNB_CU_ue_id;
|
||||
uint32_t gNB_DU_ue_id;
|
||||
uint32_t old_gNB_DU_ue_id;
|
||||
uint8_t srb_id;
|
||||
uint8_t execute_duplication;
|
||||
uint8_t *rrc_container;
|
||||
union {
|
||||
// both map 0..255 => 1..256
|
||||
uint8_t en_dc;
|
||||
uint8_t ngran;
|
||||
} RAT_frequency_priority_information;
|
||||
} f1ap_dl_rrc_message_t;
|
||||
|
||||
typedef struct tai_plmn_identity_s {
|
||||
typedef struct f1ap_initial_ul_rrc_message_s {
|
||||
uint32_t gNB_DU_ue_id;
|
||||
/// mcc of DU cell
|
||||
uint16_t mcc;
|
||||
/// mnc of DU cell
|
||||
uint16_t mnc;
|
||||
uint8_t mnc_digit_length;
|
||||
} plmn_identity_t;
|
||||
/// mnc digit length of DU cells
|
||||
uint8_t mnc_digit_length;
|
||||
uint16_t crnti;
|
||||
uint8_t *rrc_container;
|
||||
uint8_t *du2cu_rrc_container;
|
||||
} f1ap_initial_ul_rrc_message_t;
|
||||
|
||||
typedef struct s1ap_paging_ind_s {
|
||||
/* UE identity index value.
|
||||
* Specified in 3GPP TS 36.304
|
||||
*/
|
||||
unsigned ue_index_value:10;
|
||||
typedef struct f1ap_ul_rrc_message_s {
|
||||
uint32_t gNB_CU_ue_id;
|
||||
uint32_t gNB_DU_ue_id;
|
||||
uint8_t srb_id;
|
||||
uint8_t *rrc_container;
|
||||
} f1ap_ul_rrc_message_t;
|
||||
|
||||
/* UE paging identity */
|
||||
ue_paging_identity_t ue_paging_identity;
|
||||
/*typedef struct f1ap_ue_context_setup_req_s {
|
||||
|
||||
} f1ap_ue_context_setup_req_t;*/
|
||||
|
||||
/* Indicates origin of paging */
|
||||
cn_domain_t cn_domain;
|
||||
|
||||
/* PLMN_identity in TAI of Paging*/
|
||||
plmn_identity_t plmn_identity[256];
|
||||
|
||||
/* TAC in TAIList of Paging*/
|
||||
int16_t tac[256];
|
||||
|
||||
/* size of TAIList*/
|
||||
int16_t tai_size;
|
||||
|
||||
/* Optional fields */
|
||||
paging_drx_t paging_drx;
|
||||
|
||||
paging_priority_t paging_priority;
|
||||
} s1ap_paging_ind_t;
|
||||
|
||||
typedef struct s1ap_e_rab_setup_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab to be setup in the list */
|
||||
uint8_t nb_e_rabs_tosetup;
|
||||
|
||||
/* E RAB setup request */
|
||||
e_rab_t e_rab_setup_params[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_setup_req_t;
|
||||
|
||||
typedef struct s1ap_e_rab_setup_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab setup-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab setup-ed by RRC layers */
|
||||
e_rab_setup_t e_rabs[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be setup in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be setup */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_setup_resp_t;
|
||||
|
||||
|
||||
// S1AP --> RRC messages
|
||||
typedef struct s1ap_ue_release_command_s {
|
||||
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
} s1ap_ue_release_command_t;
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------------//
|
||||
// S1AP <-- RRC messages
|
||||
typedef struct s1ap_ue_release_req_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
s1ap_Cause_t cause;
|
||||
long cause_value;
|
||||
} s1ap_ue_release_req_t, s1ap_ue_release_resp_t;
|
||||
|
||||
typedef struct s1ap_e_rab_modify_req_s {
|
||||
/* UE id for initial connection to S1AP */
|
||||
uint16_t ue_initial_id;
|
||||
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab to be modify in the list */
|
||||
uint8_t nb_e_rabs_tomodify;
|
||||
|
||||
/* E RAB modify request */
|
||||
e_rab_t e_rab_modify_params[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_modify_req_t;
|
||||
|
||||
typedef struct s1ap_e_rab_modify_resp_s {
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab modify-ed in the list */
|
||||
uint8_t nb_of_e_rabs;
|
||||
/* list of e_rab modify-ed by RRC layers */
|
||||
e_rab_modify_t e_rabs[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be modify in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be modify */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
} s1ap_e_rab_modify_resp_t;
|
||||
|
||||
typedef struct e_rab_release_s {
|
||||
/* Unique e_rab_id for the UE. */
|
||||
uint8_t e_rab_id;
|
||||
} e_rab_release_t;
|
||||
|
||||
typedef struct s1ap_e_rab_release_command_s {
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* The NAS PDU should be forwarded by the RRC layer to the NAS layer */
|
||||
nas_pdu_t nas_pdu;
|
||||
|
||||
/* Number of e_rab to be released in the list */
|
||||
uint8_t nb_e_rabs_torelease;
|
||||
|
||||
/* E RAB release command */
|
||||
e_rab_release_t e_rab_release_params[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_release_command_t;
|
||||
|
||||
typedef struct s1ap_e_rab_release_resp_s {
|
||||
/* MME UE id */
|
||||
uint16_t mme_ue_s1ap_id;
|
||||
|
||||
/* eNB ue s1ap id as initialized by S1AP layer */
|
||||
unsigned eNB_ue_s1ap_id:24;
|
||||
|
||||
/* Number of e_rab released in the list */
|
||||
uint8_t nb_of_e_rabs_released;
|
||||
|
||||
/* list of e_rabs released */
|
||||
e_rab_release_t e_rab_release[S1AP_MAX_E_RAB];
|
||||
|
||||
/* Number of e_rab failed to be released in list */
|
||||
uint8_t nb_of_e_rabs_failed;
|
||||
/* list of e_rabs that failed to be released */
|
||||
e_rab_failed_t e_rabs_failed[S1AP_MAX_E_RAB];
|
||||
|
||||
} s1ap_e_rab_release_resp_t;
|
||||
|
||||
#endif /* S1AP_MESSAGES_TYPES_H_ */
|
||||
#endif /* F1AP_MESSAGES_TYPES_H_ */
|
||||
|
||||
@@ -390,7 +390,7 @@ typedef struct {
|
||||
|
||||
|
||||
|
||||
#define IDLE 0
|
||||
//#define IDLE 0
|
||||
#define NEED_RADIO_CONFIG 3
|
||||
#define RADIO_CONFIG_TX 2
|
||||
#define RADIO_CONFIG_OK 1
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "ral_messages_def.h"
|
||||
#endif
|
||||
#include "s1ap_messages_def.h"
|
||||
#include "f1ap_messages_def.h"
|
||||
#include "x2ap_messages_def.h"
|
||||
#include "sctp_messages_def.h"
|
||||
#include "udp_messages_def.h"
|
||||
|
||||
@@ -40,8 +40,9 @@
|
||||
#include "nas_messages_types.h"
|
||||
#if ENABLE_RAL
|
||||
#include "ral_messages_types.h"
|
||||
#endif
|
||||
#endif
|
||||
#include "s1ap_messages_types.h"
|
||||
#include "f1ap_messages_types.h"
|
||||
#include "x2ap_messages_types.h"
|
||||
#include "sctp_messages_types.h"
|
||||
#include "udp_messages_types.h"
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
#include "as_message.h"
|
||||
#include "rrc_types.h"
|
||||
#include "s1ap_messages_types.h"
|
||||
#include "f1ap_messages_types.h"
|
||||
#ifdef CMAKER
|
||||
#include "SystemInformationBlockType2.h"
|
||||
#else
|
||||
|
||||
+45
-12
@@ -113,7 +113,7 @@ static void configure_rrc(uint32_t enb_id)
|
||||
|
||||
/*------------------------------------------------------------------------------*/
|
||||
# if defined(ENABLE_USE_MME)
|
||||
static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//, const Enb_properties_array_t *enb_properties)
|
||||
static uint32_t eNB_app_register(ngran_node_t node_type,uint32_t enb_id_start, uint32_t enb_id_end)//, const Enb_properties_array_t *enb_properties)
|
||||
{
|
||||
uint32_t enb_id;
|
||||
MessageDef *msg_p;
|
||||
@@ -121,20 +121,38 @@ static uint32_t eNB_app_register(uint32_t enb_id_start, uint32_t enb_id_end)//,
|
||||
|
||||
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
|
||||
{
|
||||
/* note: there is an implicit relationship between the data structure and the message name */
|
||||
msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
|
||||
if (node_type == ngran_eNB_DU) { // F1AP registration
|
||||
|
||||
RCconfig_S1(msg_p, enb_id);
|
||||
// configure F1AP here for F1C
|
||||
LOG_I(ENB_APP,"ngran_eNB_DU: Allocating ITTI message for F1AP_SETUP_REQ\n");
|
||||
msg_p = itti_alloc_new_message (TASK_ENB_APP, F1AP_SETUP_REQ);
|
||||
RCconfig_DU_F1(msg_p, enb_id);
|
||||
|
||||
if (enb_id == 0) RCconfig_gtpu();
|
||||
LOG_I(ENB_APP,"[eNB %d] eNB_app_register via F1AP for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
|
||||
AssertFatal(1==0,"No ITTI ask for F1AP yet\n");
|
||||
// itti_send_msg_to_task (TASK_F1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
|
||||
// configure GTPu here for F1U
|
||||
}
|
||||
else { // S1AP registration
|
||||
/* note: there is an implicit relationship between the data structure and the message name */
|
||||
msg_p = itti_alloc_new_message (TASK_ENB_APP, S1AP_REGISTER_ENB_REQ);
|
||||
|
||||
RCconfig_S1(msg_p, enb_id);
|
||||
|
||||
LOG_I(ENB_APP,"default drx %d\n",((S1AP_REGISTER_ENB_REQ(msg_p)).default_drx));
|
||||
if (node_type == ngran_eNB_CU || node_type == ngran_ng_eNB_CU) RCconfig_CU_F1(enb_id);
|
||||
|
||||
LOG_I(ENB_APP,"[eNB %d] eNB_app_register for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
|
||||
if (enb_id == 0) RCconfig_gtpu();
|
||||
|
||||
LOG_I(ENB_APP,"default drx %d\n",((S1AP_REGISTER_ENB_REQ(msg_p)).default_drx));
|
||||
|
||||
LOG_I(ENB_APP,"[eNB %d] eNB_app_register via S1AP for instance %d\n", enb_id, ENB_MODULE_ID_TO_INSTANCE(enb_id));
|
||||
itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
|
||||
}
|
||||
|
||||
itti_send_msg_to_task (TASK_S1AP, ENB_MODULE_ID_TO_INSTANCE(enb_id), msg_p);
|
||||
|
||||
|
||||
register_enb_pending++;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,6 +179,9 @@ void *eNB_app_task(void *args_p)
|
||||
int result;
|
||||
/* for no gcc warnings */
|
||||
(void)instance;
|
||||
int mac_has_f1[MAX_MAC_INST];
|
||||
|
||||
memset(mac_has_f1,0,MAX_MAC_INST*sizeof(int));
|
||||
|
||||
itti_mark_task_ready (TASK_ENB_APP);
|
||||
|
||||
@@ -168,12 +189,15 @@ void *eNB_app_task(void *args_p)
|
||||
|
||||
RCconfig_L1();
|
||||
|
||||
RCconfig_macrlc();
|
||||
RCconfig_macrlc(mac_has_f1);
|
||||
|
||||
LOG_I(PHY, "%s() RC.nb_L1_inst:%d\n", __FUNCTION__, RC.nb_macrlc_inst);
|
||||
|
||||
LOG_I(PHY, "%s() RC.nb_L1_inst:%d\n", __FUNCTION__, RC.nb_L1_inst);
|
||||
|
||||
if (RC.nb_L1_inst>0) AssertFatal(l1_north_init_eNB()==0,"could not initialize L1 north interface\n");
|
||||
|
||||
|
||||
AssertFatal (enb_nb <= RC.nb_inst,
|
||||
"Number of eNB is greater than eNB defined in configuration file (%d/%d)!",
|
||||
enb_nb, RC.nb_inst);
|
||||
@@ -183,17 +207,26 @@ void *eNB_app_task(void *args_p)
|
||||
RC.rrc = (eNB_RRC_INST **)malloc(RC.nb_inst*sizeof(eNB_RRC_INST *));
|
||||
LOG_I(PHY, "%s() RC.nb_inst:%d RC.rrc:%p\n", __FUNCTION__, RC.nb_inst, RC.rrc);
|
||||
|
||||
if (RC.nb_macrlc_inst>0) AssertFatal(RC.nb_macrlc_inst == enb_id_end-enb_id_start,
|
||||
"Number of MACRLC instances %d != number of RRC instances %d\n",
|
||||
RC.nb_macrlc_inst,enb_id_end-enb_id_start);
|
||||
for (enb_id = enb_id_start; (enb_id < enb_id_end) ; enb_id++) {
|
||||
RC.rrc[enb_id] = (eNB_RRC_INST*)malloc(sizeof(eNB_RRC_INST));
|
||||
LOG_I(PHY, "%s() Creating RRC instance RC.rrc[%d]:%p (%d of %d)\n", __FUNCTION__, enb_id, RC.rrc[enb_id], enb_id+1, enb_id_end);
|
||||
memset((void *)RC.rrc[enb_id],0,sizeof(eNB_RRC_INST));
|
||||
configure_rrc(enb_id);
|
||||
|
||||
if (RC.nb_macrlc_inst >0 && mac_has_f1[enb_id]==1) RC.rrc[enb_id]->node_type = ngran_eNB_DU;
|
||||
|
||||
pdcp_layer_init();
|
||||
}
|
||||
|
||||
|
||||
# if defined(ENABLE_USE_MME)
|
||||
/* Try to register each eNB */
|
||||
registered_enb = 0;
|
||||
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
// This assumes that node_type of all RRC instances is the same
|
||||
register_enb_pending = eNB_app_register (RC.rrc[0]->node_type,enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
# else
|
||||
/* Start L2L1 task */
|
||||
msg_p = itti_alloc_new_message(TASK_ENB_APP, INITIALIZE_MESSAGE);
|
||||
@@ -251,7 +284,7 @@ void *eNB_app_task(void *args_p)
|
||||
sleep(ENB_REGISTER_RETRY_DELAY);
|
||||
/* Restart the registration process */
|
||||
registered_enb = 0;
|
||||
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
register_enb_pending = eNB_app_register (RC.rrc[0]->node_type,enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -271,7 +304,7 @@ void *eNB_app_task(void *args_p)
|
||||
if (TIMER_HAS_EXPIRED (msg_p).timer_id == enb_register_retry_timer_id) {
|
||||
/* Restart the registration process */
|
||||
registered_enb = 0;
|
||||
register_enb_pending = eNB_app_register (enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
register_enb_pending = eNB_app_register (RC.rrc[0]->node_type,enb_id_start, enb_id_end);//, enb_properties_p);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
+897
-779
File diff suppressed because it is too large
Load Diff
@@ -40,6 +40,7 @@
|
||||
#include "PHY/impl_defs_lte.h"
|
||||
#include "PHY/defs_eNB.h"
|
||||
#include "s1ap_messages_types.h"
|
||||
#include "f1ap_messages_types.h"
|
||||
#ifdef CMAKER
|
||||
#include "SystemInformationBlockType2.h"
|
||||
#include "rrc_messages_types.h"
|
||||
@@ -134,7 +135,7 @@ typedef struct ru_config_s {
|
||||
extern void RCconfig_RU(void);
|
||||
extern void RCconfig_flexran(void);
|
||||
extern void RCconfig_L1(void);
|
||||
extern void RCconfig_macrlc(void);
|
||||
extern void RCconfig_macrlc(int*);
|
||||
extern void UE_config_stub_pnf(void);
|
||||
extern int RCconfig_gtpu(void );
|
||||
extern void RCConfig(void);
|
||||
@@ -144,6 +145,9 @@ void ru_config_display(void);
|
||||
|
||||
int RCconfig_RRC(MessageDef *msg_p, uint32_t i, eNB_RRC_INST *rrc);
|
||||
int RCconfig_S1(MessageDef *msg_p, uint32_t i);
|
||||
int RCconfig_DU_F1(MessageDef *msg_p, uint32_t i);
|
||||
int RCconfig_CU_F1(uint32_t i);
|
||||
|
||||
void RCconfig_cudu(void);
|
||||
cudu_params_t *get_cudu_config(void);
|
||||
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
#include "platform_types.h"
|
||||
#include "log.h"
|
||||
|
||||
|
||||
|
||||
|
||||
/* This structure describes association of a DU to a CU */
|
||||
typedef struct f1ap_info {
|
||||
|
||||
|
||||
@@ -394,6 +394,14 @@ extern int asn1_xer_print;
|
||||
//Forward declaration
|
||||
//struct f1ap_message_s;
|
||||
|
||||
typedef struct net_ip_address_s {
|
||||
unsigned ipv4:1;
|
||||
unsigned ipv6:1;
|
||||
char ipv4_address[16];
|
||||
char ipv6_address[46];
|
||||
} net_ip_address_t;
|
||||
|
||||
|
||||
typedef struct f1ap_message_s {
|
||||
F1AP_ProtocolIE_ID_t id;
|
||||
F1AP_Criticality_t criticality;
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define MAX_MAC_INST 16
|
||||
#define BCCH_PAYLOAD_SIZE_MAX 128
|
||||
#define CCCH_PAYLOAD_SIZE_MAX 128
|
||||
#define PCCH_PAYLOAD_SIZE_MAX 128
|
||||
|
||||
@@ -104,9 +104,9 @@ void mac_top_init_eNB(void)
|
||||
"Could not initialize RLC layer\n");
|
||||
|
||||
// These should be out of here later
|
||||
pdcp_layer_init();
|
||||
//pdcp_layer_init();
|
||||
|
||||
rrc_init_global_param();
|
||||
// rrc_init_global_param();
|
||||
|
||||
} else {
|
||||
RC.mac = NULL;
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "collection/tree.h"
|
||||
#include "common/ngran_types.h"
|
||||
#include "rrc_types.h"
|
||||
//#include "PHY/phy_defs.h"
|
||||
#include "LAYER2/RLC/rlc.h"
|
||||
@@ -673,8 +674,10 @@ typedef struct {
|
||||
uint32_t sizeof_paging[MAX_MOBILES_PER_ENB];
|
||||
} rrc_eNB_carrier_data_t;
|
||||
|
||||
|
||||
typedef struct eNB_RRC_INST_s {
|
||||
/// southbound midhaul configuration
|
||||
ngran_node_t node_type;
|
||||
eth_params_t eth_params_s;
|
||||
rrc_eNB_carrier_data_t carrier[MAX_NUM_CCs];
|
||||
uid_allocator_t uid_allocator; // for rrc_ue_head
|
||||
@@ -715,6 +718,8 @@ typedef struct eNB_RRC_INST_s {
|
||||
int srb1_timer_reordering;
|
||||
int srb1_timer_status_prohibit;
|
||||
int srs_enable[MAX_NUM_CCs];
|
||||
int cell_info_configured;
|
||||
pthread_mutex_t cell_info_mutex;
|
||||
} eNB_RRC_INST;
|
||||
|
||||
#define MAX_UE_CAPABILITY_SIZE 255
|
||||
|
||||
+311
-235
@@ -156,273 +156,338 @@ init_SI(
|
||||
#endif
|
||||
|
||||
LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
|
||||
eNB_RRC_INST *rrc = RC.rrc[ctxt_pP->module_id];
|
||||
rrc_eNB_carrier_data_t *carrier=&rrc->carrier[CC_id];
|
||||
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB = (uint8_t*) malloc16(4);
|
||||
// copy basic parameters
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId = configuration->Nid_cell[CC_id];
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB = configuration->nb_antenna_ports[CC_id];
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp = configuration->prefix_type[CC_id];
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq = configuration->downlink_frequency[CC_id];
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq = configuration->downlink_frequency[CC_id]+ configuration->uplink_frequency_offset[CC_id];
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition = configuration->pbch_repetition[CC_id];
|
||||
#endif
|
||||
LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n",
|
||||
(int)configuration->N_RB_DL[CC_id],
|
||||
(int)configuration->phich_resource[CC_id],
|
||||
(int)configuration->phich_duration[CC_id]);
|
||||
do_MIB(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],
|
||||
#ifdef ENABLE_ITTI
|
||||
configuration->N_RB_DL[CC_id],
|
||||
configuration->phich_resource[CC_id],
|
||||
configuration->phich_duration[CC_id]
|
||||
#else
|
||||
50,0,0
|
||||
#endif
|
||||
,0);
|
||||
carrier->MIB = (uint8_t*) malloc16(4);
|
||||
carrier->sizeof_SIB1 = 0;
|
||||
carrier->sizeof_SIB23 = 0;
|
||||
carrier->SIB1 = (uint8_t*) malloc16(32);
|
||||
|
||||
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = 0;
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = 0;
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1 = (uint8_t*) malloc16(32);
|
||||
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB1!=NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for SIB1 allocated\n",
|
||||
AssertFatal(carrier->SIB1!=NULL,PROTOCOL_RRC_CTXT_FMT" init_SI: FATAL, no memory for SIB1 allocated\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 = do_SIB1(&RC.rrc[ctxt_pP->module_id]->carrier[CC_id],ctxt_pP->module_id,CC_id
|
||||
#if defined(ENABLE_ITTI)
|
||||
, configuration
|
||||
|
||||
if (rrc->node_type != ngran_eNB_CU && rrc->node_type != ngran_ng_eNB_CU) {
|
||||
// copy basic Cell parameters
|
||||
carrier->physCellId = configuration->Nid_cell[CC_id];
|
||||
carrier->p_eNB = configuration->nb_antenna_ports[CC_id];
|
||||
carrier->Ncp = configuration->prefix_type[CC_id];
|
||||
carrier->dl_CarrierFreq = configuration->downlink_frequency[CC_id];
|
||||
carrier->ul_CarrierFreq = configuration->downlink_frequency[CC_id]+ configuration->uplink_frequency_offset[CC_id];
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
carrier->pbch_repetition = configuration->pbch_repetition[CC_id];
|
||||
#endif
|
||||
);
|
||||
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
|
||||
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23 = (uint8_t*) malloc16(64);
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].SIB23!=NULL,"cannot allocate memory for SIB");
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 = do_SIB23(
|
||||
ctxt_pP->module_id,
|
||||
|
||||
CC_id
|
||||
#if defined(ENABLE_ITTI)
|
||||
, configuration
|
||||
LOG_I(RRC, "Configuring MIB (N_RB_DL %d,phich_Resource %d,phich_Duration %d)\n",
|
||||
(int)configuration->N_RB_DL[CC_id],
|
||||
(int)configuration->phich_resource[CC_id],
|
||||
(int)configuration->phich_duration[CC_id]);
|
||||
do_MIB(&rrc->carrier[CC_id],
|
||||
#ifdef ENABLE_ITTI
|
||||
configuration->N_RB_DL[CC_id],
|
||||
configuration->phich_resource[CC_id],
|
||||
configuration->phich_duration[CC_id]
|
||||
#else
|
||||
50,0,0
|
||||
#endif
|
||||
);
|
||||
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255");
|
||||
|
||||
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" SIB2/3 Contents (partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.n_SB = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.n_SB);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.hoppingMode = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.hoppingMode);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.pusch_HoppingOffset = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.pusch_HoppingOffset);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.enable64QAM = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.enable64QAM);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupHoppingEnabled = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupAssignmentPUSCH = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.sequenceHoppingEnabled = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.cyclicShift = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.cyclicShift);
|
||||
,0);
|
||||
|
||||
|
||||
carrier->sizeof_SIB1 = do_SIB1(&rrc->carrier[CC_id],ctxt_pP->module_id,CC_id
|
||||
#if defined(ENABLE_ITTI)
|
||||
, configuration
|
||||
#endif
|
||||
);
|
||||
|
||||
AssertFatal(carrier->sizeof_SIB1 != 255,"FATAL, RC.rrc[enb_mod_idP].carrier[CC_id].sizeof_SIB1 == 255");
|
||||
|
||||
}
|
||||
else if (rrc->node_type != ngran_eNB_DU) {
|
||||
|
||||
carrier->SIB23 = (uint8_t*) malloc16(64);
|
||||
AssertFatal(carrier->SIB23!=NULL,"cannot allocate memory for SIB");
|
||||
carrier->sizeof_SIB23 = do_SIB23(
|
||||
ctxt_pP->module_id,
|
||||
|
||||
CC_id
|
||||
#if defined(ENABLE_ITTI)
|
||||
, configuration
|
||||
#endif
|
||||
);
|
||||
|
||||
AssertFatal(carrier->sizeof_SIB23 != 255,"FATAL, RC.rrc[mod].carrier[CC_id].sizeof_SIB23 == 255");
|
||||
|
||||
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" SIB2/3 Contents (partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.n_SB = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.n_SB);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.hoppingMode = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.hoppingMode);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.pusch_HoppingOffset = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.pusch_HoppingOffset);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.enable64QAM = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
pusch_ConfigBasic.enable64QAM);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupHoppingEnabled = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.groupHoppingEnabled);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.groupAssignmentPUSCH = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.sequenceHoppingEnabled = %d\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
(int)carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled);
|
||||
LOG_T(RRC, PROTOCOL_RRC_CTXT_FMT" pusch_config_common.cyclicShift = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->radioResourceConfigCommon.pusch_ConfigCommon.
|
||||
ul_ReferenceSignalsPUSCH.cyclicShift);
|
||||
|
||||
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
|
||||
if (RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MBMS_flag > 0) {
|
||||
for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.count; i++) {
|
||||
// SIB 2
|
||||
// LOG_D(RRC, "[eNB %d] mbsfn_SubframeConfigList.list.count = %ld\n", enb_mod_idP, RC.rrc[enb_mod_idP].sib2->mbsfn_SubframeConfigList->list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN subframe allocation %d/%d(partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
i,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" mbsfn_Subframe_pattern is = %x\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0] >> 0);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_period = %ld (just index number, not the real value)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationPeriod); // need to display the real value, using array of char (like in dumping SIB2)
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_offset = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset);
|
||||
}
|
||||
|
||||
|
||||
if (carrier->MBMS_flag > 0) {
|
||||
for (i = 0; i < carrier->sib2->mbsfn_SubframeConfigList->list.count; i++) {
|
||||
// SIB 2
|
||||
// LOG_D(RRC, "[eNB %d] mbsfn_SubframeConfigList.list.count = %ld\n", enb_mod_idP, RC.rrc[enb_mod_idP].sib2->mbsfn_SubframeConfigList->list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN subframe allocation %d/%d(partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
i,
|
||||
carrier->sib2->mbsfn_SubframeConfigList->list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" mbsfn_Subframe_pattern is = %x\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->mbsfn_SubframeConfigList->list.array[i]->subframeAllocation.choice.oneFrame.buf[0] >> 0);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_period = %ld (just index number, not the real value)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationPeriod); // need to display the real value, using array of char (like in dumping SIB2)
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" radioframe_allocation_offset = %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib2->mbsfn_SubframeConfigList->list.array[i]->radioframeAllocationOffset);
|
||||
}
|
||||
|
||||
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
||||
// SIB13
|
||||
for (i = 0; i < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count; i++) {
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
i,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Repetition Period: %ld (just index number, not real value)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Offset: %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9);
|
||||
// SIB13
|
||||
for (i = 0; i < carrier->sib13->mbsfn_AreaInfoList_r9.list.count; i++) {
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" SIB13 contents for MBSFN sync area %d/%d (partial)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
i,
|
||||
carrier->sib13->mbsfn_AreaInfoList_r9.list.count);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Repetition Period: %ld (just index number, not real value)\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_RepetitionPeriod_r9);
|
||||
LOG_D(RRC, PROTOCOL_RRC_CTXT_FMT" MCCH Offset: %ld\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib13->mbsfn_AreaInfoList_r9.list.array[i]->mcch_Config_r9.mcch_Offset_r9);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else memset((void*)&carrier->sib13,0,sizeof(carrier->sib13));
|
||||
|
||||
//TTN - SIB 18
|
||||
for (int j = 0; j < carrier->sib18->commConfig_r12->commRxPool_r12.list.count; j++) {
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
j+1,
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.count);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 rxPool_sc_CP_Len: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_CP_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 sc_Period_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_Period_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 data_CP_Len_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->data_CP_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Num_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Num_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Start_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Start_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_End_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_End_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 offsetIndicator: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 subframeBitmap_choice_bs_buf: %s \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf);
|
||||
|
||||
}
|
||||
|
||||
//TTN - SIB 19
|
||||
for (int j = 0; j < carrier->sib19->discConfig_r12->discRxPool_r12.list.count; j++) {
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
j+1,
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.count);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 cp_Len_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->cp_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 discPeriod_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->discPeriod_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRetx_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRetx_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRepetition_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRepetition_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Num_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Num_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Start_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Start_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_End_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_End_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 offsetIndicator: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 subframeBitmap_choice_bs_buf: %s \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
carrier->sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
else memset((void*)&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13,0,sizeof(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13));
|
||||
|
||||
//TTN - SIB 18
|
||||
for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count; j++) {
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB18 %d/%d \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
j+1,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.count);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 rxPool_sc_CP_Len: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_CP_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 sc_Period_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_Period_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 data_CP_Len_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->data_CP_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Num_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Num_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_Start_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_Start_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 prb_End_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.prb_End_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 offsetIndicator: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB18 subframeBitmap_choice_bs_buf: %s \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib18->commConfig_r12->commRxPool_r12.list.array[j]->sc_TF_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf);
|
||||
|
||||
}
|
||||
|
||||
//TTN - SIB 19
|
||||
for (int j = 0; j < RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count; j++) {
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" Contents of SIB19 %d/%d \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
j+1,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.count);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 cp_Len_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->cp_Len_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 discPeriod_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->discPeriod_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRetx_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRetx_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 numRepetition_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->numRepetition_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Num_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Num_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_Start_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_Start_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 prb_End_r12: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.prb_End_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 offsetIndicator: %ld \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.offsetIndicator_r12.choice.small_r12);
|
||||
LOG_I(RRC, PROTOCOL_RRC_CTXT_FMT" SIB19 tf_ResourceConfig_r12 subframeBitmap_choice_bs_buf: %s \n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP),
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib19->discConfig_r12->discRxPool_r12.list.array[j]->tf_ResourceConfig_r12.subframeBitmap_r12.choice.bs16_r12.buf);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
LOG_D(RRC,
|
||||
PROTOCOL_RRC_CTXT_FMT" RRC_UE --- MAC_CONFIG_REQ (SIB1.tdd & SIB2 params) ---> MAC_UE\n",
|
||||
PROTOCOL_RRC_CTXT_ARGS(ctxt_pP));
|
||||
|
||||
// LTE-M stuff here (take out CU-DU for now)
|
||||
if (rrc->node_type == ngran_eNB) {
|
||||
#if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
|
||||
if ((RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib.message.schedulingInfoSIB1_BR_r13>0) &&
|
||||
(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR!=NULL)) {
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension!=NULL,
|
||||
if ((carrier->mib.message.schedulingInfoSIB1_BR_r13>0) &&
|
||||
(carrier->sib1_BR!=NULL)) {
|
||||
AssertFatal(carrier->sib1_BR->nonCriticalExtension!=NULL,
|
||||
"sib2_br->nonCriticalExtension is null (v8.9)\n");
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
AssertFatal(carrier->sib1_BR->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
"sib2_br->nonCriticalExtension is null (v9.2)\n");
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
AssertFatal(carrier->sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
"sib2_br->nonCriticalExtension is null (v11.3)\n");
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
AssertFatal(carrier->sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
"sib2_br->nonCriticalExtension is null (v12.5)\n");
|
||||
AssertFatal(RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
AssertFatal(carrier->sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension!=NULL,
|
||||
"sib2_br->nonCriticalExtension is null (v13.10)\n");
|
||||
sib1_v13ext = RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension;
|
||||
sib1_v13ext = carrier->sib1_BR->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension->nonCriticalExtension;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
LOG_D(RRC, "About to call rrc_mac_config_req_eNB\n");
|
||||
|
||||
rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].p_eNB,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Ncp,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->freqBandIndicator,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].dl_CarrierFreq,
|
||||
if (rrc->node_type == ngran_eNB_DU) {
|
||||
LOG_D(RRC, "About to call rrc_mac_config_req_eNB for ngran_eNB_DU\n");
|
||||
|
||||
rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
|
||||
carrier->physCellId,
|
||||
carrier->p_eNB,
|
||||
carrier->Ncp,
|
||||
carrier->sib1->freqBandIndicator,
|
||||
carrier->dl_CarrierFreq,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].pbch_repetition,
|
||||
carrier->pbch_repetition,
|
||||
#endif
|
||||
0, // rnti
|
||||
(BCCH_BCH_Message_t *)
|
||||
&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].mib,
|
||||
(RadioResourceConfigCommonSIB_t *) &
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->radioResourceConfigCommon,
|
||||
0, // rnti
|
||||
(BCCH_BCH_Message_t *)
|
||||
&carrier->mib,
|
||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
(RadioResourceConfigCommonSIB_t *) &
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2_BR->radioResourceConfigCommon,
|
||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||
#endif
|
||||
(struct PhysicalConfigDedicated *)NULL,
|
||||
(struct PhysicalConfigDedicated *)NULL,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
(SCellToAddMod_r10_t *)NULL,
|
||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||
(SCellToAddMod_r10_t *)NULL,
|
||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||
#endif
|
||||
(MeasObjectToAddMod_t **) NULL,
|
||||
(MAC_MainConfig_t *) NULL, 0,
|
||||
(struct LogicalChannelConfig *)NULL,
|
||||
(MeasGapConfig_t *) NULL,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->tdd_Config,
|
||||
NULL,
|
||||
&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib1->schedulingInfoList,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].ul_CarrierFreq,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.ul_Bandwidth,
|
||||
&RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->freqInfo.additionalSpectrumEmission,
|
||||
(MBSFN_SubframeConfigList_t*) RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib2->mbsfn_SubframeConfigList
|
||||
(MeasObjectToAddMod_t **) NULL,
|
||||
(MAC_MainConfig_t *) NULL, 0,
|
||||
(struct LogicalChannelConfig *)NULL,
|
||||
(MeasGapConfig_t *) NULL,
|
||||
carrier->sib1->tdd_Config,
|
||||
NULL,
|
||||
&carrier->sib1->schedulingInfoList,
|
||||
carrier->ul_CarrierFreq,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
||||
,
|
||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MBMS_flag,
|
||||
(MBSFN_AreaInfoList_r9_t*) & RC.rrc[ctxt_pP->module_id]->carrier[CC_id].sib13->mbsfn_AreaInfoList_r9,
|
||||
(PMCH_InfoList_r9_t *) NULL
|
||||
,
|
||||
carrier->MBMS_flag,
|
||||
NULL,
|
||||
(PMCH_InfoList_r9_t *) NULL
|
||||
#endif
|
||||
#if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
|
||||
,
|
||||
sib1_v13ext
|
||||
,
|
||||
NULL
|
||||
#endif
|
||||
);
|
||||
);
|
||||
}
|
||||
else if (rrc->node_type == ngran_eNB) {
|
||||
LOG_D(RRC, "About to call rrc_mac_config_req_eNB for ngran_eNB\n");
|
||||
|
||||
rrc_mac_config_req_eNB(ctxt_pP->module_id, CC_id,
|
||||
carrier->physCellId,
|
||||
carrier->p_eNB,
|
||||
carrier->Ncp,
|
||||
carrier->sib1->freqBandIndicator,
|
||||
carrier->dl_CarrierFreq,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
carrier->pbch_repetition,
|
||||
#endif
|
||||
0, // rnti
|
||||
(BCCH_BCH_Message_t *)
|
||||
&carrier->mib,
|
||||
(RadioResourceConfigCommonSIB_t *) &
|
||||
carrier->sib2->radioResourceConfigCommon,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(14, 0, 0))
|
||||
(RadioResourceConfigCommonSIB_t *) &
|
||||
carrier->sib2_BR->radioResourceConfigCommon,
|
||||
#endif
|
||||
(struct PhysicalConfigDedicated *)NULL,
|
||||
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
(SCellToAddMod_r10_t *)NULL,
|
||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||
#endif
|
||||
(MeasObjectToAddMod_t **) NULL,
|
||||
(MAC_MainConfig_t *) NULL, 0,
|
||||
(struct LogicalChannelConfig *)NULL,
|
||||
(MeasGapConfig_t *) NULL,
|
||||
carrier->sib1->tdd_Config,
|
||||
NULL,
|
||||
&carrier->sib1->schedulingInfoList,
|
||||
carrier->ul_CarrierFreq,
|
||||
carrier->sib2->freqInfo.ul_Bandwidth,
|
||||
&carrier->sib2->freqInfo.additionalSpectrumEmission,
|
||||
(MBSFN_SubframeConfigList_t*) carrier->sib2->mbsfn_SubframeConfigList
|
||||
#if (RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
||||
,
|
||||
carrier->MBMS_flag,
|
||||
(MBSFN_AreaInfoList_r9_t*) & carrier->sib13->mbsfn_AreaInfoList_r9,
|
||||
(PMCH_InfoList_r9_t *) NULL
|
||||
#endif
|
||||
#if (RRC_VERSION >= MAKE_VERSION(13, 0, 0))
|
||||
,
|
||||
sib1_v13ext
|
||||
#endif
|
||||
);
|
||||
}
|
||||
// set flag to indicate that cell information is configured. This is required in DU to trigger F1AP_SETUP procedure.
|
||||
pthread_mutex_lock(&rrc->cell_info_mutex);
|
||||
rrc->cell_info_configured=1;
|
||||
pthread_mutex_unlock(&rrc->cell_info_mutex);
|
||||
}
|
||||
|
||||
#if (RRC_VERSION >= MAKE_VERSION(10, 0, 0))
|
||||
@@ -5849,6 +5914,10 @@ rrc_eNB_generate_RRCConnectionSetup(
|
||||
ue_context_pP->ue_context.ue_release_timer_thres=1000;
|
||||
}
|
||||
|
||||
void setup_ngran_CU(eNB_RRC_INST *rrc) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -5901,6 +5970,9 @@ openair_rrc_eNB_init(
|
||||
// }
|
||||
RC.rrc[ctxt.module_id]->Nb_ue = 0;
|
||||
|
||||
pthread_mutex_init(&RC.rrc[ctxt.module_id]->cell_info_mutex,NULL);
|
||||
RC.rrc[ctxt.module_id]->cell_info_configured = 0;
|
||||
|
||||
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
||||
RC.rrc[ctxt.module_id]->carrier[CC_id].Srb0.Active = 0;
|
||||
}
|
||||
@@ -6008,8 +6080,12 @@ openair_rrc_eNB_init(
|
||||
|
||||
openair_rrc_top_init_eNB(RC.rrc[ctxt.module_id]->carrier[CC_id].MBMS_flag,0);
|
||||
}
|
||||
|
||||
openair_rrc_on(&ctxt);
|
||||
|
||||
|
||||
if (RC.rrc[ctxt.module_id]->node_type == ngran_eNB_CU || RC.rrc[ctxt.module_id]->node_type == ngran_ng_eNB_CU)
|
||||
setup_ngran_CU(RC.rrc[ctxt.module_id]);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -1062,7 +1062,7 @@ int main( int argc, char **argv )
|
||||
#if defined(ENABLE_ITTI)
|
||||
if (RC.nb_inst > 0) {
|
||||
|
||||
// don't create if node doesn't connect to RRC/S1/GTP
|
||||
// don't create if node doesn't connect to RRC/S1/F1/GTP
|
||||
if (create_tasks(1) < 0) {
|
||||
printf("cannot create ITTI tasks\n");
|
||||
exit(-1); // need a softer mode
|
||||
|
||||
Reference in New Issue
Block a user