Merge remote-tracking branch 'origin/add-ru-docker-image' into integration_2021_wk22
This commit is contained in:
@@ -150,6 +150,8 @@ class Containerize():
|
|||||||
imageNames.append(('oai-nr-ue', 'nrUE'))
|
imageNames.append(('oai-nr-ue', 'nrUE'))
|
||||||
if self.host == 'Red Hat':
|
if self.host == 'Red Hat':
|
||||||
imageNames.append(('oai-physim', 'phySim'))
|
imageNames.append(('oai-physim', 'phySim'))
|
||||||
|
if self.host == 'Ubuntu':
|
||||||
|
imageNames.append(('oai-lte-ru', 'lteRU'))
|
||||||
if len(imageNames) == 0:
|
if len(imageNames) == 0:
|
||||||
imageNames.append(('oai-enb', 'eNB'))
|
imageNames.append(('oai-enb', 'eNB'))
|
||||||
|
|
||||||
|
|||||||
@@ -19,54 +19,54 @@ eNBs =
|
|||||||
tracking_area_code = 1;
|
tracking_area_code = 1;
|
||||||
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
|
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } );
|
||||||
|
|
||||||
////////// Physical parameters:
|
////////// Physical parameters:
|
||||||
|
|
||||||
component_carriers = (
|
component_carriers = (
|
||||||
{
|
{
|
||||||
node_function = "NGFI_RCC_IF4p5";
|
node_function = "NGFI_RCC_IF4p5";
|
||||||
node_timing = "synch_to_ext_device";
|
node_timing = "synch_to_ext_device";
|
||||||
node_synch_ref = 0;
|
node_synch_ref = 0;
|
||||||
frame_type = "TDD";
|
frame_type = "TDD";
|
||||||
tdd_config = 1;
|
tdd_config = 1;
|
||||||
tdd_config_s = 0;
|
tdd_config_s = 0;
|
||||||
prefix_type = "NORMAL";
|
prefix_type = "NORMAL";
|
||||||
eutra_band = 40;
|
eutra_band = 40;
|
||||||
downlink_frequency = 2350000000L;
|
downlink_frequency = 2350000000L;
|
||||||
uplink_frequency_offset = 0;
|
uplink_frequency_offset = 0;
|
||||||
Nid_cell = 0;
|
Nid_cell = 0;
|
||||||
N_RB_DL = 25;
|
N_RB_DL = 25;
|
||||||
Nid_cell_mbsfn = 0;
|
Nid_cell_mbsfn = 0;
|
||||||
nb_antenna_ports = 1;
|
nb_antenna_ports = 1;
|
||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 1;
|
||||||
nb_antennas_rx = 1;
|
nb_antennas_rx = 1;
|
||||||
tx_gain = 90;
|
tx_gain = 90;
|
||||||
rx_gain = 125;
|
rx_gain = 125;
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
prach_config_index = 0;
|
prach_config_index = 0;
|
||||||
prach_high_speed = "DISABLE";
|
prach_high_speed = "DISABLE";
|
||||||
prach_zero_correlation = 1;
|
prach_zero_correlation = 1;
|
||||||
prach_freq_offset = 2;
|
prach_freq_offset = 2;
|
||||||
pucch_delta_shift = 1;
|
pucch_delta_shift = 1;
|
||||||
pucch_nRB_CQI = 1;
|
pucch_nRB_CQI = 1;
|
||||||
pucch_nCS_AN = 0;
|
pucch_nCS_AN = 0;
|
||||||
pucch_n1_AN = 0;
|
pucch_n1_AN = 0;
|
||||||
pdsch_referenceSignalPower =-27;
|
pdsch_referenceSignalPower =-27;
|
||||||
pdsch_p_b = 0;
|
pdsch_p_b = 0;
|
||||||
pusch_n_SB = 1;
|
pusch_n_SB = 1;
|
||||||
pusch_enable64QAM = "DISABLE";
|
pusch_enable64QAM = "DISABLE";
|
||||||
pusch_hoppingMode = "interSubFrame";
|
pusch_hoppingMode = "interSubFrame";
|
||||||
pusch_hoppingOffset = 0;
|
pusch_hoppingOffset = 0;
|
||||||
pusch_groupHoppingEnabled = "ENABLE";
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
pusch_groupAssignment = 0;
|
pusch_groupAssignment = 0;
|
||||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
pusch_nDMRS1 = 1;
|
pusch_nDMRS1 = 1;
|
||||||
phich_duration = "NORMAL";
|
phich_duration = "NORMAL";
|
||||||
phich_resource = "ONESIXTH";
|
phich_resource = "ONESIXTH";
|
||||||
srs_enable = "DISABLE";
|
srs_enable = "DISABLE";
|
||||||
/* srs_BandwidthConfig =;
|
/* srs_BandwidthConfig =;
|
||||||
srs_SubframeConfig =;
|
srs_SubframeConfig =;
|
||||||
srs_ackNackST =;
|
srs_ackNackST =;
|
||||||
srs_MaxUpPts =;*/
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
pusch_p0_Nominal = -96;
|
pusch_p0_Nominal = -96;
|
||||||
pusch_alpha = "AL1";
|
pusch_alpha = "AL1";
|
||||||
@@ -76,7 +76,7 @@ eNBs =
|
|||||||
pucch_deltaF_Format1b = "deltaF3";
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
pucch_deltaF_Format2 = "deltaF0";
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
pucch_deltaF_Format2a = "deltaF0";
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
pucch_deltaF_Format2b = "deltaF0";
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
rach_numberOfRA_Preambles = 64;
|
rach_numberOfRA_Preambles = 64;
|
||||||
rach_preamblesGroupAConfig = "DISABLE";
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
@@ -92,17 +92,17 @@ eNBs =
|
|||||||
rach_macContentionResolutionTimer = 48;
|
rach_macContentionResolutionTimer = 48;
|
||||||
rach_maxHARQ_Msg3Tx = 4;
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
pcch_default_PagingCycle = 128;
|
pcch_default_PagingCycle = 128;
|
||||||
pcch_nB = "oneT";
|
pcch_nB = "oneT";
|
||||||
bcch_modificationPeriodCoeff = 2;
|
bcch_modificationPeriodCoeff = 2;
|
||||||
ue_TimersAndConstants_t300 = 1000;
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
ue_TimersAndConstants_t301 = 1000;
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
ue_TimersAndConstants_t310 = 1000;
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
ue_TimersAndConstants_t311 = 10000;
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
ue_TimersAndConstants_n310 = 20;
|
ue_TimersAndConstants_n310 = 20;
|
||||||
ue_TimersAndConstants_n311 = 1;
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
|
||||||
ue_TransmissionMode = 1;
|
ue_TransmissionMode = 1;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -148,7 +148,7 @@ eNBs =
|
|||||||
enable_measurement_reports = "no";
|
enable_measurement_reports = "no";
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "no";
|
enable_x2 = "no";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
@@ -186,41 +186,41 @@ eNBs =
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
MACRLCs = (
|
MACRLCs = (
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_s_preference = "local_L1";
|
tr_s_preference = "local_L1";
|
||||||
tr_n_preference = "local_RRC";
|
tr_n_preference = "local_RRC";
|
||||||
scheduler_mode = "fairRR";
|
scheduler_mode = "fairRR";
|
||||||
puSch10xSnr = 200;
|
puSch10xSnr = 200;
|
||||||
puCch10xSnr = 200;
|
puCch10xSnr = 200;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
L1s = (
|
L1s = (
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_n_preference = "local_mac";
|
tr_n_preference = "local_mac";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
RUs = (
|
RUs = (
|
||||||
{
|
{
|
||||||
local_if_name = "lo";
|
local_if_name = "lo";
|
||||||
remote_address = "127.0.0.2";
|
remote_address = "127.0.0.2";
|
||||||
local_address = "127.0.0.1";
|
local_address = "127.0.0.1";
|
||||||
local_portc = 50000;
|
local_portc = 50000;
|
||||||
remote_portc = 50000;
|
remote_portc = 50000;
|
||||||
local_portd = 50001;
|
local_portd = 50001;
|
||||||
remote_portd = 50001;
|
remote_portd = 50001;
|
||||||
local_rf = "no"
|
local_rf = "no"
|
||||||
tr_preference = "udp_if4p5"
|
tr_preference = "udp_if4p5"
|
||||||
nb_tx = 1
|
nb_tx = 1
|
||||||
nb_rx = 1
|
nb_rx = 1
|
||||||
att_tx = 0
|
att_tx = 0
|
||||||
att_rx = 0;
|
att_rx = 0;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
THREAD_STRUCT = (
|
THREAD_STRUCT = (
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,51 +25,51 @@ eNBs =
|
|||||||
|
|
||||||
component_carriers = (
|
component_carriers = (
|
||||||
{
|
{
|
||||||
node_function = "NGFI_RCC_IF4p5";
|
node_function = "NGFI_RCC_IF4p5";
|
||||||
node_timing = "synch_to_ext_device";
|
node_timing = "synch_to_ext_device";
|
||||||
node_synch_ref = 0;
|
node_synch_ref = 0;
|
||||||
frame_type = "FDD";
|
frame_type = "FDD";
|
||||||
tdd_config = 3;
|
tdd_config = 3;
|
||||||
tdd_config_s = 0;
|
tdd_config_s = 0;
|
||||||
prefix_type = "NORMAL";
|
prefix_type = "NORMAL";
|
||||||
eutra_band = 7;
|
eutra_band = 7;
|
||||||
downlink_frequency = 2680000000L;
|
downlink_frequency = 2680000000L;
|
||||||
uplink_frequency_offset = -120000000;
|
uplink_frequency_offset = -120000000;
|
||||||
Nid_cell = 0;
|
Nid_cell = 0;
|
||||||
N_RB_DL = 25;
|
N_RB_DL = 25;
|
||||||
Nid_cell_mbsfn = 0;
|
Nid_cell_mbsfn = 0;
|
||||||
nb_antenna_ports = 1;
|
nb_antenna_ports = 1;
|
||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 1;
|
||||||
nb_antennas_rx = 1;
|
nb_antennas_rx = 1;
|
||||||
tx_gain = 90;
|
tx_gain = 90;
|
||||||
rx_gain = 125;
|
rx_gain = 125;
|
||||||
pbch_repetition = "FALSE";
|
pbch_repetition = "FALSE";
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
prach_config_index = 0;
|
prach_config_index = 0;
|
||||||
prach_high_speed = "DISABLE";
|
prach_high_speed = "DISABLE";
|
||||||
prach_zero_correlation = 1;
|
prach_zero_correlation = 1;
|
||||||
prach_freq_offset = 2;
|
prach_freq_offset = 2;
|
||||||
pucch_delta_shift = 1;
|
pucch_delta_shift = 1;
|
||||||
pucch_nRB_CQI = 0;
|
pucch_nRB_CQI = 0;
|
||||||
pucch_nCS_AN = 0;
|
pucch_nCS_AN = 0;
|
||||||
pucch_n1_AN = 0;
|
pucch_n1_AN = 0;
|
||||||
pdsch_referenceSignalPower = -25;
|
pdsch_referenceSignalPower = -25;
|
||||||
pdsch_p_b = 0;
|
pdsch_p_b = 0;
|
||||||
pusch_n_SB = 1;
|
pusch_n_SB = 1;
|
||||||
pusch_enable64QAM = "DISABLE";
|
pusch_enable64QAM = "DISABLE";
|
||||||
pusch_hoppingMode = "interSubFrame";
|
pusch_hoppingMode = "interSubFrame";
|
||||||
pusch_hoppingOffset = 0;
|
pusch_hoppingOffset = 0;
|
||||||
pusch_groupHoppingEnabled = "ENABLE";
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
pusch_groupAssignment = 0;
|
pusch_groupAssignment = 0;
|
||||||
pusch_sequenceHoppingEnabled = "DISABLE";
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
pusch_nDMRS1 = 1;
|
pusch_nDMRS1 = 1;
|
||||||
phich_duration = "NORMAL";
|
phich_duration = "NORMAL";
|
||||||
phich_resource = "ONESIXTH";
|
phich_resource = "ONESIXTH";
|
||||||
srs_enable = "DISABLE";
|
srs_enable = "DISABLE";
|
||||||
/* srs_BandwidthConfig =;
|
/* srs_BandwidthConfig =;
|
||||||
srs_SubframeConfig =;
|
srs_SubframeConfig =;
|
||||||
srs_ackNackST =;
|
srs_ackNackST =;
|
||||||
srs_MaxUpPts =;*/
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
pusch_p0_Nominal = -96;
|
pusch_p0_Nominal = -96;
|
||||||
pusch_alpha = "AL1";
|
pusch_alpha = "AL1";
|
||||||
@@ -79,7 +79,7 @@ eNBs =
|
|||||||
pucch_deltaF_Format1b = "deltaF3";
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
pucch_deltaF_Format2 = "deltaF0";
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
pucch_deltaF_Format2a = "deltaF0";
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
pucch_deltaF_Format2b = "deltaF0";
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
rach_numberOfRA_Preambles = 64;
|
rach_numberOfRA_Preambles = 64;
|
||||||
rach_preamblesGroupAConfig = "DISABLE";
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
@@ -97,25 +97,25 @@ eNBs =
|
|||||||
|
|
||||||
pcch_default_PagingCycle = 128;
|
pcch_default_PagingCycle = 128;
|
||||||
pcch_nB = "oneT";
|
pcch_nB = "oneT";
|
||||||
bcch_modificationPeriodCoeff = 2;
|
bcch_modificationPeriodCoeff = 2;
|
||||||
ue_TimersAndConstants_t300 = 1000;
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
ue_TimersAndConstants_t301 = 1000;
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
ue_TimersAndConstants_t310 = 1000;
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
ue_TimersAndConstants_t311 = 10000;
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
ue_TimersAndConstants_n310 = 20;
|
ue_TimersAndConstants_n310 = 20;
|
||||||
ue_TimersAndConstants_n311 = 1;
|
ue_TimersAndConstants_n311 = 1;
|
||||||
ue_TransmissionMode = 1;
|
ue_TransmissionMode = 1;
|
||||||
|
|
||||||
//Parameters for SIB18
|
//Parameters for SIB18
|
||||||
rxPool_sc_CP_Len = "normal";
|
rxPool_sc_CP_Len = "normal";
|
||||||
rxPool_sc_Period = "sf40";
|
rxPool_sc_Period = "sf40";
|
||||||
rxPool_data_CP_Len = "normal";
|
rxPool_data_CP_Len = "normal";
|
||||||
rxPool_ResourceConfig_prb_Num = 20;
|
rxPool_ResourceConfig_prb_Num = 20;
|
||||||
rxPool_ResourceConfig_prb_Start = 5;
|
rxPool_ResourceConfig_prb_Start = 5;
|
||||||
rxPool_ResourceConfig_prb_End = 44;
|
rxPool_ResourceConfig_prb_End = 44;
|
||||||
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
rxPool_ResourceConfig_offsetIndicator_present = "prSmall";
|
||||||
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
rxPool_ResourceConfig_offsetIndicator_choice = 0;
|
||||||
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
rxPool_ResourceConfig_subframeBitmap_present = "prBs40";
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000";
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5;
|
||||||
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0;
|
||||||
@@ -185,7 +185,7 @@ eNBs =
|
|||||||
enable_measurement_reports = "no";
|
enable_measurement_reports = "no";
|
||||||
|
|
||||||
///X2
|
///X2
|
||||||
enable_x2 = "no";
|
enable_x2 = "no";
|
||||||
t_reloc_prep = 1000; /* unit: millisecond */
|
t_reloc_prep = 1000; /* unit: millisecond */
|
||||||
tx2_reloc_overall = 2000; /* unit: millisecond */
|
tx2_reloc_overall = 2000; /* unit: millisecond */
|
||||||
t_dc_prep = 1000; /* unit: millisecond */
|
t_dc_prep = 1000; /* unit: millisecond */
|
||||||
@@ -205,21 +205,21 @@ eNBs =
|
|||||||
);
|
);
|
||||||
|
|
||||||
MACRLCs = (
|
MACRLCs = (
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_s_preference = "local_L1";
|
tr_s_preference = "local_L1";
|
||||||
tr_n_preference = "local_RRC";
|
tr_n_preference = "local_RRC";
|
||||||
phy_test_mode = 0;
|
phy_test_mode = 0;
|
||||||
puSch10xSnr = 160;
|
puSch10xSnr = 160;
|
||||||
puCch10xSnr = 160;
|
puCch10xSnr = 160;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
L1s = (
|
L1s = (
|
||||||
{
|
{
|
||||||
num_cc = 1;
|
num_cc = 1;
|
||||||
tr_n_preference = "local_mac";
|
tr_n_preference = "local_mac";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
RUs = (
|
RUs = (
|
||||||
@@ -260,20 +260,20 @@ NETWORK_CONTROLLER :
|
|||||||
FLEXRAN_AWAIT_RECONF = "no";
|
FLEXRAN_AWAIT_RECONF = "no";
|
||||||
};
|
};
|
||||||
|
|
||||||
log_config :
|
log_config :
|
||||||
{
|
{
|
||||||
global_log_level ="info";
|
global_log_level ="info";
|
||||||
global_log_verbosity ="medium";
|
global_log_verbosity ="medium";
|
||||||
hw_log_level ="info";
|
hw_log_level ="info";
|
||||||
hw_log_verbosity ="medium";
|
hw_log_verbosity ="medium";
|
||||||
phy_log_level ="info";
|
phy_log_level ="info";
|
||||||
phy_log_verbosity ="medium";
|
phy_log_verbosity ="medium";
|
||||||
mac_log_level ="info";
|
mac_log_level ="info";
|
||||||
mac_log_verbosity ="high";
|
mac_log_verbosity ="high";
|
||||||
rlc_log_level ="info";
|
rlc_log_level ="info";
|
||||||
rlc_log_verbosity ="medium";
|
rlc_log_verbosity ="medium";
|
||||||
pdcp_log_level ="info";
|
pdcp_log_level ="info";
|
||||||
pdcp_log_verbosity ="medium";
|
pdcp_log_verbosity ="medium";
|
||||||
rrc_log_level ="info";
|
rrc_log_level ="info";
|
||||||
rrc_log_verbosity ="medium";
|
rrc_log_verbosity ="medium";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,99 @@
|
|||||||
|
#/*
|
||||||
|
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
# * contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# * this work for additional information regarding copyright ownership.
|
||||||
|
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
# * except in compliance with the License.
|
||||||
|
# * You may obtain a copy of the License at
|
||||||
|
# *
|
||||||
|
# * http://www.openairinterface.org/?page_id=698
|
||||||
|
# *
|
||||||
|
# * Unless required by applicable law or agreed to in writing, software
|
||||||
|
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# * See the License for the specific language governing permissions and
|
||||||
|
# * limitations under the License.
|
||||||
|
# *-------------------------------------------------------------------------------
|
||||||
|
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
# * contact@openairinterface.org
|
||||||
|
# */
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Dockerfile for the Open-Air-Interface BUILD service
|
||||||
|
# Valid for RHEL8
|
||||||
|
#
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
FROM ran-build:latest AS ru-build
|
||||||
|
|
||||||
|
RUN rm -Rf /oai-ran
|
||||||
|
WORKDIR /oai-ran
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
#run build_oai to build the target image
|
||||||
|
RUN /bin/sh oaienv && \
|
||||||
|
cd cmake_targets && \
|
||||||
|
mkdir -p log && \
|
||||||
|
./build_oai --RU --ninja -w USRP --verbose-ci
|
||||||
|
|
||||||
|
RUN yum install -y python3-pip && \
|
||||||
|
pip3 install --ignore-installed pyyaml && \
|
||||||
|
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml
|
||||||
|
|
||||||
|
#start from scratch for target executable
|
||||||
|
FROM registry.access.redhat.com/ubi8/ubi:latest as oai-lte-ru
|
||||||
|
ENV TZ=Europe/Paris
|
||||||
|
|
||||||
|
RUN yum update -y && \
|
||||||
|
yum install -y --enablerepo="ubi-8-codeready-builder" \
|
||||||
|
tzdata \
|
||||||
|
atlas \
|
||||||
|
net-tools \
|
||||||
|
iputils \
|
||||||
|
iproute && \
|
||||||
|
echo "/usr/local/lib" > /etc/ld.so.conf.d/local-lib.conf && \
|
||||||
|
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/local-lib.conf
|
||||||
|
|
||||||
|
WORKDIR /opt/oai-lte-ru/bin
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/oairu.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/docker/scripts/lte_ru_entrypoint.sh entrypoint.sh
|
||||||
|
|
||||||
|
WORKDIR /usr/local/lib/
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so .
|
||||||
|
COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
|
||||||
|
|
||||||
|
# Copying from the ran-build image the USRP needed packages
|
||||||
|
COPY --from=ru-build /lib64/libconfig.so.9 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libblas.so.3 /lib64
|
||||||
|
COPY --from=ru-build /lib64/liblapack.so.3 /lib64
|
||||||
|
COPY --from=ru-build /lib64/liblapacke.so.3 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_chrono.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_date_time.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_filesystem.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_program_options.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_serialization.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_thread.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_system.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_unit_test_framework.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_atomic.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /lib64/libboost_timer.so.1.66.0 /lib64
|
||||||
|
COPY --from=ru-build /usr/local/lib64/libuhd.so.4.0.0 /usr/local/lib64
|
||||||
|
|
||||||
|
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
|
||||||
|
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
|
||||||
|
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
|
||||||
|
ldconfig
|
||||||
|
|
||||||
|
# Copy the relevant configuration files for RRU
|
||||||
|
WORKDIR /opt/oai-lte-ru/etc
|
||||||
|
COPY --from=ru-build /oai-ran/docker/etc/rru* ./
|
||||||
|
|
||||||
|
WORKDIR /opt/oai-lte-ru
|
||||||
|
|
||||||
|
ENTRYPOINT ["/opt/oai-lte-ru/bin/entrypoint.sh"]
|
||||||
|
CMD ["/opt/oai-lte-ru/bin/oairu.Rel15", "-O", "/opt/oai-lte-ru/etc/rru.conf"]
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
#/*
|
||||||
|
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||||
|
# * contributor license agreements. See the NOTICE file distributed with
|
||||||
|
# * this work for additional information regarding copyright ownership.
|
||||||
|
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||||
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||||
|
# * except in compliance with the License.
|
||||||
|
# * You may obtain a copy of the License at
|
||||||
|
# *
|
||||||
|
# * http://www.openairinterface.org/?page_id=698
|
||||||
|
# *
|
||||||
|
# * Unless required by applicable law or agreed to in writing, software
|
||||||
|
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# * See the License for the specific language governing permissions and
|
||||||
|
# * limitations under the License.
|
||||||
|
# *-------------------------------------------------------------------------------
|
||||||
|
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||||
|
# * contact@openairinterface.org
|
||||||
|
# */
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Dockerfile for the Open-Air-Interface BUILD service
|
||||||
|
# Valid for Ubuntu 18.04
|
||||||
|
#
|
||||||
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
|
FROM ran-build:latest AS ru-build
|
||||||
|
|
||||||
|
RUN rm -Rf /oai-ran
|
||||||
|
WORKDIR /oai-ran
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
#run build_oai to build the target image
|
||||||
|
RUN /bin/sh oaienv && \
|
||||||
|
cd cmake_targets && \
|
||||||
|
mkdir -p log && \
|
||||||
|
./build_oai --RU --ninja -w USRP --verbose-ci
|
||||||
|
|
||||||
|
RUN apt-get install -y python3-pip && \
|
||||||
|
pip3 install --ignore-installed pyyaml && \
|
||||||
|
python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml
|
||||||
|
|
||||||
|
#start from scratch for target executable
|
||||||
|
FROM ubuntu:bionic as oai-lte-ru
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
ENV TZ=Europe/Paris
|
||||||
|
|
||||||
|
RUN apt-get update && \
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
|
tzdata \
|
||||||
|
software-properties-common \
|
||||||
|
libblas3 \
|
||||||
|
libatlas3-base \
|
||||||
|
libconfig9 \
|
||||||
|
net-tools \
|
||||||
|
iputils-ping \
|
||||||
|
iproute2 && \
|
||||||
|
# Install UHD driver from ettus ppa
|
||||||
|
# At time of writing, it is 3.14
|
||||||
|
add-apt-repository ppa:ettusresearch/uhd --yes && \
|
||||||
|
apt-get update && \
|
||||||
|
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||||
|
python \
|
||||||
|
libusb-1.0-0 \
|
||||||
|
libuhd003 \
|
||||||
|
uhd-host && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /opt/oai-lte-ru/bin
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/oairu.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/docker/scripts/lte_ru_entrypoint.sh entrypoint.sh
|
||||||
|
|
||||||
|
WORKDIR /usr/local/lib/
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/librfsimulator.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 .
|
||||||
|
COPY --from=ru-build /oai-ran/targets/bin/libparams_libconfig.so .
|
||||||
|
COPY --from=ru-build /oai-ran/cmake_targets/ran_build/build/libdfts.so .
|
||||||
|
RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" && \
|
||||||
|
/bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" && \
|
||||||
|
/bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" && \
|
||||||
|
ldconfig
|
||||||
|
|
||||||
|
# Copy the relevant configuration files for RRU
|
||||||
|
WORKDIR /opt/oai-lte-ru/etc
|
||||||
|
COPY --from=ru-build /oai-ran/docker/etc/rru* ./
|
||||||
|
|
||||||
|
WORKDIR /opt/oai-lte-ru
|
||||||
|
|
||||||
|
ENTRYPOINT ["/opt/oai-lte-ru/bin/entrypoint.sh"]
|
||||||
|
CMD ["/opt/oai-lte-ru/bin/oairu.Rel15", "-O", "/opt/oai-lte-ru/etc/rru.conf"]
|
||||||
@@ -11,6 +11,8 @@ if [[ -v USE_FDD_DU ]]; then ln -s $PREFIX/etc/du.fdd.conf $PREFIX/etc/enb.conf;
|
|||||||
if [[ -v USE_FDD_MONO ]]; then ln -s $PREFIX/etc/enb.fdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_FDD_MONO ]]; then ln -s $PREFIX/etc/enb.fdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
if [[ -v USE_TDD_MONO ]]; then ln -s $PREFIX/etc/enb.tdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_TDD_MONO ]]; then ln -s $PREFIX/etc/enb.tdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
if [[ -v USE_FDD_FAPI_RCC ]]; then ln -s $PREFIX/etc/rcc.nfapi.fdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_FDD_FAPI_RCC ]]; then ln -s $PREFIX/etc/rcc.nfapi.fdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
|
if [[ -v USE_FDD_IF4P5_RCC ]]; then ln -s $PREFIX/etc/rcc.if4p5.fdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
|
if [[ -v USE_TDD_IF4P5_RCC ]]; then ln -s $PREFIX/etc/rcc.if4p5.tdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
if [[ -v USE_FDD_RRU ]]; then ln -s $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_FDD_RRU ]]; then ln -s $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
if [[ -v USE_TDD_RRU ]]; then ln -s $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi
|
if [[ -v USE_TDD_RRU ]]; then ln -s $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
dest_dir: docker/etc
|
dest_dir: docker/etc
|
||||||
|
|
||||||
- configurations:
|
- configurations:
|
||||||
- filePrefix: cu
|
- filePrefix: cu.band7.tm1.25PRB
|
||||||
outputfilename: "cu.fdd.conf"
|
outputfilename: "cu.fdd.conf"
|
||||||
config:
|
config:
|
||||||
- key: Active_eNBs
|
- key: Active_eNBs
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
env: "@F1_CU_IP_ADDRESS@"
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
- filePrefix: du
|
- filePrefix: du.band7.tm1.25PRB
|
||||||
outputfilename: "du.fdd.conf"
|
outputfilename: "du.fdd.conf"
|
||||||
config:
|
config:
|
||||||
- key: Active_eNBs
|
- key: Active_eNBs
|
||||||
@@ -248,3 +248,89 @@
|
|||||||
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
env: "@F1_CU_IP_ADDRESS@"
|
env: "@F1_CU_IP_ADDRESS@"
|
||||||
|
|
||||||
|
- filePrefix: "rcc.band7.tm1.if4p5.lo.25PRB"
|
||||||
|
outputfilename: "rcc.if4p5.fdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@RCC_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@RCC_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@RCC_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@RCC_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@RCC_IP_ADDRESS@"
|
||||||
|
- key: local_if_name
|
||||||
|
env: "@IF4P5_IF_NAME@"
|
||||||
|
- key: remote_address
|
||||||
|
env: "@IF4P5_RRU_IP_ADDRESS@"
|
||||||
|
- key: local_address
|
||||||
|
env: "@IF4P5_RCC_IP_ADDRESS@"
|
||||||
|
|
||||||
|
- filePrefix: "rcc.band40.tm1.25PRB"
|
||||||
|
outputfilename: "rcc.if4p5.tdd.conf"
|
||||||
|
config:
|
||||||
|
- key: Active_eNBs
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: eNB_name
|
||||||
|
env: "@ENB_NAME@"
|
||||||
|
- key: plmn_list
|
||||||
|
env:
|
||||||
|
mcc: "@MCC@"
|
||||||
|
mnc: "@MNC@"
|
||||||
|
mnc_length: "@MNC_LENGTH@"
|
||||||
|
- key: tracking_area_code
|
||||||
|
env: "@TAC@"
|
||||||
|
- key: eutra_band
|
||||||
|
env: "@UTRA_BAND_ID@"
|
||||||
|
- key: downlink_frequency
|
||||||
|
env: "@DL_FREQUENCY_IN_MHZ@000000"
|
||||||
|
- key: uplink_frequency_offset
|
||||||
|
env: "@UL_FREQUENCY_OFFSET_IN_MHZ@000000"
|
||||||
|
- key: Nid_cell
|
||||||
|
env: "@NID_CELL@"
|
||||||
|
- key: N_RB_DL
|
||||||
|
env: "@NB_PRB@"
|
||||||
|
- key: ipv4
|
||||||
|
env: "@MME_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1_MME
|
||||||
|
env: "@RCC_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1_MME
|
||||||
|
env: "@RCC_S1C_IP_ADDRESS@"
|
||||||
|
- key: ENB_INTERFACE_NAME_FOR_S1U
|
||||||
|
env: "@RCC_IF_NAME@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_S1U
|
||||||
|
env: "@RCC_IP_ADDRESS@"
|
||||||
|
- key: ENB_IPV4_ADDRESS_FOR_X2C
|
||||||
|
env: "@RCC_IP_ADDRESS@"
|
||||||
|
- key: local_if_name
|
||||||
|
env: "@IF4P5_IF_NAME@"
|
||||||
|
- key: remote_address
|
||||||
|
env: "@IF4P5_RRU_IP_ADDRESS@"
|
||||||
|
- key: local_address
|
||||||
|
env: "@IF4P5_RCC_IP_ADDRESS@"
|
||||||
|
|
||||||
|
|||||||
@@ -39,20 +39,24 @@ def main():
|
|||||||
for config in data[1]["configurations"]:
|
for config in data[1]["configurations"]:
|
||||||
filePrefix = config["filePrefix"]
|
filePrefix = config["filePrefix"]
|
||||||
outputfilename = config["outputfilename"]
|
outputfilename = config["outputfilename"]
|
||||||
|
print('================================================')
|
||||||
print('filePrefix = ' + filePrefix)
|
print('filePrefix = ' + filePrefix)
|
||||||
print('outputfilename = ' + outputfilename)
|
print('outputfilename = ' + outputfilename)
|
||||||
for inputfile in dir:
|
for inputfile in dir:
|
||||||
if inputfile.find(filePrefix) >=0:
|
if inputfile.find(filePrefix) >=0:
|
||||||
prefix_outputfile = {"cu": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
prefix_outputfile = {"cu.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"du": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"du.band7.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rru.fdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rru.fdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rru.tdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rru.tdd": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"enb.band7.tm1.25PRB.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"enb.band7.tm1.25PRB.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"enb.band40.tm1.25PRB.FairScheduler.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"enb.band40.tm1.25PRB.FairScheduler.usrpb210": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"rcc.band7.tm1.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"rcc.band7.tm1.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
|
"rcc.band7.tm1.if4p5.lo.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
|
"rcc.band40.tm1.25PRB": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
"ue.nfapi": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}',
|
||||||
"ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
"ue_sim_ci": f'{data[0]["paths"]["dest_dir"]}/{outputfilename}'
|
||||||
}
|
}
|
||||||
|
print('inputfile = ' + inputfile)
|
||||||
if filePrefix in prefix_outputfile:
|
if filePrefix in prefix_outputfile:
|
||||||
outputfile1 = prefix_outputfile[filePrefix]
|
outputfile1 = prefix_outputfile[filePrefix]
|
||||||
|
|
||||||
|
|||||||
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PREFIX=/opt/oai-lte-ru
|
||||||
|
|
||||||
|
# Based another env var, pick one template to use
|
||||||
|
if [[ -v USE_FDD_RRU ]]; then ln -s $PREFIX/etc/rru.fdd.conf $PREFIX/etc/rru.conf; fi
|
||||||
|
if [[ -v USE_TDD_RRU ]]; then ln -s $PREFIX/etc/rru.tdd.conf $PREFIX/etc/rru.conf; fi
|
||||||
|
|
||||||
|
# Only this template will be manipulated
|
||||||
|
CONFIG_FILES=`ls $PREFIX/etc/rru.conf || true`
|
||||||
|
|
||||||
|
for c in ${CONFIG_FILES}; do
|
||||||
|
# grep variable names (format: ${VAR}) from template to be rendered
|
||||||
|
VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs)
|
||||||
|
|
||||||
|
# create sed expressions for substituting each occurrence of ${VAR}
|
||||||
|
# with the value of the environment variable "VAR"
|
||||||
|
EXPRESSIONS=""
|
||||||
|
for v in ${VARS}; do
|
||||||
|
NEW_VAR=`echo $v | sed -e "s#@##g"`
|
||||||
|
if [[ "${!NEW_VAR}x" == "x" ]]; then
|
||||||
|
echo "Error: Environment variable '${NEW_VAR}' is not set." \
|
||||||
|
"Config file '$(basename $c)' requires all of $VARS."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g"
|
||||||
|
done
|
||||||
|
EXPRESSIONS="${EXPRESSIONS#';'}"
|
||||||
|
|
||||||
|
# render template and inline replace config file
|
||||||
|
sed -i "${EXPRESSIONS}" ${c}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Load the USRP binaries
|
||||||
|
if [[ -v USE_B2XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx
|
||||||
|
elif [[ -v USE_X3XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx
|
||||||
|
elif [[ -v USE_N3XX ]]; then
|
||||||
|
/usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "=================================="
|
||||||
|
echo "== Starting eNB soft modem"
|
||||||
|
if [[ -v USE_ADDITIONAL_OPTIONS ]]; then
|
||||||
|
echo "Additional option(s): ${USE_ADDITIONAL_OPTIONS}"
|
||||||
|
new_args=()
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
new_args+=("$1")
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
for word in ${USE_ADDITIONAL_OPTIONS}; do
|
||||||
|
new_args+=("$word")
|
||||||
|
done
|
||||||
|
echo "${new_args[@]}"
|
||||||
|
exec "${new_args[@]}"
|
||||||
|
else
|
||||||
|
echo "$@"
|
||||||
|
exec "$@"
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user