Commit 34090135 authored by Siddharth Rana's avatar Siddharth Rana

Initial rebase changes from 3GPP_TTCN_System_Simulator to latest FRD299

parent ba696cf0
......@@ -157,18 +157,29 @@ typedef struct ss_req_pdcp_cnt_s {
uint8_t rb_id;
} ss_req_pdcp_cnt_t;
#define RACH_PREAMBLE_PRESENT 0x01
#define PDCCH_ORDER_PRESENT 0x02
typedef struct _pdcchOrder_t
{
uint8_t preambleIndex;
uint8_t prachMaskIndex;
}pdcchOrder_t;
typedef enum L1MacIndCtrl_e {
IndCtrlMode_NOT_PRESENT = 0,
IndCtrlMode_ENABLE = 1,
IndCtrlMode_DISABLE = 2
} L1MacIndCtrl;
#define RACH_PREAMBLE_PRESENT 0x01
#define PDCCH_ORDER_PRESENT 0x02
typedef struct ss_l1macind_ctrl_s {
uint8_t bitmask;
int cell_index;
bool rachpreamble_enable;
L1MacIndCtrl RachPreamble_Ctrl;
L1MacIndCtrl UL_HARQ_Ctrl;
L1MacIndCtrl HarqError_Ctrl;
pdcchOrder_t pdcchOrder;
} ss_l1macind_ctrl_t;
......@@ -322,6 +333,29 @@ typedef struct ss_vt_time_out_s {
} ss_vt_time_out_t;
/** SYS IND */
typedef enum SysInd_Type_e {
SysInd_Type_Error = 1,
SysInd_Type_RachPreamble = 2,
SysInd_Type_SchedReq = 3,
SysInd_Type_BSR = 4,
SysInd_Type_UL_HARQ = 5,
SysInd_Type_C_RNTI = 6,
SysInd_Type_PHR = 7,
SysInd_Type_HarqError = 8,
SysInd_Type_RlcDiscardInd = 9,
SysInd_Type_PeriodicRI = 10,
SysInd_Type_EPHR = 11,
SysInd_Type_CqiInd = 12,
SysInd_Type_SrsInd = 13,
SysInd_Type_DC_PHR = 14,
} SysInd_Type;
typedef struct harq_error_s {
bool bIsUL;
int Id;
int CURRENT_TX_NB;
} harq_error_t;
typedef struct ss_system_ind_s
{
bool bitmask; //Flag for presence of optional parameter repetitionsPerPreambleAttempt
......@@ -331,6 +365,10 @@ typedef struct ss_system_ind_s
uint8_t ra_PreambleIndex;
bool prtPower_Type;
uint32_t repetitionsPerPreambleAttempt;
SysInd_Type sysind_type;
int UL_Harq;
harq_error_t HarqError;
} ss_system_ind_t;
#endif /* SS_MESSAGES_TYPES_H_ */
......@@ -1446,7 +1446,7 @@ initiate_ra_proc(module_id_t module_idP,
module_idP, CC_id, frameP, ra[i].Msg2_frame,
ra[i].Msg2_subframe, i, ra[i].rnti, ra[i].state);
if(RC.ss.l1macind.rachpreamble_enable)
if(RC.ss.l1macind[CC_id].rachpreamble_enable)
{
// Populate and send the SS_SYSTEM_IND to System Simulator
MessageDef *m = itti_alloc_new_message(TASK_MAC_ENB, 0, SS_SYSTEM_IND);
......
......@@ -1197,6 +1197,14 @@ typedef struct {
///remove RA flag
bool raFlag;
} UE_free_ctrl_t;
/*! \brief REMOVE UE list used by eNB to order UEs/CC for deleting*/
typedef struct {
/// deleting control info
UE_free_ctrl_t UE_free_ctrl[NUMBER_OF_UE_MAX+1];
int num_UEs;
int head_freelist; ///the head position of the delete list
int tail_freelist; ///the tail position of the delete list
} UE_free_list_t;
/**
* describes contiguous RBs
......
......@@ -304,10 +304,13 @@ void *mac_enb_task(void *arg)
case SS_L1MACIND_CTRL:
LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL\n");
int CC_id = received_msg->ittiMsg.ss_l1macind_ctrl.cell_index;
RC.ss.l1macind[CC_id].UL_HARQ_Ctrl = received_msg->ittiMsg.ss_l1macind_ctrl.UL_HARQ_Ctrl;
RC.ss.l1macind[CC_id].HarqError_Ctrl = received_msg->ittiMsg.ss_l1macind_ctrl.HarqError_Ctrl;
if (received_msg->ittiMsg.ss_l1macind_ctrl.bitmask & PDCCH_ORDER_PRESENT)
{
RC.rrc[0]->configuration.radioresourceconfig[cell_index].prach_preambleIndex = received_msg->ittiMsg.ss_l1macind_ctrl.pdcchOrder.preambleIndex;
RC.rrc[0]->configuration.radioresourceconfig[cell_index].prach_maskIndex = received_msg->ittiMsg.ss_l1macind_ctrl.pdcchOrder.prachMaskIndex;
RC.rrc[0]->configuration.radioresourceconfig[cell_index].prach_maskIndex = received_msg->ittiMsg.ss_l1macind_ctrl.pdcchOrder.prachMaskIndex;
LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL for PdcchOrder for cell:%d. prach_preambleIndex:%d prach_maskIndex:%d\n",
cell_index,
RC.rrc[0]->configuration.radioresourceconfig[cell_index].prach_preambleIndex,
......@@ -316,8 +319,8 @@ void *mac_enb_task(void *arg)
}
if (received_msg->ittiMsg.ss_l1macind_ctrl.bitmask & RACH_PREAMBLE_PRESENT)
{
LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL for RachPreamble. rachpreamble_enable:%d\n", RC.ss.l1macind.rachpreamble_enable);
RC.ss.l1macind.rachpreamble_enable = received_msg->ittiMsg.ss_l1macind_ctrl.rachpreamble_enable;
LOG_I(MAC, "MAC Task Received SS_L1MACIND_CTRL for RachPreamble. rachpreamble_enable:%d\n", RC.ss.l1macind[CC_id].rachpreamble_enable);
RC.ss.l1macind[CC_id].rachpreamble_enable = received_msg->ittiMsg.ss_l1macind_ctrl.rachpreamble_enable;
}
break;
......
......@@ -1269,6 +1269,7 @@ extern void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
void release_UE_in_freeList(module_id_t mod_id) {
PHY_VARS_eNB *eNB_PHY = NULL;
eNB_MAC_INST *eNB_MAC = RC.mac[mod_id];
int CC_id;
pthread_mutex_lock(&lock_ue_freelist);
for(int ue_num = 0; ue_num < sizeofArray(eNB_MAC->UE_free_ctrl) ; ue_num++) {
......@@ -1278,7 +1279,7 @@ void release_UE_in_freeList(module_id_t mod_id) {
protocol_ctxt_t ctxt;
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, mod_id, ENB_FLAG_YES, rnti, 0, 0,mod_id);
for (int CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
for (CC_id = 0; CC_id < RC.nb_CC[0]; CC_id++) {
eNB_PHY = RC.eNB[mod_id][CC_id];
int id;
// clean ULSCH entries for rnti
......
......@@ -206,6 +206,26 @@ uint8_t do_MIB_NR(gNB_RRC_INST *rrc,uint32_t frame) {
rrc_gNB_carrier_data_t *carrier = &rrc->carrier;
NR_BCCH_BCH_Message_t *mib = &carrier->mib;
/*TODO: for SS mode, mib is coming from TTCN */
/*
if(RC.ss.mode == SS_SOFTMODEM) {
enc_rval = uper_encode_to_buffer(&asn_DEF_NR_BCCH_BCH_Message,
NULL,
(void *)mib,
carrier->MIB,
24);
LOG_P(OAILOG_INFO, "BCCH_BCH_Message", (uint8_t *)carrier->MIB, 24);
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
enc_rval.failed_type->name, enc_rval.encoded);
if (enc_rval.encoded==-1) {
return(-1);
}
return((enc_rval.encoded+7)/8);
}
*/
NR_ServingCellConfigCommon_t *scc = carrier->servingcellconfigcommon;
memset(mib,0,sizeof(NR_BCCH_BCH_Message_t));
......@@ -315,8 +335,37 @@ uint8_t do_MIB_NR(gNB_RRC_INST *rrc,uint32_t frame) {
uint16_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
gNB_RrcConfigurationReq *configuration) {
asn_enc_rval_t enc_rval;
/*TODO: for SS mode, sib1 is coming from TTCN */
/*
if(RC.ss.mode == SS_SOFTMODEM) {
if(NULL == carrier->siblock1) {
return 0;
}
NR_BCCH_DL_SCH_Message_t *sib1_message = carrier->siblock1;
if ( LOG_DEBUGFLAG(DEBUG_ASN1) ) {
xer_fprint(stdout, &asn_DEF_NR_BCCH_DL_SCH_Message, (const void*)sib1_message);
}
if(carrier->SIB1 == NULL) carrier->SIB1=(uint8_t *) malloc16(NR_MAX_SIB_LENGTH/8);
enc_rval = uper_encode_to_buffer(&asn_DEF_NR_BCCH_DL_SCH_Message,
NULL,
(void *)sib1_message,
carrier->SIB1,
NR_MAX_SIB_LENGTH/8);
LOG_P(OAILOG_INFO, "BCCH_DL_SCH_Message", (uint8_t *)carrier->SIB1, NR_MAX_SIB_LENGTH/8);
AssertFatal (enc_rval.encoded > 0, "ASN1 message encoding failed (%s, %lu)!\n",
enc_rval.failed_type->name, enc_rval.encoded);
if (enc_rval.encoded==-1) {
return(-1);
}
return((enc_rval.encoded+7)/8);
}
*/
NR_BCCH_DL_SCH_Message_t *sib1_message = CALLOC(1,sizeof(NR_BCCH_DL_SCH_Message_t));
carrier->siblock1 = sib1_message;
sib1_message->message.present = NR_BCCH_DL_SCH_MessageType_PR_c1;
......@@ -900,7 +949,13 @@ void fill_initial_SpCellConfig(int uid,
SpCellConfig->reconfigurationWithSync = NULL;
SpCellConfig->rlmInSyncOutOfSyncThreshold = NULL;
SpCellConfig->rlf_TimersAndConstants = NULL;
if (RC.ss.mode >= SS_SOFTMODEM) {
/* TODO: fill SpCellConfig->spCellConfigDedicated with configuration from SS*/
/*
SpCellConfig->cellConfigDedicated = carrier->cellConfigDedicated;
return;
*/
}
SpCellConfig->spCellConfigDedicated = calloc(1,sizeof(*SpCellConfig->spCellConfigDedicated));
SpCellConfig->spCellConfigDedicated->uplinkConfig = calloc(1,sizeof(*SpCellConfig->spCellConfigDedicated->uplinkConfig));
NR_UplinkConfig_t *uplinkConfig = SpCellConfig->spCellConfigDedicated->uplinkConfig;
......@@ -1392,7 +1447,18 @@ void fill_initial_cellGroupConfig(int uid,
fill_rb_RLC_BearerConfig(rbIndex, rlc_BearerConfig, ss_rlc_BearerConfig);
ASN_SEQUENCE_ADD(&cellGroupConfig->rlc_BearerToAddModList->list, rlc_BearerConfig);
}
}else {
/* TODO: ServingCellConfig from SS
cellGroupConfig->cellGroupId = carrier->cell_GroupId;
cellGroupConfig->mac_CellGroupConfig = carrier->mac_cellGroupConfig;
cellGroupConfig->physicalCellGroupConfig = carrier->physicalCellGroupConfig;
cellGroupConfig->spCellConfig = calloc(1,sizeof(*cellGroupConfig->spCellConfig));
fill_initial_SpCellConfig(uid,cellGroupConfig->spCellConfig,scc,carrier);
cellGroupConfig->sCellToAddModList = NULL;
cellGroupConfig->sCellToReleaseList = NULL;
return;
*/
}else {
/* Rlc Bearer Config */
/* TS38.331 9.2.1 Default SRB configurations */
cellGroupConfig->rlc_BearerToAddModList = calloc(1, sizeof(*cellGroupConfig->rlc_BearerToAddModList));
......
......@@ -80,6 +80,17 @@
#include "commonDef.h"
/*I will change the name of the structure for compile purposes--> hope not to undo this process*/
typedef unsigned int uid_nr_t;
#define NR_UID_LINEAR_ALLOCATOR_BITMAP_SIZE (((MAX_MOBILES_PER_GNB/8)/sizeof(unsigned int)) + 1)
typedef struct nr_uid_linear_allocator_s {
unsigned int bitmap[NR_UID_LINEAR_ALLOCATOR_BITMAP_SIZE];
} nr_uid_allocator_t;
#define PROTOCOL_NR_RRC_CTXT_UE_FMT PROTOCOL_CTXT_FMT
#define PROTOCOL_NR_RRC_CTXT_UE_ARGS(CTXT_Pp) PROTOCOL_NR_CTXT_ARGS(CTXT_Pp)
......@@ -404,6 +415,8 @@ typedef struct gNB_RRC_UE_s {
} gNB_RRC_UE_t;
typedef uid_t ue_uid_t;
typedef struct rrc_gNB_ue_context_s {
/* Tree related data */
RB_ENTRY(rrc_gNB_ue_context_s) entries;
......@@ -420,6 +433,42 @@ typedef struct rrc_gNB_ue_context_s {
struct gNB_RRC_UE_s ue_context;
} rrc_gNB_ue_context_t;
/* PUSCH,PDSCH dedicated DCCH,DTCH scheduling configuration from external */
typedef struct NR_DciFormat_0_X_ResourceAssignment {
int32_t FirstRbIndex;
int32_t Nprb;
struct NR_TransportBlockScheduling{
uint8_t imcs;
uint8_t RedundancyVersion;
bool ToggleNDI;
} transportBlock_scheduling;
}NR_DciFormat_0_X_ResourceAssignment_t;
typedef struct NR_DcchDtchConfig_UL {
struct NR_DciUlinfo {
NR_DciFormat_0_X_ResourceAssignment_t * resoure_assignment;
uint8_t * pusch_hopping_ctrl_flag;
uint8_t * tpc_command_pusch;
uint8_t * ul_sul_indicator;
//NR_DciFormat0_0 * dci0_0;
//NR_DciFormat0_1 * dci0_1;
} * dci_info;
/*TODO: other config */
//PUCCH_Synch
//GrantConfig
} NR_DcchDtchConfig_UL_t;
typedef struct NR_DcchDtchConfig {
/*TODO: define DL config for activeBWP */
//NR_DcchDtchConfig_DL_t * dl;
NR_DcchDtchConfig_UL_t * ul;
} NR_DcchDtchConfig_t;
/*****************************************************************/
typedef struct {
// buffer that contains the encoded messages
......@@ -445,12 +494,29 @@ typedef struct {
NR_SIB2_t *sib2;
NR_SIB3_t *sib3;
NR_BCCH_DL_SCH_Message_t systemInformation; // SIB23
int ssb_SubcarrierOffset;
int sib1_tda;
int pdsch_AntennaPorts;
int pusch_AntennaPorts;
int minRXTXTIME;
int do_CSIRS;
int do_SRS;
NR_BCCH_DL_SCH_Message_t *siblock1;
NR_ServingCellConfigCommon_t *servingcellconfigcommon;
NR_ServingCellConfig_t *servingcellconfig;
NR_ServingCellConfig_t *cellConfigDedicated;
NR_PDCCH_ConfigSIB1_t *pdcch_ConfigSIB1;
/* ServingCellConfig */
NR_CellGroupId_t cell_GroupId;
NR_MAC_CellGroupConfig_t *mac_cellGroupConfig;
NR_PhysicalCellGroupConfig_t *physicalCellGroupConfig;
/* dedicate Scheduler Config */
NR_DcchDtchConfig_t *dcchDtchConfig;
NR_CellGroupConfig_t *secondaryCellGroup[MAX_NR_RRC_UE_CONTEXTS];
NR_SRB_INFO SI;
NR_SRB_INFO Srb0;
int p_gNB;
} rrc_gNB_carrier_data_t;
......
This diff is collapsed.
......@@ -59,7 +59,7 @@ static bool reqCnfFlag_g = false;
void ss_task_sys_nr_handle_deltaValues(struct NR_SYSTEM_CTRL_REQ *req);
int cell_config_5G_done=-1;
int cell_config_5G_done_indication();
bool ss_task_sys_nr_handle_cellConfig5G (struct NR_CellConfigRequest_Type *p_req);
bool ss_task_sys_nr_handle_cellConfig5G (struct NR_CellConfigRequest_Type *p_req,int cell_State);
bool ss_task_sys_nr_handle_cellConfigRadioBearer(struct NR_SYSTEM_CTRL_REQ *req);
bool ss_task_sys_nr_handle_cellConfigAttenuation(struct NR_SYSTEM_CTRL_REQ *req);
static int sys_5G_send_init_udp(const udpSockReq_t *req);
......@@ -262,7 +262,7 @@ static void ss_task_sys_nr_handle_req(struct NR_SYSTEM_CTRL_REQ *req, ss_nrset_t
if (req->Request.d == NR_SystemRequest_Type_Cell)
{
LOG_A(GNB_APP, "[SYS-GNB] NR_SystemRequest_Type_Cell received\n");
if (false == ss_task_sys_nr_handle_cellConfig5G(&req->Request.v.Cell) )
if (false == ss_task_sys_nr_handle_cellConfig5G(&req->Request.v.Cell,RC.ss.State) )
{
LOG_A(GNB_APP, "[SYS-GNB] Error handling Cell Config 5G for NR_SystemRequest_Type_Cell \n");
return;
......@@ -327,7 +327,10 @@ static void ss_task_sys_nr_handle_req(struct NR_SYSTEM_CTRL_REQ *req, ss_nrset_t
{
case NR_SystemRequest_Type_Cell:
{
LOG_A(GNB_APP, "[SYS-GNB] Dummy handling for Cell Config 5G NR_SystemRequest_Type_Cell \n");
if (false == ss_task_sys_nr_handle_cellConfig5G(&req->Request.v.Cell,RC.ss.State) )
{
LOG_E(GNB_APP, "[SYS-GNB] Error handling Cell Config 5G for NR_SystemRequest_Type_Cell \n");
}
send_sys_cnf(ConfirmationResult_Type_Success, true, NR_SystemConfirm_Type_Cell, NULL);
}
break;
......@@ -651,11 +654,136 @@ void ss_task_sys_nr_handle_deltaValues(struct NR_SYSTEM_CTRL_REQ *req)
* Returns : None
*/
bool ss_task_sys_nr_handle_cellConfig5G(struct NR_CellConfigRequest_Type *p_req)
bool ss_task_sys_nr_handle_cellConfig5G(struct NR_CellConfigRequest_Type *p_req,int cell_State)
{
uint32_t gnbId = 0;
if (p_req->d == NR_CellConfigRequest_Type_AddOrReconfigure)
{
/* populate each config */
/* 1. StaticResource Config */
if(p_req->v.AddOrReconfigure.StaticResourceConfig.d)
{
}
/* 2. CellConfigCommon: currently NR_InitialCellPower_Type is processed after cell config */
if(p_req->v.AddOrReconfigure.CellConfigCommon.d)
{
}
/* 3. PhysicalLayer */
/* TODO: populate fields to
RC.nrrrc[gnbId]->carrier.servingcellconfigcommon
RC.nrrrc[gnbId]->carrier.cellConfigDedicated
*/
if(p_req->v.AddOrReconfigure.PhysicalLayer.d)
{
}
/* 4. BcchConfig */
/* TODO: populate all BcchConfig fields to
RC.nrrrc[gnbId]->carrier.mib
RC.nrrrc[gnbId]->carrier.siblock1
RC.nrrrc[gnbId]->carrier.systemInformation
*/
if(p_req->v.AddOrReconfigure.BcchConfig.d)
{
}
/* 5. PcchConfig */
if(p_req->v.AddOrReconfigure.PcchConfig.d)
{
}
/* 6. RachProcedureConfig */
if(p_req->v.AddOrReconfigure.RachProcedureConfig.d)
{
}
/* 7. DcchDtchConfig */
if(p_req->v.AddOrReconfigure.DcchDtchConfig.d)
{
if(NULL == RC.nrrrc[gnbId]->carrier.dcchDtchConfig){
RC.nrrrc[gnbId]->carrier.dcchDtchConfig = calloc(1,sizeof(NR_DcchDtchConfig_t));
}
NR_DcchDtchConfig_t * dcchDtchConfig = RC.nrrrc[gnbId]->carrier.dcchDtchConfig;
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.DL.d)
{
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.d)
{
if(NULL==dcchDtchConfig->ul){
dcchDtchConfig->ul = calloc(1,sizeof(*(dcchDtchConfig->ul)));
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.d){
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.d){
if(NULL == dcchDtchConfig->ul->dci_info){
dcchDtchConfig->ul->dci_info = calloc(1,sizeof(*(dcchDtchConfig->ul->dci_info)));
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.d){
if(NULL == dcchDtchConfig->ul->dci_info->resoure_assignment){
dcchDtchConfig->ul->dci_info->resoure_assignment = calloc(1,sizeof(*(dcchDtchConfig->ul->dci_info->resoure_assignment)));
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.FreqDomain.d){
dcchDtchConfig->ul->dci_info->resoure_assignment->FirstRbIndex =
p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.FreqDomain.v.FirstRbIndex;
dcchDtchConfig->ul->dci_info->resoure_assignment->Nprb =
p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.FreqDomain.v.Nprb;
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.TransportBlockScheduling.d) {
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.TransportBlockScheduling.v.d > 0){
struct NR_TransportBlockSingleTransmission_Type * tbst = &p_req->v.AddOrReconfigure.DcchDtchConfig.v.UL.v.SearchSpaceAndDci.v.DciInfo.v.ResoureAssignment.v.TransportBlockScheduling.v.v[0];
dcchDtchConfig->ul->dci_info->resoure_assignment->transportBlock_scheduling.imcs = tbst->ImcsValue;
dcchDtchConfig->ul->dci_info->resoure_assignment->transportBlock_scheduling.RedundancyVersion = tbst->RedundancyVersion;
dcchDtchConfig->ul->dci_info->resoure_assignment->transportBlock_scheduling.ToggleNDI = tbst->ToggleNDI;
}
}
}
}
}
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.DrxCtrl.d)
{
}
if(p_req->v.AddOrReconfigure.DcchDtchConfig.v.MeasGapCtrl.d)
{
}
}
/* 8. ServingCellConfig */
/* TODO: populate ServingCellConfig to
RC.nrrrc[gnbId]->carrier.cell_GroupId
RC.nrrrc[gnbId]->carrier.mac_cellGroupConfig
RC.nrrrc[gnbId]->carrier.physicalCellGroupConfig
*/
if(p_req->v.AddOrReconfigure.ServingCellConfig.d)
{
}
if(cell_State != SS_STATE_NOT_CONFIGURED){
/* Trigger RRC Cell reconfig when cell is active */
MessageDef *msg_p = NULL;
msg_p = itti_alloc_new_message (TASK_GNB_APP, 0, NRRRC_CONFIGURATION_REQ);
LOG_I(GNB_APP,"ss_gNB Sending configuration message to NR_RRC task\n");
memcpy(&NRRRC_CONFIGURATION_REQ(msg_p), &RC.nrrrc[gnbId]->configuration,sizeof(NRRRC_CONFIGURATION_REQ(msg_p)));
itti_send_msg_to_task (TASK_RRC_GNB, GNB_MODULE_ID_TO_INSTANCE(gnbId), msg_p);
return true;
}
/* following code shall be optimized and moved to "PhysicalLayer" populating*/
/*****************************************************************************/
/* Populating PhyCellId */
if (p_req->v.AddOrReconfigure.PhysicalLayer.v.Common.v.PhysicalCellId.d == true)
{
......@@ -785,6 +913,7 @@ bool ss_task_sys_nr_handle_cellConfig5G(struct NR_CellConfigRequest_Type *p_req)
*RC.nrrrc[gnbId]->configuration.scc->uplinkConfigCommon->frequencyInfoUL->p_Max);
}
/*****************************************************************************/
}
return true;
......
......@@ -72,7 +72,7 @@ typedef struct ss_config_s {
int CBRA_flag;
int mac_rlc_data_ind_frame;
int mac_rlc_data_ind_subframe;
ss_l1macind_ctrl_t l1macind;
ss_l1macind_ctrl_t l1macind[MAX_NUM_CCs];
uint8_t CC_conf_flag[MAX_NUM_CCs];
ss_rrc_pdcp_api_t *ss_pdcp_api;
} ss_config_t;
......
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