From 7817358197a9e93791c407cb2cde0f93ed676e71 Mon Sep 17 00:00:00 2001 From: Louis Adrien Dufrene Date: Fri, 5 Apr 2019 11:56:29 +0200 Subject: [PATCH] Cleanup of enb_config.c config.c asn1_msg.c asn1_msg.h --- openair2/ENB_APP/enb_config.c | 2 +- openair2/LAYER2/MAC/config.c | 4 ++-- openair2/RRC/LTE/MESSAGES/asn1_msg.c | 16 ++++++++++++++-- openair2/RRC/LTE/MESSAGES/asn1_msg.h | 4 ++-- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index f8f8d1bd76..45cb590893 100644 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -1189,7 +1189,7 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) { RRC_CONFIGURATION_REQ (msg_p).radioresourceconfig[j].drx_Config_present = LTE_DRX_Config_PR_setup; } else { AssertFatal (0, - "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for drx_Config_present choice: prNothing,prRelease,prSetup !\n", + "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for drx_Config_present choice: prNothing, prRelease, prSetup!\n", RC.config_file_name, i, ccparams_lte.drx_Config_present); } diff --git a/openair2/LAYER2/MAC/config.c b/openair2/LAYER2/MAC/config.c index 00a4e44ff6..e7373ff843 100644 --- a/openair2/LAYER2/MAC/config.c +++ b/openair2/LAYER2/MAC/config.c @@ -1058,9 +1058,9 @@ void eNB_Config_Local_DRX( return; } - /* Modify scheduling control structure according to DRX configuration */ + /* Modify scheduling control structure according to DRX configuration: doesn't support every configurations! */ UE_scheduling_control->cdrx_configured = TRUE; - UE_scheduling_control->bypass_cdrx = TRUE; + UE_scheduling_control->bypass_cdrx = TRUE; // set to true first, waiting for the UE to configure CDRX on its side UE_scheduling_control->in_active_time = FALSE; UE_scheduling_control->on_duration_timer = 0; diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index 278ea40fed..0dea3c5e2c 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -317,13 +317,22 @@ uint8_t do_MIB_SL(const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_index, return((enc_rval.encoded+7)/8); } - -LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *configuration, LTE_UE_EUTRA_Capability_t *UEcap) +//----------------------------------------------------------------------------- +/* + * Generate the configuration structure for CDRX feature + */ +LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, + int CC_id, + RrcConfigurationReq *configuration, + LTE_UE_EUTRA_Capability_t *UEcap) +//----------------------------------------------------------------------------- { LTE_DRX_Config_t *drxConfig = NULL; BIT_STRING_t *featureGroupIndicators = NULL; bool ueSupportCdrxShortFlag = false; bool ueSupportCdrxLongFlag = false; + + /* Check the UE capabilities for short and long CDRX cycles support */ if (UEcap) { featureGroupIndicators = UEcap->featureGroupIndicators; if (featureGroupIndicators) { @@ -339,6 +348,7 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *c if (drxConfig == NULL) return NULL; memset(drxConfig, 0, sizeof(LTE_DRX_Config_t)); + /* Long DRX cycle support is mandatory for CDRX activation */ if (!ueSupportCdrxLongFlag || configuration == NULL) { drxConfig->present = LTE_DRX_Config_PR_release; } else { @@ -405,6 +415,8 @@ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *c default: break; } + + /* Short DRX cycle configuration */ if (!ueSupportCdrxShortFlag || configuration->radioresourceconfig[CC_id].drx_shortDrx_ShortCycleTimer == 0) { drxConfig->choice.setup.shortDRX = NULL; } else { diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.h b/openair2/RRC/LTE/MESSAGES/asn1_msg.h index 331a3ca312..6e3fa6dd60 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.h +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.h @@ -71,12 +71,12 @@ uint8_t do_MIB(rrc_eNB_carrier_data_t *carrier, uint32_t N_RB_DL, uint32_t phich ); /** -\brief Generate configuration for DRX_Config +\brief Generate configuration structure for DRX_Config @param Mod_id Instance of eNB @param CC_id Id of component to configure @param configuration Pointer Configuration Request structure @param UEcap Pointer Configuration UE capablities -@return DRX_Config structure pointer or NULL => error*/ +@return DRX_Config structure pointer or NULL => error */ LTE_DRX_Config_t *do_DrxConfig(uint8_t Mod_id, int CC_id, RrcConfigurationReq *configuration, LTE_UE_EUTRA_Capability_t *UEcap); /**