From 997c2e07ad0d7abb61aa408455542c6102ca3fff Mon Sep 17 00:00:00 2001 From: Melissa Elkadi Date: Fri, 7 May 2021 15:19:55 -0700 Subject: [PATCH] Added rsrp/q back into report. ASN debug on. --- cmake_targets/CMakeLists.txt | 2 +- openair2/RRC/LTE/MESSAGES/asn1_msg.c | 65 +++++++++++++++++----------- openair2/RRC/LTE/MESSAGES/asn1_msg.h | 9 +++- openair2/RRC/LTE/rrc_UE.c | 17 +++++--- 4 files changed, 60 insertions(+), 33 deletions(-) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index a7d2bb61ab..7a4da6ce14 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -395,7 +395,7 @@ set (FIRMWARE_VERSION "No svn information") add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"") add_definitions("-DPACKAGE_VERSION=\"Branch: ${GIT_BRANCH} Abrev. Hash: ${GIT_COMMIT_HASH} Date: ${GIT_COMMIT_DATE}\"") add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"") -#add_definitions("-DEMIT_ASN_DEBUG=1") +add_definitions("-DEMIT_ASN_DEBUG=1") # Debug related options diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c index 43c8d03c96..9d3c0b5fb4 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c @@ -4217,10 +4217,23 @@ uint8_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_ } -ssize_t do_nrMeasurementReport(int measid, long phy_id, uint8_t *buffer) { +ssize_t do_nrMeasurementReport(uint8_t *buffer, + size_t bufsize, + LTE_MeasId_t measid, + LTE_PhysCellIdNR_r15_t phy_id, + long rsrp_s, + long rsrq_s, + long rsrp_tar, + long rsrq_tar) { + LOG_I(RRC, "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MICHAEL~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); + #if EMIT_ASN_DEBUG + #warning EMIT_ASN_DEBUG is enabled + #else + #error EMIT_ASN_DEBUG is disabled + #endif LTE_UL_DCCH_Message_t ul_dcch_msg; - memset((void *)&ul_dcch_msg, 0, sizeof(LTE_UL_DCCH_Message_t)); + memset(&ul_dcch_msg, 0, sizeof(ul_dcch_msg)); ul_dcch_msg.message.present = LTE_UL_DCCH_MessageType_PR_c1; ul_dcch_msg.message.choice.c1.present = LTE_UL_DCCH_MessageType__c1_PR_measurementReport; @@ -4228,47 +4241,47 @@ ssize_t do_nrMeasurementReport(int measid, long phy_id, uint8_t *buffer) { measurementReport->criticalExtensions.present = LTE_MeasurementReport__criticalExtensions_PR_c1; measurementReport->criticalExtensions.choice.c1.present = LTE_MeasurementReport__criticalExtensions__c1_PR_measurementReport_r8; - LTE_MeasurementReport_r8_IEs_t *mr_r8 = &measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8; - mr_r8->measResults.measId = measid; - mr_r8->measResults.measResultNeighCells = CALLOC(1, sizeof(*mr_r8->measResults.measResultNeighCells)); - mr_r8->measResults.measResultNeighCells->present = LTE_MeasResults__measResultNeighCells_PR_measResultNeighCellListNR_r15; + LTE_MeasResults_t *mr_r8 = &measurementReport->criticalExtensions.choice.c1.choice.measurementReport_r8.measResults; + //mr_r8 = CALLOC(1, sizeof(*mr_r8)); + mr_r8->measId = measid; + mr_r8->measResultPCell.rsrpResult = rsrp_s; + mr_r8->measResultPCell.rsrqResult = rsrq_s; + mr_r8->measResultNeighCells = CALLOC(1, sizeof(*mr_r8->measResultNeighCells)); + mr_r8->measResultNeighCells->present = LTE_MeasResults__measResultNeighCells_PR_measResultNeighCellListNR_r15; + //mr_r8->ext4 = CALLOC(1, sizeof(*mr_r8->ext4)); + //mr_r8->ext4->measResultPCell_v1310->rs_sinr_Result_r13 = NULL; - LTE_MeasResultCellListNR_r15_t *mr_cl = &mr_r8->measResults.measResultNeighCells->choice.measResultNeighCellListNR_r15; - mr_cl = CALLOC(1, sizeof(*mr_cl)); - - LTE_MeasResultCellNR_r15_t *measResultNR_r15; + LTE_MeasResultNR_r15_t *measResultNR_r15; measResultNR_r15 = CALLOC(1, sizeof(*measResultNR_r15)); - measResultNR_r15->pci_r15 = phy_id; + measResultNR_r15->rsrpResult_r15 = &rsrp_tar; + measResultNR_r15->rsrqResult_r15 = &rsrq_tar; + + LTE_MeasResultCellNR_r15_t *measResultCellNR_r15; + measResultCellNR_r15 = CALLOC(1, sizeof(*measResultCellNR_r15)); + measResultCellNR_r15->pci_r15 = phy_id; + ASN_SEQUENCE_ADD(&measResultCellNR_r15->measResultCell_r15, measResultNR_r15); LTE_MeasResultCellListNR_r15_t *measResultListNR_r15; measResultListNR_r15 = CALLOC(1, sizeof(*measResultListNR_r15)); - ASN_SEQUENCE_ADD(&measResultListNR_r15->list, measResultNR_r15); + ASN_SEQUENCE_ADD(&measResultListNR_r15->list, measResultCellNR_r15); + LTE_MeasResultCellListNR_r15_t *mr_cl = &mr_r8->measResultNeighCells->choice.measResultNeighCellListNR_r15; ASN_SEQUENCE_ADD(&mr_cl->list, measResultListNR_r15); + //xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, &ul_dcch_msg); asn_enc_rval_t enc_rval = uper_encode_to_buffer(&asn_DEF_LTE_UL_DCCH_Message, NULL, - (void *)&ul_dcch_msg, + &ul_dcch_msg, buffer, - RRC_BUF_SIZE); + bufsize); if(enc_rval.encoded == -1) { LOG_I(RRC, "[eNB AssertFatal] ASN1 message encoding failed (%s, %lu)!\n", enc_rval.failed_type->name, enc_rval.encoded); - free(mr_r8->measResults.measResultNeighCells); - mr_r8->measResults.measResultNeighCells = NULL; - free(measResultListNR_r15); - measResultListNR_r15 = NULL; - free(measResultNR_r15); - measResultNR_r15 = NULL; + SEQUENCE_free(&asn_DEF_LTE_UL_DCCH_Message, &ul_dcch_msg, ASFM_FREE_UNDERLYING_AND_RESET); return -1; } - free(mr_r8->measResults.measResultNeighCells); - mr_r8->measResults.measResultNeighCells = NULL; - free(measResultListNR_r15); - measResultListNR_r15 = NULL; - free(measResultNR_r15); - measResultNR_r15 = NULL; + SEQUENCE_free(&asn_DEF_LTE_UL_DCCH_Message, &ul_dcch_msg, ASFM_FREE_UNDERLYING_AND_RESET); return((enc_rval.encoded+7)/8); } diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.h b/openair2/RRC/LTE/MESSAGES/asn1_msg.h index ab6bf1afd6..9bf4901a07 100644 --- a/openair2/RRC/LTE/MESSAGES/asn1_msg.h +++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.h @@ -343,7 +343,14 @@ uint8_t do_MBSFNAreaConfig(uint8_t Mod_id, ssize_t do_MeasurementReport(uint8_t Mod_id, uint8_t *buffer,int measid,int phy_id,long rsrp_s,long rsrq_s,long rsrp_t,long rsrq_t); -ssize_t do_nrMeasurementReport(int measid, long phy_id, uint8_t *buffer); +ssize_t do_nrMeasurementReport(uint8_t *buffer, + size_t bufsize, + LTE_MeasId_t measid, + LTE_PhysCellIdNR_r15_t phy_id, + long rsrp_s, + long rsrq_s, + long rsrp_tar, + long rsrq_tar); uint8_t do_DLInformationTransfer(uint8_t Mod_id, uint8_t **buffer, uint8_t transaction_id, uint32_t pdu_length, uint8_t *pdu_buffer); diff --git a/openair2/RRC/LTE/rrc_UE.c b/openair2/RRC/LTE/rrc_UE.c index a7ce598510..b5bb6990b7 100644 --- a/openair2/RRC/LTE/rrc_UE.c +++ b/openair2/RRC/LTE/rrc_UE.c @@ -4097,12 +4097,17 @@ void ue_meas_filtering( const protocol_ctxt_t *const ctxt_pP, const uint8_t eNB_ //----------------------------------------------------------------------------- void rrc_ue_generate_nrMeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t eNB_index ) { uint8_t buffer[RRC_BUF_SIZE]; - uint8_t target_eNB_offset = UE_rrc_inst[ctxt_pP->module_id].Info[0].handoverTarget; - LTE_PhysCellId_t targetCellId = UE_rrc_inst[ctxt_pP->module_id].HandoverInfoUe.targetCellId; + UE_RRC_INST *ue = &UE_rrc_inst[ctxt_pP->module_id]; + uint8_t target_eNB_offset = ue->Info[0].handoverTarget; + LTE_PhysCellId_t targetCellId = ue->HandoverInfoUe.targetCellId; for (int i = 0; i < MAX_MEAS_ID; i++) { - if (UE_rrc_inst[ctxt_pP->module_id].measReportList[eNB_index][i] != NULL) { - LTE_MeasId_t measId = UE_rrc_inst[ctxt_pP->module_id].measReportList[eNB_index][i]->measId; + if (ue->measReportList[eNB_index][i] != NULL) { + LTE_MeasId_t measId = ue->measReportList[eNB_index][i]->measId; + long rsrp_s = binary_search_float(RSRP_meas_mapping, 98, ue->rsrp_db_filtered[eNB_index]); + long rsrq_s = binary_search_float(RSRQ_meas_mapping, 35, ue->rsrq_db_filtered[eNB_index]); + long rsrp_tar = binary_search_float(RSRP_meas_mapping, 98, ue->rsrp_db_filtered[target_eNB_offset]); + long rsrq_tar = binary_search_float(RSRQ_meas_mapping, 35, ue->rsrq_db_filtered[target_eNB_offset]); LOG_I(RRC,"Melissa [UE %d] Frame %d: source eNB: %d target eNB: %d servingCell(%d) targetCell(%ld)\n", ctxt_pP->module_id, @@ -4113,7 +4118,9 @@ void rrc_ue_generate_nrMeasurementReport(protocol_ctxt_t *const ctxt_pP, uint8_t targetCellId); if (ctxt_pP->frame != 0) { - ssize_t size = do_nrMeasurementReport(measId, targetCellId, buffer); + LOG_I(RRC, "Melissa, this is measId %ld, targetCellId %ld, rsrp_s %ld, rsrq_s %ld, rsrp_t %ld, rsrq_t %ld\n", + measId, targetCellId, rsrp_s, rsrq_s, rsrp_tar, rsrq_tar); + ssize_t size = do_nrMeasurementReport(buffer, sizeof(buffer), measId, targetCellId, rsrp_s, rsrq_s, rsrp_tar, rsrq_tar); AssertFatal(size >= 0, "do_nrMeasurementReport failed \n"); LOG_I(RRC, "Melissa [UE %d] Frame %d : Generating Measurement Report for eNB %d\n", ctxt_pP->module_id, ctxt_pP->frame, eNB_index);