Commit 3021cf11 authored by Bing-Kai Hong's avatar Bing-Kai Hong

F1 & MAC:

1. Fix UE_CONTEXT_SETUP_REQUEST and CONTEXT_MODIFICATION_REQUEST encode/decode
2. Add gNB_DU_CONFIGURATION_UPDATE and gNB_CU_CONFIGURATION_UPDATE procedure
3. Add C_RNTI_TO_BIT_STRING function
4. Add INITIAL_UL_RRC_MESSAGE_TRANSFER procedure and with mac_du_data_ind (MSG3)
5. Add GNB-CUSystemInformation extension part for the F1SetupResponse procedure
parent a817b54c
...@@ -525,12 +525,16 @@ add_library(F1AP_LIB ...@@ -525,12 +525,16 @@ add_library(F1AP_LIB
include_directories ("${F1AP_C_DIR}") include_directories ("${F1AP_C_DIR}")
include_directories ("${F1AP_DIR}") include_directories ("${F1AP_DIR}")
message(${F1AP_C_DIR})
message(${F1AP_DIR})
add_library(F1AP add_library(F1AP
#${F1AP_DIR}/test.c #${F1AP_DIR}/test.c
${F1AP_DIR}/DU_F1AP.c ${F1AP_DIR}/DU_F1AP.c
${F1AP_DIR}/CU_F1AP.c ${F1AP_DIR}/CU_F1AP.c
${F1AP_DIR}/sctp_du.c
${F1AP_DIR}/sctp_cu.c
) )
add_executable(test_f1ap_du add_executable(test_f1ap_du
......
This diff is collapsed.
This diff is collapsed.
...@@ -366,14 +366,19 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -366,14 +366,19 @@ rx_sdu(const module_id_t enb_mod_idP,
for (ii = 0; ii < NB_RA_PROC_MAX; ii++) { for (ii = 0; ii < NB_RA_PROC_MAX; ii++) {
ra = &mac->common_channels[CC_idP].ra[ii]; ra = &mac->common_channels[CC_idP].ra[ii];
if ((ra->rnti == current_rnti) && (ra->state != IDLE)) { if ((ra->rnti == current_rnti) && (ra->state != IDLE)) {
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, CC_idP,
frameP, subframeP, frameP, subframeP, old_UE_id,
old_rnti, old_rnti,
DCCH, DCCH,
(uint8_t *) payload_ptr, (uint8_t *) payload_ptr,
rx_lengths[i], rx_lengths[i],
0); 0,
du_flag
);
// prepare transmission of Msg4(RRCConnectionReconfiguration) // prepare transmission of Msg4(RRCConnectionReconfiguration)
ra->state = MSGCRNTI; ra->state = MSGCRNTI;
LOG_I(MAC, LOG_I(MAC,
...@@ -613,14 +618,19 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -613,14 +618,19 @@ rx_sdu(const module_id_t enb_mod_idP,
// kill RA procedure // 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, CC_idP,
frameP, subframeP, frameP, subframeP, UE_id,
current_rnti, current_rnti,
CCCH, CCCH,
(uint8_t *) payload_ptr, (uint8_t *) payload_ptr,
rx_lengths[i], rx_lengths[i],
0); 0,
du_flag
);
if (num_ce > 0) { // handle msg3 which is not RRCConnectionRequest if (num_ce > 0) { // handle msg3 which is not RRCConnectionRequest
......
...@@ -47,14 +47,16 @@ mac_rrc_data_req( ...@@ -47,14 +47,16 @@ mac_rrc_data_req(
int8_t int8_t
mac_rrc_data_ind( mac_rrc_data_ind(
const module_id_t module_idP, const module_id_t module_idP,
const int CC_idP, const int CC_id,
const frame_t frameP, const frame_t frameP,
const sub_frame_t sub_frameP, const sub_frame_t sub_frameP,
const int UE_id,
const rnti_t rntiP, const rnti_t rntiP,
const rb_id_t srb_idP, const rb_id_t srb_idP,
const uint8_t *sduP, const uint8_t* sduP,
const sdu_size_t sdu_lenP, const sdu_size_t sdu_lenP,
const uint8_t mbsfn_sync_area const uint8_t mbsfn_sync_areaP,
const int du_flag
); );
int8_t int8_t
......
...@@ -232,6 +232,33 @@ mac_rrc_data_req( ...@@ -232,6 +232,33 @@ mac_rrc_data_req(
return(0); 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 int8_t
mac_rrc_data_ind( mac_rrc_data_ind(
...@@ -239,14 +266,28 @@ mac_rrc_data_ind( ...@@ -239,14 +266,28 @@ mac_rrc_data_ind(
const int CC_id, const int CC_id,
const frame_t frameP, const frame_t frameP,
const sub_frame_t sub_frameP, const sub_frame_t sub_frameP,
const int UE_id,
const rnti_t rntiP, const rnti_t rntiP,
const rb_id_t srb_idP, const rb_id_t srb_idP,
const uint8_t* sduP, const uint8_t* sduP,
const sdu_size_t sdu_lenP, 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; SRB_INFO *Srb_info;
protocol_ctxt_t ctxt; protocol_ctxt_t ctxt;
sdu_size_t sdu_size = 0; sdu_size_t sdu_size = 0;
......
...@@ -6446,6 +6446,7 @@ rrc_eNB_decode_ccch( ...@@ -6446,6 +6446,7 @@ rrc_eNB_decode_ccch(
rrc_eNB_generate_RRCConnectionReject(ctxt_pP, rrc_eNB_generate_RRCConnectionReject(ctxt_pP,
rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti), rrc_eNB_get_ue_context(RC.rrc[ctxt_pP->module_id], ctxt_pP->rnti),
CC_id); CC_id);
// navid:
break; break;
} }
......
...@@ -423,11 +423,13 @@ mac_rrc_data_ind( ...@@ -423,11 +423,13 @@ mac_rrc_data_ind(
const int CC_id, const int CC_id,
const frame_t frameP, const frame_t frameP,
const sub_frame_t sub_frameP, const sub_frame_t sub_frameP,
const int UE_id,
const rnti_t rntiP, const rnti_t rntiP,
const rb_id_t srb_idP, const rb_id_t srb_idP,
const uint8_t* sduP, const uint8_t* sduP,
const sdu_size_t sdu_lenP, const sdu_size_t sdu_lenP,
const uint8_t mbsfn_sync_areaP const uint8_t mbsfn_sync_areaP,
const int du_flag
); );
int8_t int8_t
......
...@@ -252,8 +252,21 @@ do { \ ...@@ -252,8 +252,21 @@ do { \
} while(0) } 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: /* 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) \ #define TRANSPORT_LAYER_ADDRESS_TO_BIT_STRING(mACRO, bITsTRING) \
do { \ do { \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment