git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5733 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
+181
-93
@@ -296,8 +296,8 @@ static void init_SI(
|
|||||||
eNB_rrc_inst[enb_mod_idP].sib2->radioResourceConfigCommon,
|
eNB_rrc_inst[enb_mod_idP].sib2->radioResourceConfigCommon,
|
||||||
(struct PhysicalConfigDedicated *)NULL,
|
(struct PhysicalConfigDedicated *)NULL,
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
(MAC_MainConfig_t *) NULL, 0,
|
(MAC_MainConfig_t *) NULL, 0,
|
||||||
@@ -383,8 +383,8 @@ static void init_MCCH(
|
|||||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
(struct PhysicalConfigDedicated *)NULL,
|
(struct PhysicalConfigDedicated *)NULL,
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
(MAC_MainConfig_t *) NULL,
|
(MAC_MainConfig_t *) NULL,
|
||||||
@@ -484,9 +484,9 @@ static module_id_t rrc_eNB_get_UE_index(
|
|||||||
|
|
||||||
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
||||||
if (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == UE_identity) {
|
if (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == UE_identity) {
|
||||||
// UE_identity already registered
|
// UE_identity already registered
|
||||||
reg = TRUE;
|
reg = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,12 +510,12 @@ static module_id_t rrc_eNB_get_next_free_UE_index(
|
|||||||
|
|
||||||
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
for (i = 0; i < NUMBER_OF_UE_MAX; i++) {
|
||||||
if ((first_index == UE_MODULE_INVALID) && (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == 0)) {
|
if ((first_index == UE_MODULE_INVALID) && (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == 0)) {
|
||||||
first_index = i; // save first free position
|
first_index = i; // save first free position
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == UE_identity) {
|
if (eNB_rrc_inst[enb_mod_idP].Info.UE_list[i] == UE_identity) {
|
||||||
// UE_identity already registered
|
// UE_identity already registered
|
||||||
reg = TRUE;
|
reg = TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -571,7 +571,7 @@ void rrc_eNB_generate_SecurityModeCommand(
|
|||||||
uint8_t size;
|
uint8_t size;
|
||||||
|
|
||||||
size = do_SecurityModeCommand(enb_mod_idP, buffer, ue_mod_idP, rrc_eNB_get_next_transaction_identifier(enb_mod_idP),
|
size = do_SecurityModeCommand(enb_mod_idP, buffer, ue_mod_idP, rrc_eNB_get_next_transaction_identifier(enb_mod_idP),
|
||||||
eNB_rrc_inst[enb_mod_idP].ciphering_algorithm[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].ciphering_algorithm[ue_mod_idP],
|
||||||
eNB_rrc_inst[enb_mod_idP].integrity_algorithm[ue_mod_idP]);
|
eNB_rrc_inst[enb_mod_idP].integrity_algorithm[ue_mod_idP]);
|
||||||
|
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
@@ -663,6 +663,8 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration(
|
|||||||
MeasIdToAddMod_t *MeasId0, *MeasId1, *MeasId2, *MeasId3, *MeasId4, *MeasId5;
|
MeasIdToAddMod_t *MeasId0, *MeasId1, *MeasId2, *MeasId3, *MeasId4, *MeasId5;
|
||||||
#if Rel10
|
#if Rel10
|
||||||
long *sr_ProhibitTimer_r9 = NULL;
|
long *sr_ProhibitTimer_r9 = NULL;
|
||||||
|
// uint8_t sCellIndexToAdd = rrc_find_free_SCell_index(enb_mod_idP, ue_mod_idP, 1);
|
||||||
|
uint8_t sCellIndexToAdd = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
long *logicalchannelgroup, *logicalchannelgroup_drb;
|
long *logicalchannelgroup, *logicalchannelgroup_drb;
|
||||||
@@ -1118,7 +1120,7 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration(
|
|||||||
for (i = 0; i < UE_info->nb_of_e_rabs; i++) {
|
for (i = 0; i < UE_info->nb_of_e_rabs; i++) {
|
||||||
if (UE_info->e_rab[i].param.nas_pdu.buffer != NULL) {
|
if (UE_info->e_rab[i].param.nas_pdu.buffer != NULL) {
|
||||||
dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
|
dedicatedInfoNas = CALLOC(1, sizeof(DedicatedInfoNAS_t));
|
||||||
memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
|
memset(dedicatedInfoNas, 0, sizeof(OCTET_STRING_t));
|
||||||
OCTET_STRING_fromBuf(dedicatedInfoNas, (char *)UE_info->e_rab[i].param.nas_pdu.buffer,
|
OCTET_STRING_fromBuf(dedicatedInfoNas, (char *)UE_info->e_rab[i].param.nas_pdu.buffer,
|
||||||
UE_info->e_rab[i].param.nas_pdu.length);
|
UE_info->e_rab[i].param.nas_pdu.length);
|
||||||
ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
|
ASN_SEQUENCE_ADD(&dedicatedInfoNASList->list, dedicatedInfoNas);
|
||||||
@@ -1144,13 +1146,19 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration(
|
|||||||
memset(buffer, 0, RRC_BUF_SIZE);
|
memset(buffer, 0, RRC_BUF_SIZE);
|
||||||
|
|
||||||
size = do_RRCConnectionReconfiguration(enb_mod_idP, buffer, ue_mod_idP, rrc_eNB_get_next_transaction_identifier(enb_mod_idP), //Transaction_id,
|
size = do_RRCConnectionReconfiguration(enb_mod_idP, buffer, ue_mod_idP, rrc_eNB_get_next_transaction_identifier(enb_mod_idP), //Transaction_id,
|
||||||
NULL, /// NN: do not reconfig srb1: SRB_configList2,
|
NULL, /// NN: do not reconfig srb1: SRB_configList2,
|
||||||
*DRB_configList, NULL, // DRB2_list,
|
*DRB_configList, NULL, // DRB2_list,
|
||||||
NULL, // *sps_Config,
|
NULL, // *sps_Config,
|
||||||
#ifdef EXMIMO_IOT
|
#ifdef EXMIMO_IOT
|
||||||
NULL, NULL, NULL, NULL,NULL,
|
NULL, NULL, NULL, NULL,NULL,
|
||||||
#else
|
#else
|
||||||
physicalConfigDedicated[ue_mod_idP], MeasObj_list, ReportConfig_list, quantityConfig, MeasId_list,
|
physicalConfigDedicated[ue_mod_idP],
|
||||||
|
|
||||||
|
#ifdef Rel10
|
||||||
|
eNB_rrc_inst[enb_mod_idP].sCell_config[ue_mod_idP][sCellIndexToAdd],
|
||||||
|
#endif
|
||||||
|
|
||||||
|
MeasObj_list, ReportConfig_list, quantityConfig, MeasId_list,
|
||||||
#endif
|
#endif
|
||||||
mac_MainConfig, NULL, NULL, Sparams, rsrp, cba_RNTI, dedicatedInfoNASList);
|
mac_MainConfig, NULL, NULL, Sparams, rsrp, cba_RNTI, dedicatedInfoNASList);
|
||||||
|
|
||||||
@@ -1184,6 +1192,61 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration(
|
|||||||
pdcp_rrc_data_req(enb_mod_idP, ue_mod_idP, frameP, 1, DCCH, rrc_eNB_mui++, 0, size, buffer, 1);
|
pdcp_rrc_data_req(enb_mod_idP, ue_mod_idP, frameP, 1, DCCH, rrc_eNB_mui++, 0, size, buffer, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int rrc_eNB_generate_RRCConnectionReconfiguration_SCell(module_id_t enb_mod_idP, module_id_t ue_mod_idP, frame_t frame, uint32_t dl_CarrierFreq_r10) {
|
||||||
|
|
||||||
|
uint8_t size;
|
||||||
|
uint8_t buffer[100];
|
||||||
|
uint8_t sCellIndexToAdd = 0; //one SCell so far
|
||||||
|
// uint8_t sCellIndexToAdd;
|
||||||
|
// sCellIndexToAdd = rrc_find_free_SCell_index(enb_mod_idP, ue_mod_idP, 1);
|
||||||
|
|
||||||
|
if (eNB_rrc_inst[enb_mod_idP].sCell_config[ue_mod_idP][sCellIndexToAdd]) {
|
||||||
|
eNB_rrc_inst[enb_mod_idP].sCell_config[ue_mod_idP][sCellIndexToAdd]->cellIdentification_r10->dl_CarrierFreq_r10 = dl_CarrierFreq_r10;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LOG_E(RRC,"Scell not configured!\n");
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
size = do_RRCConnectionReconfiguration(enb_mod_idP,
|
||||||
|
buffer,
|
||||||
|
ue_mod_idP,
|
||||||
|
/*0*/rrc_eNB_get_next_transaction_identifier(enb_mod_idP),//Transaction_id,
|
||||||
|
(SRB_ToAddModList_t*)NULL,
|
||||||
|
(DRB_ToAddModList_t*)NULL,
|
||||||
|
(DRB_ToReleaseList_t*)NULL,
|
||||||
|
(struct SPS_Config*)NULL,
|
||||||
|
(struct PhysicalConfigDedicated*)NULL,
|
||||||
|
#ifdef Rel10
|
||||||
|
eNB_rrc_inst[enb_mod_idP].sCell_config[ue_mod_idP][sCellIndexToAdd],
|
||||||
|
#endif
|
||||||
|
(MeasObjectToAddModList_t*)NULL,
|
||||||
|
(ReportConfigToAddModList_t*)NULL,
|
||||||
|
(QuantityConfig_t*)NULL,
|
||||||
|
(MeasIdToAddModList_t*)NULL,
|
||||||
|
(MAC_MainConfig_t*)NULL,
|
||||||
|
(MeasGapConfig_t*)NULL,
|
||||||
|
(MobilityControlInfo_t*)NULL,
|
||||||
|
(struct MeasConfig__speedStatePars*)NULL,
|
||||||
|
(RSRP_Range_t*)NULL,
|
||||||
|
(C_RNTI_t*)NULL,
|
||||||
|
(struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList*)NULL);
|
||||||
|
|
||||||
|
LOG_I(RRC,"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration (bytes %d, UE id %d)\n",
|
||||||
|
enb_mod_idP,frame, size, ue_mod_idP);
|
||||||
|
|
||||||
|
LOG_D(RRC, "[MSC_MSG][FRAME %05d][RRC_eNB][MOD %02d][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration to UE %d MUI %d) --->][PDCP][MOD %02d][RB %02d]\n",
|
||||||
|
frame, enb_mod_idP, size, ue_mod_idP, rrc_eNB_mui, enb_mod_idP, /*(ue_mod_idP*MAX_NUM_RB)+*/DCCH);
|
||||||
|
//rrc_rlc_data_req(Mod_id,frame, 1,(UE_index*MAX_NUM_RB)+DCCH,rrc_eNB_mui++,0,size,(char*)buffer);
|
||||||
|
// pdcp_data_req(enb_mod_idP, ue_mod_idP, frame, 1, /*(UE_index * MAX_NUM_RB) + */DCCH, rrc_eNB_mui++, 0, size, (char*)buffer, 1);
|
||||||
|
pdcp_rrc_data_req(enb_mod_idP, ue_mod_idP, frame, 1, DCCH, rrc_eNB_mui++, 0, size, buffer, 1);
|
||||||
|
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
void rrc_eNB_process_MeasurementReport(
|
void rrc_eNB_process_MeasurementReport(
|
||||||
module_id_t enb_mod_idP,
|
module_id_t enb_mod_idP,
|
||||||
@@ -1212,7 +1275,7 @@ void rrc_eNB_process_MeasurementReport(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (eNB_rrc_inst[enb_mod_idP].handover_info[ue_mod_idP]->ho_prepare != 0xF0) {
|
if (eNB_rrc_inst[enb_mod_idP].handover_info[ue_mod_idP]->ho_prepare != 0xF0) {
|
||||||
rrc_eNB_generate_HandoverPreparationInformation(enb_mod_idP,
|
rrc_eNB_generate_HandoverPreparationInformation(enb_mod_idP,
|
||||||
frameP,
|
frameP,
|
||||||
ue_mod_idP,
|
ue_mod_idP,
|
||||||
measResults2->measResultNeighCells->choice.
|
measResults2->measResultNeighCells->choice.
|
||||||
@@ -1643,10 +1706,10 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
|||||||
rrc_mac_config_req(enb_mod_idP, ENB_FLAG_YES, ue_mod_idP, 0, (RadioResourceConfigCommonSIB_t *) NULL,
|
rrc_mac_config_req(enb_mod_idP, ENB_FLAG_YES, ue_mod_idP, 0, (RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP], 1, SRB1_logicalChannelConfig,
|
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP], 1, SRB1_logicalChannelConfig,
|
||||||
eNB_rrc_inst[enb_mod_idP].measGapConfig[ue_mod_idP], (TDD_Config_t *) NULL,
|
eNB_rrc_inst[enb_mod_idP].measGapConfig[ue_mod_idP], (TDD_Config_t *) NULL,
|
||||||
(MobilityControlInfo_t *) NULL, (uint8_t *) NULL, (uint16_t *) NULL, NULL, NULL, NULL,
|
(MobilityControlInfo_t *) NULL, (uint8_t *) NULL, (uint16_t *) NULL, NULL, NULL, NULL,
|
||||||
@@ -2141,12 +2204,29 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
|||||||
// rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
|
// rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.measConfig->reportConfigToAddModList = ReportConfig_list;
|
||||||
memset(buffer, 0, RRC_BUF_SIZE);
|
memset(buffer, 0, RRC_BUF_SIZE);
|
||||||
|
|
||||||
size = do_RRCConnectionReconfiguration(enb_mod_idP, buffer, ue_mod_idP, rrc_eNB_get_next_transaction_identifier(enb_mod_idP), //Transaction_id,
|
size = do_RRCConnectionReconfiguration(enb_mod_idP,
|
||||||
SRB_configList2, DRB_configList2, NULL, // DRB2_list,
|
buffer,
|
||||||
|
ue_mod_idP,
|
||||||
|
rrc_eNB_get_next_transaction_identifier(enb_mod_idP), //Transaction_id,
|
||||||
|
SRB_configList2,
|
||||||
|
DRB_configList2,
|
||||||
|
NULL, // DRB2_list,
|
||||||
NULL, //*sps_Config,
|
NULL, //*sps_Config,
|
||||||
physicalConfigDedicated[ue_mod_idP], MeasObj_list, ReportConfig_list, NULL, //quantityConfig,
|
physicalConfigDedicated[ue_mod_idP],
|
||||||
MeasId_list, mac_MainConfig, NULL, mobilityInfo, Sparams,
|
#ifdef Rel10
|
||||||
NULL, NULL, dedicatedInfoNASList);
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
|
#endif
|
||||||
|
MeasObj_list,
|
||||||
|
ReportConfig_list,
|
||||||
|
NULL, //quantityConfig,
|
||||||
|
MeasId_list,
|
||||||
|
mac_MainConfig,
|
||||||
|
NULL,
|
||||||
|
mobilityInfo,
|
||||||
|
Sparams,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
dedicatedInfoNASList);
|
||||||
|
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE id %d)\n",
|
"[eNB %d] Frame %d, Logical Channel DL-DCCH, Generate RRCConnectionReconfiguration for handover (bytes %d, UE id %d)\n",
|
||||||
@@ -2175,8 +2255,8 @@ void rrc_eNB_generate_RRCConnectionReconfiguration_handover(
|
|||||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
||||||
@@ -2299,7 +2379,7 @@ void rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
#endif
|
#endif
|
||||||
// Refresh SRBs/DRBs
|
// Refresh SRBs/DRBs
|
||||||
rrc_pdcp_config_asn1_req(enb_mod_idP, ue_mod_idP, frameP, ENB_FLAG_YES,
|
rrc_pdcp_config_asn1_req(enb_mod_idP, ue_mod_idP, frameP, ENB_FLAG_YES,
|
||||||
NULL, //LG-RK 14/05/2014 SRB_configList,
|
NULL, //LG-RK 14/05/2014 SRB_configList,
|
||||||
DRB_configList, (DRB_ToReleaseList_t *) NULL,
|
DRB_configList, (DRB_ToReleaseList_t *) NULL,
|
||||||
/*eNB_rrc_inst[enb_mod_idP].ciphering_algorithm[ue_mod_idP] |
|
/*eNB_rrc_inst[enb_mod_idP].ciphering_algorithm[ue_mod_idP] |
|
||||||
(eNB_rrc_inst[enb_mod_idP].integrity_algorithm[ue_mod_idP] << 4),
|
(eNB_rrc_inst[enb_mod_idP].integrity_algorithm[ue_mod_idP] << 4),
|
||||||
@@ -2399,8 +2479,8 @@ void rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
||||||
@@ -2441,8 +2521,8 @@ void rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
||||||
@@ -2524,8 +2604,8 @@ void rrc_eNB_generate_RRCConnectionSetup(
|
|||||||
(RadioResourceConfigCommonSIB_t *) NULL,
|
(RadioResourceConfigCommonSIB_t *) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].physicalConfigDedicated[ue_mod_idP],
|
||||||
#ifdef Rel10
|
#ifdef Rel10
|
||||||
(SCellToAddMod_r10_t *)NULL,
|
(SCellToAddMod_r10_t *)NULL,
|
||||||
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
//(struct PhysicalConfigDedicatedSCell_r10 *)NULL,
|
||||||
#endif
|
#endif
|
||||||
(MeasObjectToAddMod_t **) NULL,
|
(MeasObjectToAddMod_t **) NULL,
|
||||||
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
eNB_rrc_inst[enb_mod_idP].mac_MainConfig[ue_mod_idP],
|
||||||
@@ -2740,51 +2820,51 @@ int rrc_eNB_decode_ccch(
|
|||||||
|
|
||||||
case UL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentRequest:
|
case UL_CCCH_MessageType__c1_PR_rrcConnectionReestablishmentRequest:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection Reestablishement Request\n");
|
LOG_F(RRC,"[MSG] RRC Connection Reestablishement Request\n");
|
||||||
for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++)
|
for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_D(RRC,
|
LOG_D(RRC,
|
||||||
"[FRAME %05d][MAC_eNB][MOD %02d][][--- MAC_DATA_IND (rrcConnectionReestablishmentRequest on SRB0) -->][RRC_eNB][MOD %02d][]\n",
|
"[FRAME %05d][MAC_eNB][MOD %02d][][--- MAC_DATA_IND (rrcConnectionReestablishmentRequest on SRB0) -->][RRC_eNB][MOD %02d][]\n",
|
||||||
frameP, enb_mod_idP, enb_mod_idP);
|
frameP, enb_mod_idP, enb_mod_idP);
|
||||||
|
|
||||||
rrcConnectionReestablishmentRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
|
rrcConnectionReestablishmentRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionReestablishmentRequest.criticalExtensions.choice.rrcConnectionReestablishmentRequest_r8;
|
||||||
|
|
||||||
LOG_I(RRC, "[eNB %d] Frame %d UE %d: RRCConnectionReestablishmentRequest cause %s\n", enb_mod_idP,
|
LOG_I(RRC, "[eNB %d] Frame %d UE %d: RRCConnectionReestablishmentRequest cause %s\n", enb_mod_idP,
|
||||||
frameP,
|
frameP,
|
||||||
((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ? "Other Failure" :
|
((rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_otherFailure) ? "Other Failure" :
|
||||||
(rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" :
|
(rrcConnectionReestablishmentRequest->reestablishmentCause == ReestablishmentCause_handoverFailure) ? "Handover Failure" :
|
||||||
"reconfigurationFailure"));
|
"reconfigurationFailure"));
|
||||||
/*
|
/*
|
||||||
{
|
{
|
||||||
uint64_t c_rnti = 0;
|
uint64_t c_rnti = 0;
|
||||||
|
|
||||||
memcpy(((uint8_t *) & c_rnti) + 3, rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.buf,
|
memcpy(((uint8_t *) & c_rnti) + 3, rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.buf,
|
||||||
rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.size);
|
rrcConnectionReestablishmentRequest.UE_identity.c_RNTI.size);
|
||||||
ue_mod_id = rrc_eNB_get_UE_index(enb_mod_idP, c_rnti);
|
ue_mod_id = rrc_eNB_get_UE_index(enb_mod_idP, c_rnti);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((eNB_rrc_inst[enb_mod_idP].phyCellId == rrcConnectionReestablishmentRequest.UE_identity.physCellId) &&
|
if ((eNB_rrc_inst[enb_mod_idP].phyCellId == rrcConnectionReestablishmentRequest.UE_identity.physCellId) &&
|
||||||
(ue_mod_id != UE_INDEX_INVALID)){
|
(ue_mod_id != UE_INDEX_INVALID)){
|
||||||
rrc_eNB_generate_RRCConnectionReestablishement(enb_mod_idP, frameP, ue_mod_id);
|
rrc_eNB_generate_RRCConnectionReestablishement(enb_mod_idP, frameP, ue_mod_id);
|
||||||
}else {
|
}else {
|
||||||
rrc_eNB_generate_RRCConnectionReestablishementReject(enb_mod_idP, frameP, ue_mod_id);
|
rrc_eNB_generate_RRCConnectionReestablishementReject(enb_mod_idP, frameP, ue_mod_id);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
*/
|
*/
|
||||||
case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
|
case UL_CCCH_MessageType__c1_PR_rrcConnectionRequest:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection Request\n");
|
LOG_F(RRC,"[MSG] RRC Connection Request\n");
|
||||||
for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++)
|
for (i = 0; i < Srb_info->Rx_buffer.payload_size; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Srb_info->Rx_buffer.Payload)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_D(RRC,
|
LOG_D(RRC,
|
||||||
"[FRAME %05d][MAC_eNB][MOD %02d][][--- MAC_DATA_IND (rrcConnectionRequest on SRB0) -->][RRC_eNB][MOD %02d][]\n",
|
"[FRAME %05d][MAC_eNB][MOD %02d][][--- MAC_DATA_IND (rrcConnectionRequest on SRB0) -->][RRC_eNB][MOD %02d][]\n",
|
||||||
frameP, enb_mod_idP, enb_mod_idP);
|
frameP, enb_mod_idP, enb_mod_idP);
|
||||||
|
|
||||||
rrcConnectionRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionRequest.criticalExtensions.choice.rrcConnectionRequest_r8;
|
rrcConnectionRequest = &ul_ccch_msg->message.choice.c1.choice.rrcConnectionRequest.criticalExtensions.choice.rrcConnectionRequest_r8;
|
||||||
{
|
{
|
||||||
uint64_t random_value = 0;
|
uint64_t random_value = 0;
|
||||||
|
|
||||||
@@ -2988,15 +3068,15 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete:
|
case UL_DCCH_MessageType__c1_PR_rrcConnectionReconfigurationComplete:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
|
LOG_F(RRC,"[MSG] RRC Connection Reconfiguration Complete\n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_D(RRC,
|
LOG_D(RRC,
|
||||||
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
||||||
"(RRCConnectionReconfigurationComplete) --->][RRC_eNB][MOD %02d][]\n",
|
"(RRCConnectionReconfigurationComplete) --->][RRC_eNB][MOD %02d][]\n",
|
||||||
frameP, enb_mod_idP, DCCH, sdu_sizeP, enb_mod_idP);
|
frameP, enb_mod_idP, DCCH, sdu_sizeP, enb_mod_idP);
|
||||||
|
|
||||||
if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.
|
if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.
|
||||||
present ==
|
present ==
|
||||||
@@ -3021,12 +3101,12 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete:
|
case UL_DCCH_MessageType__c1_PR_rrcConnectionReestablishmentComplete:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
|
LOG_F(RRC,"[MSG] RRC Connection Reestablishment Complete\n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
||||||
"(rrcConnectionReestablishmentComplete) --->][RRC_eNB][MOD %02d][]\n",
|
"(rrcConnectionReestablishmentComplete) --->][RRC_eNB][MOD %02d][]\n",
|
||||||
frameP, enb_mod_idP, DCCH, sdu_sizeP, enb_mod_idP);
|
frameP, enb_mod_idP, DCCH, sdu_sizeP, enb_mod_idP);
|
||||||
@@ -3034,10 +3114,10 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete:
|
case UL_DCCH_MessageType__c1_PR_rrcConnectionSetupComplete:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
|
LOG_F(RRC,"[MSG] RRC Connection SetupComplete\n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_D(RRC,
|
LOG_D(RRC,
|
||||||
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
||||||
@@ -3064,10 +3144,10 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_securityModeComplete:
|
case UL_DCCH_MessageType__c1_PR_securityModeComplete:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
|
LOG_F(RRC,"[MSG] RRC Security Mode Complete\n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
"[eNB %d] Frame %d received securityModeComplete on UL-DCCH %d from UE %d\n",
|
"[eNB %d] Frame %d received securityModeComplete on UL-DCCH %d from UE %d\n",
|
||||||
@@ -3086,10 +3166,10 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_securityModeFailure:
|
case UL_DCCH_MessageType__c1_PR_securityModeFailure:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
|
LOG_F(RRC,"[MSG] RRC Security Mode Failure\n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_D(RRC,
|
LOG_D(RRC,
|
||||||
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
"[FRAME %05d][RLC][MOD %02d][RB %02d][--- RLC_DATA_IND %d bytes "
|
||||||
@@ -3105,10 +3185,10 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
|
case UL_DCCH_MessageType__c1_PR_ueCapabilityInformation:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
|
LOG_F(RRC,"[MSG] RRC UECapablility Information \n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
"[eNB %d] Frame %d received ueCapabilityInformation on UL-DCCH %d from UE %d\n",
|
"[eNB %d] Frame %d received ueCapabilityInformation on UL-DCCH %d from UE %d\n",
|
||||||
@@ -3147,10 +3227,10 @@ int rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
|
case UL_DCCH_MessageType__c1_PR_ulInformationTransfer:
|
||||||
#ifdef RRC_MSG_PRINT
|
#ifdef RRC_MSG_PRINT
|
||||||
LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
|
LOG_F(RRC,"[MSG] RRC UL Information Transfer \n");
|
||||||
for (i = 0; i < sdu_sizeP; i++)
|
for (i = 0; i < sdu_sizeP; i++)
|
||||||
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
LOG_F(RRC,"%02x ", ((uint8_t*)Rx_sdu)[i]);
|
||||||
LOG_F(RRC,"\n");
|
LOG_F(RRC,"\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(ENABLE_USE_MME)
|
#if defined(ENABLE_USE_MME)
|
||||||
@@ -3286,6 +3366,14 @@ void *rrc_enb_task(
|
|||||||
case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
|
case RRC_RAL_CONFIGURE_THRESHOLD_REQ:
|
||||||
rrc_enb_ral_handle_configure_threshold_request(instance, msg_p);
|
rrc_enb_ral_handle_configure_threshold_request(instance, msg_p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//SPECTRA: Add the RRC connection reconfiguration with Second cell configuration
|
||||||
|
case RRC_RAL_CONNECTION_RECONFIGURATION_REQ:
|
||||||
|
// ue_mod_id = 0; /* TODO force ue_mod_id to first UE, NAS UE not virtualized yet */
|
||||||
|
LOG_I(RRC, "[eNB %d] Send RRC_RAL_CONNECTION_RECONFIGURATION_REQ to UE %s\n", instance, msg_name_p);
|
||||||
|
//Method RRC connection reconfiguration command with Second cell configuration
|
||||||
|
rrc_eNB_generate_RRCConnectionReconfiguration_SCell(instance, 0/* TODO put frameP number ! */, /*ue_mod_id force ue_mod_id to first UE*/0, 36126);
|
||||||
|
break;
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user