Commit e707c863 authored by hrizi's avatar hrizi

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5733 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 23750ba9
...@@ -296,8 +296,8 @@ static void init_SI( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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( ...@@ -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:
......
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