Commit 272fa05f authored by WEI-TAI CHEN's avatar WEI-TAI CHEN

new function in order to fill CellGroupConfig

parent 4491492a
......@@ -41,7 +41,6 @@
#include <per_encoder.h>
#include "asn1_msg.h"
#include "RRC/NR/nr_rrc_defs.h"
#include "RRC/NR/nr_rrc_extern.h"
#if defined(NR_Rel15)
......@@ -280,13 +279,13 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
return((enc_rval.encoded+7)/8);
}
void fill_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
int CC_id,
#if defined(ENABLE_ITTI)
gNB_RrcConfigurationReq *configuration,
#endif
int initial_flag
)
void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
int CC_id,
#if defined(ENABLE_ITTI)
gNB_RrcConfigurationReq *configuration,
#endif
int initial_flag
)
{
NR_ServingCellConfigCommon_t **servingcellconfigcommon = &RC.nrrrc[Mod_id]->carrier[CC_id].servingcellconfigcommon;
NR_FreqBandIndicatorNR_t *dl_frequencyBandList;
......@@ -691,6 +690,8 @@ void fill_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(*servingcellconfigcommon)->uplinkConfigCommon->timeAlignmentTimerCommon = configuration->UL_timeAlignmentTimerCommon[CC_id];
(*servingcellconfigcommon)->n_TimingAdvanceOffset = CALLOC(1,sizeof(long));
*((*servingcellconfigcommon)->n_TimingAdvanceOffset)=configuration->ServingCellConfigCommon_n_TimingAdvanceOffset[CC_id];
//ssb_PositionsInBurst
(*servingcellconfigcommon)->ssb_PositionsInBurst->present = configuration->ServingCellConfigCommon_ssb_PositionsInBurst_PR[CC_id];
......@@ -820,3 +821,23 @@ void fill_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
}
void do_RLC_BEARER(uint8_t Mod_id,
int CC_id,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_BearerToAddModList,
rlc_bearer_config_t *rlc_config){
}
void do_MAC_CELLGROUP(uint8_t Mod_id,
int CC_id,
struct NR_MAC_CellGroupConfig *mac_CellGroupConfig,
mac_cellgroup_t *mac_cellgroup_config){
}
void do_PHYSICALCELLGROUP(uint8_t Mod_id,
int CC_id,
struct NR_PhysicalCellGroupConfig *physicalCellGroupConfig,
physicalcellgroup_t *physicalcellgroup_config){
}
\ No newline at end of file
......@@ -40,6 +40,8 @@
#include <asn_internal.h> /* for _ASN_DEFAULT_STACK_MAX */
#include "RRC/NR/nr_rrc_defs.h"
#include "RRC/NR/nr_rrc_config.h"
/*
* The variant of the above function which dumps the BASIC-XER (XER_F_BASIC)
......@@ -79,13 +81,28 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
uint8_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,int Mod_id,int CC_id, gNB_RrcConfigurationReq *configuration);
void fill_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
int CC_id,
#if defined(ENABLE_ITTI)
gNB_RrcConfigurationReq *configuration,
#endif
int initial_flag
);
void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
int CC_id,
#if defined(ENABLE_ITTI)
gNB_RrcConfigurationReq *configuration,
#endif
int initial_flag
);
void do_RLC_BEARER(uint8_t Mod_id,
int CC_id,
struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_BearerToAddModList,
rlc_bearer_config_t *rlc_config);
void do_MAC_CELLGROUP(uint8_t Mod_id,
int CC_id,
struct NR_MAC_CellGroupConfig *mac_CellGroupConfig,
mac_cellgroup_t *mac_cellgroup_config);
void do_PHYSICALCELLGROUP(uint8_t Mod_id,
int CC_id,
struct NR_PhysicalCellGroupConfig *physicalCellGroupConfig,
physicalcellgroup_t *physicalcellgroup_config);
......
......@@ -168,3 +168,88 @@ void rrc_config_servingcellconfigcommon(uint8_t Mod_id,
common_configuration->RateMatchPatternLTE_CRS_subframeAllocation_choice[CC_id] = 0;
}
void rrc_config_rlc_bearer(uint8_t Mod_id,
int CC_id,
rlc_bearer_config_t *rlc_config
){
rlc_config->LogicalChannelIdentity[CC_id] = 0;
rlc_config->servedRadioBearer_present[CC_id] = 0;
rlc_config->srb_Identity[CC_id] = 0;
rlc_config->drb_Identity[CC_id] = 0;
rlc_config->reestablishRLC[CC_id] = 0;
rlc_config->rlc_Config_present[CC_id] = 0;
rlc_config->ul_AM_sn_FieldLength[CC_id] = 0;
rlc_config->t_PollRetransmit[CC_id] = 0;
rlc_config->pollPDU[CC_id] = 0;
rlc_config->pollByte[CC_id] = 0;
rlc_config->maxRetxThreshold[CC_id] = 0;
rlc_config->dl_AM_sn_FieldLength[CC_id] = 0;
rlc_config->dl_AM_t_Reassembly[CC_id] = 0;
rlc_config->t_StatusProhibit[CC_id] = 0;
rlc_config->ul_UM_sn_FieldLength[CC_id] = 0;
rlc_config->dl_UM_sn_FieldLength[CC_id] = 0;
rlc_config->dl_UM_t_Reassembly[CC_id] = 0;
rlc_config->priority[CC_id] = 0;
rlc_config->prioritisedBitRate[CC_id] = 0;
rlc_config->bucketSizeDuration[CC_id] = 0;
rlc_config->allowedServingCells[CC_id] = 0;
rlc_config->subcarrierspacing[CC_id] = 0;
rlc_config->maxPUSCH_Duration[CC_id] = 0;
rlc_config->configuredGrantType1Allowed[CC_id] = 0;
rlc_config->logicalChannelGroup[CC_id] = 0;
rlc_config->schedulingRequestID[CC_id] = 0;
rlc_config->logicalChannelSR_Mask[CC_id] = 0;
rlc_config->logicalChannelSR_DelayTimerApplied[CC_id] = 0;
}
void rrc_config_mac_cellgroup(uint8_t Mod_id,
int CC_id,
mac_cellgroup_t *mac_cellgroup_config
){
mac_cellgroup_config->DRX_Config_PR[CC_id] = 0;
mac_cellgroup_config->drx_onDurationTimer_PR[CC_id] = 0;
mac_cellgroup_config->subMilliSeconds[CC_id] = 0;
mac_cellgroup_config->milliSeconds[CC_id] = 0;
mac_cellgroup_config->drx_InactivityTimer[CC_id] = 0;
mac_cellgroup_config->drx_HARQ_RTT_TimerDL[CC_id] = 0;
mac_cellgroup_config->drx_HARQ_RTT_TimerUL[CC_id] = 0;
mac_cellgroup_config->drx_RetransmissionTimerDL[CC_id] = 0;
mac_cellgroup_config->drx_RetransmissionTimerUL[CC_id] = 0;
mac_cellgroup_config->drx_LongCycleStartOffset_PR[CC_id] = 0;
mac_cellgroup_config->drx_LongCycleStartOffset[CC_id] = 0;
mac_cellgroup_config->drx_ShortCycle[CC_id] = 0;
mac_cellgroup_config->drx_ShortCycleTimer[CC_id] = 0;
mac_cellgroup_config->drx_SlotOffset[CC_id] = 0;
mac_cellgroup_config->schedulingRequestId[CC_id] = 0;
mac_cellgroup_config->sr_ProhibitTimer[CC_id] = 0;
mac_cellgroup_config->sr_TransMax[CC_id] = 0;
mac_cellgroup_config->periodicBSR_Timer[CC_id] = 0;
mac_cellgroup_config->retxBSR_Timer[CC_id] = 0;
mac_cellgroup_config->logicalChannelSR_DelayTimer[CC_id] = 0;
mac_cellgroup_config->tag_Id[CC_id] = 0;
mac_cellgroup_config->timeAlignmentTimer[CC_id] = 0;
mac_cellgroup_config->PHR_Config_PR[CC_id] = 0;
mac_cellgroup_config->phr_PeriodicTimer[CC_id] = 0;
mac_cellgroup_config->phr_ProhibitTimer[CC_id] = 0;
mac_cellgroup_config->phr_Tx_PowerFactorChange[CC_id] = 0;
mac_cellgroup_config->multiplePHR[CC_id] = 0;
mac_cellgroup_config->phr_Type2SpCell[CC_id] = 0;
mac_cellgroup_config->phr_Type2OtherCell[CC_id] = 0;
mac_cellgroup_config->phr_ModeOtherCG[CC_id] = 0;
mac_cellgroup_config->skipUplinkTxDynamic[CC_id] = 0;
}
void rrc_config_physicalcellgroup(uint8_t Mod_id,
int CC_id,
physicalcellgroup_t *physicalcellgroup_config
){
physicalcellgroup_config->harq_ACK_SpatialBundlingPUCCH[CC_id] = 0;
physicalcellgroup_config->harq_ACK_SpatialBundlingPUSCH[CC_id] = 0;
physicalcellgroup_config->p_NR[CC_id] = 0;
physicalcellgroup_config->pdsch_HARQ_ACK_Codebook[CC_id] = 0;
physicalcellgroup_config->tpc_SRS_RNTI[CC_id] = 0;
physicalcellgroup_config->tpc_PUCCH_RNTI[CC_id] = 0;
physicalcellgroup_config->tpc_PUSCH_RNTI[CC_id] = 0;
physicalcellgroup_config->sp_CSI_RNTI[CC_id] = 0;
physicalcellgroup_config->RNTI_Value[CC_id] = 0;
}
\ No newline at end of file
......@@ -28,83 +28,86 @@
* \email: raymond.knopp@eurecom.fr, kroempa@gmail.com
*/
#ifndef __NR_RRC_CONFIG_H__
#define __NR_RRC_CONFIG_H__
#include "nr_rrc_defs.h"
typedef struct rlc_bearer_config_s{
long LogicalChannelIdentity;
long servedRadioBearer_present;
long srb_Identity;
long drb_Identity;
long reestablishRLC;
long rlc_Config_present;
long ul_AM_sn_FieldLength;
long t_PollRetransmit;
long pollPDU;
long pollByte;
long maxRetxThreshold;
long dl_AM_sn_FieldLength;
long dl_AM_t_Reassembly;
long t_StatusProhibit;
long ul_UM_sn_FieldLength;
long dl_UM_sn_FieldLength;
long dl_UM_t_Reassembly;
long priority;
long prioritisedBitRate;
long bucketSizeDuration;
long allowedServingCells;
long subcarrierspacing;
long maxPUSCH_Duration;
long configuredGrantType1Allowed;
long logicalChannelGroup;
long schedulingRequestID; /* OPTIONAL */
BOOLEAN_t logicalChannelSR_Mask;
BOOLEAN_t logicalChannelSR_DelayTimerApplied;
long LogicalChannelIdentity[MAX_NUM_CCs];
long servedRadioBearer_present[MAX_NUM_CCs];
long srb_Identity[MAX_NUM_CCs];
long drb_Identity[MAX_NUM_CCs];
long reestablishRLC[MAX_NUM_CCs];
long rlc_Config_present[MAX_NUM_CCs];
long ul_AM_sn_FieldLength[MAX_NUM_CCs];
long t_PollRetransmit[MAX_NUM_CCs];
long pollPDU[MAX_NUM_CCs];
long pollByte[MAX_NUM_CCs];
long maxRetxThreshold[MAX_NUM_CCs];
long dl_AM_sn_FieldLength[MAX_NUM_CCs];
long dl_AM_t_Reassembly[MAX_NUM_CCs];
long t_StatusProhibit[MAX_NUM_CCs];
long ul_UM_sn_FieldLength[MAX_NUM_CCs];
long dl_UM_sn_FieldLength[MAX_NUM_CCs];
long dl_UM_t_Reassembly[MAX_NUM_CCs];
long priority[MAX_NUM_CCs];
long prioritisedBitRate[MAX_NUM_CCs];
long bucketSizeDuration[MAX_NUM_CCs];
long allowedServingCells[MAX_NUM_CCs];
long subcarrierspacing[MAX_NUM_CCs];
long maxPUSCH_Duration[MAX_NUM_CCs];
long configuredGrantType1Allowed[MAX_NUM_CCs];
long logicalChannelGroup[MAX_NUM_CCs];
long schedulingRequestID[MAX_NUM_CCs]; /* OPTIONAL */
int logicalChannelSR_Mask[MAX_NUM_CCs];
int logicalChannelSR_DelayTimerApplied[MAX_NUM_CCs];
}rlc_bearer_config_t;
typedef struct mac_cellgroup_s{
long DRX_Config_PR;
long drx_onDurationTimer_PR;
long subMilliSeconds;
long milliSeconds;
long drx_InactivityTimer;
long drx_HARQ_RTT_TimerDL;
long drx_HARQ_RTT_TimerUL;
long drx_RetransmissionTimerDL;
long drx_RetransmissionTimerUL;
long drx_LongCycleStartOffset_PR;
long drx_LongCycleStartOffset;
long drx_ShortCycle;
long drx_ShortCycleTimer;
long drx_SlotOffset;
long schedulingRequestId;
long sr_ProhibitTimer;
long sr_TransMax;
long periodicBSR_Timer;
long retxBSR_Timer;
long logicalChannelSR_DelayTimer;
long tag_Id;
long timeAlignmentTimer;
long PHR_Config_PR;
long phr_PeriodicTimer;
long phr_ProhibitTimer;
long phr_Tx_PowerFactorChange;
BOOLEAN_t multiplePHR;
BOOLEAN_t phr_Type2SpCell;
BOOLEAN_t phr_Type2OtherCell;
long phr_ModeOtherCG;
BOOLEAN_t skipUplinkTxDynamic;
long DRX_Config_PR[MAX_NUM_CCs];
long drx_onDurationTimer_PR[MAX_NUM_CCs];
long subMilliSeconds[MAX_NUM_CCs];
long milliSeconds[MAX_NUM_CCs];
long drx_InactivityTimer[MAX_NUM_CCs];
long drx_HARQ_RTT_TimerDL[MAX_NUM_CCs];
long drx_HARQ_RTT_TimerUL[MAX_NUM_CCs];
long drx_RetransmissionTimerDL[MAX_NUM_CCs];
long drx_RetransmissionTimerUL[MAX_NUM_CCs];
long drx_LongCycleStartOffset_PR[MAX_NUM_CCs];
long drx_LongCycleStartOffset[MAX_NUM_CCs];
long drx_ShortCycle[MAX_NUM_CCs];
long drx_ShortCycleTimer[MAX_NUM_CCs];
long drx_SlotOffset[MAX_NUM_CCs];
long schedulingRequestId[MAX_NUM_CCs];
long sr_ProhibitTimer[MAX_NUM_CCs];
long sr_TransMax[MAX_NUM_CCs];
long periodicBSR_Timer[MAX_NUM_CCs];
long retxBSR_Timer[MAX_NUM_CCs];
long logicalChannelSR_DelayTimer[MAX_NUM_CCs];
long tag_Id[MAX_NUM_CCs];
long timeAlignmentTimer[MAX_NUM_CCs];
long PHR_Config_PR[MAX_NUM_CCs];
long phr_PeriodicTimer[MAX_NUM_CCs];
long phr_ProhibitTimer[MAX_NUM_CCs];
long phr_Tx_PowerFactorChange[MAX_NUM_CCs];
int multiplePHR[MAX_NUM_CCs];
int phr_Type2SpCell[MAX_NUM_CCs];
int phr_Type2OtherCell[MAX_NUM_CCs];
long phr_ModeOtherCG[MAX_NUM_CCs];
int skipUplinkTxDynamic[MAX_NUM_CCs];
}mac_cellgroup_t;
typedef struct physicalcellgroup_s{
long harq_ACK_SpatialBundlingPUCCH;
long harq_ACK_SpatialBundlingPUSCH;
long p_NR;
long pdsch_HARQ_ACK_Codebook;
long tpc_SRS_RNTI;
long tpc_PUCCH_RNTI;
long tpc_PUSCH_RNTI;
long sp_CSI_RNTI;
long RNTI_Value;
long harq_ACK_SpatialBundlingPUCCH[MAX_NUM_CCs];
long harq_ACK_SpatialBundlingPUSCH[MAX_NUM_CCs];
long p_NR[MAX_NUM_CCs];
long pdsch_HARQ_ACK_Codebook[MAX_NUM_CCs];
long tpc_SRS_RNTI[MAX_NUM_CCs];
long tpc_PUCCH_RNTI[MAX_NUM_CCs];
long tpc_PUSCH_RNTI[MAX_NUM_CCs];
long sp_CSI_RNTI[MAX_NUM_CCs];
long RNTI_Value[MAX_NUM_CCs];
}physicalcellgroup_t;
void rrc_config_servingcellconfigcommon(uint8_t Mod_id,
......@@ -128,3 +131,5 @@ void rrc_config_physicalcellgroup(uint8_t Mod_id,
int CC_id,
physicalcellgroup_t *physicalcellgroup_config
);
#endif
\ No newline at end of file
......@@ -32,7 +32,6 @@
*/
#include "RRC/NR/nr_rrc_defs.h"
#include "flexran_agent_extern.h"
int rrc_init_nr_global_param(void);
......@@ -58,6 +57,7 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
rrc_gNB_ue_context_t *const ue_context_pP
);
#if defined(ENABLE_ITTI)
/**\brief RRC eNB task.
\param void *args_p Pointer on arguments to start the task. */
......
......@@ -30,6 +30,7 @@
#define RRC_GNB_C
#define RRC_GNB_C
#include "nr_rrc_config.h"
#include "nr_rrc_defs.h"
#include "nr_rrc_extern.h"
#include "assertions.h"
......@@ -42,7 +43,6 @@
#include "UTIL/LOG/log.h"
#include "COMMON/mac_rrc_primitives.h"
#include "RRC/NR/MESSAGES/asn1_msg.h"
#include "nr_rrc_config.h"
#include "NR_BCCH-BCH-Message.h"
#include "NR_UL-DCCH-Message.h"
......@@ -167,23 +167,57 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
physicalCellGroupConfig = cellGroupconfig->physicalCellGroupConfig;
spCellConfig = cellGroupconfig->spCellConfig;
sCellToAddModList = cellGroupconfig->sCellToAddModList;
//rrc_config_rlc_bearer();
//rrc_config_mac_cellgroup();
//rrc_config_physicalcellgroup();
rlc_bearer_config_t *rlc_config;
rlc_config = CALLOC(1,sizeof(rlc_bearer_config_t));
//Fill rlc_bearer config value
rrc_config_rlc_bearer(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
rlc_config
);
//Fill rlc_bearer config to structure
do_RLC_BEARER(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
rlc_BearerToAddModList,
rlc_config);
mac_cellgroup_t *mac_cellgroup_config;
mac_cellgroup_config = CALLOC(1,sizeof(mac_cellgroup_t));
//Fill mac_cellgroup_config config value
rrc_config_mac_cellgroup(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
mac_cellgroup_config
);
//Fill mac_cellgroup config to structure
do_MAC_CELLGROUP(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
mac_CellGroupConfig,
mac_cellgroup_config);
physicalcellgroup_t *physicalcellgroup_config;
physicalcellgroup_config = CALLOC(1,sizeof(physicalcellgroup_t));
//Fill physicalcellgroup_config config value
rrc_config_physicalcellgroup(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
physicalcellgroup_config
);
//Fill physicalcellgroup config to structure
do_PHYSICALCELLGROUP(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
physicalCellGroupConfig,
physicalcellgroup_config);
gNB_RrcConfigurationReq *common_configuration;
common_configuration = CALLOC(1,sizeof(gNB_RrcConfigurationReq));
//Fill servingcellconfigcommon config value
rrc_config_servingcellconfigcommon(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id
#if defined(ENABLE_ITTI)
,common_configuration
#endif
);
);
//Fill common config to structure
fill_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
ue_context_pP->ue_context.primaryCC_id,
#if defined(ENABLE_ITTI)
common_configuration,
......@@ -236,13 +270,13 @@ static void init_NR_SI(const protocol_ctxt_t* const ctxt_pP,
#endif
);
fill_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
CC_id,
#if defined(ENABLE_ITTI)
configuration,
#endif
1
);
do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id,
CC_id,
#if defined(ENABLE_ITTI)
configuration,
#endif
1
);
LOG_I(NR_RRC,"Done init_NR_SI\n");
......
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