diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c index 757b4bfad5639d961e8373dd6bfb7db7aca6911c..ffadb519a5e3ebedd025a4d558b0c40861d71c91 100755 --- a/openair2/ENB_APP/enb_config.c +++ b/openair2/ENB_APP/enb_config.c @@ -251,112 +251,112 @@ static void enb_config_display(void) { for (i = 0; i < enb_properties.number; i++) { printf( "ENB CONFIG for instance %u:\n\n", i); printf( "\teNB name: \t%s:\n",enb_properties.properties[i]->eNB_name); - printf( "\teNB ID: \t%u:\n",enb_properties.properties[i]->eNB_id); + printf( "\teNB ID: \t%"PRIu32":\n",enb_properties.properties[i]->eNB_id); printf( "\tCell type: \t%s:\n",enb_properties.properties[i]->cell_type == CELL_MACRO_ENB ? "CELL_MACRO_ENB":"CELL_HOME_ENB"); - printf( "\tTAC: \t%u:\n",enb_properties.properties[i]->tac); - printf( "\tMCC: \t%u:\n",enb_properties.properties[i]->mcc); + printf( "\tTAC: \t%"PRIu16":\n",enb_properties.properties[i]->tac); + printf( "\tMCC: \t%"PRIu16":\n",enb_properties.properties[i]->mcc); if (enb_properties.properties[i]->mnc_digit_length == 3) - printf( "\tMNC: \t%03u:\n",enb_properties.properties[i]->mnc); + printf( "\tMNC: \t%03"PRIu16":\n",enb_properties.properties[i]->mnc); else - printf( "\tMNC: \t%02u:\n",enb_properties.properties[i]->mnc); + printf( "\tMNC: \t%02"PRIu16":\n",enb_properties.properties[i]->mnc); for (j=0; j< enb_properties.properties[i]->nb_cc; j++) { - printf( "\teutra band for CC %d: \t%d:\n",j,enb_properties.properties[i]->eutra_band[j]); - printf( "\tdownlink freq for CC %d: \t%ju:\n",j,enb_properties.properties[i]->downlink_frequency[j]); - printf( "\tuplink freq for CC %d: \t%d:\n",j,enb_properties.properties[i]->uplink_frequency_offset[j]); + printf( "\teutra band for CC %d: \t%"PRId16":\n",j,enb_properties.properties[i]->eutra_band[j]); + printf( "\tdownlink freq for CC %d: \t%"PRIu64":\n",j,enb_properties.properties[i]->downlink_frequency[j]); + printf( "\tuplink freq offset for CC %d: \t%"PRId32":\n",j,enb_properties.properties[i]->uplink_frequency_offset[j]); - printf( "\n\tCell ID for CC %d:\t%d:\n",j,enb_properties.properties[i]->Nid_cell[j]); - printf( "\tN_RB_DL for CC %d:\t%d:\n",j,enb_properties.properties[i]->N_RB_DL[j]); + printf( "\n\tCell ID for CC %d:\t%"PRId16":\n",j,enb_properties.properties[i]->Nid_cell[j]); + printf( "\tN_RB_DL for CC %d:\t%"PRId16":\n",j,enb_properties.properties[i]->N_RB_DL[j]); printf( "\tnb_antennas_tx for CC %d:\t%d:\n",j,enb_properties.properties[i]->nb_antennas_tx[j]); printf( "\tnb_antennas_rx for CC %d:\t%d:\n",j,enb_properties.properties[i]->nb_antennas_rx[j]); // RACH-Config - printf( "\trach_numberOfRA_Preambles for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_numberOfRA_Preambles[j]); + printf( "\trach_numberOfRA_Preambles for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_numberOfRA_Preambles[j]); printf( "\trach_preamblesGroupAConfig for CC %d:\t%d:\n",j,enb_properties.properties[i]->rach_preamblesGroupAConfig[j]); if (enb_properties.properties[i]->rach_preamblesGroupAConfig[j]) { - printf( "\trach_sizeOfRA_PreamblesGroupA for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_sizeOfRA_PreamblesGroupA[j]); - printf( "\trach_messageSizeGroupA for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_messageSizeGroupA[j]); + printf( "\trach_sizeOfRA_PreamblesGroupA for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_sizeOfRA_PreamblesGroupA[j]); + printf( "\trach_messageSizeGroupA for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_messageSizeGroupA[j]); printf( "\trach_messagePowerOffsetGroupB for CC %d:\t%d:\n",j,enb_properties.properties[i]->rach_messagePowerOffsetGroupB[j]); } - printf( "\trach_powerRampingStep for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_powerRampingStep[j]); - printf( "\trach_preambleInitialReceivedTargetPower for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_preambleInitialReceivedTargetPower[j]); - printf( "\trach_preambleTransMax for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_preambleTransMax[j]); - printf( "\trach_raResponseWindowSize for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_raResponseWindowSize[j]); - printf( "\trach_macContentionResolutionTimer for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_macContentionResolutionTimer[j]); - printf( "\trach_maxHARQ_Msg3Tx for CC %d:\t%jd:\n",j,enb_properties.properties[i]->rach_maxHARQ_Msg3Tx[j]); + printf( "\trach_powerRampingStep for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_powerRampingStep[j]); + printf( "\trach_preambleInitialReceivedTargetPower for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_preambleInitialReceivedTargetPower[j]); + printf( "\trach_preambleTransMax for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_preambleTransMax[j]); + printf( "\trach_raResponseWindowSize for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_raResponseWindowSize[j]); + printf( "\trach_macContentionResolutionTimer for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_macContentionResolutionTimer[j]); + printf( "\trach_maxHARQ_Msg3Tx for CC %d:\t%ld:\n",j,enb_properties.properties[i]->rach_maxHARQ_Msg3Tx[j]); // BCCH-Config - printf( "\tbcch_modificationPeriodCoeff for CC %d:\t%jd:\n",j,enb_properties.properties[i]->bcch_modificationPeriodCoeff[j]); + printf( "\tbcch_modificationPeriodCoeff for CC %d:\t%ld:\n",j,enb_properties.properties[i]->bcch_modificationPeriodCoeff[j]); // PCCH-Config - printf( "\tpcch_defaultPagingCycle for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pcch_defaultPagingCycle[j]); - printf( "\tpcch_nB for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pcch_nB[j]); + printf( "\tpcch_defaultPagingCycle for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pcch_defaultPagingCycle[j]); + printf( "\tpcch_nB for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pcch_nB[j]); // PRACH-Config - printf( "\tprach_root for CC %d:\t%jd:\n",j,enb_properties.properties[i]->prach_root[j]); - printf( "\tprach_config_index for CC %d:\t%jd:\n",j,enb_properties.properties[i]->prach_config_index[j]); + printf( "\tprach_root for CC %d:\t%ld:\n",j,enb_properties.properties[i]->prach_root[j]); + printf( "\tprach_config_index for CC %d:\t%ld:\n",j,enb_properties.properties[i]->prach_config_index[j]); printf( "\tprach_high_speed for CC %d:\t%d:\n",j,enb_properties.properties[i]->prach_high_speed[j]); - printf( "\tprach_zero_correlation for CC %d:\t%jd:\n",j,enb_properties.properties[i]->prach_zero_correlation[j]); - printf( "\tprach_freq_offset for CC %d:\t%jd:\n",j,enb_properties.properties[i]->prach_freq_offset[j]); + printf( "\tprach_zero_correlation for CC %d:\t%ld:\n",j,enb_properties.properties[i]->prach_zero_correlation[j]); + printf( "\tprach_freq_offset for CC %d:\t%ld:\n",j,enb_properties.properties[i]->prach_freq_offset[j]); // PDSCH-Config - printf( "\tpdsch_referenceSignalPower for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pdsch_referenceSignalPower[j]); - printf( "\tpdsch_p_b for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pdsch_p_b[j]); + printf( "\tpdsch_referenceSignalPower for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pdsch_referenceSignalPower[j]); + printf( "\tpdsch_p_b for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pdsch_p_b[j]); // PUSCH-Config - printf( "\tpusch_n_SB for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_n_SB[j]); - printf( "\tpusch_hoppingMode for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_hoppingMode[j]); - printf( "\tpusch_hoppingOffset for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_hoppingOffset[j]); + printf( "\tpusch_n_SB for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_n_SB[j]); + printf( "\tpusch_hoppingMode for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_hoppingMode[j]); + printf( "\tpusch_hoppingOffset for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_hoppingOffset[j]); printf( "\tpusch_enable64QAM for CC %d:\t%d:\n",j,enb_properties.properties[i]->pusch_enable64QAM[j]); printf( "\tpusch_groupHoppingEnabled for CC %d:\t%d:\n",j,enb_properties.properties[i]->pusch_groupHoppingEnabled[j]); - printf( "\tpusch_groupAssignment for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_groupAssignment[j]); + printf( "\tpusch_groupAssignment for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_groupAssignment[j]); printf( "\tpusch_sequenceHoppingEnabled for CC %d:\t%d:\n",j,enb_properties.properties[i]->pusch_sequenceHoppingEnabled[j]); - printf( "\tpusch_nDMRS1 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_nDMRS1[j]); + printf( "\tpusch_nDMRS1 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_nDMRS1[j]); // PUCCH-Config - printf( "\tpucch_delta_shift for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pucch_delta_shift[j]); - printf( "\tpucch_nRB_CQI for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pucch_nRB_CQI[j]); - printf( "\tpucch_nCS_AN for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pucch_nCS_AN[j]); + printf( "\tpucch_delta_shift for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pucch_delta_shift[j]); + printf( "\tpucch_nRB_CQI for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pucch_nRB_CQI[j]); + printf( "\tpucch_nCS_AN for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pucch_nCS_AN[j]); #ifndef Rel10 - printf( "\tpucch_n1_AN for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pucch_n1_AN[j]); + printf( "\tpucch_n1_AN for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pucch_n1_AN[j]); #endif // SRS Config printf( "\tsrs_enable for CC %d:\t%d:\n",j,enb_properties.properties[i]->srs_enable[j]); if (enb_properties.properties[i]->srs_enable[j]) { - printf( "\tsrs_BandwidthConfig for CC %d:\t%jd:\n",j,enb_properties.properties[i]->srs_BandwidthConfig[j]); - printf( "\tsrs_BandwidthConfig for CC %d:\t%jd:\n",j,enb_properties.properties[i]->srs_SubframeConfig[j]); + printf( "\tsrs_BandwidthConfig for CC %d:\t%ld:\n",j,enb_properties.properties[i]->srs_BandwidthConfig[j]); + printf( "\tsrs_BandwidthConfig for CC %d:\t%ld:\n",j,enb_properties.properties[i]->srs_SubframeConfig[j]); printf( "\tsrs_ackNackST for CC %d:\t%d:\n",j,enb_properties.properties[i]->srs_ackNackST[j]); printf( "\tsrs_MaxUpPts for CC %d:\t%d:\n",j,enb_properties.properties[i]->srs_MaxUpPts[j]); } // uplinkPowerControlCommon - printf( "\tpusch_p0_Nominal for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_p0_Nominal[j]); - printf( "\tpucch_p0_Nominal for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pucch_p0_Nominal[j]); - printf( "\tpusch_alpha for CC %d:\t%jd:\n",j,enb_properties.properties[i]->pusch_alpha[j]); + printf( "\tpusch_p0_Nominal for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_p0_Nominal[j]); + printf( "\tpucch_p0_Nominal for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pucch_p0_Nominal[j]); + printf( "\tpusch_alpha for CC %d:\t%ld:\n",j,enb_properties.properties[i]->pusch_alpha[j]); printf( "\tpucch_deltaF_Format1 for CC %d:\t%d:\n",j,enb_properties.properties[i]->pucch_deltaF_Format1[j]); printf( "\tpucch_deltaF_Format1b for CC %d:\t%d:\n",j,enb_properties.properties[i]->pucch_deltaF_Format1b[j]); printf( "\tpucch_deltaF_Format2 for CC %d:\t%d:\n",j,enb_properties.properties[i]->pucch_deltaF_Format2[j]); printf( "\tpucch_deltaF_Format2a for CC %d:\t%d:\n",j,enb_properties.properties[i]->pucch_deltaF_Format2a[j]); printf( "\tpucch_deltaF_Format2b for CC %d:\t%d:\n",j,enb_properties.properties[i]->pucch_deltaF_Format2b[j]); - printf( "\tmsg3_delta_Preamble for CC %d:\t%jd:\n",j,enb_properties.properties[i]->msg3_delta_Preamble[j]); - printf( "\tul_CyclicPrefixLength for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ul_CyclicPrefixLength[j]); + printf( "\tmsg3_delta_Preamble for CC %d:\t%ld:\n",j,enb_properties.properties[i]->msg3_delta_Preamble[j]); + printf( "\tul_CyclicPrefixLength for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ul_CyclicPrefixLength[j]); // UE Timers and Constants - printf( "\tue_TimersAndConstants_t300 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t300[j]); - printf( "\tue_TimersAndConstants_t301 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t301[j]); - printf( "\tue_TimersAndConstants_t310 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t310[j]); - printf( "\tue_TimersAndConstants_n310 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_n310[j]); - printf( "\tue_TimersAndConstants_t311 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t311[j]); - printf( "\tue_TimersAndConstants_n311 for CC %d:\t%jd:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_n311[j]); + printf( "\tue_TimersAndConstants_t300 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t300[j]); + printf( "\tue_TimersAndConstants_t301 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t301[j]); + printf( "\tue_TimersAndConstants_t310 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t310[j]); + printf( "\tue_TimersAndConstants_n310 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_n310[j]); + printf( "\tue_TimersAndConstants_t311 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_t311[j]); + printf( "\tue_TimersAndConstants_n311 for CC %d:\t%ld:\n",j,enb_properties.properties[i]->ue_TimersAndConstants_n311[j]); } for (j=0; j < enb_properties.properties[i]->num_otg_elements; j++){ - printf( "\n\tOTG Destination UE ID: \t%d", enb_properties.properties[i]->otg_ue_id[j]); - printf( "\n\tOTG App Type: \t%d", enb_properties.properties[i]->otg_app_type[j]); + printf( "\n\tOTG Destination UE ID: \t%"PRIu16, enb_properties.properties[i]->otg_ue_id[j]); + printf( "\n\tOTG App Type: \t%"PRIu8, enb_properties.properties[i]->otg_app_type[j]); printf( "\n\tOTG Background Traffic: \t%s\n", (enb_properties.properties[i]->otg_bg_traffic[j]==1) ? "Enabled" : "Disabled"); } @@ -457,7 +457,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { const char* frame_type; libconfig_int tdd_config; libconfig_int tdd_config_s; - const char* prefix_type; + const char* prefix_type = NULL; libconfig_int eutra_band; int64_t downlink_frequency; libconfig_int uplink_frequency_offset; @@ -470,7 +470,7 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { libconfig_int rx_gain; libconfig_int prach_root; libconfig_int prach_config_index; - const char* prach_high_speed; + const char* prach_high_speed = NULL; libconfig_int prach_zero_correlation; libconfig_int prach_freq_offset; libconfig_int pucch_delta_shift; @@ -482,12 +482,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { libconfig_int pdsch_referenceSignalPower; libconfig_int pdsch_p_b; libconfig_int pusch_n_SB; - const char * pusch_hoppingMode; + const char * pusch_hoppingMode = NULL; libconfig_int pusch_hoppingOffset; - const char* pusch_enable64QAM; - const char* pusch_groupHoppingEnabled; + const char* pusch_enable64QAM = NULL; + const char* pusch_groupHoppingEnabled = NULL; libconfig_int pusch_groupAssignment; - const char* pusch_sequenceHoppingEnabled; + const char* pusch_sequenceHoppingEnabled = NULL; libconfig_int pusch_nDMRS1; const char* phich_duration; const char* phich_resource; @@ -830,7 +830,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { - if (strcmp(prefix_type, "NORMAL") == 0) { + if (!prefix_type) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: NORMAL,EXTENDED!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PREFIX_TYPE); + else if (strcmp(prefix_type, "NORMAL") == 0) { enb_properties.properties[enb_properties_index]->prefix_type[j] = NORMAL; } else if (strcmp(prefix_type, "EXTENDED") == 0) { enb_properties.properties[enb_properties_index]->prefix_type[j] = EXTENDED; @@ -896,7 +900,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for prach_config_index choice: 0..1023 !\n", lib_config_file_name_pP, i, prach_config_index); - if (strcmp(prach_high_speed, "ENABLE") == 0) + if (!prach_high_speed) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PRACH_HIGH_SPEED); + else if (strcmp(prach_high_speed, "ENABLE") == 0) enb_properties.properties[enb_properties_index]->prach_high_speed[j] = TRUE; else if (strcmp(prach_high_speed, "DISABLE") == 0) enb_properties.properties[enb_properties_index]->prach_high_speed[j] = FALSE; @@ -958,7 +966,12 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { AssertError (0, parse_errors ++, "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_n_SB choice: 1..4!\n", lib_config_file_name_pP, i, pusch_n_SB); - if (strcmp(pusch_hoppingMode,"interSubFrame")==0) + + if (!pusch_hoppingMode) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: interSubframe,intraAndInterSubframe!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PUSCH_HOPPINGMODE); + else if (strcmp(pusch_hoppingMode,"interSubFrame")==0) enb_properties.properties[enb_properties_index]->pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_interSubFrame; else if (strcmp(pusch_hoppingMode,"intraAndInterSubFrame")==0) enb_properties.properties[enb_properties_index]->pusch_hoppingMode[j] = PUSCH_ConfigCommon__pusch_ConfigBasic__hoppingMode_intraAndInterSubFrame; @@ -973,7 +986,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_hoppingOffset choice: 0..98!\n", lib_config_file_name_pP, i, pusch_hoppingMode); - if (strcmp(pusch_enable64QAM, "ENABLE") == 0) + if (!pusch_enable64QAM) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PUSCH_ENABLE64QAM); + else if (strcmp(pusch_enable64QAM, "ENABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_enable64QAM[j] = TRUE; else if (strcmp(pusch_enable64QAM, "DISABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_enable64QAM[j] = FALSE; @@ -982,7 +999,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { "Failed to parse eNB configuration file %s, enb %d unknown value \"%s\" for pusch_enable64QAM choice: ENABLE,DISABLE!\n", lib_config_file_name_pP, i, pusch_enable64QAM); - if (strcmp(pusch_groupHoppingEnabled, "ENABLE") == 0) + if (!pusch_groupHoppingEnabled) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PUSCH_GROUP_HOPPING_EN); + else if (strcmp(pusch_groupHoppingEnabled, "ENABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_groupHoppingEnabled[j] = TRUE; else if (strcmp(pusch_groupHoppingEnabled, "DISABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_groupHoppingEnabled[j] = FALSE; @@ -998,7 +1019,11 @@ const Enb_properties_array_t *enb_config_init(char* lib_config_file_name_pP) { "Failed to parse eNB configuration file %s, enb %d unknown value \"%d\" for pusch_groupAssignment choice: 0..29!\n", lib_config_file_name_pP, i, pusch_groupAssignment); - if (strcmp(pusch_sequenceHoppingEnabled, "ENABLE") == 0) + if (!pusch_sequenceHoppingEnabled) + AssertError (0, parse_errors ++, + "Failed to parse eNB configuration file %s, enb %d define %s: ENABLE,DISABLE!\n", + lib_config_file_name_pP, i, ENB_CONFIG_STRING_PUSCH_SEQUENCE_HOPPING_EN); + else if (strcmp(pusch_sequenceHoppingEnabled, "ENABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_sequenceHoppingEnabled[j] = TRUE; else if (strcmp(pusch_sequenceHoppingEnabled, "DISABLE") == 0) enb_properties.properties[enb_properties_index]->pusch_sequenceHoppingEnabled[j] = FALSE; diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c index fedcf8df0036145a601183cb4f5b5859091194e4..652cc96b12ff1bb78471875643ded1e58a253c34 100644 --- a/targets/RT/USER/lte-softmodem.c +++ b/targets/RT/USER/lte-softmodem.c @@ -3403,7 +3403,7 @@ int main(int argc, char **argv) { openair0_cfg[card].tx_gain[i] = tx_gain[0][i]; openair0_cfg[card].rx_gain[i] = ((UE_flag==0) ? PHY_vars_eNB_g[0][0]->rx_total_gain_eNB_dB : - PHY_vars_UE_g[0][0]->rx_total_gain_dB) - 73; // calibrated for USRP B210 @ 2.6 GHz + PHY_vars_UE_g[0][0]->rx_total_gain_dB) - 73.0; // calibrated for USRP B210 @ 2.6 GHz openair0_cfg[card].tx_freq[i] = (UE_flag==0) ? downlink_frequency[0][i] : downlink_frequency[0][i]+uplink_frequency_offset[0][i]; openair0_cfg[card].rx_freq[i] = (UE_flag==0) ? downlink_frequency[0][i] + uplink_frequency_offset[0][i] : downlink_frequency[0][i]; printf("Setting tx_gain %f, rx_gain %f, tx_freq %f, rx_freq %f\n",