diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 3b22302133ebb5ee7c93b5f250d86014ecb5d834..92ec6de90f50e21543fb45e627822a80efe5d0f0 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -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 diff --git a/common/utils/T/T_IDs.h b/common/utils/T/T_IDs.h deleted file mode 100644 index df3770618613839fca080e66bee87c043d0a175d..0000000000000000000000000000000000000000 --- a/common/utils/T/T_IDs.h +++ /dev/null @@ -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 diff --git a/openair2/F1AP/CU_F1AP.c b/openair2/F1AP/CU_F1AP.c index e164dc99db28718387bec9306fa60c7717efb3a1..8130f9b8e3b23e0ee4447a85f771f1fe3fd20f96 100644 --- a/openair2/F1AP/CU_F1AP.c +++ b/openair2/F1AP/CU_F1AP.c @@ -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; diff --git a/openair2/F1AP/DU_F1AP.c b/openair2/F1AP/DU_F1AP.c index a610d6ed55a62db4042282a066e805402fdb7b50..f80e72c56609f6ac2c48c3f249ea7490cf1add9e 100644 --- a/openair2/F1AP/DU_F1AP.c +++ b/openair2/F1AP/DU_F1AP.c @@ -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) { diff --git a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c index 04415a838626df5e9f91b59dd599b7d94245faad..230dc8eac8d0418c76d384e54c0d7450d6680715 100644 --- a/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c +++ b/openair2/LAYER2/MAC/eNB_scheduler_ulsch.c @@ -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 diff --git a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h index 4b651761de57a7c1cf7438afe33956cef1a3cdec..f01721e1820eed0e6095b1741c9fb592fe910340 100644 --- a/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h +++ b/openair2/RRC/L2_INTERFACE/openair_rrc_L2_interface.h @@ -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 diff --git a/openair2/RRC/LTE/L2_interface.c b/openair2/RRC/LTE/L2_interface.c index a7c96a8a22f201d19fe1dc2e63eaa59009745a92..442a93d3ccaba8d1ef0f114e58fe7d2b00c5b6b1 100644 --- a/openair2/RRC/LTE/L2_interface.c +++ b/openair2/RRC/LTE/L2_interface.c @@ -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; diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c index bed228a499a2f07d02afd66b739b3bc159ae6f86..4fd543ae43d4e574c253ac75c8b6f4c6fd1fd868 100644 --- a/openair2/RRC/LTE/rrc_eNB.c +++ b/openair2/RRC/LTE/rrc_eNB.c @@ -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; } diff --git a/openair2/RRC/LTE/rrc_proto.h b/openair2/RRC/LTE/rrc_proto.h index e16391aef10d483778f661628ffbd11710bdf7a6..4e8ee304c1c3d6836dff6a29e17d0e14a05416cc 100644 --- a/openair2/RRC/LTE/rrc_proto.h +++ b/openair2/RRC/LTE/rrc_proto.h @@ -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 diff --git a/openair3/UTILS/conversions.h b/openair3/UTILS/conversions.h index abfe20c418875ec6c8b8a07a23008e21680c94cc..46328b4fc68692529d964d28a1d63fa7260abf1e 100644 --- a/openair3/UTILS/conversions.h +++ b/openair3/UTILS/conversions.h @@ -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 { \