diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.c b/openair2/RRC/LITE/MESSAGES/asn1_msg.c index 76884d82993a9484d703a39de144cc58b8be3173..2349aefb07cae6a07bcf042055fca4070b21c6b2 100644 --- a/openair2/RRC/LITE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.c @@ -282,7 +282,7 @@ uint8_t do_SIB1(LTE_DL_FRAME_PARMS *frame_parms, uint8_t *buffer, } */ // AT4 packet -uint8_t do_MIB(LTE_DL_FRAME_PARMS *frame_parms, uint32_t frame, uint8_t *buffer) { +uint8_t do_MIB(uint8_t Mod_id, LTE_DL_FRAME_PARMS *frame_parms, uint32_t frame, uint8_t *buffer) { asn_enc_rval_t enc_rval; BCCH_BCH_Message_t mib; @@ -342,9 +342,29 @@ uint8_t do_MIB(LTE_DL_FRAME_PARMS *frame_parms, uint32_t frame, uint8_t *buffer) mib.message.spare.bits_unused = 6; // This makes a spare of 10 bits enc_rval = uper_encode_to_buffer(&asn_DEF_BCCH_BCH_Message, - (void*)&mib, - buffer, - 100); + (void*)&mib, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_BCCH_BCH_Message, (void *) &mib)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_ENB, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, message_p); + } + } +# endif +#endif + if (enc_rval.encoded==-1) return(-1); return((enc_rval.encoded+7)/8); @@ -1042,7 +1062,6 @@ uint8_t do_SIB23(uint8_t Mod_id, } #endif - bcch_message->message.present = BCCH_DL_SCH_MessageType_PR_c1; bcch_message->message.choice.c1.present = BCCH_DL_SCH_MessageType__c1_PR_systemInformation; @@ -1105,7 +1124,7 @@ uint8_t do_SIB23(uint8_t Mod_id, return((enc_rval.encoded+7)/8); } -uint8_t do_RRCConnectionRequest(uint8_t *buffer,uint8_t *rv) { +uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,uint8_t *rv) { asn_enc_rval_t enc_rval; uint8_t buf[5],buf2=0; @@ -1158,9 +1177,28 @@ uint8_t do_RRCConnectionRequest(uint8_t *buffer,uint8_t *rv) { enc_rval = uper_encode_to_buffer(&asn_DEF_UL_CCCH_Message, - (void*)&ul_ccch_msg, - buffer, - 100); + (void*)&ul_ccch_msg, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_CCCH_Message, (void *) &ul_ccch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_UE, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif #ifdef USER_MODE LOG_D(RRC,"[UE] RRCConnectionRequest Encoded %d bits (%d bytes), ecause %d\n",enc_rval.encoded,(enc_rval.encoded+7)/8,ecause); @@ -1170,7 +1208,7 @@ uint8_t do_RRCConnectionRequest(uint8_t *buffer,uint8_t *rv) { } -uint8_t do_RRCConnectionSetupComplete(uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) { +uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS) { asn_enc_rval_t enc_rval; @@ -1213,14 +1251,29 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t *buffer, const uint8_t Transaction rrcConnectionSetupComplete->criticalExtensions.choice.c1.choice.rrcConnectionSetupComplete_r8.registeredMME->mmec.bits_unused=0; */ + enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, + (void*)&ul_dcch_msg, + buffer, + 100); +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) + { + MessageDef *message_p; - enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, - (void*)&ul_dcch_msg, - buffer, - 100); + message_p = itti_alloc_new_message_sized (TASK_RRC_UE, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif #ifdef USER_MODE LOG_D(RRC,"RRCConnectionSetupComplete Encoded %d bits (%d bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); @@ -1230,7 +1283,7 @@ uint8_t do_RRCConnectionSetupComplete(uint8_t *buffer, const uint8_t Transaction } -uint8_t do_RRCConnectionReconfigurationComplete(uint8_t *buffer, const uint8_t Transaction_id) { +uint8_t do_RRCConnectionReconfigurationComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id) { asn_enc_rval_t enc_rval; @@ -1250,9 +1303,28 @@ uint8_t do_RRCConnectionReconfigurationComplete(uint8_t *buffer, const uint8_t T rrcConnectionReconfigurationComplete->criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8.nonCriticalExtension=NULL; enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, - (void*)&ul_dcch_msg, - buffer, - 100); + (void*)&ul_dcch_msg, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_UE, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif #ifdef USER_MODE LOG_D(RRC,"RRCConnectionReconfigurationComplete Encoded %d bits (%d bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); @@ -1262,14 +1334,14 @@ uint8_t do_RRCConnectionReconfigurationComplete(uint8_t *buffer, const uint8_t T } -uint8_t do_RRCConnectionSetup(uint8_t *buffer, - u8 transmission_mode, - uint8_t UE_id, - uint8_t Transaction_id, - LTE_DL_FRAME_PARMS *frame_parms, - SRB_ToAddModList_t **SRB_configList, - struct PhysicalConfigDedicated **physicalConfigDedicated) { - +uint8_t do_RRCConnectionSetup(uint8_t Mod_id, + uint8_t *buffer, + u8 transmission_mode, + uint8_t UE_id, + uint8_t Transaction_id, + LTE_DL_FRAME_PARMS *frame_parms, + SRB_ToAddModList_t **SRB_configList, + struct PhysicalConfigDedicated **physicalConfigDedicated) { asn_enc_rval_t enc_rval; uint8_t ecause=0; @@ -1518,9 +1590,28 @@ uint8_t do_RRCConnectionSetup(uint8_t *buffer, enc_rval = uper_encode_to_buffer(&asn_DEF_DL_CCCH_Message, - (void*)&dl_ccch_msg, - buffer, - 100); + (void*)&dl_ccch_msg, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_DL_CCCH_Message, (void *) &dl_ccch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_ENB, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, message_p); + } + } +# endif +#endif #ifdef USER_MODE LOG_D(RRC,"RRCConnectionSetup Encoded %d bits (%d bytes), ecause %d\n",enc_rval.encoded,(enc_rval.encoded+7)/8,ecause); @@ -1805,11 +1896,12 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t Mod_id uint8_t TMGI[5] = {4,3,2,1,0};//TMGI is a string of octet, ref. TS 24.008 fig. 10.5.4a #ifdef Rel10 -uint8_t do_MBSFNAreaConfig(LTE_DL_FRAME_PARMS *frame_parms, - uint8_t sync_area, - uint8_t *buffer, - MCCH_Message_t *mcch_message, - MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration) { +uint8_t do_MBSFNAreaConfig(uint8_t Mod_id, + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t sync_area, + uint8_t *buffer, + MCCH_Message_t *mcch_message, + MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration) { asn_enc_rval_t enc_rval; MBSFN_SubframeConfig_t *mbsfn_SubframeConfig1; @@ -1910,9 +2002,29 @@ uint8_t do_MBSFNAreaConfig(LTE_DL_FRAME_PARMS *frame_parms, xer_fprint(stdout,&asn_DEF_MCCH_Message,(void*)mcch_message); #endif enc_rval = uper_encode_to_buffer(&asn_DEF_MCCH_Message, - (void*)mcch_message, - buffer, - 100); + (void*)mcch_message, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_MCCH_Message, (void *) &mcch_message)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_ENB, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, Mod_id, message_p); + } + } +# endif +#endif + #ifdef USER_MODE LOG_D(RRC,"[eNB] MCCH Message Encoded %d bits (%d bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); #endif @@ -1925,8 +2037,7 @@ uint8_t do_MBSFNAreaConfig(LTE_DL_FRAME_PARMS *frame_parms, } #endif -uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,int rsrq_s,long rsrp_t,long rsrq_t) { - +uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,int rsrp_s,int rsrq_s,long rsrp_t,long rsrq_t) { asn_enc_rval_t enc_rval; @@ -1942,7 +2053,6 @@ uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,in measurementReport->criticalExtensions.choice.c1.present=MeasurementReport__criticalExtensions__c1_PR_measurementReport_r8; measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.nonCriticalExtension=CALLOC(1,sizeof(*measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.nonCriticalExtension)); - measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measId=measid; #ifdef Rel10 measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultPCell.rsrpResult=rsrp_s; @@ -1964,7 +2074,6 @@ uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,in struct MeasResultEUTRA__cgi_Info *measresult_cgi2; measresult_cgi2 = CALLOC(1,sizeof(*measresult_cgi2)); - memset(&measresult_cgi2->cellGlobalId.plmn_Identity,0,sizeof(measresult_cgi2->cellGlobalId.plmn_Identity)); measresult_cgi2->cellGlobalId.plmn_Identity.mcc=CALLOC(1,sizeof(measresult_cgi2->cellGlobalId.plmn_Identity.mcc)); @@ -1981,7 +2090,6 @@ uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,in dummy=8;ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list,&dummy); dummy=0;ASN_SEQUENCE_ADD(&measresult_cgi2->cellGlobalId.plmn_Identity.mnc.list,&dummy); - measresult_cgi2->cellGlobalId.cellIdentity.buf=MALLOC(8); measresult_cgi2->cellGlobalId.cellIdentity.buf[0]=0x01; measresult_cgi2->cellGlobalId.cellIdentity.buf[1]=0x48; @@ -2010,11 +2118,29 @@ uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,in measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults.measResultNeighCells->choice.measResultListEUTRA=*(measResultListEUTRA2); - enc_rval = uper_encode_to_buffer(&asn_DEF_UL_DCCH_Message, - (void*)&ul_dcch_msg, - buffer, - 100); + (void*)&ul_dcch_msg, + buffer, + 100); + +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_UE, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif #ifdef USER_MODE printf("Measurement Report Encoded %zu bits (%zu bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); @@ -2447,14 +2573,14 @@ uint8_t do_SIB2_cell(uint8_t Mod_id, LTE_DL_FRAME_PARMS *frame_parms, uint8_t *b //----------------------------------------------------------------------------- uint8_t do_RRCConnReconf_defaultCELL(uint8_t Mod_id, - uint8_t *buffer, - uint8_t UE_id, - uint8_t Transaction_id, - /* struct SRB_ToAddMod **SRB2_config, - struct DRB_ToAddMod **DRB_config,*/ - SRB_ToAddModList_t **SRB_configList, - DRB_ToAddModList_t **DRB_configList, - struct PhysicalConfigDedicated **physicalConfigDedicated) { + uint8_t *buffer, + uint8_t UE_id, + uint8_t Transaction_id, +/* struct SRB_ToAddMod **SRB2_config, + struct DRB_ToAddMod **DRB_config,*/ + SRB_ToAddModList_t **SRB_configList, + DRB_ToAddModList_t **DRB_configList, + struct PhysicalConfigDedicated **physicalConfigDedicated) { //----------------------------------------------------------------------------- asn_enc_rval_t enc_rval; @@ -2866,9 +2992,9 @@ uint8_t do_RRCConnReconf_defaultCELL(uint8_t Mod_id, rrcConnectionReconfiguration->criticalExtensions.choice.c1.choice.rrcConnectionReconfiguration_r8.securityConfigHO = NULL; enc_rval = uper_encode_to_buffer(&asn_DEF_DL_DCCH_Message, - (void*)&dl_dcch_msg, - buffer, - 100); + (void*)&dl_dcch_msg, + buffer, + 100); #ifdef XER_PRINT xer_fprint(stdout,&asn_DEF_DL_DCCH_Message,(void*)&dl_dcch_msg); diff --git a/openair2/RRC/LITE/MESSAGES/asn1_msg.h b/openair2/RRC/LITE/MESSAGES/asn1_msg.h index a732a43d8d1f727b6b4ca3a3619883c2c57297cc..7ae74258b88c9868b17ab9572b506cf9f7af5b96 100644 --- a/openair2/RRC/LITE/MESSAGES/asn1_msg.h +++ b/openair2/RRC/LITE/MESSAGES/asn1_msg.h @@ -94,15 +94,15 @@ uint8_t do_SIB1(uint8_t Mod_id, LTE_DL_FRAME_PARMS *frame_parms, uint8_t *buffer @return size of encoded bit stream in bytes*/ uint8_t do_SIB23(uint8_t Mod_id, - LTE_DL_FRAME_PARMS *frame_parms, - uint8_t *buffer, - BCCH_DL_SCH_Message_t *systemInformation, - SystemInformationBlockType2_t **sib2, - SystemInformationBlockType3_t **sib3 + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t *buffer, + BCCH_DL_SCH_Message_t *systemInformation, + SystemInformationBlockType2_t **sib2, + SystemInformationBlockType3_t **sib3 #ifdef Rel10 - , + , SystemInformationBlockType13_r9_t **sib13, - uint8_t MBMS_flag + uint8_t MBMS_flag #endif ); @@ -113,17 +113,17 @@ routine only generates an mo-data establishment cause. @param rv 5 byte random string or S-TMSI @returns Size of encoded bit stream in bytes*/ -uint8_t do_RRCConnectionRequest(uint8_t *buffer,u8 *rv); +uint8_t do_RRCConnectionRequest(uint8_t Mod_id, uint8_t *buffer,u8 *rv); /** \brief Generate an RRCConnectionSetupComplete UL-DCCH-Message (UE) @param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU @returns Size of encoded bit stream in bytes*/ -uint8_t do_RRCConnectionSetupComplete(uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS); +uint8_t do_RRCConnectionSetupComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id, const int dedicatedInfoNASLength, const char *dedicatedInfoNAS); /** \brief Generate an RRCConnectionReconfigurationComplete UL-DCCH-Message (UE) @param buffer Pointer to PER-encoded ASN.1 description of UL-DCCH-Message PDU @returns Size of encoded bit stream in bytes*/ -uint8_t do_RRCConnectionReconfigurationComplete(uint8_t *buffer, const uint8_t Transaction_id); +uint8_t do_RRCConnectionReconfigurationComplete(uint8_t Mod_id, uint8_t *buffer, const uint8_t Transaction_id); /** \brief Generate an RRCConnectionSetup DL-CCCH-Message (eNB). This routine configures SRB_ToAddMod (SRB1/SRB2) and @@ -135,13 +135,14 @@ PhysicalConfigDedicated IEs. The latter does not enable periodic CQI reporting @param SRB_configList Pointer (returned) to SRB1_config/SRB2_config(later) IEs for this UE @param physicalConfigDedicated Pointer (returned) to PhysicalConfigDedicated IE for this UE @returns Size of encoded bit stream in bytes*/ -uint8_t do_RRCConnectionSetup(uint8_t *buffer, - uint8_t transmission_mode, - uint8_t UE_id, - uint8_t Transaction_id, - LTE_DL_FRAME_PARMS *frame_parms, - SRB_ToAddModList_t **SRB1_configList, - struct PhysicalConfigDedicated **physicalConfigDedicated); +uint8_t do_RRCConnectionSetup(uint8_t Mod_id, + uint8_t *buffer, + uint8_t transmission_mode, + uint8_t UE_id, + uint8_t Transaction_id, + LTE_DL_FRAME_PARMS *frame_parms, + SRB_ToAddModList_t **SRB1_configList, + struct PhysicalConfigDedicated **physicalConfigDedicated); /** \brief Generate an RRCConnectionReconfiguration DL-DCCH-Message (eNB). This routine configures SRBToAddMod (SRB2) and one DRBToAddMod @@ -181,11 +182,11 @@ uint8_t do_RRCConnectionReconfiguration(uint8_t Mod_id MeasIdToAddModList_t *MeasId_list, MAC_MainConfig_t *mac_MainConfig, MeasGapConfig_t *measGapConfig, - MobilityControlInfo_t *mobilityInfo, - struct MeasConfig__speedStatePars *speedStatePars, - RSRP_Range_t *rsrp, - C_RNTI_t *cba_rnti, - struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList); + MobilityControlInfo_t *mobilityInfo, + struct MeasConfig__speedStatePars *speedStatePars, + RSRP_Range_t *rsrp, + C_RNTI_t *cba_rnti, + struct RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList *dedicatedInfoNASList); /*** * \brief Generate an MCCH-Message (eNB). This routine configures MBSFNAreaConfiguration (PMCH-InfoList and Subframe Allocation for MBMS data) @@ -199,14 +200,15 @@ uint8_t do_MCCHMessage(uint8_t *buffer); * @param buffer Pointer to PER-encoded ASN.1 description of MCCH-Message PDU * @returns Size of encoded bit stream in bytes */ -uint8_t do_MBSFNAreaConfig(LTE_DL_FRAME_PARMS *frame_parms, - uint8_t sync_area, - uint8_t *buffer, - MCCH_Message_t *mcch_message, - MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration); +uint8_t do_MBSFNAreaConfig(uint8_t Mod_id, + LTE_DL_FRAME_PARMS *frame_parms, + uint8_t sync_area, + uint8_t *buffer, + MCCH_Message_t *mcch_message, + MBSFNAreaConfiguration_r9_t **mbsfnAreaConfiguration); #endif -uint8_t do_MeasurementReport(uint8_t *buffer,int measid,int phy_id,int rsrp_s,int rsrq_s,long rsrp_t,long rsrq_t); +uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,int rsrp_s,int rsrq_s,long rsrp_t,long rsrq_t); uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t transaction_id, uint32_t pdu_length, uint8_t *pdu_buffer); @@ -215,9 +217,9 @@ uint8_t do_ULInformationTransfer(uint8_t **buffer, uint32_t pdu_length, uint8_t OAI_UECapability_t *fill_ue_capability(); uint8_t do_UECapabilityEnquiry(uint8_t Mod_id, - uint8_t *buffer, - uint8_t UE_id, - uint8_t Transaction_id); + uint8_t *buffer, + uint8_t UE_id, + uint8_t Transaction_id); uint8_t do_SecurityModeCommand(uint8_t Mod_id, uint8_t *buffer, diff --git a/openair2/RRC/LITE/rrc_UE.c b/openair2/RRC/LITE/rrc_UE.c index 3de7ebdeb6cc2e8e52801eaacf14750b98c87651..7082a6bf978852ff9a56280fa0b833ae54360c1a 100644 --- a/openair2/RRC/LITE/rrc_UE.c +++ b/openair2/RRC/LITE/rrc_UE.c @@ -297,7 +297,7 @@ void rrc_ue_generate_RRCConnectionRequest(u8 Mod_id, u32 frame, u8 eNB_index){ LOG_T(RRC,"%x.",rv[i]); } LOG_T(RRC,"\n"); - UE_rrc_inst[Mod_id].Srb0[eNB_index].Tx_buffer.payload_size = do_RRCConnectionRequest((u8 *)UE_rrc_inst[Mod_id].Srb0[eNB_index].Tx_buffer.Payload,rv); + UE_rrc_inst[Mod_id].Srb0[eNB_index].Tx_buffer.payload_size = do_RRCConnectionRequest(Mod_id, (u8 *)UE_rrc_inst[Mod_id].Srb0[eNB_index].Tx_buffer.Payload,rv); LOG_I(RRC,"[UE %d] : Frame %d, Logical Channel UL-CCCH (SRB0), Generating RRCConnectionRequest (bytes %d, eNB %d)\n", Mod_id, frame, UE_rrc_inst[Mod_id].Srb0[eNB_index].Tx_buffer.payload_size, eNB_index); @@ -365,7 +365,7 @@ void rrc_ue_generate_RRCConnectionSetupComplete(u8 Mod_id, u32 frame, u8 eNB_ind nas_msg_length = sizeof(nas_attach_req_imsi); #endif - size = do_RRCConnectionSetupComplete(buffer, Transaction_id, nas_msg_length, nas_msg); + size = do_RRCConnectionSetupComplete(Mod_id, buffer, Transaction_id, nas_msg_length, nas_msg); LOG_I(RRC,"[UE %d][RAPROC] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionSetupComplete (bytes%d, eNB %d)\n", Mod_id,frame, size, eNB_index); @@ -381,7 +381,7 @@ void rrc_ue_generate_RRCConnectionReconfigurationComplete(u8 Mod_id, u32 frame, u8 buffer[32], size; - size = do_RRCConnectionReconfigurationComplete(buffer, Transaction_id); + size = do_RRCConnectionReconfigurationComplete(Mod_id, buffer, Transaction_id); LOG_I(RRC,"[UE %d] Frame %d : Logical Channel UL-DCCH (SRB1), Generating RRCConnectionReconfigurationComplete (bytes %d, eNB_index %d)\n", Mod_id,frame, size, eNB_index); @@ -1184,6 +1184,25 @@ void rrc_ue_process_securityModeCommand(uint8_t Mod_id,uint32_t frame,SecurityMo xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg); #endif +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_ENB, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif + #ifdef USER_MODE LOG_D(RRC, "securityModeComplete Encoded %d bits (%d bytes)\n", enc_rval.encoded, (enc_rval.encoded+7)/8); #endif @@ -1246,6 +1265,25 @@ void rrc_ue_process_ueCapabilityEnquiry(uint8_t Mod_id,uint32_t frame,UECapabili xer_fprint(stdout, &asn_DEF_UL_DCCH_Message, (void*)&ul_dcch_msg); #endif +#if defined(ENABLE_ITTI) +# if !defined(DISABLE_XER_SPRINT) + { + char message_string[20000]; + size_t message_string_size; + + if ((message_string_size = xer_sprint(message_string, sizeof(message_string), &asn_DEF_UL_DCCH_Message, (void *) &ul_dcch_msg)) > 0) + { + MessageDef *message_p; + + message_p = itti_alloc_new_message_sized (TASK_RRC_UE, GENERIC_LOG, message_string_size); + memcpy(&message_p->ittiMsg.generic_log, message_string, message_string_size); + + itti_send_msg_to_task(TASK_UNKNOWN, NB_eNB_INST + Mod_id, message_p); + } + } +# endif +#endif + #ifdef USER_MODE LOG_D(RRC,"UECapabilityInformation Encoded %d bits (%d bytes)\n",enc_rval.encoded,(enc_rval.encoded+7)/8); #endif @@ -2397,7 +2435,7 @@ void rrc_ue_generate_MeasurementReport(u8 eNB_id, u8 UE_id, u32 frame) { if (pframe!=frame){ pframe=frame; - size = do_MeasurementReport(buffer,measId,targetCellId,rsrp_s,rsrq_s,rsrp_t,rsrq_t); + size = do_MeasurementReport(UE_id, buffer,measId,targetCellId,rsrp_s,rsrq_s,rsrp_t,rsrq_t); LOG_D(RRC, "[UE %d] Frame %d: Sending MeasReport: servingCell(%d) targetCell(%d) rsrp_s(%d) rsrq_s(%d) rsrp_t(%d) rsrq_t(%d) \n", UE_id, frame, cellId,targetCellId,rsrp_s,rsrq_s,rsrp_t,rsrq_t); LOG_I(RRC, "[UE %d] Frame %d : Generating Measurement Report for eNB %d\n", UE_id, frame, eNB_id); diff --git a/openair2/RRC/LITE/rrc_eNB.c b/openair2/RRC/LITE/rrc_eNB.c index 5e9474f93f2f9b9f27d8fac21d58db92878412ef..3b9fa0d1898b53add50e0aab2bee15e40ece6acc 100644 --- a/openair2/RRC/LITE/rrc_eNB.c +++ b/openair2/RRC/LITE/rrc_eNB.c @@ -127,10 +127,10 @@ static void init_SI (u8 Mod_id int N_RB_DL,phich_resource; - do_MIB(mac_xface->lte_frame_parms,0x321,&mib); + do_MIB(Mod_id, mac_xface->lte_frame_parms,0x321,&mib); for (i=0;i<1024;i+=4) - do_MIB(mac_xface->lte_frame_parms,i,&mib); + do_MIB(Mod_id, mac_xface->lte_frame_parms,i,&mib); N_RB_DL=6; while (N_RB_DL != 0) { @@ -140,7 +140,7 @@ static void init_SI (u8 Mod_id mac_xface->lte_frame_parms->N_RB_DL = N_RB_DL; mac_xface->lte_frame_parms->phich_config_common.phich_duration=i; mac_xface->lte_frame_parms->phich_config_common.phich_resource = phich_resource; - do_MIB(mac_xface->lte_frame_parms,0,&mib); + do_MIB(Mod_id, mac_xface->lte_frame_parms,0,&mib); } if (phich_resource == 1) phich_resource = 3; @@ -722,6 +722,8 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 /// DRB DRB_config = CALLOC (1, sizeof (*DRB_config)); + DRB_config->eps_BearerIdentity = CALLOC(1, sizeof(long)); + *(DRB_config->eps_BearerIdentity) = 5L; // LW set to first value, allowed value 5..15 //DRB_config->drb_Identity = (DRB_Identity_t) 1; //allowed values 1..32 // NN: this is the 1st DRB for this ue, so set it to 1 DRB_config->drb_Identity = (DRB_Identity_t) 1; // (UE_index+1); //allowed values 1..32 @@ -729,6 +731,7 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 *(DRB_config->logicalChannelIdentity) = (long) 3; DRB_rlc_config = CALLOC (1, sizeof (*DRB_rlc_config)); DRB_config->rlc_Config = DRB_rlc_config; + DRB_rlc_config->present = RLC_Config_PR_um_Bi_Directional; DRB_rlc_config->choice.um_Bi_Directional.ul_UM_RLC.sn_FieldLength = SN_FieldLength_size10; DRB_rlc_config->choice.um_Bi_Directional.dl_UM_RLC.sn_FieldLength = SN_FieldLength_size10; @@ -1065,12 +1068,11 @@ static void rrc_eNB_generate_defaultRRCConnectionReconfiguration (u8 Mod_id, u32 size = do_RRCConnectionReconfiguration (Mod_id, buffer, UE_index, rrc_eNB_get_next_transaction_identifier(Mod_id), //Transaction_id, SRB_configList2, *DRB_configList, NULL, // DRB2_list, - NULL, //*sps_Config, + NULL, // *sps_Config, physicalConfigDedicated[UE_index], MeasObj_list, ReportConfig_list, quantityConfig, MeasId_list, mac_MainConfig, NULL,NULL,Sparams,rsrp, cba_RNTI, dedicatedInfoNASList); - #if defined(ENABLE_ITTI) /* Free all NAS PDUs */ for (i = 0; i < UE_info->nb_of_e_rabs; i++) @@ -1249,11 +1251,11 @@ void check_handovers(u8 Mod_id, u32 frame) { LOG_D(RRC,"[eNB %d] Frame %d: handover Command received for new UE_idx %d current eNB %d target eNB: %d \n", Mod_id, frame, i,Mod_id,eNB_rrc_inst[Mod_id].handover_info[i]->modid_t); //rrc_eNB_process_handoverPreparationInformation(Mod_id,frame,i); - pdcp_data_req(Mod_id, i, frame, 1, - (i* NB_RB_MAX)+DCCH, - rrc_eNB_mui++,0, - eNB_rrc_inst[Mod_id].handover_info[i]->size, - eNB_rrc_inst[Mod_id].handover_info[i]->buf,1); + result = pdcp_data_req(Mod_id, i, frame, 1, + (i* NB_RB_MAX)+DCCH, + rrc_eNB_mui++,0, + eNB_rrc_inst[Mod_id].handover_info[i]->size, + eNB_rrc_inst[Mod_id].handover_info[i]->buf,1); AssertFatal (result == TRUE, "PDCP data request failed!\n"); eNB_rrc_inst[Mod_id].handover_info[i]->ho_complete = 0xF2; } @@ -2332,7 +2334,8 @@ void rrc_eNB_generate_RRCConnectionSetup (u8 Mod_id, u32 frame, u16 UE_index) { SRB_configList = &eNB_rrc_inst[Mod_id].SRB_configList[UE_index]; eNB_rrc_inst[Mod_id].Srb0.Tx_buffer.payload_size = - do_RRCConnectionSetup ((u8 *) eNB_rrc_inst[Mod_id].Srb0.Tx_buffer.Payload, + do_RRCConnectionSetup (Mod_id, + (u8 *) eNB_rrc_inst[Mod_id].Srb0.Tx_buffer.Payload, mac_xface->get_transmission_mode (Mod_id, find_UE_RNTI (Mod_id,