parametrized gains
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
|
|
||||||
/** iris_lib.cpp
|
/** iris_lib.cpp
|
||||||
*
|
*
|
||||||
* \author: Rahman Doost-Mohammady : doost@rice.edu
|
* \authors: Rahman Doost-Mohammady : doost@rice.edu
|
||||||
|
* Clay Shepard : cws@rice.edu
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
# include <immintrin.h>
|
# include <immintrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define MOVE_DC
|
||||||
#define SAMPLE_RATE_DOWN 1
|
#define SAMPLE_RATE_DOWN 1
|
||||||
|
|
||||||
/*! \brief Iris Configuration */
|
/*! \brief Iris Configuration */
|
||||||
@@ -595,7 +597,8 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (r = 0; r < s->device_num; r++) {
|
for (r = 0; r < s->device_num; r++) {
|
||||||
switch ((int) openair0_cfg[0].sample_rate) {
|
//this is unnecessary -- it will set the correct master clock based on sample rate
|
||||||
|
/*switch ((int) openair0_cfg[0].sample_rate) {
|
||||||
case 1920000:
|
case 1920000:
|
||||||
s->iris[r]->setMasterClockRate(256 * openair0_cfg[0].sample_rate);
|
s->iris[r]->setMasterClockRate(256 * openair0_cfg[0].sample_rate);
|
||||||
break;
|
break;
|
||||||
@@ -615,54 +618,34 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
|||||||
printf("Error: unknown sampling rate %f\n", openair0_cfg[0].sample_rate);
|
printf("Error: unknown sampling rate %f\n", openair0_cfg[0].sample_rate);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
// display Iris settings
|
|
||||||
printf("Actual master clock: %fMHz...\n", (s->iris[r]->getMasterClockRate() / 1e6));
|
|
||||||
|
|
||||||
/* Setting TX/RX BW after streamers are created due to iris calibration issue */
|
|
||||||
for (i = 0; i < s->tx_num_channels; i++) {
|
|
||||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
|
||||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0)
|
|
||||||
s->iris[r]->setBandwidth(SOAPY_SDR_TX, i, 30e6);
|
|
||||||
else
|
|
||||||
s->iris[r]->setBandwidth(SOAPY_SDR_TX, i, openair0_cfg[0].tx_bw);
|
|
||||||
|
|
||||||
printf("Setting tx bandwidth on channel %lu/%lu: BW %f (readback %f)\n", i,
|
|
||||||
s->iris[r]->getNumChannels(SOAPY_SDR_TX), openair0_cfg[0].tx_bw / 1e6,
|
|
||||||
s->iris[r]->getBandwidth(SOAPY_SDR_TX, i) / 1e6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (i = 0; i < s->rx_num_channels; i++) {
|
|
||||||
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
|
||||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0)
|
|
||||||
s->iris[r]->setBandwidth(SOAPY_SDR_TX, i, 30e6);
|
|
||||||
else
|
|
||||||
s->iris[r]->setBandwidth(SOAPY_SDR_RX, i, openair0_cfg[0].rx_bw);
|
|
||||||
printf("Setting rx bandwidth on channel %lu/%lu : BW %f (readback %f)\n", i,
|
|
||||||
s->iris[r]->getNumChannels(SOAPY_SDR_RX), openair0_cfg[0].rx_bw / 1e6,
|
|
||||||
s->iris[r]->getBandwidth(SOAPY_SDR_RX, i) / 1e6);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||||
if (i < s->rx_num_channels) {
|
if (i < s->rx_num_channels) {
|
||||||
s->iris[r]->setSampleRate(SOAPY_SDR_RX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
s->iris[r]->setSampleRate(SOAPY_SDR_RX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
||||||
|
#ifdef MOVE_DC
|
||||||
|
printf("Moving DC out of main carrier for rx...\n");
|
||||||
|
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", openair0_cfg[0].rx_freq[i]-.75*openair0_cfg[0].sample_rate);
|
||||||
|
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "BB", .75*openair0_cfg[0].sample_rate);
|
||||||
|
#else
|
||||||
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", openair0_cfg[0].rx_freq[i]);
|
s->iris[r]->setFrequency(SOAPY_SDR_RX, i, "RF", openair0_cfg[0].rx_freq[i]);
|
||||||
|
#endif
|
||||||
|
|
||||||
set_rx_gain_offset(&openair0_cfg[0], i, bw_gain_adjust);
|
set_rx_gain_offset(&openair0_cfg[0], i, bw_gain_adjust);
|
||||||
//s->iris[r]->setGain(SOAPY_SDR_RX, i, openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]);
|
//s->iris[r]->setGain(SOAPY_SDR_RX, i, openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]);
|
||||||
|
printf("rx gain offset: %f, rx_gain: %f, tx_tgain: %f\n", openair0_cfg[0].rx_gain_offset[i], openair0_cfg[0].rx_gain[i], openair0_cfg[0].tx_gain[i]);
|
||||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0) {
|
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0) {
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]);
|
||||||
//s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", 0);
|
//s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", 0);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA1", 30);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA1", 30);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA2", 17);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA2", 17);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "TIA", 0);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "TIA", 7);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "PGA", 0);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "PGA", 18);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "ATTN", 0);
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "ATTN", 0);
|
||||||
} else {
|
} else {
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]); // [0,30]
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "LNA", openair0_cfg[0].rx_gain[i] - openair0_cfg[0].rx_gain_offset[i]); // [0,30]
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "TIA", 0); // [0,12,6]
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "TIA", 7); // [0,12,6]
|
||||||
s->iris[r]->setGain(SOAPY_SDR_RX, i, "PGA", 0); // [-12,19,1]
|
s->iris[r]->setGain(SOAPY_SDR_RX, i, "PGA", 18); // [-12,19,1]
|
||||||
//s->iris[r]->setGain(SOAPY_SDR_RX, i, 50); // [-12,19,1]
|
//s->iris[r]->setGain(SOAPY_SDR_RX, i, 50); // [-12,19,1]
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -673,22 +656,29 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
|||||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||||
if (i < s->tx_num_channels) {
|
if (i < s->tx_num_channels) {
|
||||||
s->iris[r]->setSampleRate(SOAPY_SDR_TX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
s->iris[r]->setSampleRate(SOAPY_SDR_TX, i, openair0_cfg[0].sample_rate / SAMPLE_RATE_DOWN);
|
||||||
|
#ifdef MOVE_DC
|
||||||
|
printf("Moving DC out of main carrier for tx...\n");
|
||||||
|
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", openair0_cfg[0].tx_freq[i]-.75*openair0_cfg[0].sample_rate);
|
||||||
|
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "BB", .75*openair0_cfg[0].sample_rate);
|
||||||
|
#else
|
||||||
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", openair0_cfg[0].tx_freq[i]);
|
s->iris[r]->setFrequency(SOAPY_SDR_TX, i, "RF", openair0_cfg[0].tx_freq[i]);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) == 0) {
|
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) == 0) {
|
||||||
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", openair0_cfg[0].tx_gain[i]);
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", openair0_cfg[0].tx_gain[i]);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 52);
|
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 50);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "IAMP", 12);
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "IAMP", 12);
|
||||||
//s->iris[r]->writeSetting("TX_ENABLE_DELAY", "0");
|
//s->iris[r]->writeSetting("TX_ENABLE_DELAY", "0");
|
||||||
//s->iris[r]->writeSetting("TX_DISABLE_DELAY", "100");
|
//s->iris[r]->writeSetting("TX_DISABLE_DELAY", "100");
|
||||||
} else {
|
} else {
|
||||||
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", openair0_cfg[0].tx_gain[i]);
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "ATTN", 0); // [-18, 0, 6] dB
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "ATTN", 0); // [-18, 0, 6] dB
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "IAMP", 9); // [-12, 12, 1] dB
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "IAMP", 6); // [-12, 12, 1] dB
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 52); //openair0_cfg[0].tx_gain[i]);
|
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 44); //openair0_cfg[0].tx_gain[i]);
|
||||||
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 35); // [0, 52, 1] dB
|
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PAD", 35); // [0, 52, 1] dB
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA1", 9); // 17 ??? dB
|
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA1", 17); // 17 ??? dB
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA2", 0); // [0, 17, 17] dB
|
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA2", 0); // [0, 17, 17] dB
|
||||||
s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA3", 20); // 33 ??? dB
|
//s->iris[r]->setGain(SOAPY_SDR_TX, i, "PA3", 20); // 33 ??? dB
|
||||||
s->iris[r]->writeSetting("TX_ENABLE_DELAY", "0");
|
s->iris[r]->writeSetting("TX_ENABLE_DELAY", "0");
|
||||||
s->iris[r]->writeSetting("TX_DISABLE_DELAY", "100");
|
s->iris[r]->writeSetting("TX_DISABLE_DELAY", "100");
|
||||||
}
|
}
|
||||||
@@ -702,32 +692,47 @@ int device_init(openair0_device *device, openair0_config_t *openair0_cfg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
|
||||||
if (i < s->rx_num_channels) {
|
printf("Actual master clock: %fMHz...\n", (s->iris[r]->getMasterClockRate() / 1e6));
|
||||||
|
|
||||||
//if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0) {
|
int tx_filt_bw = openair0_cfg[0].tx_bw;
|
||||||
// printf("\nUsing SKLK calibration...\n");
|
int rx_filt_bw = openair0_cfg[0].rx_bw;
|
||||||
// s->iris[r]->writeSetting(SOAPY_SDR_RX, i, "CALIBRATE", "SKLK");
|
#ifdef MOVE_DC //the filter is centered around the carrier, so we have to expand it if we have moved the DC tone.
|
||||||
//} else {
|
tx_filt_bw *= 3;
|
||||||
// s->iris[r]->writeSetting(SOAPY_SDR_RX, i, "CALIBRATE", "");
|
rx_filt_bw *= 3;
|
||||||
// printf("\nUsing LMS calibration...\n");
|
#endif
|
||||||
|
/* Setting TX/RX BW */
|
||||||
//}
|
for (i = 0; i < s->tx_num_channels; i++) {
|
||||||
|
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX)) {
|
||||||
|
s->iris[r]->setBandwidth(SOAPY_SDR_TX, i, tx_filt_bw);
|
||||||
|
printf("Setting tx bandwidth on channel %lu/%lu: BW %f (readback %f)\n", i,
|
||||||
|
s->iris[r]->getNumChannels(SOAPY_SDR_TX), tx_filt_bw / 1e6,
|
||||||
|
s->iris[r]->getBandwidth(SOAPY_SDR_TX, i) / 1e6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (i = 0; i < s->rx_num_channels; i++) {
|
||||||
|
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX)) {
|
||||||
|
s->iris[r]->setBandwidth(SOAPY_SDR_RX, i, rx_filt_bw);
|
||||||
|
printf("Setting rx bandwidth on channel %lu/%lu : BW %f (readback %f)\n", i,
|
||||||
|
s->iris[r]->getNumChannels(SOAPY_SDR_RX), rx_filt_bw / 1e6,
|
||||||
|
s->iris[r]->getBandwidth(SOAPY_SDR_RX, i) / 1e6);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_TX); i++) {
|
||||||
if (i < s->tx_num_channels) {
|
if (i < s->tx_num_channels) {
|
||||||
|
printf("\nUsing SKLK calibration...\n");
|
||||||
|
s->iris[r]->writeSetting(SOAPY_SDR_TX, i, "CALIBRATE", "SKLK");
|
||||||
|
|
||||||
if (s->iris[r]->getHardwareInfo()["frontend"].compare(devFE) != 0) {
|
}
|
||||||
printf("\nUsing SKLK calibration...\n");
|
|
||||||
s->iris[r]->writeSetting(SOAPY_SDR_TX, i, "CALIBRATE", "SKLK");
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < s->iris[r]->getNumChannels(SOAPY_SDR_RX); i++) {
|
||||||
|
if (i < s->rx_num_channels) {
|
||||||
|
printf("\nUsing SKLK calibration...\n");
|
||||||
|
s->iris[r]->writeSetting(SOAPY_SDR_RX, i, "CALIBRATE", "SKLK");
|
||||||
|
|
||||||
} else {
|
|
||||||
printf("\nUsing LMS calibration...\n");
|
|
||||||
s->iris[r]->writeSetting(SOAPY_SDR_TX, i, "CALIBRATE", "");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,264 @@
|
|||||||
|
Active_eNBs = ( "eNB_Eurecom_LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
|
eNB_name = "eNB_Eurecom_LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = 1;
|
||||||
|
|
||||||
|
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
|
||||||
|
|
||||||
|
tr_s_preference = "local_mac"
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "eNodeB_3GPP";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
frame_type = "TDD";
|
||||||
|
tdd_config = 1;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 42;
|
||||||
|
downlink_frequency = 3500000000L;
|
||||||
|
uplink_frequency_offset = 0;
|
||||||
|
Nid_cell = 10;
|
||||||
|
N_RB_DL = 25;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
tx_gain = 48; # [~50 for DEV-FE, ~30 for CBRS-FE]
|
||||||
|
rx_gain = 80; # [115 for DEV-FE, 90 for CBRS-FE]
|
||||||
|
pbch_repetition = "FALSE";
|
||||||
|
prach_root = 0;
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 1;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 32;
|
||||||
|
pdsch_referenceSignalPower = -30;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/* srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -70;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -96;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -96;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
|
||||||
|
//Parameters for SIB18
|
||||||
|
rxPool_sc_CP_Len = "normal";
|
||||||
|
rxPool_sc_Period = "sf40";
|
||||||
|
rxPool_data_CP_Len = "normal";
|
||||||
|
rxPool_ResourceConfig_prb_Num = 20;
|
||||||
|
rxPool_ResourceConfig_prb_Start = 5;
|
||||||
|
rxPool_ResourceConfig_prb_End = 44;
|
||||||
|
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
|
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
|
/* rxPool_dataHoppingConfig_hoppingParameter = 0;
|
||||||
|
rxPool_dataHoppingConfig_numSubbands = "ns1";
|
||||||
|
rxPool_dataHoppingConfig_rbOffset = 0;
|
||||||
|
rxPool_commTxResourceUC-ReqAllowed = "TRUE";
|
||||||
|
*/
|
||||||
|
// Parameters for SIB19
|
||||||
|
discRxPool_cp_Len = "normal"
|
||||||
|
discRxPool_discPeriod = "rf32"
|
||||||
|
discRxPool_numRetx = 1;
|
||||||
|
discRxPool_numRepetition = 2;
|
||||||
|
discRxPool_ResourceConfig_prb_Num = 5;
|
||||||
|
discRxPool_ResourceConfig_prb_Start = 3;
|
||||||
|
discRxPool_ResourceConfig_prb_End = 21;
|
||||||
|
discRxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
|
discRxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff";
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
|
discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "127.0.0.20";
|
||||||
|
ipv6 = "fe80::d65d:dfff:fe1d:f4d4";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eno1";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.10/8";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "enp5s0";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.10/8";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
|
||||||
|
ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.10/8";
|
||||||
|
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
MACRLCs = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_s_preference = "local_L1";
|
||||||
|
tr_n_preference = "local_RRC";
|
||||||
|
phy_test_mode = 0;
|
||||||
|
puSch10xSnr = 200;
|
||||||
|
puCch10xSnr = 200;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
L1s = (
|
||||||
|
{
|
||||||
|
num_cc = 1;
|
||||||
|
tr_n_preference = "local_mac";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
RUs = (
|
||||||
|
{
|
||||||
|
local_rf = "yes"
|
||||||
|
nb_tx = 1;
|
||||||
|
nb_rx = 1;
|
||||||
|
att_tx = 44; #apparently this is being used as tx_gain...
|
||||||
|
att_rx = 0; #apparently max_rxgain - att_rx -83 is what is used for rx_gain (at least for 5 MHz)
|
||||||
|
bands = [7];
|
||||||
|
max_pdschReferenceSignalPower = -27;
|
||||||
|
max_rxgain = 107;
|
||||||
|
eNB_instances = [0];
|
||||||
|
#sdr_addrs = "RF3E000025";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_CONTROLLER :
|
||||||
|
{
|
||||||
|
FLEXRAN_ENABLED = "no";
|
||||||
|
FLEXRAN_INTERFACE_NAME = "lo";
|
||||||
|
FLEXRAN_IPV4_ADDRESS = "127.0.0.1";
|
||||||
|
FLEXRAN_PORT = 2210;
|
||||||
|
FLEXRAN_CACHE = "/mnt/oai_agent_cache";
|
||||||
|
FLEXRAN_AWAIT_RECONF = "no";
|
||||||
|
};
|
||||||
|
|
||||||
|
THREAD_STRUCT = (
|
||||||
|
{
|
||||||
|
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||||
|
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||||
|
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||||
|
worker_config = "WORKER_ENABLE";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
|
||||||
Reference in New Issue
Block a user