Commit b8695319 authored by heshanyun's avatar heshanyun

merge measurement_parameters config source from branch feature_Malaysia

parent 304bf7b7
......@@ -39,7 +39,7 @@
#define X2AP_HANDOVER_CANCEL(mSGpTR) (mSGpTR)->ittiMsg.x2ap_handover_cancel
#define X2AP_MAX_NB_ENB_IP_ADDRESS 2
#define X2AP_MAX_NB_ENB_IP_ADDRESS 6
// eNB application layer -> X2AP messages
......
......@@ -305,6 +305,22 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
paramdef_t SRB1Params[] = SRB1PARAMS_DESC(srb1_params);
paramdef_t SLParams[] = CCPARAMS_SIDELINK_DESC(SLconfig);
uint8_t allowedMeasBandwidth = 0;
measurement_event_info_t event1_config;
measurement_event_info_t event2_config;
measurement_event_info_t event3_config;
measurement_event_info_t event4_config;
measurement_event_info_t event5_config;
measurement_event_info_t event6_config;
paramdef_t MEASParams[] = MEASPARAMS_DESC;
paramdef_t MEAS_ENVENT1_Params[] = MEAS_EVENT1_PARAMS_DESC;
paramdef_t MEAS_ENVENT2_Params[] = MEAS_EVENT2_PARAMS_DESC;
paramdef_t MEAS_ENVENT3_Params[] = MEAS_EVENT3_PARAMS_DESC;
paramdef_t MEAS_ENVENT4_Params[] = MEAS_EVENT4_PARAMS_DESC;
paramdef_t MEAS_ENVENT5_Params[] = MEAS_EVENT5_PARAMS_DESC;
paramdef_t MEAS_ENVENT6_Params[] = MEAS_EVENT6_PARAMS_DESC;
/* map parameter checking array instances to parameter definition array instances */
for (int I=0; I< ( sizeof(CCsParams)/ sizeof(paramdef_t) ) ; I++) {
CCsParams[I].chkPptr = &(config_check_CCparams[I]);
......@@ -1658,6 +1674,146 @@ int RCconfig_RRC(uint32_t i, eNB_RRC_INST *rrc, int macrlc_has_f1) {
if (SLconfig.sidelink_configured==1) fill_SL_configuration(msg_p,&SLconfig,i,j,RC.config_file_name);
else printf("No SL configuration skipping it\n");
} // !NODE_IS_DU(node_type)
char measpath[MAX_OPTNAME_SIZE*2 + 8];
sprintf(measpath,"%s.%s", enbpath, ENB_CONFIG_STRING_MEAS);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement info, measpath: %s \n \n", measpath);
int npar = config_get( MEASParams,sizeof(MEASParams)/sizeof(paramdef_t), measpath);
if (npar == sizeof(MEASParams)/sizeof(paramdef_t)) {
LOG_D(RRC, "allowedMeasBandwidth %d \n", allowedMeasBandwidth);
rrc->measurement.allowedMeasBandwidth = allowedMeasBandwidth;
}
char meas_event1_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event1_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT1);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event1 info, meas_event1_path: %s \n \n", meas_event1_path);
npar = config_get( MEAS_ENVENT1_Params,sizeof(MEAS_ENVENT1_Params)/sizeof(paramdef_t), meas_event1_path);
if (npar == sizeof(MEAS_ENVENT1_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_RSRP %d \n", event1_config.threshold_RSRP);
LOG_D(RRC, "maxReportCells %d \n", event1_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event1_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event1_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event1_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event1_config.timeToTrigger);
rrc->measurement.event1_config.threshold_RSRP = event1_config.threshold_RSRP;
rrc->measurement.event1_config.maxReportCells = event1_config.maxReportCells;
rrc->measurement.event1_config.reportInterval = event1_config.reportInterval;
rrc->measurement.event1_config.a3_Offset = event1_config.a3_Offset;
rrc->measurement.event1_config.hysteresis = event1_config.hysteresis;
rrc->measurement.event1_config.timeToTrigger = event1_config.timeToTrigger;
}
char meas_event2_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event2_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT2);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event2 info, meas_event2_path: %s \n \n", meas_event2_path);
npar = config_get( MEAS_ENVENT2_Params,sizeof(MEAS_ENVENT2_Params)/sizeof(paramdef_t), meas_event2_path);
if (npar == sizeof(MEAS_ENVENT2_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_RSRP %d \n", event2_config.threshold_RSRP);
LOG_D(RRC, "maxReportCells %d \n", event2_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event2_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event2_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event2_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event2_config.timeToTrigger);
rrc->measurement.event2_config.threshold_RSRP = event2_config.threshold_RSRP;
rrc->measurement.event2_config.maxReportCells = event2_config.maxReportCells;
rrc->measurement.event2_config.reportInterval = event2_config.reportInterval;
rrc->measurement.event2_config.a3_Offset = event2_config.a3_Offset;
rrc->measurement.event2_config.hysteresis = event2_config.hysteresis;
rrc->measurement.event2_config.timeToTrigger = event2_config.timeToTrigger;
}
char meas_event3_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event3_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT3);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event3 info, meas_event3_path: %s \n \n", meas_event3_path);
npar = config_get( MEAS_ENVENT3_Params,sizeof(MEAS_ENVENT3_Params)/sizeof(paramdef_t), meas_event3_path);
if (npar == sizeof(MEAS_ENVENT3_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_RSRP %d \n", event3_config.threshold_RSRP);
LOG_D(RRC, "maxReportCells %d \n", event3_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event3_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event3_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event3_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event3_config.timeToTrigger);
rrc->measurement.event3_config.threshold_RSRP = event3_config.threshold_RSRP;
rrc->measurement.event3_config.maxReportCells = event3_config.maxReportCells;
rrc->measurement.event3_config.reportInterval = event3_config.reportInterval;
rrc->measurement.event3_config.a3_Offset = event3_config.a3_Offset;
rrc->measurement.event3_config.hysteresis = event3_config.hysteresis;
rrc->measurement.event3_config.timeToTrigger = event3_config.timeToTrigger;
}
char meas_event4_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event4_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT4);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event4 info, meas_event4_path: %s \n \n", meas_event4_path);
npar = config_get( MEAS_ENVENT4_Params,sizeof(MEAS_ENVENT4_Params)/sizeof(paramdef_t), meas_event4_path);
if (npar == sizeof(MEAS_ENVENT4_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_select %s \n", event4_config.threshold_select);
LOG_D(RRC, "threshold_RSRP %d \n", event4_config.threshold_RSRP);
LOG_D(RRC, "threshold_RSRQ %d \n", event4_config.threshold_RSRQ);
LOG_D(RRC, "maxReportCells %d \n", event4_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event4_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event4_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event4_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event4_config.timeToTrigger);
rrc->measurement.event4_config.threshold_select = event4_config.threshold_select;
rrc->measurement.event4_config.threshold_RSRP = event4_config.threshold_RSRP;
rrc->measurement.event4_config.threshold_RSRP = event4_config.threshold_RSRQ;
rrc->measurement.event4_config.maxReportCells = event4_config.maxReportCells;
rrc->measurement.event4_config.reportInterval = event4_config.reportInterval;
rrc->measurement.event4_config.a3_Offset = event4_config.a3_Offset;
rrc->measurement.event4_config.hysteresis = event4_config.hysteresis;
rrc->measurement.event4_config.timeToTrigger = event4_config.timeToTrigger;
}
char meas_event5_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event5_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT5);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event5 info, meas_event5_path: %s \n \n", meas_event5_path);
npar = config_get( MEAS_ENVENT5_Params,sizeof(MEAS_ENVENT5_Params)/sizeof(paramdef_t), meas_event5_path);
if (npar == sizeof(MEAS_ENVENT5_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_RSRP %d \n", event5_config.threshold_RSRP);
LOG_D(RRC, "maxReportCells %d \n", event5_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event5_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event5_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event5_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event5_config.timeToTrigger);
rrc->measurement.event5_config.threshold_RSRP = event5_config.threshold_RSRP;
rrc->measurement.event5_config.maxReportCells = event5_config.maxReportCells;
rrc->measurement.event5_config.reportInterval = event5_config.reportInterval;
rrc->measurement.event5_config.a3_Offset = event5_config.a3_Offset;
rrc->measurement.event5_config.hysteresis = event5_config.hysteresis;
rrc->measurement.event5_config.timeToTrigger = event5_config.timeToTrigger;
}
char meas_event6_path[MAX_OPTNAME_SIZE*2 + 8];
sprintf(meas_event6_path,"%s.%s.%s", enbpath, ENB_CONFIG_STRING_MEAS, ENB_CONFIG_STRING_MEAS_EVENT6);
LOG_D(RRC, "enb_config::RCconfig_RRC() measurement event6 info, meas_event6_path: %s \n \n", meas_event6_path);
npar = config_get( MEAS_ENVENT6_Params,sizeof(MEAS_ENVENT6_Params)/sizeof(paramdef_t), meas_event6_path);
if (npar == sizeof(MEAS_ENVENT6_Params)/sizeof(paramdef_t)) {
LOG_D(RRC, "threshold_RSRP %d \n", event6_config.threshold_RSRP);
LOG_D(RRC, "maxReportCells %d \n", event6_config.maxReportCells);
LOG_D(RRC, "reportInterval %d \n", event6_config.reportInterval);
LOG_D(RRC, "a3_Offset %d \n", event6_config.a3_Offset);
LOG_D(RRC, "hysteresis %d \n", event6_config.hysteresis);
LOG_D(RRC, "timeToTrigger %d \n", event6_config.timeToTrigger);
rrc->measurement.event6_config.threshold_RSRP = event6_config.threshold_RSRP;
rrc->measurement.event6_config.maxReportCells = event6_config.maxReportCells;
rrc->measurement.event6_config.reportInterval = event6_config.reportInterval;
rrc->measurement.event6_config.a3_Offset = event6_config.a3_Offset;
rrc->measurement.event6_config.hysteresis = event6_config.hysteresis;
rrc->measurement.event6_config.timeToTrigger = event6_config.timeToTrigger;
}
}
if (!NODE_IS_DU(rrc->node_type)) {
......
......@@ -867,6 +867,130 @@ typedef struct srb1_params_s {
{ENB_CONFIG_STRING_SRB1_MAX_RETX_THRESHOLD, NULL, 0, iptr:&srb1_params.srb1_max_retx_threshold, defintval:4, TYPE_UINT, 0} \
}
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement configuration parameters section name */
#define ENB_CONFIG_STRING_MEAS "measurement_parameters"
/* measurement configuration parameters names */
#define ENB_CONFIG_STRING_MEAS_ALLOWEDMEASBANDWIDTH "allowedMeasBandwidth"
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEASPARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_ALLOWEDMEASBANDWIDTH, NULL, 0, u8ptr:&allowedMeasBandwidth, defintval:2, TYPE_UINT8, 0}, \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event configuration parameters section name */
#define ENB_CONFIG_STRING_MEAS_EVENT1 "event1_config"
#define ENB_CONFIG_STRING_MEAS_EVENT2 "event2_config"
#define ENB_CONFIG_STRING_MEAS_EVENT3 "event3_config"
#define ENB_CONFIG_STRING_MEAS_EVENT4 "event4_config"
#define ENB_CONFIG_STRING_MEAS_EVENT5 "event5_config"
#define ENB_CONFIG_STRING_MEAS_EVENT6 "event6_config"
/* measurement event configuration parameters names */
#define ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_SELECT "threshold_select"
#define ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP "threshold_RSRP"
#define ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRQ "threshold_RSRQ"
#define ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS "maxReportCells"
#define ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL "reportInterval"
#define ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET "a3_Offset"
#define ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS "hysteresis"
#define ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER "timeToTrigger"
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event1 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT1_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event1_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event1_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event1_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event1_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event1_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event1_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event2 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT2_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event2_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event2_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event2_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event2_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event2_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event2_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event3 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT3_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event3_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event3_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event3_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event3_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event3_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event3_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event4 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT4_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_SELECT, NULL, 0, strptr:&event4_config.threshold_select, defstrval:"RSRP", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event4_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRQ, NULL, 0, u8ptr:&event4_config.threshold_RSRQ, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event4_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event4_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event4_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event4_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event4_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event5 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT5_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event5_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event5_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event5_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event5_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event5_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event5_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* measurement event6 configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define MEAS_EVENT6_PARAMS_DESC { \
{ENB_CONFIG_STRING_MEAS_EVENT_THRESHOLD_RSRP, NULL, 0, u8ptr:&event6_config.threshold_RSRP, defintval:10, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_MAXREPORTCELLS, NULL, 0, u8ptr:&event6_config.maxReportCells, defintval:2, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_REPORTINTERVAL, NULL, 0, u8ptr:&event6_config.reportInterval, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_A3_OFFSET, NULL, 0, u8ptr:&event6_config.a3_Offset, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_HYSTERESIS, NULL, 0, u8ptr:&event6_config.hysteresis, defintval:0, TYPE_UINT8, 0}, \
{ENB_CONFIG_STRING_MEAS_EVENT_TIMETOTRIGGER, NULL, 0, u8ptr:&event6_config.timeToTrigger, defintval:1, TYPE_UINT8, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/
/* MME configuration parameters section name */
#define ENB_CONFIG_STRING_MME_IP_ADDRESS "mme_ip_address"
......
......@@ -816,6 +816,26 @@ typedef struct {
uint32_t sizeof_paging[MAX_MOBILES_PER_ENB];
} rrc_eNB_carrier_data_t;
typedef struct measurement_event_info_s{
char *threshold_select;
uint8_t threshold_RSRP;
uint8_t threshold_RSRQ;
uint8_t maxReportCells;
uint8_t reportInterval;
uint8_t a3_Offset;
uint8_t hysteresis;
uint8_t timeToTrigger;
}measurement_event_info_t;
typedef struct rrc_eNB_measurement_data_s{
uint8_t allowedMeasBandwidth;
measurement_event_info_t event1_config;
measurement_event_info_t event2_config;
measurement_event_info_t event3_config;
measurement_event_info_t event4_config;
measurement_event_info_t event5_config;
measurement_event_info_t event6_config;
}rrc_eNB_measurement_data_t;
typedef struct eNB_RRC_INST_s {
/// southbound midhaul configuration
......@@ -868,7 +888,7 @@ typedef struct eNB_RRC_INST_s {
pthread_mutex_t cell_info_mutex;
uint16_t sctp_in_streams;
uint16_t sctp_out_streams;
rrc_eNB_measurement_data_t measurement;
} eNB_RRC_INST;
#define MAX_UE_CAPABILITY_SIZE 255
......
......@@ -1608,6 +1608,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
T(T_ENB_RRC_CONNECTION_REESTABLISHMENT_COMPLETE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
rrc_eNB_measurement_data_t *meas_data = &RC.rrc[ctxt_pP->module_id]->measurement;
LTE_DRB_ToAddModList_t *DRB_configList = ue_context_pP->ue_context.DRB_configList;
LTE_SRB_ToAddModList_t *SRB_configList = ue_context_pP->ue_context.SRB_configList;
LTE_SRB_ToAddModList_t **SRB_configList2 = NULL;
......@@ -1830,9 +1831,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
memset((void *)MeasObj, 0, sizeof(*MeasObj));
MeasObj->measObjectId = 1;
MeasObj->measObject.present = LTE_MeasObjectToAddMod__measObject_PR_measObjectEUTRA;
MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 3350; //band 7, 2.68GHz
//MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = 36090; //band 33, 1.909GHz
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = LTE_AllowedMeasBandwidth_mbw25;
MeasObj->measObject.choice.measObjectEUTRA.carrierFreq = (LTE_ARFCN_ValueEUTRA_t)to_earfcn_DL(RC.rrc[ctxt_pP->module_id]->carrier[0].eutra_band, RC.rrc[ctxt_pP->module_id]->carrier[0].dl_CarrierFreq, RC.rrc[ctxt_pP->module_id]->carrier[0].N_RB_DL);
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = meas_data->allowedMeasBandwidth;
MeasObj->measObject.choice.measObjectEUTRA.presenceAntennaPort1 = 1;
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf = CALLOC(1, sizeof(uint8_t));
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf[0] = 0;
......@@ -1870,8 +1870,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
LTE_ReportConfigEUTRA__triggerType__periodical__purpose_reportStrongestCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event1_config.maxReportCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event1_config.reportInterval;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
ReportConfig_A1->reportConfigId = 2;
......@@ -1883,15 +1883,14 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.choice.threshold_RSRP = 10;
a1_Threshold.choice.threshold_RSRP = meas_data->event2_config.threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event2_config.maxReportCells;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event2_config.reportInterval;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
if (RC.rrc[ctxt_pP->module_id]->HO_flag == 1 /*HO_MEASUREMENT */ ) {
LOG_I(RRC, "[eNB %d] frame %d: requesting A2, A3, A4, A5, and A6 event reporting\n",
ctxt_pP->module_id, ctxt_pP->frame);
ReportConfig_A2->reportConfigId = 3;
......@@ -1903,12 +1902,12 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.choice.threshold_RSRP = 10;
eventA2.a2_Threshold.choice.threshold_RSRP = meas_data->event3_config.threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event3_config.maxReportCells;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event3_config.reportInterval;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
ReportConfig_A3->reportConfigId = 4;
......@@ -1917,18 +1916,18 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
LTE_ReportConfigEUTRA__triggerType_PR_event;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present =
LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = 1; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = meas_data->event4_config.a3_Offset; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA3.reportOnLeave = 1;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
strcasecmp(meas_data->event4_config.threshold_select, "RSRP") == 0? LTE_ReportConfigEUTRA__triggerQuantity_rsrp:LTE_ReportConfigEUTRA__triggerQuantity_rsrq;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event4_config.maxReportCells;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event4_config.reportInterval;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = 0.5; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = meas_data->event4_config.hysteresis; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger =
LTE_TimeToTrigger_ms40;
meas_data->event4_config.timeToTrigger;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
ReportConfig_A4->reportConfigId = 5;
ReportConfig_A4->reportConfig.present = LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
......@@ -1939,12 +1938,12 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.choice.threshold_RSRP = 10;
eventA4.a4_Threshold.choice.threshold_RSRP = meas_data->event5_config.threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event5_config.maxReportCells;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event5_config.reportInterval;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
ReportConfig_A5->reportConfigId = 6;
......@@ -1958,14 +1957,14 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
eventA5.a5_Threshold1.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
eventA5.a5_Threshold2.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event6_config.maxReportCells;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event6_config.reportInterval;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
......@@ -1999,6 +1998,7 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
CALLOC(1, sizeof(*(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ)));
*quantityConfig->quantityConfigEUTRA->filterCoefficientRSRP = LTE_FilterCoefficient_fc4;
*quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ = LTE_FilterCoefficient_fc4;
#if 0
LOG_I(RRC,
"[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure\n",
ctxt_pP->module_id, ctxt_pP->frame);
......@@ -2020,7 +2020,8 @@ rrc_eNB_process_RRCConnectionReestablishmentComplete(
(void *)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(LTE_PhysicalConfigDedicated_t));
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.sps_Config = NULL;
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
}
#endif
//}
#ifdef CBA
//struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola;
......@@ -2968,8 +2969,9 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
uint16_t size;
int i;
/* Configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE */
// configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE
eNB_RRC_INST *rrc_inst = RC.rrc[ctxt_pP->module_id];
rrc_eNB_measurement_data_t *meas_data = &RC.rrc[ctxt_pP->module_id]->measurement;
struct LTE_PhysicalConfigDedicated **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
struct LTE_SRB_ToAddMod *SRB2_config = NULL;
struct LTE_SRB_ToAddMod__rlc_Config *SRB2_rlc_config = NULL;
......@@ -3375,7 +3377,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
to_earfcn_DL(RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0],
RC.rrc[ctxt_pP->module_id]->configuration.downlink_frequency[0],
RC.rrc[ctxt_pP->module_id]->configuration.N_RB_DL[0]);
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = LTE_AllowedMeasBandwidth_mbw25;
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = meas_data->allowedMeasBandwidth;
MeasObj->measObject.choice.measObjectEUTRA.presenceAntennaPort1 = 1;
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf = CALLOC(1, sizeof(uint8_t));
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf[0] = 0;
......@@ -3430,8 +3432,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
LTE_ReportConfigEUTRA__triggerType__periodical__purpose_reportStrongestCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event1_config.maxReportCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event1_config.reportInterval;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
ReportConfig_A1->reportConfigId = 2;
......@@ -3443,11 +3445,11 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.choice.threshold_RSRP = 10;
a1_Threshold.choice.threshold_RSRP = meas_data->event2_config.threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event2_config.maxReportCells;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event2_config.reportInterval;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
//if (ho_state == 1 /*HO_MEASURMENT */ ) {
......@@ -3462,12 +3464,12 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.choice.threshold_RSRP = 10;
eventA2.a2_Threshold.choice.threshold_RSRP = meas_data->event3_config.threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event3_config.maxReportCells;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event3_config.reportInterval;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
ReportConfig_A3->reportConfigId = 4;
......@@ -3476,18 +3478,18 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
LTE_ReportConfigEUTRA__triggerType_PR_event;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present =
LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = 0; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = meas_data->event4_config.a3_Offset; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA3.reportOnLeave = 1;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
strcasecmp(meas_data->event4_config.threshold_select, "RSRP") == 0? LTE_ReportConfigEUTRA__triggerQuantity_rsrp:LTE_ReportConfigEUTRA__triggerQuantity_rsrq;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event4_config.maxReportCells;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event4_config.reportInterval;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = 0; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = meas_data->event4_config.hysteresis; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger =
LTE_TimeToTrigger_ms40;
meas_data->event4_config.timeToTrigger;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
ReportConfig_A4->reportConfigId = 5;
ReportConfig_A4->reportConfig.present = LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
......@@ -3498,12 +3500,12 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.choice.threshold_RSRP = 10;
eventA4.a4_Threshold.choice.threshold_RSRP = meas_data->event5_config.threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event5_config.maxReportCells;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event5_config.reportInterval;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
ReportConfig_A5->reportConfigId = 6;
......@@ -3517,14 +3519,14 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
eventA5.a5_Threshold1.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
eventA5.a5_Threshold2.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event6_config.maxReportCells;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event6_config.reportInterval;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
// LTE_RRCConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
......@@ -5286,6 +5288,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
uint8_t rv[2];
// configure SRB1/SRB2, PhysicalConfigDedicated, MAC_MainConfig for UE
eNB_RRC_INST *rrc_inst = RC.rrc[ctxt_pP->module_id];
rrc_eNB_measurement_data_t *meas_data = &RC.rrc[ctxt_pP->module_id]->measurement;
struct LTE_PhysicalConfigDedicated **physicalConfigDedicated = &ue_context_pP->ue_context.physicalConfigDedicated;
// phy config dedicated
LTE_PhysicalConfigDedicated_t *physicalConfigDedicated2;
......@@ -5942,7 +5945,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
to_earfcn_DL(RC.rrc[ctxt_pP->module_id]->configuration.eutra_band[0],
RC.rrc[ctxt_pP->module_id]->configuration.downlink_frequency[0],
RC.rrc[ctxt_pP->module_id]->configuration.N_RB_DL[0]);
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = LTE_AllowedMeasBandwidth_mbw25;
MeasObj->measObject.choice.measObjectEUTRA.allowedMeasBandwidth = meas_data->allowedMeasBandwidth;
MeasObj->measObject.choice.measObjectEUTRA.presenceAntennaPort1 = 1;
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf = CALLOC(1, sizeof(uint8_t));
MeasObj->measObject.choice.measObjectEUTRA.neighCellConfig.buf[0] = 0;
......@@ -5997,8 +6000,8 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
LTE_ReportConfigEUTRA__triggerType__periodical__purpose_reportStrongestCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event1_config.maxReportCells;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event1_config.reportInterval;
ReportConfig_per->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_per);
ReportConfig_A1->reportConfigId = 2;
......@@ -6010,11 +6013,11 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA1.
a1_Threshold.choice.threshold_RSRP = 10;
a1_Threshold.choice.threshold_RSRP = meas_data->event2_config.threshold_RSRP;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.triggerQuantity = LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event2_config.maxReportCells;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event2_config.reportInterval;
ReportConfig_A1->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A1);
// if (ho_state == 1 /*HO_MEASUREMENT */ ) {
......@@ -6029,12 +6032,12 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA2.a2_Threshold.choice.threshold_RSRP = 10;
eventA2.a2_Threshold.choice.threshold_RSRP = meas_data->event3_config.threshold_RSRP;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event3_config.maxReportCells;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event3_config.reportInterval;
ReportConfig_A2->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A2);
ReportConfig_A3->reportConfigId = 4;
......@@ -6043,18 +6046,18 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
LTE_ReportConfigEUTRA__triggerType_PR_event;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.present =
LTE_ReportConfigEUTRA__triggerType__event__eventId_PR_eventA3;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = 0; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.eventA3.a3_Offset = meas_data->event4_config.a3_Offset; //10;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA3.reportOnLeave = 1;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
strcasecmp(meas_data->event4_config.threshold_select, "RSRP") == 0? LTE_ReportConfigEUTRA__triggerQuantity_rsrp:LTE_ReportConfigEUTRA__triggerQuantity_rsrq;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event4_config.maxReportCells;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event4_config.reportInterval;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = 0; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.hysteresis = meas_data->event4_config.hysteresis; // FIXME ...hysteresis is of type long!
ReportConfig_A3->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.timeToTrigger =
LTE_TimeToTrigger_ms40;
meas_data->event4_config.timeToTrigger;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A3);
ReportConfig_A4->reportConfigId = 5;
ReportConfig_A4->reportConfig.present = LTE_ReportConfigToAddMod__reportConfig_PR_reportConfigEUTRA;
......@@ -6065,12 +6068,12 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA4.a4_Threshold.choice.threshold_RSRP = 10;
eventA4.a4_Threshold.choice.threshold_RSRP = meas_data->event5_config.threshold_RSRP;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event5_config.maxReportCells;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event5_config.reportInterval;
ReportConfig_A4->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A4);
ReportConfig_A5->reportConfigId = 6;
......@@ -6084,14 +6087,14 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.present = LTE_ThresholdEUTRA_PR_threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold1.choice.threshold_RSRP = 10;
eventA5.a5_Threshold1.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerType.choice.event.eventId.choice.
eventA5.a5_Threshold2.choice.threshold_RSRP = 10;
eventA5.a5_Threshold2.choice.threshold_RSRP = meas_data->event6_config.threshold_RSRP;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.triggerQuantity =
LTE_ReportConfigEUTRA__triggerQuantity_rsrp;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportQuantity = LTE_ReportConfigEUTRA__reportQuantity_both;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = 2;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = LTE_ReportInterval_ms120;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.maxReportCells = meas_data->event6_config.maxReportCells;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportInterval = meas_data->event6_config.reportInterval;
ReportConfig_A5->reportConfig.choice.reportConfigEUTRA.reportAmount = LTE_ReportConfigEUTRA__reportAmount_infinity;
ASN_SEQUENCE_ADD(&ReportConfig_list->list, ReportConfig_A5);
// rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
......
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