Merge branch 'feature-127-protocol-split' of https://gitlab.eurecom.fr/oai/openairinterface5g into feature-127-protocol-split
Conflicts: common/utils/T/T_IDs.h common/utils/T/T_messages.txt
This commit is contained in:
@@ -525,12 +525,16 @@ add_library(F1AP_LIB
|
||||
|
||||
include_directories ("${F1AP_C_DIR}")
|
||||
include_directories ("${F1AP_DIR}")
|
||||
message(${F1AP_C_DIR})
|
||||
message(${F1AP_DIR})
|
||||
|
||||
|
||||
add_library(F1AP
|
||||
#${F1AP_DIR}/test.c
|
||||
${F1AP_DIR}/DU_F1AP.c
|
||||
${F1AP_DIR}/CU_F1AP.c
|
||||
${F1AP_DIR}/sctp_du.c
|
||||
${F1AP_DIR}/sctp_cu.c
|
||||
)
|
||||
|
||||
add_executable(test_f1ap_du
|
||||
|
||||
@@ -1,546 +0,0 @@
|
||||
/* generated file, do not edit by hand */
|
||||
|
||||
#define T_ENB_MASTER_TICK T_ID(0)
|
||||
#define T_ENB_PHY_UL_TICK T_ID(1)
|
||||
#define T_ENB_PHY_DL_TICK T_ID(2)
|
||||
#define T_ENB_PHY_DLSCH_UE_DCI T_ID(3)
|
||||
#define T_ENB_PHY_DLSCH_UE_ACK T_ID(4)
|
||||
#define T_ENB_PHY_DLSCH_UE_NACK T_ID(5)
|
||||
#define T_ENB_PHY_ULSCH_UE_DCI T_ID(6)
|
||||
#define T_ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION T_ID(7)
|
||||
#define T_ENB_PHY_ULSCH_UE_ACK T_ID(8)
|
||||
#define T_ENB_PHY_ULSCH_UE_NACK T_ID(9)
|
||||
#define T_ENB_PHY_INPUT_SIGNAL T_ID(10)
|
||||
#define T_ENB_PHY_OUTPUT_SIGNAL T_ID(11)
|
||||
#define T_ENB_PHY_UL_CHANNEL_ESTIMATE T_ID(12)
|
||||
#define T_ENB_PHY_PUSCH_IQ T_ID(13)
|
||||
#define T_ENB_PHY_PUCCH_1AB_IQ T_ID(14)
|
||||
#define T_ENB_PHY_PUCCH_1_ENERGY T_ID(15)
|
||||
#define T_ENB_PHY_PHICH T_ID(16)
|
||||
#define T_ENB_PHY_MSG3_ALLOCATION T_ID(17)
|
||||
#define T_ENB_PHY_INITIATE_RA_PROCEDURE T_ID(18)
|
||||
#define T_ENB_MAC_UE_DL_SDU T_ID(19)
|
||||
#define T_ENB_MAC_UE_UL_SCHEDULE T_ID(20)
|
||||
#define T_ENB_MAC_UE_UL_SCHEDULE_RETRANSMISSION T_ID(21)
|
||||
#define T_ENB_MAC_UE_UL_PDU T_ID(22)
|
||||
#define T_ENB_MAC_UE_UL_PDU_WITH_DATA T_ID(23)
|
||||
#define T_ENB_MAC_UE_UL_SDU T_ID(24)
|
||||
#define T_ENB_MAC_UE_UL_SDU_WITH_DATA T_ID(25)
|
||||
#define T_ENB_MAC_UE_UL_CE T_ID(26)
|
||||
#define T_ENB_MAC_UE_DL_PDU_WITH_DATA T_ID(27)
|
||||
#define T_ENB_MAC_SCHEDULING_REQUEST T_ID(28)
|
||||
#define T_ENB_RLC_DL T_ID(29)
|
||||
#define T_ENB_RLC_UL T_ID(30)
|
||||
#define T_ENB_RLC_MAC_DL T_ID(31)
|
||||
#define T_ENB_RLC_MAC_UL T_ID(32)
|
||||
#define T_ENB_PDCP_UL T_ID(33)
|
||||
#define T_ENB_PDCP_DL T_ID(34)
|
||||
#define T_ENB_RRC_CONNECTION_SETUP_COMPLETE T_ID(35)
|
||||
#define T_ENB_RRC_SECURITY_MODE_COMMAND T_ID(36)
|
||||
#define T_ENB_RRC_SECURITY_MODE_COMPLETE T_ID(37)
|
||||
#define T_ENB_RRC_SECURITY_MODE_FAILURE T_ID(38)
|
||||
#define T_ENB_RRC_UE_CAPABILITY_ENQUIRY T_ID(39)
|
||||
#define T_ENB_RRC_UE_CAPABILITY_INFORMATION T_ID(40)
|
||||
#define T_ENB_RRC_CONNECTION_REQUEST T_ID(41)
|
||||
#define T_ENB_RRC_CONNECTION_REJECT T_ID(42)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_REQUEST T_ID(43)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT T_ID(44)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE T_ID(45)
|
||||
#define T_ENB_RRC_CONNECTION_REESTABLISHMENT_REJECT T_ID(46)
|
||||
#define T_ENB_RRC_CONNECTION_RELEASE T_ID(47)
|
||||
#define T_ENB_RRC_CONNECTION_RECONFIGURATION T_ID(48)
|
||||
#define T_ENB_RRC_MEASUREMENT_REPORT T_ID(49)
|
||||
#define T_ENB_RRC_HANDOVER_PREPARATION_INFORMATION T_ID(50)
|
||||
#define T_ENB_RRC_CONNECTION_RECONFIGURATION_COMPLETE T_ID(51)
|
||||
#define T_ENB_RRC_CONNECTION_SETUP T_ID(52)
|
||||
#define T_ENB_RRC_UL_CCCH_DATA_IN T_ID(53)
|
||||
#define T_ENB_RRC_UL_DCCH_DATA_IN T_ID(54)
|
||||
#define T_ENB_RRC_UL_HANDOVER_PREPARATION_TRANSFER T_ID(55)
|
||||
#define T_ENB_RRC_UL_INFORMATION_TRANSFER T_ID(56)
|
||||
#define T_ENB_RRC_COUNTER_CHECK_RESPONSE T_ID(57)
|
||||
#define T_ENB_RRC_UE_INFORMATION_RESPONSE_R9 T_ID(58)
|
||||
#define T_ENB_RRC_PROXIMITY_INDICATION_R9 T_ID(59)
|
||||
#define T_ENB_RRC_RECONFIGURATION_COMPLETE_R10 T_ID(60)
|
||||
#define T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10 T_ID(61)
|
||||
#define T_ENB_RRC_INTER_FREQ_RSTD_MEASUREMENT_INDICATION T_ID(62)
|
||||
#define T_ENB_RRC_UNKNOW_MESSAGE T_ID(63)
|
||||
#define T_LEGACY_MAC_INFO T_ID(64)
|
||||
#define T_LEGACY_MAC_ERROR T_ID(65)
|
||||
#define T_LEGACY_MAC_WARNING T_ID(66)
|
||||
#define T_LEGACY_MAC_DEBUG T_ID(67)
|
||||
#define T_LEGACY_MAC_TRACE T_ID(68)
|
||||
#define T_LEGACY_PHY_INFO T_ID(69)
|
||||
#define T_LEGACY_PHY_ERROR T_ID(70)
|
||||
#define T_LEGACY_PHY_WARNING T_ID(71)
|
||||
#define T_LEGACY_PHY_DEBUG T_ID(72)
|
||||
#define T_LEGACY_PHY_TRACE T_ID(73)
|
||||
#define T_LEGACY_S1AP_INFO T_ID(74)
|
||||
#define T_LEGACY_S1AP_ERROR T_ID(75)
|
||||
#define T_LEGACY_S1AP_WARNING T_ID(76)
|
||||
#define T_LEGACY_S1AP_DEBUG T_ID(77)
|
||||
#define T_LEGACY_S1AP_TRACE T_ID(78)
|
||||
#define T_LEGACY_X2AP_INFO T_ID(79)
|
||||
#define T_LEGACY_X2AP_ERROR T_ID(80)
|
||||
#define T_LEGACY_X2AP_WARNING T_ID(81)
|
||||
#define T_LEGACY_X2AP_DEBUG T_ID(82)
|
||||
#define T_LEGACY_X2AP_TRACE T_ID(83)
|
||||
#define T_LEGACY_RRC_INFO T_ID(84)
|
||||
#define T_LEGACY_RRC_ERROR T_ID(85)
|
||||
#define T_LEGACY_RRC_WARNING T_ID(86)
|
||||
#define T_LEGACY_RRC_DEBUG T_ID(87)
|
||||
#define T_LEGACY_RRC_TRACE T_ID(88)
|
||||
#define T_LEGACY_RLC_INFO T_ID(89)
|
||||
#define T_LEGACY_RLC_ERROR T_ID(90)
|
||||
#define T_LEGACY_RLC_WARNING T_ID(91)
|
||||
#define T_LEGACY_RLC_DEBUG T_ID(92)
|
||||
#define T_LEGACY_RLC_TRACE T_ID(93)
|
||||
#define T_LEGACY_PDCP_INFO T_ID(94)
|
||||
#define T_LEGACY_PDCP_ERROR T_ID(95)
|
||||
#define T_LEGACY_PDCP_WARNING T_ID(96)
|
||||
#define T_LEGACY_PDCP_DEBUG T_ID(97)
|
||||
#define T_LEGACY_PDCP_TRACE T_ID(98)
|
||||
#define T_LEGACY_ENB_APP_INFO T_ID(99)
|
||||
#define T_LEGACY_ENB_APP_ERROR T_ID(100)
|
||||
#define T_LEGACY_ENB_APP_WARNING T_ID(101)
|
||||
#define T_LEGACY_ENB_APP_DEBUG T_ID(102)
|
||||
#define T_LEGACY_ENB_APP_TRACE T_ID(103)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_INFO T_ID(104)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_ERROR T_ID(105)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_WARNING T_ID(106)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_DEBUG T_ID(107)
|
||||
#define T_LEGACY_FLEXRAN_AGENT_TRACE T_ID(108)
|
||||
#define T_LEGACY_SCTP_INFO T_ID(109)
|
||||
#define T_LEGACY_SCTP_ERROR T_ID(110)
|
||||
#define T_LEGACY_SCTP_WARNING T_ID(111)
|
||||
#define T_LEGACY_SCTP_DEBUG T_ID(112)
|
||||
#define T_LEGACY_SCTP_TRACE T_ID(113)
|
||||
#define T_LEGACY_UDP__INFO T_ID(114)
|
||||
#define T_LEGACY_UDP__ERROR T_ID(115)
|
||||
#define T_LEGACY_UDP__WARNING T_ID(116)
|
||||
#define T_LEGACY_UDP__DEBUG T_ID(117)
|
||||
#define T_LEGACY_UDP__TRACE T_ID(118)
|
||||
#define T_LEGACY_NAS_INFO T_ID(119)
|
||||
#define T_LEGACY_NAS_ERROR T_ID(120)
|
||||
#define T_LEGACY_NAS_WARNING T_ID(121)
|
||||
#define T_LEGACY_NAS_DEBUG T_ID(122)
|
||||
#define T_LEGACY_NAS_TRACE T_ID(123)
|
||||
#define T_LEGACY_HW_INFO T_ID(124)
|
||||
#define T_LEGACY_HW_ERROR T_ID(125)
|
||||
#define T_LEGACY_HW_WARNING T_ID(126)
|
||||
#define T_LEGACY_HW_DEBUG T_ID(127)
|
||||
#define T_LEGACY_HW_TRACE T_ID(128)
|
||||
#define T_LEGACY_EMU_INFO T_ID(129)
|
||||
#define T_LEGACY_EMU_ERROR T_ID(130)
|
||||
#define T_LEGACY_EMU_WARNING T_ID(131)
|
||||
#define T_LEGACY_EMU_DEBUG T_ID(132)
|
||||
#define T_LEGACY_EMU_TRACE T_ID(133)
|
||||
#define T_LEGACY_OTG_INFO T_ID(134)
|
||||
#define T_LEGACY_OTG_ERROR T_ID(135)
|
||||
#define T_LEGACY_OTG_WARNING T_ID(136)
|
||||
#define T_LEGACY_OTG_DEBUG T_ID(137)
|
||||
#define T_LEGACY_OTG_TRACE T_ID(138)
|
||||
#define T_LEGACY_OCG_INFO T_ID(139)
|
||||
#define T_LEGACY_OCG_ERROR T_ID(140)
|
||||
#define T_LEGACY_OCG_WARNING T_ID(141)
|
||||
#define T_LEGACY_OCG_DEBUG T_ID(142)
|
||||
#define T_LEGACY_OCG_TRACE T_ID(143)
|
||||
#define T_LEGACY_OCM_INFO T_ID(144)
|
||||
#define T_LEGACY_OCM_ERROR T_ID(145)
|
||||
#define T_LEGACY_OCM_WARNING T_ID(146)
|
||||
#define T_LEGACY_OCM_DEBUG T_ID(147)
|
||||
#define T_LEGACY_OCM_TRACE T_ID(148)
|
||||
#define T_LEGACY_OIP_INFO T_ID(149)
|
||||
#define T_LEGACY_OIP_ERROR T_ID(150)
|
||||
#define T_LEGACY_OIP_WARNING T_ID(151)
|
||||
#define T_LEGACY_OIP_DEBUG T_ID(152)
|
||||
#define T_LEGACY_OIP_TRACE T_ID(153)
|
||||
#define T_LEGACY_OMG_INFO T_ID(154)
|
||||
#define T_LEGACY_OMG_ERROR T_ID(155)
|
||||
#define T_LEGACY_OMG_WARNING T_ID(156)
|
||||
#define T_LEGACY_OMG_DEBUG T_ID(157)
|
||||
#define T_LEGACY_OMG_TRACE T_ID(158)
|
||||
#define T_LEGACY_OPT_INFO T_ID(159)
|
||||
#define T_LEGACY_OPT_ERROR T_ID(160)
|
||||
#define T_LEGACY_OPT_WARNING T_ID(161)
|
||||
#define T_LEGACY_OPT_DEBUG T_ID(162)
|
||||
#define T_LEGACY_OPT_TRACE T_ID(163)
|
||||
#define T_LEGACY_GTPU_INFO T_ID(164)
|
||||
#define T_LEGACY_GTPU_ERROR T_ID(165)
|
||||
#define T_LEGACY_GTPU_WARNING T_ID(166)
|
||||
#define T_LEGACY_GTPU_DEBUG T_ID(167)
|
||||
#define T_LEGACY_GTPU_TRACE T_ID(168)
|
||||
#define T_LEGACY_TMR_INFO T_ID(169)
|
||||
#define T_LEGACY_TMR_ERROR T_ID(170)
|
||||
#define T_LEGACY_TMR_WARNING T_ID(171)
|
||||
#define T_LEGACY_TMR_DEBUG T_ID(172)
|
||||
#define T_LEGACY_TMR_TRACE T_ID(173)
|
||||
#define T_LEGACY_OSA_INFO T_ID(174)
|
||||
#define T_LEGACY_OSA_ERROR T_ID(175)
|
||||
#define T_LEGACY_OSA_WARNING T_ID(176)
|
||||
#define T_LEGACY_OSA_DEBUG T_ID(177)
|
||||
#define T_LEGACY_OSA_TRACE T_ID(178)
|
||||
#define T_LEGACY_SIM_INFO T_ID(179)
|
||||
#define T_LEGACY_SIM_ERROR T_ID(180)
|
||||
#define T_LEGACY_SIM_WARNING T_ID(181)
|
||||
#define T_LEGACY_SIM_DEBUG T_ID(182)
|
||||
#define T_LEGACY_SIM_TRACE T_ID(183)
|
||||
#define T_LEGACY_component_INFO T_ID(184)
|
||||
#define T_LEGACY_component_ERROR T_ID(185)
|
||||
#define T_LEGACY_component_WARNING T_ID(186)
|
||||
#define T_LEGACY_component_DEBUG T_ID(187)
|
||||
#define T_LEGACY_component_TRACE T_ID(188)
|
||||
#define T_LEGACY_componentP_INFO T_ID(189)
|
||||
#define T_LEGACY_componentP_ERROR T_ID(190)
|
||||
#define T_LEGACY_componentP_WARNING T_ID(191)
|
||||
#define T_LEGACY_componentP_DEBUG T_ID(192)
|
||||
#define T_LEGACY_componentP_TRACE T_ID(193)
|
||||
#define T_LEGACY_CLI_INFO T_ID(194)
|
||||
#define T_LEGACY_CLI_ERROR T_ID(195)
|
||||
#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_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
|
||||
+437
-28
@@ -87,17 +87,20 @@ uint8_t F1AP_get_next_transaction_identifier(module_id_t enb_mod_idP, module_id_
|
||||
void F1AP_CU_task() {
|
||||
printf("Start F1AP CU task!\n");
|
||||
|
||||
sctp_cu_init();
|
||||
//sctp_cu_init();
|
||||
|
||||
// while (1) {
|
||||
|
||||
// switch () {
|
||||
|
||||
// case F1AP_ProcedureCode_id_F1Setup:
|
||||
//CU_send_F1_SETUP_RESPONSE();
|
||||
//CU_send_DL_RRC_MESSAGE_TRANSFER(); // L436
|
||||
//CU_send_UE_CONTEXT_SETUP_REQUEST(); // god
|
||||
//CU_send_UE_CONTEXT_MODIFICATION_REQUEST(); // oh my
|
||||
//case F1AP_ProcedureCode_id_F1Setup:
|
||||
CU_send_F1_SETUP_RESPONSE();
|
||||
//case F1AP_ProcedureCode_id_InitialULRRCMessageTransfer:
|
||||
// CU_handle_UL_INITIAL_RRC_MESSAGE_TRANSFER ();
|
||||
//CU_send_DL_RRC_MESSAGE_TRANSFER(); // SRBID and RRCContainer get issue when decode.
|
||||
//CU_send_UE_CONTEXT_SETUP_REQUEST();
|
||||
//CU_send_UE_CONTEXT_MODIFICATION_REQUEST();
|
||||
//CU_send_gNB_CU_CONFIGURATION_UPDATE((module_id_t)1, (module_id_t)2); // some problem found
|
||||
// break;
|
||||
|
||||
// default:
|
||||
@@ -170,11 +173,6 @@ void CU_send_F1_SETUP_RESPONSE() {
|
||||
pdu.choice.successfulOutcome->criticality = F1AP_Criticality_reject;
|
||||
pdu.choice.successfulOutcome->value.present = F1AP_SuccessfulOutcome__value_PR_F1SetupResponse;
|
||||
out = &pdu.choice.successfulOutcome->value.choice.F1SetupResponse;
|
||||
|
||||
/* response_present_val */
|
||||
//F1AP_F1SetupResponseIEs__value_PR_TransactionID
|
||||
//F1AP_F1SetupResponseIEs__value_PR_GNB_CU_Name
|
||||
//F1AP_F1SetupResponseIEs__value_PR_Cells_to_be_Activated_List
|
||||
|
||||
/* mandatory */
|
||||
/* c1. Transaction ID (integer value)*/
|
||||
@@ -228,16 +226,39 @@ void CU_send_F1_SETUP_RESPONSE() {
|
||||
|
||||
/* optional */
|
||||
/* - nRPCI */
|
||||
if (0) {
|
||||
if (1) {
|
||||
cells_to_be_activated_list_item.nRPCI = (F1AP_NRPCI_t *)calloc(1, sizeof(F1AP_NRPCI_t));
|
||||
*cells_to_be_activated_list_item.nRPCI = 321L; // int 0..1007
|
||||
}
|
||||
|
||||
/* optional */
|
||||
/* - gNB-CU System Information */
|
||||
//if (1) {
|
||||
if (1) {
|
||||
/* 3.1.2 gNB-CUSystem Information */
|
||||
F1AP_Cells_to_be_Activated_List_ItemExtIEs_t *cells_to_be_activated_list_itemExtIEs;
|
||||
cells_to_be_activated_list_itemExtIEs = (F1AP_Cells_to_be_Activated_List_ItemExtIEs_t *)calloc(1, sizeof(F1AP_Cells_to_be_Activated_List_ItemExtIEs_t));
|
||||
cells_to_be_activated_list_itemExtIEs->id = F1AP_ProtocolIE_ID_id_gNB_CUSystemInformation;
|
||||
cells_to_be_activated_list_itemExtIEs->criticality = F1AP_Criticality_reject;
|
||||
cells_to_be_activated_list_itemExtIEs->extensionValue.present = F1AP_Cells_to_be_Activated_List_ItemExtIEs__extensionValue_PR_GNB_CUSystemInformation;
|
||||
|
||||
|
||||
F1AP_GNB_CUSystemInformation_t gNB_CUSystemInformation;
|
||||
memset((void *)&gNB_CUSystemInformation, 0, sizeof(F1AP_GNB_CUSystemInformation_t));
|
||||
|
||||
//}
|
||||
OCTET_STRING_fromBuf(&gNB_CUSystemInformation.sImessage,
|
||||
"123456", strlen("123456"));
|
||||
|
||||
cells_to_be_activated_list_itemExtIEs->extensionValue.choice.GNB_CUSystemInformation = gNB_CUSystemInformation;
|
||||
|
||||
|
||||
F1AP_ProtocolExtensionContainer_160P9_t p_160P9_t;
|
||||
memset((void *)&p_160P9_t, 0, sizeof(F1AP_ProtocolExtensionContainer_160P9_t));
|
||||
|
||||
ASN_SEQUENCE_ADD(&p_160P9_t.list,
|
||||
cells_to_be_activated_list_itemExtIEs);
|
||||
cells_to_be_activated_list_item.iE_Extensions = &p_160P9_t;
|
||||
|
||||
}
|
||||
/* ADD */
|
||||
cells_to_be_activated_list_item_ies->value.choice.Cells_to_be_Activated_List_Item = cells_to_be_activated_list_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Cells_to_be_Activated_List.list,
|
||||
@@ -386,6 +407,16 @@ void CU_send_RESET_ACKKNOWLEDGE(F1AP_ResetAcknowledge_t *ResetAcknowledge) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
}
|
||||
|
||||
void CU_handle_UL_INITIAL_RRC_MESSAGE_TRANSFER(){
|
||||
|
||||
printf("CU_handle_UL_INITIAL_RRC_MESSAGE_TRANSFER\n");
|
||||
// decode the F1 message
|
||||
// get the rrc message from the contauiner
|
||||
// call func rrc_eNB_decode_ccch: <-- needs some update here
|
||||
|
||||
// if size > 0
|
||||
// CU_send_DL_RRC_MESSAGE_TRANSFER(C.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.Payload, RC.rrc[ctxt_pP->module_id]->carrier[CC_id].Srb0.Tx_buffer.payload_size)
|
||||
}
|
||||
|
||||
void CU_handle_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
@@ -447,7 +478,7 @@ void CU_send_DL_RRC_MESSAGE_TRANSFER() {
|
||||
ie->id = F1AP_ProtocolIE_ID_id_SRBID;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_DLRRCMessageTransferIEs__value_PR_SRBID;
|
||||
ie->value.choice.SRBID = 1L;
|
||||
ie->value.choice.SRBID = 2L;
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* optional */
|
||||
@@ -468,7 +499,7 @@ void CU_send_DL_RRC_MESSAGE_TRANSFER() {
|
||||
ie->id = F1AP_ProtocolIE_ID_id_RRCContainer;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_DLRRCMessageTransferIEs__value_PR_RRCContainer;
|
||||
OCTET_STRING_fromBuf(&ie->value.choice.RRCContainer, "asdsa1", strlen("asdsa1"));
|
||||
OCTET_STRING_fromBuf(&ie->value.choice.RRCContainer, "A", strlen("A"));
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* optional */
|
||||
@@ -487,7 +518,7 @@ void CU_send_DL_RRC_MESSAGE_TRANSFER() {
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
}
|
||||
|
||||
/* encode */
|
||||
/* encode */
|
||||
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
|
||||
printf("Failed to encode F1 setup request\n");
|
||||
return -1;
|
||||
@@ -516,8 +547,384 @@ void CU_send_gNB_DU_CONFIGURATION_UPDATE_ACKNOWLEDGE(F1AP_GNBDUConfigurationUpda
|
||||
}
|
||||
|
||||
|
||||
void CU_send_gNB_CU_CONFIGURATION_UPDATE(F1AP_GNBCUConfigurationUpdate_t *GNBCUConfigurationUpdate) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
//void CU_send_gNB_CU_CONFIGURATION_UPDATE(F1AP_GNBCUConfigurationUpdate_t *GNBCUConfigurationUpdate) {
|
||||
void CU_send_gNB_CU_CONFIGURATION_UPDATE(module_id_t enb_mod_idP, module_id_t du_mod_idP) {
|
||||
F1AP_F1AP_PDU_t pdu;
|
||||
F1AP_GNBCUConfigurationUpdate_t *out;
|
||||
F1AP_GNBCUConfigurationUpdateIEs_t *ie;
|
||||
|
||||
uint8_t *buffer;
|
||||
uint32_t len;
|
||||
int ret = 0;
|
||||
int i = 0;
|
||||
|
||||
f1ap_info_t f1ap_info;
|
||||
f1ap_info.GNB_CU_Name = "ABC";
|
||||
f1ap_info.mcc = 208;
|
||||
f1ap_info.mnc = 93;
|
||||
f1ap_info.mnc_digit_length = 8;
|
||||
|
||||
/* Create */
|
||||
/* 0. Message Type */
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
pdu.present = F1AP_F1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage = (F1AP_InitiatingMessage_t *)calloc(1, sizeof(F1AP_InitiatingMessage_t));
|
||||
pdu.choice.initiatingMessage->procedureCode = F1AP_ProcedureCode_id_gNBCUConfigurationUpdate;
|
||||
pdu.choice.initiatingMessage->criticality = F1AP_Criticality_ignore;
|
||||
pdu.choice.initiatingMessage->value.present = F1AP_InitiatingMessage__value_PR_GNBCUConfigurationUpdate;
|
||||
out = &pdu.choice.initiatingMessage->value.choice.GNBCUConfigurationUpdate;
|
||||
|
||||
/* mandatory */
|
||||
/* c1. Transaction ID (integer value) */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_TransactionID;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_TransactionID;
|
||||
ie->value.choice.TransactionID = F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c2. Cells_to_be_Activated_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_Cells_to_be_Activated_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_Cells_to_be_Activated_List_ItemIEs_t *cells_to_be_activated_list_item_ies;
|
||||
cells_to_be_activated_list_item_ies = (F1AP_Cells_to_be_Activated_List_ItemIEs_t *)calloc(1, sizeof(F1AP_Cells_to_be_Activated_List_ItemIEs_t));
|
||||
cells_to_be_activated_list_item_ies->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item;
|
||||
cells_to_be_activated_list_item_ies->criticality = F1AP_Criticality_reject;
|
||||
cells_to_be_activated_list_item_ies->value.present = F1AP_Cells_to_be_Activated_List_ItemIEs__value_PR_Cells_to_be_Activated_List_Item;
|
||||
|
||||
/* 2.1 cells to be Activated list item */
|
||||
F1AP_Cells_to_be_Activated_List_Item_t cells_to_be_activated_list_item;
|
||||
memset((void *)&cells_to_be_activated_list_item, 0, sizeof(F1AP_Cells_to_be_Activated_List_Item_t));
|
||||
|
||||
/* - nRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
cells_to_be_activated_list_item.nRCGI = nRCGI;
|
||||
|
||||
/* optional */
|
||||
/* - nRPCI */
|
||||
if (0) {
|
||||
cells_to_be_activated_list_item.nRPCI = (F1AP_NRPCI_t *)calloc(1, sizeof(F1AP_NRPCI_t));
|
||||
*cells_to_be_activated_list_item.nRPCI = 321L; // int 0..1007
|
||||
}
|
||||
|
||||
/* optional */
|
||||
/* - gNB-CU System Information */
|
||||
//if (1) {
|
||||
|
||||
//}
|
||||
/* ADD */
|
||||
cells_to_be_activated_list_item_ies->value.choice.Cells_to_be_Activated_List_Item = cells_to_be_activated_list_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Cells_to_be_Activated_List.list,
|
||||
cells_to_be_activated_list_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c3. Cells_to_be_Deactivated_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Deactivated_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_Cells_to_be_Deactivated_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_Cells_to_be_Deactivated_List_ItemIEs_t *cells_to_be_deactivated_list_item_ies;
|
||||
cells_to_be_deactivated_list_item_ies = (F1AP_Cells_to_be_Deactivated_List_ItemIEs_t *)calloc(1, sizeof(F1AP_Cells_to_be_Deactivated_List_ItemIEs_t));
|
||||
cells_to_be_deactivated_list_item_ies->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item;
|
||||
cells_to_be_deactivated_list_item_ies->criticality = F1AP_Criticality_reject;
|
||||
cells_to_be_deactivated_list_item_ies->value.present = F1AP_Cells_to_be_Deactivated_List_ItemIEs__value_PR_Cells_to_be_Deactivated_List_Item;
|
||||
|
||||
/* 3.1 cells to be Deactivated list item */
|
||||
F1AP_Cells_to_be_Deactivated_List_Item_t cells_to_be_deactivated_list_item;
|
||||
memset((void *)&cells_to_be_deactivated_list_item, 0, sizeof(F1AP_Cells_to_be_Deactivated_List_Item_t));
|
||||
|
||||
/* - nRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
cells_to_be_deactivated_list_item.nRCGI = nRCGI;
|
||||
|
||||
//}
|
||||
/* ADD */
|
||||
cells_to_be_deactivated_list_item_ies->value.choice.Cells_to_be_Deactivated_List_Item = cells_to_be_deactivated_list_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Cells_to_be_Deactivated_List.list,
|
||||
cells_to_be_deactivated_list_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c4. GNB_CU_TNL_Association_To_Add_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Add_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_GNB_CU_TNL_Association_To_Add_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_GNB_CU_TNL_Association_To_Add_ItemIEs_t *gnb_cu_tnl_association_to_add_item_ies;
|
||||
gnb_cu_tnl_association_to_add_item_ies = (F1AP_GNB_CU_TNL_Association_To_Add_ItemIEs_t *)calloc(1, sizeof(F1AP_GNB_CU_TNL_Association_To_Add_ItemIEs_t));
|
||||
gnb_cu_tnl_association_to_add_item_ies->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Add_Item;
|
||||
gnb_cu_tnl_association_to_add_item_ies->criticality = F1AP_Criticality_reject;
|
||||
gnb_cu_tnl_association_to_add_item_ies->value.present = F1AP_GNB_CU_TNL_Association_To_Add_ItemIEs__value_PR_GNB_CU_TNL_Association_To_Add_Item;
|
||||
|
||||
/* 4.1 GNB_CU_TNL_Association_To_Add_Item */
|
||||
F1AP_GNB_CU_TNL_Association_To_Add_Item_t gnb_cu_tnl_association_to_add_item;
|
||||
memset((void *)&gnb_cu_tnl_association_to_add_item, 0, sizeof(F1AP_GNB_CU_TNL_Association_To_Add_Item_t));
|
||||
|
||||
|
||||
/* 4.1.1 tNLAssociationTransportLayerAddress */
|
||||
F1AP_CP_TransportLayerAddress_t transportLayerAddress;
|
||||
memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address;
|
||||
TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address);
|
||||
|
||||
// memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
// transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address_and_port;
|
||||
// transportLayerAddress.choice.endpoint_IP_address_and_port = (F1AP_Endpoint_IP_address_and_port_t *)calloc(1, sizeof(F1AP_Endpoint_IP_address_and_port_t));
|
||||
// TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address_and_port.endpoint_IP_address);
|
||||
|
||||
gnb_cu_tnl_association_to_add_item.tNLAssociationTransportLayerAddress = transportLayerAddress;
|
||||
|
||||
/* 4.1.2 tNLAssociationUsage */
|
||||
gnb_cu_tnl_association_to_add_item.tNLAssociationUsage = F1AP_TNLAssociationUsage_non_ue;
|
||||
|
||||
|
||||
/* ADD */
|
||||
gnb_cu_tnl_association_to_add_item_ies->value.choice.GNB_CU_TNL_Association_To_Add_Item = gnb_cu_tnl_association_to_add_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.GNB_CU_TNL_Association_To_Add_List.list,
|
||||
gnb_cu_tnl_association_to_add_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c5. GNB_CU_TNL_Association_To_Remove_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Remove_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_GNB_CU_TNL_Association_To_Remove_List;
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_GNB_CU_TNL_Association_To_Remove_ItemIEs_t *gnb_cu_tnl_association_to_remove_item_ies;
|
||||
gnb_cu_tnl_association_to_remove_item_ies = (F1AP_GNB_CU_TNL_Association_To_Remove_ItemIEs_t *)calloc(1, sizeof(F1AP_GNB_CU_TNL_Association_To_Remove_ItemIEs_t));
|
||||
gnb_cu_tnl_association_to_remove_item_ies->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Remove_Item;
|
||||
gnb_cu_tnl_association_to_remove_item_ies->criticality = F1AP_Criticality_reject;
|
||||
gnb_cu_tnl_association_to_remove_item_ies->value.present = F1AP_GNB_CU_TNL_Association_To_Remove_ItemIEs__value_PR_GNB_CU_TNL_Association_To_Remove_Item;
|
||||
|
||||
/* 4.1 GNB_CU_TNL_Association_To_Remove_Item */
|
||||
F1AP_GNB_CU_TNL_Association_To_Remove_Item_t gnb_cu_tnl_association_to_remove_item;
|
||||
memset((void *)&gnb_cu_tnl_association_to_remove_item, 0, sizeof(F1AP_GNB_CU_TNL_Association_To_Remove_Item_t));
|
||||
|
||||
|
||||
/* 4.1.1 tNLAssociationTransportLayerAddress */
|
||||
F1AP_CP_TransportLayerAddress_t transportLayerAddress;
|
||||
memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address;
|
||||
TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address);
|
||||
|
||||
// memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
// transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address_and_port;
|
||||
// transportLayerAddress.choice.endpoint_IP_address_and_port = (F1AP_Endpoint_IP_address_and_port_t *)calloc(1, sizeof(F1AP_Endpoint_IP_address_and_port_t));
|
||||
// TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address_and_port.endpoint_IP_address);
|
||||
|
||||
gnb_cu_tnl_association_to_remove_item.tNLAssociationTransportLayerAddress = transportLayerAddress;
|
||||
|
||||
|
||||
/* ADD */
|
||||
gnb_cu_tnl_association_to_remove_item_ies->value.choice.GNB_CU_TNL_Association_To_Remove_Item = gnb_cu_tnl_association_to_remove_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.GNB_CU_TNL_Association_To_Remove_List.list,
|
||||
gnb_cu_tnl_association_to_remove_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* mandatory */
|
||||
/* c6. GNB_CU_TNL_Association_To_Update_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Update_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_GNB_CU_TNL_Association_To_Update_List;
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_GNB_CU_TNL_Association_To_Update_ItemIEs_t *gnb_cu_tnl_association_to_update_item_ies;
|
||||
gnb_cu_tnl_association_to_update_item_ies = (F1AP_GNB_CU_TNL_Association_To_Update_ItemIEs_t *)calloc(1, sizeof(F1AP_GNB_CU_TNL_Association_To_Update_ItemIEs_t));
|
||||
gnb_cu_tnl_association_to_update_item_ies->id = F1AP_ProtocolIE_ID_id_GNB_CU_TNL_Association_To_Update_Item;
|
||||
gnb_cu_tnl_association_to_update_item_ies->criticality = F1AP_Criticality_reject;
|
||||
gnb_cu_tnl_association_to_update_item_ies->value.present = F1AP_GNB_CU_TNL_Association_To_Update_ItemIEs__value_PR_GNB_CU_TNL_Association_To_Update_Item;
|
||||
|
||||
/* 4.1 GNB_CU_TNL_Association_To_Update_Item */
|
||||
F1AP_GNB_CU_TNL_Association_To_Update_Item_t gnb_cu_tnl_association_to_update_item;
|
||||
memset((void *)&gnb_cu_tnl_association_to_update_item, 0, sizeof(F1AP_GNB_CU_TNL_Association_To_Update_Item_t));
|
||||
|
||||
|
||||
/* 4.1.1 tNLAssociationTransportLayerAddress */
|
||||
F1AP_CP_TransportLayerAddress_t transportLayerAddress;
|
||||
memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address;
|
||||
TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address);
|
||||
|
||||
// memset((void *)&transportLayerAddress, 0, sizeof(F1AP_CP_TransportLayerAddress_t));
|
||||
// transportLayerAddress.present = F1AP_CP_TransportLayerAddress_PR_endpoint_IP_address_and_port;
|
||||
// transportLayerAddress.choice.endpoint_IP_address_and_port = (F1AP_Endpoint_IP_address_and_port_t *)calloc(1, sizeof(F1AP_Endpoint_IP_address_and_port_t));
|
||||
// TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(1234, &transportLayerAddress.choice.endpoint_IP_address_and_port.endpoint_IP_address);
|
||||
|
||||
gnb_cu_tnl_association_to_update_item.tNLAssociationTransportLayerAddress = transportLayerAddress;
|
||||
|
||||
|
||||
/* 4.1.2 tNLAssociationUsage */
|
||||
if (1) {
|
||||
gnb_cu_tnl_association_to_update_item.tNLAssociationUsage = (F1AP_TNLAssociationUsage_t *)calloc(1, sizeof(F1AP_TNLAssociationUsage_t));
|
||||
*gnb_cu_tnl_association_to_update_item.tNLAssociationUsage = F1AP_TNLAssociationUsage_non_ue;
|
||||
}
|
||||
|
||||
/* ADD */
|
||||
gnb_cu_tnl_association_to_update_item_ies->value.choice.GNB_CU_TNL_Association_To_Update_Item = gnb_cu_tnl_association_to_update_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.GNB_CU_TNL_Association_To_Update_List.list,
|
||||
gnb_cu_tnl_association_to_update_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c7. Cells_to_be_Barred_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Barred_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_Cells_to_be_Barred_List;
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
F1AP_Cells_to_be_Barred_ItemIEs_t *cells_to_be_barred_item_ies;
|
||||
cells_to_be_barred_item_ies = (F1AP_Cells_to_be_Barred_ItemIEs_t *)calloc(1, sizeof(F1AP_Cells_to_be_Barred_ItemIEs_t));
|
||||
cells_to_be_barred_item_ies->id = F1AP_ProtocolIE_ID_id_Cells_to_be_Activated_List_Item;
|
||||
cells_to_be_barred_item_ies->criticality = F1AP_Criticality_reject;
|
||||
cells_to_be_barred_item_ies->value.present = F1AP_Cells_to_be_Barred_ItemIEs__value_PR_Cells_to_be_Barred_Item;
|
||||
|
||||
/* 7.1 cells to be Deactivated list item */
|
||||
F1AP_Cells_to_be_Barred_Item_t cells_to_be_barred_item;
|
||||
memset((void *)&cells_to_be_barred_item, 0, sizeof(F1AP_Cells_to_be_Barred_Item_t));
|
||||
|
||||
/* - nRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
cells_to_be_barred_item.nRCGI = nRCGI;
|
||||
|
||||
/* 7.2 cellBarred*/
|
||||
cells_to_be_barred_item.cellBarred = F1AP_CellBarred_not_barred;
|
||||
|
||||
/* ADD */
|
||||
cells_to_be_barred_item_ies->value.choice.Cells_to_be_Barred_Item = cells_to_be_barred_item;
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Cells_to_be_Barred_List.list,
|
||||
cells_to_be_barred_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c8. Protected_EUTRA_Resources_List */
|
||||
ie = (F1AP_GNBCUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBCUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBCUConfigurationUpdateIEs__value_PR_Protected_EUTRA_Resources_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
|
||||
|
||||
F1AP_Protected_EUTRA_Resources_ItemIEs_t *protected_eutra_resources_item_ies;
|
||||
|
||||
/* 8.1 SpectrumSharingGroupID */
|
||||
protected_eutra_resources_item_ies = (F1AP_Protected_EUTRA_Resources_ItemIEs_t *)calloc(1, sizeof(F1AP_Protected_EUTRA_Resources_ItemIEs_t));
|
||||
protected_eutra_resources_item_ies->id = F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List;
|
||||
protected_eutra_resources_item_ies->criticality = F1AP_Criticality_reject;
|
||||
protected_eutra_resources_item_ies->value.present = F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_SpectrumSharingGroupID;
|
||||
protected_eutra_resources_item_ies->value.choice.SpectrumSharingGroupID = 1L;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Protected_EUTRA_Resources_List.list, protected_eutra_resources_item_ies);
|
||||
|
||||
/* 8.2 ListofEUTRACellsinGNBDUCoordination */
|
||||
protected_eutra_resources_item_ies = (F1AP_Protected_EUTRA_Resources_ItemIEs_t *)calloc(1, sizeof(F1AP_Protected_EUTRA_Resources_ItemIEs_t));
|
||||
protected_eutra_resources_item_ies->id = F1AP_ProtocolIE_ID_id_Protected_EUTRA_Resources_List;
|
||||
protected_eutra_resources_item_ies->criticality = F1AP_Criticality_reject;
|
||||
protected_eutra_resources_item_ies->value.present = F1AP_Protected_EUTRA_Resources_ItemIEs__value_PR_ListofEUTRACellsinGNBDUCoordination;
|
||||
|
||||
F1AP_Served_EUTRA_Cells_Information_t served_eutra_cells_information;
|
||||
memset((void *)&served_eutra_cells_information, 0, sizeof(F1AP_Served_EUTRA_Cells_Information_t));
|
||||
|
||||
F1AP_EUTRA_Mode_Info_t eUTRA_Mode_Info;
|
||||
memset((void *)&eUTRA_Mode_Info, 0, sizeof(F1AP_EUTRA_Mode_Info_t));
|
||||
|
||||
// eUTRAFDD
|
||||
eUTRA_Mode_Info.present = F1AP_EUTRA_Mode_Info_PR_eUTRAFDD;
|
||||
F1AP_EUTRA_FDD_Info_t *eutra_fdd_info;
|
||||
eutra_fdd_info = (F1AP_EUTRA_FDD_Info_t *)calloc(1, sizeof(F1AP_EUTRA_FDD_Info_t));
|
||||
eutra_fdd_info->uL_offsetToPointA = 123L;
|
||||
eutra_fdd_info->dL_offsetToPointA = 456L;
|
||||
eUTRA_Mode_Info.choice.eUTRAFDD = eutra_fdd_info;
|
||||
|
||||
// eUTRATDD
|
||||
// eUTRA_Mode_Info.present = F1AP_EUTRA_Mode_Info_PR_eUTRATDD;
|
||||
// F1AP_EUTRA_TDD_Info_t *eutra_tdd_info;
|
||||
// eutra_tdd_info = (F1AP_EUTRA_TDD_Info_t *)calloc(1, sizeof(F1AP_EUTRA_TDD_Info_t));
|
||||
// eutra_tdd_info->uL_offsetToPointA = 123L;
|
||||
// eutra_tdd_info->dL_offsetToPointA = 456L;
|
||||
// eUTRA_Mode_Info.choice.eUTRATDD = eutra_tdd_info;
|
||||
|
||||
served_eutra_cells_information.eUTRA_Mode_Info = eUTRA_Mode_Info;
|
||||
|
||||
OCTET_STRING_fromBuf(&served_eutra_cells_information.protectedEUTRAResourceIndication, "asdsa1d32sa1d31asd31as",
|
||||
strlen("asdsa1d32sa1d31asd31as"));
|
||||
|
||||
ASN_SEQUENCE_ADD(&protected_eutra_resources_item_ies->value.choice.ListofEUTRACellsinGNBDUCoordination.list, &served_eutra_cells_information);
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Protected_EUTRA_Resources_List.list, protected_eutra_resources_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* encode */
|
||||
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
|
||||
printf("Failed to encode F1 setup request\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
/* decode */
|
||||
if (f1ap_decode_pdu(&pdu, buffer, len) > 0) {
|
||||
printf("Failed to decode F1 setup request\n");
|
||||
}
|
||||
}
|
||||
|
||||
void CU_handle_gNB_CU_CONFIGURATION_UPDATE_FALIURE(F1AP_GNBCUConfigurationUpdateFailure_t *GNBCUConfigurationUpdateFailure) {
|
||||
@@ -596,7 +1003,7 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
/* c4. ServCellIndex */
|
||||
ie = (F1AP_UEContextSetupRequestIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupRequestIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_ServCellndex;
|
||||
ie->criticality = F1AP_Criticality_ignore;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_UEContextSetupRequestIEs__value_PR_ServCellIndex;
|
||||
ie->value.choice.ServCellIndex = 2;
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
@@ -763,7 +1170,7 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
memset((void *)&srbs_toBeSetup_item, 0, sizeof(F1AP_SRBs_ToBeSetup_Item_t));
|
||||
|
||||
/* - sRBID */
|
||||
srbs_toBeSetup_item.sRBID = 50L;
|
||||
srbs_toBeSetup_item.sRBID = 2L;
|
||||
|
||||
/* ADD */
|
||||
srbs_toBeSetup_item_ies->value.choice.SRBs_ToBeSetup_Item = srbs_toBeSetup_item;
|
||||
@@ -789,7 +1196,7 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
drbs_toBeSetup_item_ies->criticality = F1AP_Criticality_reject;
|
||||
drbs_toBeSetup_item_ies->value.present = F1AP_DRBs_ToBeSetup_ItemIEs__value_PR_DRBs_ToBeSetup_Item;
|
||||
|
||||
/* 10.1 SRBs_ToBeSetup_Item */
|
||||
/* 10.1 DRBs_ToBeSetup_Item */
|
||||
F1AP_DRBs_ToBeSetup_Item_t drbs_toBeSetup_item;
|
||||
memset((void *)&drbs_toBeSetup_item, 0, sizeof(F1AP_DRBs_ToBeSetup_Item_t));
|
||||
|
||||
@@ -799,7 +1206,7 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
/* qoSInformation */
|
||||
drbs_toBeSetup_item.qoSInformation.present = F1AP_QoSInformation_PR_eUTRANQoS;
|
||||
drbs_toBeSetup_item.qoSInformation.choice.eUTRANQoS = (F1AP_EUTRANQoS_t *)calloc(1, sizeof(F1AP_EUTRANQoS_t));
|
||||
drbs_toBeSetup_item.qoSInformation.choice.eUTRANQoS->qCI = 789L;
|
||||
drbs_toBeSetup_item.qoSInformation.choice.eUTRANQoS->qCI = 254L;
|
||||
|
||||
/* ULTunnels_ToBeSetup_List */
|
||||
int maxnoofULTunnels = 1; // 2;
|
||||
@@ -808,6 +1215,8 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
i++) {
|
||||
/* ULTunnels_ToBeSetup_Item */
|
||||
F1AP_ULUPTNLInformation_ToBeSetup_Item_t *uLUPTNLInformation_ToBeSetup_Item;
|
||||
|
||||
// gTPTunnel
|
||||
uLUPTNLInformation_ToBeSetup_Item = (F1AP_ULUPTNLInformation_ToBeSetup_Item_t *)calloc(1, sizeof(F1AP_ULUPTNLInformation_ToBeSetup_Item_t));
|
||||
uLUPTNLInformation_ToBeSetup_Item->uLUPTNLInformation.present = F1AP_UPTransportLayerInformation_PR_gTPTunnel;
|
||||
F1AP_GTPTunnel_t *gTPTunnel = (F1AP_GTPTunnel_t *)calloc(1, sizeof(F1AP_GTPTunnel_t));
|
||||
@@ -819,7 +1228,7 @@ void CU_send_UE_CONTEXT_SETUP_REQUEST() {
|
||||
|
||||
uLUPTNLInformation_ToBeSetup_Item->uLUPTNLInformation.choice.gTPTunnel = gTPTunnel;
|
||||
|
||||
ASN_SEQUENCE_ADD(&drbs_toBeSetup_item.uLUPTNLInformation_ToBeSetup_List.list, &uLUPTNLInformation_ToBeSetup_Item);
|
||||
ASN_SEQUENCE_ADD(&drbs_toBeSetup_item.uLUPTNLInformation_ToBeSetup_List.list, uLUPTNLInformation_ToBeSetup_Item);
|
||||
}
|
||||
|
||||
/* rLCMode */
|
||||
@@ -1137,7 +1546,7 @@ void CU_send_UE_CONTEXT_MODIFICATION_REQUEST() {
|
||||
memset((void *)&srbs_toBeSetupMod_item, 0, sizeof(F1AP_SRBs_ToBeSetupMod_Item_t));
|
||||
|
||||
/* - sRBID */
|
||||
srbs_toBeSetupMod_item.sRBID = 50L;
|
||||
srbs_toBeSetupMod_item.sRBID = 3L;
|
||||
|
||||
/* ADD */
|
||||
srbs_toBeSetupMod_item_ies->value.choice.SRBs_ToBeSetupMod_Item = srbs_toBeSetupMod_item;
|
||||
@@ -1175,7 +1584,7 @@ void CU_send_UE_CONTEXT_MODIFICATION_REQUEST() {
|
||||
/* qoSInformation */
|
||||
drbs_toBeSetupMod_item.qoSInformation.present = F1AP_QoSInformation_PR_eUTRANQoS;
|
||||
drbs_toBeSetupMod_item.qoSInformation.choice.eUTRANQoS = (F1AP_EUTRANQoS_t *)calloc(1, sizeof(F1AP_EUTRANQoS_t));
|
||||
drbs_toBeSetupMod_item.qoSInformation.choice.eUTRANQoS->qCI = 789L;
|
||||
drbs_toBeSetupMod_item.qoSInformation.choice.eUTRANQoS->qCI = 253L;
|
||||
|
||||
/* ULTunnels_ToBeSetupMod_List */
|
||||
int j = 0;
|
||||
@@ -1244,7 +1653,7 @@ void CU_send_UE_CONTEXT_MODIFICATION_REQUEST() {
|
||||
/* qoSInformation */
|
||||
drbs_toBeModified_item.qoSInformation.present = F1AP_QoSInformation_PR_eUTRANQoS;
|
||||
drbs_toBeModified_item.qoSInformation.choice.eUTRANQoS = (F1AP_EUTRANQoS_t *)calloc(1, sizeof(F1AP_EUTRANQoS_t));
|
||||
drbs_toBeModified_item.qoSInformation.choice.eUTRANQoS->qCI = 789L;
|
||||
drbs_toBeModified_item.qoSInformation.choice.eUTRANQoS->qCI = 254L;
|
||||
|
||||
/* ULTunnels_ToBeModified_List */
|
||||
int j = 0;
|
||||
@@ -1305,7 +1714,7 @@ void CU_send_UE_CONTEXT_MODIFICATION_REQUEST() {
|
||||
memset((void *)&srbs_toBeReleased_item, 0, sizeof(F1AP_SRBs_ToBeReleased_Item_t));
|
||||
|
||||
/* - sRBID */
|
||||
srbs_toBeReleased_item.sRBID = 50L;
|
||||
srbs_toBeReleased_item.sRBID = 2L;
|
||||
|
||||
/* ADD */
|
||||
srbs_toBeReleased_item_ies->value.choice.SRBs_ToBeReleased_Item = srbs_toBeReleased_item;
|
||||
|
||||
+581
-5
@@ -34,7 +34,7 @@
|
||||
#include "f1ap_common.h"
|
||||
#include "f1ap_messages_types.h"
|
||||
#include "platform_types.h"
|
||||
#include "log.h"
|
||||
#include "common/utils/LOG/log.h"
|
||||
|
||||
|
||||
|
||||
@@ -74,6 +74,7 @@ typedef struct f1ap_info {
|
||||
|
||||
// helper functions
|
||||
#define F1AP_TRANSACTION_IDENTIFIER_NUMBER 3
|
||||
#define F1AP_UE_IDENTIFIER_NUMBER 3
|
||||
#define NUMBER_OF_eNB_MAX 3
|
||||
|
||||
uint8_t F1AP_get_next_transaction_identifier(module_id_t enb_mod_idP, module_id_t du_mod_idP) {
|
||||
@@ -83,6 +84,13 @@ uint8_t F1AP_get_next_transaction_identifier(module_id_t enb_mod_idP, module_id_
|
||||
return transaction_identifier[enb_mod_idP+du_mod_idP];
|
||||
}
|
||||
|
||||
uint8_t F1AP_get_UE_identifier(module_id_t enb_mod_idP, int CC_idP, int UE_id) {
|
||||
static uint8_t UE_identifier[NUMBER_OF_eNB_MAX];
|
||||
UE_identifier[enb_mod_idP+CC_idP+UE_id] = (UE_identifier[enb_mod_idP+CC_idP+UE_id] + 1) % F1AP_UE_IDENTIFIER_NUMBER;
|
||||
//LOG_T(F1AP,"generated xid is %d\n",transaction_identifier[enb_mod_idP+du_mod_idP]);
|
||||
return UE_identifier[enb_mod_idP+CC_idP+UE_id];
|
||||
}
|
||||
|
||||
// ==============================================================================
|
||||
|
||||
void F1AP_DU_task() {
|
||||
@@ -97,9 +105,11 @@ void F1AP_DU_task() {
|
||||
// case F1AP_ProcedureCode_id_F1Setup:
|
||||
//DU_send_F1_SETUP_REQUEST((module_id_t)1, (module_id_t)2);
|
||||
// break;
|
||||
//DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER();
|
||||
//DU_send_UL_RRC_MESSAGE_TRANSFER(); // OK
|
||||
//DU_send_UE_CONTEXT_SETUP_RESPONSE(); // OK
|
||||
DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(); // OK
|
||||
//DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(); // OK
|
||||
//DU_send_gNB_DU_CONFIGURATION_UPDATE((module_id_t)1, (module_id_t)2);
|
||||
// default:
|
||||
|
||||
// } // switch
|
||||
@@ -109,6 +119,10 @@ void F1AP_DU_task() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// ==============================================================================
|
||||
|
||||
|
||||
|
||||
|
||||
// ==============================================================================
|
||||
|
||||
@@ -125,7 +139,7 @@ void DU_send_F1_SETUP_REQUEST(module_id_t enb_mod_idP, module_id_t du_mod_idP) {
|
||||
int ret = 0;
|
||||
int i = 0;
|
||||
|
||||
// for test
|
||||
// for test
|
||||
f1ap_info_t f1ap_info;
|
||||
f1ap_info.GNB_DU_ID = 789;
|
||||
f1ap_info.GNB_DU_Name = "ABC";
|
||||
@@ -576,6 +590,114 @@ void DU_handle_RESET_ACKKNOWLEDGE(F1AP_ResetAcknowledge_t *ResetAcknowledge) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
}
|
||||
|
||||
//void DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
|
||||
//void DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER() {
|
||||
void DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(
|
||||
module_id_t module_idP,
|
||||
int CC_idP,
|
||||
int UE_id,
|
||||
rnti_t rntiP,
|
||||
uint8_t *sduP,
|
||||
sdu_size_t sdu_lenP
|
||||
)
|
||||
{
|
||||
F1AP_F1AP_PDU_t pdu;
|
||||
F1AP_InitialULRRCMessageTransfer_t *out;
|
||||
F1AP_InitialULRRCMessageTransferIEs_t *ie;
|
||||
|
||||
uint8_t *buffer;
|
||||
uint32_t len;
|
||||
int ret = 0;
|
||||
int i = 0;
|
||||
|
||||
// for test
|
||||
f1ap_info_t f1ap_info;
|
||||
f1ap_info.GNB_DU_ID = 789;
|
||||
f1ap_info.GNB_DU_Name = "ABC";
|
||||
f1ap_info.mcc = 208;
|
||||
f1ap_info.mnc = 93;
|
||||
f1ap_info.mnc_digit_length = 3;
|
||||
|
||||
/* Create */
|
||||
/* 0. Message Type */
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
pdu.present = F1AP_F1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage = (F1AP_InitiatingMessage_t *)calloc(1, sizeof(F1AP_InitiatingMessage_t));
|
||||
pdu.choice.initiatingMessage->procedureCode = F1AP_ProcedureCode_id_InitialULRRCMessageTransfer;
|
||||
pdu.choice.initiatingMessage->criticality = F1AP_Criticality_ignore;
|
||||
pdu.choice.initiatingMessage->value.present = F1AP_InitiatingMessage__value_PR_InitialULRRCMessageTransfer;
|
||||
out = &pdu.choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer;
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c1. GNB_DU_UE_F1AP_ID */
|
||||
ie = (F1AP_InitialULRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_InitialULRRCMessageTransferIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID;
|
||||
ie->value.choice.GNB_DU_UE_F1AP_ID = F1AP_get_UE_identifier(module_idP, CC_idP, UE_id);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* mandatory */
|
||||
/* c2. NRCGI */
|
||||
ie = (F1AP_InitialULRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_InitialULRRCMessageTransferIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_NRCGI;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_NRCGI;
|
||||
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
ie->value.choice.NRCGI = nRCGI;
|
||||
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* mandatory */
|
||||
/* c3. C_RNTI */ // 16
|
||||
ie = (F1AP_InitialULRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_InitialULRRCMessageTransferIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_C_RNTI;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_C_RNTI;
|
||||
C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* mandatory */
|
||||
/* c4. RRCContainer */
|
||||
ie = (F1AP_InitialULRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_InitialULRRCMessageTransferIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_RRCContainer;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_RRCContainer;
|
||||
OCTET_STRING_fromBuf(&ie->value.choice.RRCContainer, sduP, sdu_lenP);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* optional */
|
||||
/* c5. DUtoCURRCContainer */
|
||||
if (0) {
|
||||
ie = (F1AP_InitialULRRCMessageTransferIEs_t *)calloc(1, sizeof(F1AP_InitialULRRCMessageTransferIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_DUtoCURRCContainer;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_InitialULRRCMessageTransferIEs__value_PR_DUtoCURRCContainer;
|
||||
OCTET_STRING_fromBuf(&ie->value.choice.DUtoCURRCContainer, "dummy_val",
|
||||
strlen("dummy_val"));
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
}
|
||||
|
||||
|
||||
/* encode */
|
||||
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
|
||||
printf("Failed to encode F1 setup request\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
f1ap_du_send_message(buffer, len);
|
||||
/* decode */
|
||||
// if (f1ap_decode_pdu(&pdu, buffer, len) > 0) {
|
||||
// printf("Failed to decode F1 setup request\n");
|
||||
// }
|
||||
//AssertFatal(1==0,"Not implemented yet\n");
|
||||
}
|
||||
|
||||
//void DU_send_UL_RRC_MESSAGE_TRANSFER(F1AP_ULRRCMessageTransfer_t *ULRRCMessageTransfer) {
|
||||
void DU_send_UL_RRC_MESSAGE_TRANSFER() {
|
||||
@@ -656,8 +778,462 @@ void DU_handle_DL_RRC_MESSAGE_TRANSFER(F1AP_DLRRCMessageTransfer_t *DLRRCMessage
|
||||
}
|
||||
|
||||
|
||||
void DU_send_gNB_DU_CONFIGURATION_UPDATE(F1AP_GNBDUConfigurationUpdate_t *GNBDUConfigurationUpdate) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
//void DU_send_gNB_DU_CONFIGURATION_UPDATE(F1AP_GNBDUConfigurationUpdate_t *GNBDUConfigurationUpdate) {
|
||||
void DU_send_gNB_DU_CONFIGURATION_UPDATE(module_id_t enb_mod_idP, module_id_t du_mod_idP) {
|
||||
F1AP_F1AP_PDU_t pdu;
|
||||
F1AP_GNBDUConfigurationUpdate_t *out;
|
||||
F1AP_GNBDUConfigurationUpdateIEs_t *ie;
|
||||
|
||||
uint8_t *buffer;
|
||||
uint32_t len;
|
||||
int ret = 0;
|
||||
int i = 0;
|
||||
|
||||
// for test
|
||||
f1ap_info_t f1ap_info;
|
||||
f1ap_info.GNB_DU_ID = 789;
|
||||
f1ap_info.GNB_DU_Name = "ABC";
|
||||
f1ap_info.mcc = 208;
|
||||
f1ap_info.mnc = 93;
|
||||
f1ap_info.mnc_digit_length = 3;
|
||||
/* Create */
|
||||
/* 0. Message Type */
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
pdu.present = F1AP_F1AP_PDU_PR_initiatingMessage;
|
||||
pdu.choice.initiatingMessage = (F1AP_InitiatingMessage_t *)calloc(1, sizeof(F1AP_InitiatingMessage_t));
|
||||
pdu.choice.initiatingMessage->procedureCode = F1AP_ProcedureCode_id_gNBDUConfigurationUpdate;
|
||||
pdu.choice.initiatingMessage->criticality = F1AP_Criticality_reject;
|
||||
pdu.choice.initiatingMessage->value.present = F1AP_InitiatingMessage__value_PR_GNBDUConfigurationUpdate;
|
||||
out = &pdu.choice.initiatingMessage->value.choice.GNBDUConfigurationUpdate;
|
||||
|
||||
/* mandatory */
|
||||
/* c1. Transaction ID (integer value) */
|
||||
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_TransactionID;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_TransactionID;
|
||||
ie->value.choice.TransactionID = F1AP_get_next_transaction_identifier(enb_mod_idP, du_mod_idP);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c2. Served_Cells_To_Add */
|
||||
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Add_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Add_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
//
|
||||
F1AP_Served_Cells_To_Add_ItemIEs_t *served_cells_to_add_item_ies;
|
||||
served_cells_to_add_item_ies = (F1AP_Served_Cells_To_Add_ItemIEs_t *)calloc(1, sizeof(F1AP_Served_Cells_To_Add_ItemIEs_t));
|
||||
served_cells_to_add_item_ies->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Add_Item;
|
||||
served_cells_to_add_item_ies->criticality = F1AP_Criticality_reject;
|
||||
served_cells_to_add_item_ies->value.present = F1AP_Served_Cells_To_Add_ItemIEs__value_PR_Served_Cells_To_Add_Item;
|
||||
|
||||
F1AP_Served_Cells_To_Add_Item_t served_cells_to_add_item;
|
||||
memset((void *)&served_cells_to_add_item, 0, sizeof(F1AP_Served_Cells_To_Add_Item_t));
|
||||
|
||||
/* 2.1.1 serverd cell Information */
|
||||
F1AP_Served_Cell_Information_t served_cell_information;
|
||||
|
||||
memset((void *)&served_cell_information, 0, sizeof(F1AP_Served_Cell_Information_t));
|
||||
/* - nRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length, &nRCGI.pLMN_Identity);
|
||||
|
||||
|
||||
//INT32_TO_BIT_STRING(123, &nRCGI.nRCellIdentity);
|
||||
nRCGI.nRCellIdentity.buf = malloc((36+7)/8);
|
||||
|
||||
nRCGI.nRCellIdentity.size = (36+7)/8;
|
||||
nRCGI.nRCellIdentity.bits_unused = 4;
|
||||
|
||||
nRCGI.nRCellIdentity.buf[0] = 123;
|
||||
|
||||
//nRCGI.nRCellIdentity = 15;
|
||||
served_cell_information.nRCGI = nRCGI;
|
||||
|
||||
/* - nRPCI */
|
||||
served_cell_information.nRPCI = 321; // int 0..1007
|
||||
|
||||
/* - fiveGS_TAC */
|
||||
OCTET_STRING_fromBuf(&served_cell_information.fiveGS_TAC,
|
||||
"10",
|
||||
3);
|
||||
|
||||
/* - Configured_EPS_TAC */
|
||||
if(1){
|
||||
served_cell_information.configured_EPS_TAC = (F1AP_Configured_EPS_TAC_t *)calloc(1, sizeof(F1AP_Configured_EPS_TAC_t));
|
||||
OCTET_STRING_fromBuf(served_cell_information.configured_EPS_TAC,
|
||||
"2",
|
||||
2);
|
||||
}
|
||||
|
||||
/* - broadcast PLMNs */
|
||||
int maxnoofBPLMNS = 1;
|
||||
for (i=0;
|
||||
i<maxnoofBPLMNS;
|
||||
i++) {
|
||||
/* > PLMN BroadcastPLMNs Item */
|
||||
F1AP_BroadcastPLMNs_Item_t *broadcastPLMNs_Item = (F1AP_BroadcastPLMNs_Item_t *)calloc(1, sizeof(F1AP_BroadcastPLMNs_Item_t));
|
||||
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length, &broadcastPLMNs_Item->pLMN_Identity);
|
||||
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, broadcastPLMNs_Item);
|
||||
}
|
||||
|
||||
// // /* - CHOICE NR-MODE-Info */
|
||||
F1AP_NR_Mode_Info_t nR_Mode_Info;
|
||||
|
||||
if ("FDD") {
|
||||
nR_Mode_Info.present = F1AP_NR_Mode_Info_PR_fDD;
|
||||
/* > FDD >> FDD Info */
|
||||
F1AP_FDD_Info_t *fDD_Info = (F1AP_FDD_Info_t *)calloc(1, sizeof(F1AP_FDD_Info_t));
|
||||
/* >>> UL NRFreqInfo */
|
||||
fDD_Info->uL_NRFreqInfo.nRARFCN = 999L;
|
||||
|
||||
F1AP_FreqBandNrItem_t ul_freqBandNrItem;
|
||||
memset((void *)&ul_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
ul_freqBandNrItem.freqBandIndicatorNr = 888L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t ul_supportedSULFreqBandItem;
|
||||
memset((void *)&ul_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
ul_supportedSULFreqBandItem.freqBandIndicatorNr = 777L;
|
||||
ASN_SEQUENCE_ADD(&ul_freqBandNrItem.supportedSULBandList.list, &ul_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&fDD_Info->uL_NRFreqInfo.freqBandListNr.list, &ul_freqBandNrItem);
|
||||
|
||||
/* >>> DL NRFreqInfo */
|
||||
fDD_Info->dL_NRFreqInfo.nRARFCN = 666L;
|
||||
|
||||
F1AP_FreqBandNrItem_t dl_freqBandNrItem;
|
||||
memset((void *)&dl_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
dl_freqBandNrItem.freqBandIndicatorNr = 555L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t dl_supportedSULFreqBandItem;
|
||||
memset((void *)&dl_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
dl_supportedSULFreqBandItem.freqBandIndicatorNr = 444L;
|
||||
ASN_SEQUENCE_ADD(&dl_freqBandNrItem.supportedSULBandList.list, &dl_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&fDD_Info->dL_NRFreqInfo.freqBandListNr.list, &dl_freqBandNrItem);
|
||||
|
||||
/* >>> UL Transmission Bandwidth */
|
||||
fDD_Info->uL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15;
|
||||
fDD_Info->uL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11;
|
||||
/* >>> DL Transmission Bandwidth */
|
||||
fDD_Info->dL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15;
|
||||
fDD_Info->dL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11;
|
||||
|
||||
nR_Mode_Info.choice.fDD = fDD_Info;
|
||||
} else { // TDD
|
||||
nR_Mode_Info.present = F1AP_NR_Mode_Info_PR_tDD;
|
||||
|
||||
/* > TDD >> TDD Info */
|
||||
F1AP_TDD_Info_t *tDD_Info = (F1AP_TDD_Info_t *)calloc(1, sizeof(F1AP_TDD_Info_t));
|
||||
/* >>> ARFCN */
|
||||
tDD_Info->nRFreqInfo.nRARFCN = 999L; // Integer
|
||||
F1AP_FreqBandNrItem_t nr_freqBandNrItem;
|
||||
memset((void *)&nr_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
nr_freqBandNrItem.freqBandIndicatorNr = 555L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t nr_supportedSULFreqBandItem;
|
||||
memset((void *)&nr_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
nr_supportedSULFreqBandItem.freqBandIndicatorNr = 444L;
|
||||
ASN_SEQUENCE_ADD(&nr_freqBandNrItem.supportedSULBandList.list, &nr_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&tDD_Info->nRFreqInfo.freqBandListNr.list, &nr_freqBandNrItem);
|
||||
|
||||
tDD_Info->transmission_Bandwidth.nRSCS= F1AP_NRSCS_scs15;
|
||||
tDD_Info->transmission_Bandwidth.nRNRB= F1AP_NRNRB_nrb11;
|
||||
|
||||
nR_Mode_Info.choice.tDD = tDD_Info;
|
||||
}
|
||||
|
||||
served_cell_information.nR_Mode_Info = nR_Mode_Info;
|
||||
|
||||
/* - measurementTimingConfiguration */
|
||||
char *measurementTimingConfiguration = "0"; // sept. 2018
|
||||
|
||||
OCTET_STRING_fromBuf(&served_cell_information.measurementTimingConfiguration,
|
||||
measurementTimingConfiguration,
|
||||
strlen(measurementTimingConfiguration));
|
||||
served_cells_to_add_item.served_Cell_Information = served_cell_information; //
|
||||
|
||||
/* 2.1.2 gNB-DU System Information */
|
||||
F1AP_GNB_DU_System_Information_t *gNB_DU_System_Information = (F1AP_GNB_DU_System_Information_t *)calloc(1, sizeof(F1AP_GNB_DU_System_Information_t));
|
||||
|
||||
OCTET_STRING_fromBuf(&gNB_DU_System_Information->mIB_message, // sept. 2018
|
||||
"1",
|
||||
sizeof("1"));
|
||||
|
||||
OCTET_STRING_fromBuf(&gNB_DU_System_Information->sIB1_message, // sept. 2018
|
||||
"1",
|
||||
sizeof("1"));
|
||||
served_cells_to_add_item.gNB_DU_System_Information = gNB_DU_System_Information; //
|
||||
|
||||
/* ADD */
|
||||
served_cells_to_add_item_ies->value.choice.Served_Cells_To_Add_Item = served_cells_to_add_item;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Served_Cells_To_Add_List.list,
|
||||
served_cells_to_add_item_ies);
|
||||
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c3. Served_Cells_To_Modify */
|
||||
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Modify_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Modify_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
//
|
||||
F1AP_Served_Cells_To_Modify_ItemIEs_t *served_cells_to_modify_item_ies;
|
||||
served_cells_to_modify_item_ies = (F1AP_Served_Cells_To_Modify_ItemIEs_t *)calloc(1, sizeof(F1AP_Served_Cells_To_Modify_ItemIEs_t));
|
||||
served_cells_to_modify_item_ies->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Modify_Item;
|
||||
served_cells_to_modify_item_ies->criticality = F1AP_Criticality_reject;
|
||||
served_cells_to_modify_item_ies->value.present = F1AP_Served_Cells_To_Modify_ItemIEs__value_PR_Served_Cells_To_Modify_Item;
|
||||
|
||||
F1AP_Served_Cells_To_Modify_Item_t served_cells_to_modify_item;
|
||||
memset((void *)&served_cells_to_modify_item, 0, sizeof(F1AP_Served_Cells_To_Modify_Item_t));
|
||||
|
||||
/* 3.1 oldNRCGI */
|
||||
F1AP_NRCGI_t oldNRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&oldNRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &oldNRCGI.nRCellIdentity);
|
||||
served_cells_to_modify_item.oldNRCGI = oldNRCGI;
|
||||
|
||||
|
||||
/* 3.2.1 serverd cell Information */
|
||||
F1AP_Served_Cell_Information_t served_cell_information;
|
||||
memset((void *)&served_cell_information, 0, sizeof(F1AP_Served_Cell_Information_t));
|
||||
|
||||
/* - nRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
|
||||
served_cell_information.nRCGI = nRCGI;
|
||||
|
||||
/* - nRPCI */
|
||||
served_cell_information.nRPCI = 321; // int 0..1007
|
||||
|
||||
/* - fiveGS_TAC */
|
||||
OCTET_STRING_fromBuf(&served_cell_information.fiveGS_TAC,
|
||||
"10",
|
||||
3);
|
||||
|
||||
/* - Configured_EPS_TAC */
|
||||
if(1){
|
||||
served_cell_information.configured_EPS_TAC = (F1AP_Configured_EPS_TAC_t *)calloc(1, sizeof(F1AP_Configured_EPS_TAC_t));
|
||||
OCTET_STRING_fromBuf(served_cell_information.configured_EPS_TAC,
|
||||
"2",
|
||||
2);
|
||||
}
|
||||
|
||||
/* - broadcast PLMNs */
|
||||
int maxnoofBPLMNS = 1;
|
||||
for (i=0;
|
||||
i<maxnoofBPLMNS;
|
||||
i++) {
|
||||
/* > PLMN BroadcastPLMNs Item */
|
||||
F1AP_BroadcastPLMNs_Item_t *broadcastPLMNs_Item = (F1AP_BroadcastPLMNs_Item_t *)calloc(1, sizeof(F1AP_BroadcastPLMNs_Item_t));
|
||||
//memset((void *)&broadcastPLMNs_Item, 0, sizeof(F1AP_BroadcastPLMNs_Item_t));
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length, &broadcastPLMNs_Item->pLMN_Identity);
|
||||
ASN_SEQUENCE_ADD(&served_cell_information.servedPLMNs.list, broadcastPLMNs_Item);
|
||||
}
|
||||
|
||||
// // /* - CHOICE NR-MODE-Info */
|
||||
F1AP_NR_Mode_Info_t nR_Mode_Info;
|
||||
|
||||
if ("FDD") {
|
||||
nR_Mode_Info.present = F1AP_NR_Mode_Info_PR_fDD;
|
||||
/* > FDD >> FDD Info */
|
||||
F1AP_FDD_Info_t *fDD_Info = (F1AP_FDD_Info_t *)calloc(1, sizeof(F1AP_FDD_Info_t));
|
||||
/* >>> UL NRFreqInfo */
|
||||
fDD_Info->uL_NRFreqInfo.nRARFCN = 999L;
|
||||
|
||||
F1AP_FreqBandNrItem_t ul_freqBandNrItem;
|
||||
memset((void *)&ul_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
ul_freqBandNrItem.freqBandIndicatorNr = 888L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t ul_supportedSULFreqBandItem;
|
||||
memset((void *)&ul_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
ul_supportedSULFreqBandItem.freqBandIndicatorNr = 777L;
|
||||
ASN_SEQUENCE_ADD(&ul_freqBandNrItem.supportedSULBandList.list, &ul_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&fDD_Info->uL_NRFreqInfo.freqBandListNr.list, &ul_freqBandNrItem);
|
||||
|
||||
/* >>> DL NRFreqInfo */
|
||||
fDD_Info->dL_NRFreqInfo.nRARFCN = 666L;
|
||||
|
||||
F1AP_FreqBandNrItem_t dl_freqBandNrItem;
|
||||
memset((void *)&dl_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
dl_freqBandNrItem.freqBandIndicatorNr = 555L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t dl_supportedSULFreqBandItem;
|
||||
memset((void *)&dl_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
dl_supportedSULFreqBandItem.freqBandIndicatorNr = 444L;
|
||||
ASN_SEQUENCE_ADD(&dl_freqBandNrItem.supportedSULBandList.list, &dl_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&fDD_Info->dL_NRFreqInfo.freqBandListNr.list, &dl_freqBandNrItem);
|
||||
|
||||
/* >>> UL Transmission Bandwidth */
|
||||
fDD_Info->uL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15;
|
||||
fDD_Info->uL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11;
|
||||
/* >>> DL Transmission Bandwidth */
|
||||
fDD_Info->dL_Transmission_Bandwidth.nRSCS = F1AP_NRSCS_scs15;
|
||||
fDD_Info->dL_Transmission_Bandwidth.nRNRB = F1AP_NRNRB_nrb11;
|
||||
|
||||
nR_Mode_Info.choice.fDD = fDD_Info;
|
||||
} else { // TDD
|
||||
nR_Mode_Info.present = F1AP_NR_Mode_Info_PR_tDD;
|
||||
|
||||
/* > TDD >> TDD Info */
|
||||
F1AP_TDD_Info_t *tDD_Info = (F1AP_TDD_Info_t *)calloc(1, sizeof(F1AP_TDD_Info_t));
|
||||
/* >>> ARFCN */
|
||||
tDD_Info->nRFreqInfo.nRARFCN = 999L; // Integer
|
||||
F1AP_FreqBandNrItem_t nr_freqBandNrItem;
|
||||
memset((void *)&nr_freqBandNrItem, 0, sizeof(F1AP_FreqBandNrItem_t));
|
||||
nr_freqBandNrItem.freqBandIndicatorNr = 555L;
|
||||
|
||||
F1AP_SupportedSULFreqBandItem_t nr_supportedSULFreqBandItem;
|
||||
memset((void *)&nr_supportedSULFreqBandItem, 0, sizeof(F1AP_SupportedSULFreqBandItem_t));
|
||||
nr_supportedSULFreqBandItem.freqBandIndicatorNr = 444L;
|
||||
ASN_SEQUENCE_ADD(&nr_freqBandNrItem.supportedSULBandList.list, &nr_supportedSULFreqBandItem);
|
||||
|
||||
ASN_SEQUENCE_ADD(&tDD_Info->nRFreqInfo.freqBandListNr.list, &nr_freqBandNrItem);
|
||||
|
||||
tDD_Info->transmission_Bandwidth.nRSCS= F1AP_NRSCS_scs15;
|
||||
tDD_Info->transmission_Bandwidth.nRNRB= F1AP_NRNRB_nrb11;
|
||||
|
||||
nR_Mode_Info.choice.tDD = tDD_Info;
|
||||
}
|
||||
|
||||
served_cell_information.nR_Mode_Info = nR_Mode_Info;
|
||||
|
||||
/* - measurementTimingConfiguration */
|
||||
char *measurementTimingConfiguration = "0"; // sept. 2018
|
||||
|
||||
OCTET_STRING_fromBuf(&served_cell_information.measurementTimingConfiguration,
|
||||
measurementTimingConfiguration,
|
||||
strlen(measurementTimingConfiguration));
|
||||
served_cells_to_modify_item.served_Cell_Information = served_cell_information; //
|
||||
|
||||
/* 3.2.2 gNB-DU System Information */
|
||||
F1AP_GNB_DU_System_Information_t *gNB_DU_System_Information = (F1AP_GNB_DU_System_Information_t *)calloc(1, sizeof(F1AP_GNB_DU_System_Information_t));
|
||||
|
||||
OCTET_STRING_fromBuf(&gNB_DU_System_Information->mIB_message, // sept. 2018
|
||||
"1",
|
||||
sizeof("1"));
|
||||
|
||||
OCTET_STRING_fromBuf(&gNB_DU_System_Information->sIB1_message, // sept. 2018
|
||||
"1",
|
||||
sizeof("1"));
|
||||
served_cells_to_modify_item.gNB_DU_System_Information = gNB_DU_System_Information; //
|
||||
|
||||
/* ADD */
|
||||
served_cells_to_modify_item_ies->value.choice.Served_Cells_To_Modify_Item = served_cells_to_modify_item;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Served_Cells_To_Modify_List.list,
|
||||
served_cells_to_modify_item_ies);
|
||||
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c4. Served_Cells_To_Delete */
|
||||
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Delete_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_Served_Cells_To_Delete_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
//
|
||||
F1AP_Served_Cells_To_Delete_ItemIEs_t *served_cells_to_delete_item_ies;
|
||||
served_cells_to_delete_item_ies = (F1AP_Served_Cells_To_Delete_ItemIEs_t *)calloc(1, sizeof(F1AP_Served_Cells_To_Delete_ItemIEs_t));
|
||||
served_cells_to_delete_item_ies->id = F1AP_ProtocolIE_ID_id_Served_Cells_To_Delete_Item;
|
||||
served_cells_to_delete_item_ies->criticality = F1AP_Criticality_reject;
|
||||
served_cells_to_delete_item_ies->value.present = F1AP_Served_Cells_To_Delete_ItemIEs__value_PR_Served_Cells_To_Delete_Item;
|
||||
|
||||
F1AP_Served_Cells_To_Delete_Item_t served_cells_to_delete_item;
|
||||
memset((void *)&served_cells_to_delete_item, 0, sizeof(F1AP_Served_Cells_To_Delete_Item_t));
|
||||
|
||||
/* 3.1 oldNRCGI */
|
||||
F1AP_NRCGI_t oldNRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&oldNRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &oldNRCGI.nRCellIdentity);
|
||||
served_cells_to_delete_item.oldNRCGI = oldNRCGI;
|
||||
|
||||
/* ADD */
|
||||
served_cells_to_delete_item_ies->value.choice.Served_Cells_To_Delete_Item = served_cells_to_delete_item;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Served_Cells_To_Delete_List.list,
|
||||
served_cells_to_delete_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
/* mandatory */
|
||||
/* c5. Active_Cells_List */
|
||||
ie = (F1AP_GNBDUConfigurationUpdateIEs_t *)calloc(1, sizeof(F1AP_GNBDUConfigurationUpdateIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Active_Cells_List;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_GNBDUConfigurationUpdateIEs__value_PR_Active_Cells_List;
|
||||
|
||||
for (i=0;
|
||||
i<1;
|
||||
i++) {
|
||||
//
|
||||
F1AP_Active_Cells_ItemIEs_t *active_cells_item_ies;
|
||||
active_cells_item_ies = (F1AP_Active_Cells_ItemIEs_t *)calloc(1, sizeof(F1AP_Active_Cells_ItemIEs_t));
|
||||
active_cells_item_ies->id = F1AP_ProtocolIE_ID_id_Active_Cells_Item;
|
||||
active_cells_item_ies->criticality = F1AP_Criticality_reject;
|
||||
active_cells_item_ies->value.present = F1AP_Active_Cells_ItemIEs__value_PR_Active_Cells_Item;
|
||||
|
||||
F1AP_Active_Cells_Item_t active_cells_item;
|
||||
memset((void *)&active_cells_item, 0, sizeof(F1AP_Active_Cells_Item_t));
|
||||
|
||||
/* 3.1 oldNRCGI */
|
||||
F1AP_NRCGI_t nRCGI;
|
||||
MCC_MNC_TO_PLMNID(f1ap_info.mcc, f1ap_info.mnc, f1ap_info.mnc_digit_length,
|
||||
&nRCGI.pLMN_Identity);
|
||||
NR_CELL_ID_TO_BIT_STRING(123456, &nRCGI.nRCellIdentity);
|
||||
active_cells_item.nRCGI = nRCGI;
|
||||
|
||||
/* ADD */
|
||||
active_cells_item_ies->value.choice.Active_Cells_Item = active_cells_item;
|
||||
|
||||
ASN_SEQUENCE_ADD(&ie->value.choice.Active_Cells_List.list,
|
||||
active_cells_item_ies);
|
||||
}
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
|
||||
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
|
||||
printf("Failed to encode F1 setup request\n");
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
//f1ap_du_send_message(buffer, len);
|
||||
|
||||
/* decode */
|
||||
if (f1ap_decode_pdu(&pdu, buffer, len) > 0) {
|
||||
printf("Failed to decode F1 setup request\n");
|
||||
}
|
||||
}
|
||||
|
||||
void DU_handle_gNB_DU_CONFIGURATION_FAILURE(F1AP_GNBDUConfigurationUpdateFailure_t GNBDUConfigurationUpdateFailure) {
|
||||
|
||||
@@ -366,14 +366,19 @@ rx_sdu(const module_id_t enb_mod_idP,
|
||||
for (ii = 0; ii < NB_RA_PROC_MAX; ii++) {
|
||||
ra = &mac->common_channels[CC_idP].ra[ii];
|
||||
if ((ra->rnti == current_rnti) && (ra->state != IDLE)) {
|
||||
mac_rrc_data_ind(enb_mod_idP,
|
||||
CC_idP,
|
||||
frameP, subframeP,
|
||||
old_rnti,
|
||||
DCCH,
|
||||
(uint8_t *) payload_ptr,
|
||||
rx_lengths[i],
|
||||
0);
|
||||
//int RC.cudu.du_flag = 1;
|
||||
int du_flag = 1;
|
||||
mac_rrc_data_ind(
|
||||
enb_mod_idP,
|
||||
CC_idP,
|
||||
frameP, subframeP, old_UE_id,
|
||||
old_rnti,
|
||||
DCCH,
|
||||
(uint8_t *) payload_ptr,
|
||||
rx_lengths[i],
|
||||
0,
|
||||
du_flag
|
||||
);
|
||||
// prepare transmission of Msg4(RRCConnectionReconfiguration)
|
||||
ra->state = MSGCRNTI;
|
||||
LOG_I(MAC,
|
||||
@@ -612,15 +617,20 @@ rx_sdu(const module_id_t enb_mod_idP,
|
||||
rx_lengths[i], payload_ptr - sduP);
|
||||
// kill RA procedure
|
||||
}
|
||||
|
||||
mac_rrc_data_ind(enb_mod_idP,
|
||||
|
||||
//int RC.cudu.du_flag = 1;
|
||||
int du_flag = 1;
|
||||
mac_rrc_data_ind(
|
||||
enb_mod_idP,
|
||||
CC_idP,
|
||||
frameP, subframeP,
|
||||
frameP, subframeP, UE_id,
|
||||
current_rnti,
|
||||
CCCH,
|
||||
(uint8_t *) payload_ptr,
|
||||
rx_lengths[i],
|
||||
0);
|
||||
0,
|
||||
du_flag
|
||||
);
|
||||
|
||||
|
||||
if (num_ce > 0) { // handle msg3 which is not RRCConnectionRequest
|
||||
|
||||
@@ -47,14 +47,16 @@ mac_rrc_data_req(
|
||||
int8_t
|
||||
mac_rrc_data_ind(
|
||||
const module_id_t module_idP,
|
||||
const int CC_idP,
|
||||
const int CC_id,
|
||||
const frame_t frameP,
|
||||
const sub_frame_t sub_frameP,
|
||||
const int UE_id,
|
||||
const rnti_t rntiP,
|
||||
const rb_id_t srb_idP,
|
||||
const uint8_t *sduP,
|
||||
const uint8_t* sduP,
|
||||
const sdu_size_t sdu_lenP,
|
||||
const uint8_t mbsfn_sync_area
|
||||
const uint8_t mbsfn_sync_areaP,
|
||||
const int du_flag
|
||||
);
|
||||
|
||||
int8_t
|
||||
|
||||
@@ -232,6 +232,33 @@ mac_rrc_data_req(
|
||||
return(0);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
int8_t
|
||||
mac_du_data_ind(
|
||||
const module_id_t module_idP,
|
||||
const int CC_idP,
|
||||
const int UE_id,
|
||||
const rnti_t rntiP,
|
||||
const uint8_t *sduP,
|
||||
const sdu_size_t sdu_lenP
|
||||
)
|
||||
//--------------------------------------------------------------------------
|
||||
{
|
||||
printf(
|
||||
"[F1 %d][RAPROC] CC_id %d current_rnti %x Received Msg3 from already registered UE %d: length %d, offset %ld\n",
|
||||
module_idP, CC_idP, rntiP,
|
||||
UE_id, sdu_lenP, sduP);
|
||||
|
||||
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(
|
||||
module_idP,
|
||||
CC_idP,
|
||||
UE_id,
|
||||
rntiP,
|
||||
sduP,
|
||||
sdu_lenP
|
||||
);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
int8_t
|
||||
mac_rrc_data_ind(
|
||||
@@ -239,14 +266,28 @@ mac_rrc_data_ind(
|
||||
const int CC_id,
|
||||
const frame_t frameP,
|
||||
const sub_frame_t sub_frameP,
|
||||
const int UE_id,
|
||||
const rnti_t rntiP,
|
||||
const rb_id_t srb_idP,
|
||||
const uint8_t* sduP,
|
||||
const sdu_size_t sdu_lenP,
|
||||
const uint8_t mbsfn_sync_areaP
|
||||
const uint8_t mbsfn_sync_areaP,
|
||||
const int du_flag
|
||||
)
|
||||
//--------------------------------------------------------------------------
|
||||
{
|
||||
|
||||
// navid update / Bing-Kai modify
|
||||
if (du_flag) {
|
||||
mac_du_data_ind(
|
||||
module_idP,
|
||||
CC_id,
|
||||
UE_id,
|
||||
rntiP,
|
||||
sduP,
|
||||
sdu_lenP);
|
||||
}
|
||||
|
||||
SRB_INFO *Srb_info;
|
||||
protocol_ctxt_t ctxt;
|
||||
sdu_size_t sdu_size = 0;
|
||||
|
||||
@@ -6522,6 +6522,7 @@ rrc_eNB_decode_ccch(
|
||||
rrc_eNB_generate_RRCConnectionReject(ctxt_pP,
|
||||
rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
|
||||
CC_id);
|
||||
// navid:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -420,14 +420,16 @@ mac_rrc_data_req(
|
||||
int8_t
|
||||
mac_rrc_data_ind(
|
||||
const module_id_t module_idP,
|
||||
const int CC_id,
|
||||
const int CC_id,
|
||||
const frame_t frameP,
|
||||
const sub_frame_t sub_frameP,
|
||||
const int UE_id,
|
||||
const rnti_t rntiP,
|
||||
const rb_id_t srb_idP,
|
||||
const uint8_t* sduP,
|
||||
const sdu_size_t sdu_lenP,
|
||||
const uint8_t mbsfn_sync_areaP
|
||||
const uint8_t mbsfn_sync_areaP,
|
||||
const int du_flag
|
||||
);
|
||||
|
||||
int8_t
|
||||
|
||||
@@ -252,8 +252,21 @@ do { \
|
||||
} while(0)
|
||||
|
||||
|
||||
/* TS 38.473 v15.2.1 section 9.3.1.32:
|
||||
* C RNTI
|
||||
*/
|
||||
#define C_RNTI_TO_BIT_STRING(mACRO, bITsTRING) \
|
||||
do { \
|
||||
(bITsTRING)->buf = calloc(2, sizeof(uint8_t)); \
|
||||
(bITsTRING)->buf[0] = (mACRO) >> 4; \
|
||||
(bITsTRING)->buf[1] = ((mACRO) & 0x0f) << 4; \
|
||||
(bITsTRING)->size = 2; \
|
||||
(bITsTRING)->bits_unused = 0; \
|
||||
} while(0)
|
||||
|
||||
|
||||
/* TS 38.473 v15.1.1 section 9.3.2.1:
|
||||
* NR CELL ID
|
||||
* TRANSPORT LAYER ADDRESS
|
||||
*/
|
||||
#define TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(mACRO, bITsTRING) \
|
||||
do { \
|
||||
|
||||
Reference in New Issue
Block a user