Merge branch 'develop' into feature-131-new-license
This commit is contained in:
@@ -225,7 +225,7 @@ int trx_brf_reset_stats(openair0_device* device) {
|
||||
* \param card the hardware to use
|
||||
* \returns 0 in success
|
||||
*/
|
||||
int trx_brf_stop(int card) {
|
||||
int trx_brf_stop(openair0_device* device) {
|
||||
|
||||
return(0);
|
||||
|
||||
|
||||
@@ -624,7 +624,7 @@ extern "C" {
|
||||
|
||||
} else {
|
||||
printf("Found USRP B200");
|
||||
args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=4096, recv_frame_size=4096" ;
|
||||
args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=15360, recv_frame_size=15360" ;
|
||||
s->usrp = uhd::usrp::multi_usrp::make(args);
|
||||
|
||||
// s->usrp->set_rx_subdev_spec(rx_subdev);
|
||||
|
||||
@@ -0,0 +1,294 @@
|
||||
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";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
component_carriers = (
|
||||
//First carrier -> Master
|
||||
{
|
||||
node_function = "NGFI_RCC_IF4p5";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
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 = -29;
|
||||
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 = -90;
|
||||
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 = -108;
|
||||
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;
|
||||
},
|
||||
// second carrier-> for ERCOM
|
||||
{
|
||||
node_function = "eNodeB_3GPP_BBU" # should be verified
|
||||
//node_function = "NGFI_RCC_IF5" # should be verified
|
||||
node_timing = "synch_to_other";
|
||||
node_synch_ref = 0; #should
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports = 1;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
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 = -29;
|
||||
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 = -90;
|
||||
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 = -108;
|
||||
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;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
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.3";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth2";
|
||||
remote_address = "00:13:95:1f:a0:af"; #Conga's MAC
|
||||
local_address = "90:e2:ba:c5:fc:04";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
},
|
||||
//second config for Ercom
|
||||
{
|
||||
local_if_name = "eth1.300";
|
||||
remote_address = "00:21:5e:91:5c:7e"; # should be updated with ERCOM's MAC
|
||||
local_address = "f0:1f:af:db:b9:c8";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if5_mobipass";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
}
|
||||
);
|
||||
|
||||
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";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ eNBs =
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
nb_antenna_ports = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
prach_root = 0;
|
||||
@@ -49,7 +50,7 @@ eNBs =
|
||||
pucch_nRB_CQI = 1;
|
||||
pucch_nCS_AN = 0;
|
||||
pucch_n1_AN = 32;
|
||||
pdsch_referenceSignalPower = -29;
|
||||
pdsch_referenceSignalPower = -24;
|
||||
pdsch_p_b = 0;
|
||||
pusch_n_SB = 1;
|
||||
pusch_enable64QAM = "DISABLE";
|
||||
@@ -67,29 +68,29 @@ eNBs =
|
||||
srs_ackNackST =;
|
||||
srs_MaxUpPts =;*/
|
||||
|
||||
pusch_p0_Nominal = -90;
|
||||
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";
|
||||
pusch_p0_Nominal = -96;
|
||||
pusch_alpha = "AL1";
|
||||
pucch_p0_Nominal = -103;
|
||||
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 = -108;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
rach_maxHARQ_Msg3Tx = 4;
|
||||
rach_numberOfRA_Preambles = 64;
|
||||
rach_preamblesGroupAConfig = "DISABLE";
|
||||
/*
|
||||
rach_sizeOfRA_PreamblesGroupA = ;
|
||||
rach_messageSizeGroupA = ;
|
||||
rach_messagePowerOffsetGroupB = ;
|
||||
*/
|
||||
rach_powerRampingStep = 4;
|
||||
rach_preambleInitialReceivedTargetPower = -104;
|
||||
rach_preambleTransMax = 10;
|
||||
rach_raResponseWindowSize = 10;
|
||||
rach_macContentionResolutionTimer = 48;
|
||||
rach_maxHARQ_Msg3Tx = 4;
|
||||
|
||||
pcch_default_PagingCycle = 128;
|
||||
pcch_nB = "oneT";
|
||||
@@ -100,7 +101,7 @@ eNBs =
|
||||
ue_TimersAndConstants_t311 = 10000;
|
||||
ue_TimersAndConstants_n310 = 20;
|
||||
ue_TimersAndConstants_n311 = 1;
|
||||
|
||||
ue_TransmissionMode = 1;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
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";
|
||||
|
||||
mobile_country_code = "208";
|
||||
|
||||
mobile_network_code = "93";
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
component_carriers = (
|
||||
{
|
||||
node_function = "NGFI_RRU_IF4p5";
|
||||
node_timing = "synch_to_ext_device";
|
||||
node_synch_ref = 0;
|
||||
frame_type = "FDD";
|
||||
tdd_config = 3;
|
||||
tdd_config_s = 0;
|
||||
prefix_type = "NORMAL";
|
||||
eutra_band = 7;
|
||||
downlink_frequency = 2660000000L;
|
||||
uplink_frequency_offset = -120000000;
|
||||
Nid_cell = 0;
|
||||
N_RB_DL = 50;
|
||||
Nid_cell_mbsfn = 0;
|
||||
nb_antenna_ports =1 ;
|
||||
nb_antennas_tx = 1;
|
||||
nb_antennas_rx = 1;
|
||||
tx_gain = 90;
|
||||
rx_gain = 125;
|
||||
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 = -29;
|
||||
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 = -90;
|
||||
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 = -108;
|
||||
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;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
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 = "192.168.12.155";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.155/24";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.155/24";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
rrh_gw_config = (
|
||||
{
|
||||
local_if_name = "eth0";
|
||||
remote_address = "90:e2:ba:c5:fc:04";
|
||||
local_address = "00:13:95:1f:a0:af";
|
||||
local_port = 50000; #for raw option local port must be the same to remote
|
||||
remote_port = 50000;
|
||||
rrh_gw_active = "yes";
|
||||
tr_preference = "raw_if4p5";
|
||||
rf_preference = "usrp_b200";
|
||||
iq_txshift = 4;
|
||||
tx_sample_advance = 80;
|
||||
tx_scheduling_advance = 9;
|
||||
}
|
||||
);
|
||||
|
||||
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";
|
||||
};
|
||||
}
|
||||
);
|
||||
+60
-21
@@ -137,6 +137,8 @@ time_stats_t softmodem_stats_rx_sf; // total rx time
|
||||
int32_t **rxdata;
|
||||
int32_t **txdata;
|
||||
|
||||
uint8_t seqno; //sequence number
|
||||
|
||||
static int time_offset[4] = {0,0,0,0};
|
||||
|
||||
/* mutex, cond and variable to serialize phy proc TX calls
|
||||
@@ -280,6 +282,7 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB) {
|
||||
((phy_vars_eNB->frame_parms.Ncp==1) ? 6 : 7);
|
||||
int len,len2;
|
||||
int16_t *txdata;
|
||||
// int CC_id = phy_vars_eNB->proc.CC_id;
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_SFGEN , 1 );
|
||||
|
||||
@@ -398,11 +401,15 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB) {
|
||||
}
|
||||
|
||||
void tx_fh_if5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
|
||||
uint8_t seqno;
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, proc->timestamp_tx&0xffffffff );
|
||||
send_IF5(eNB, proc->timestamp_tx, proc->subframe_tx, &seqno, IF5_RRH_GW_DL);
|
||||
}
|
||||
|
||||
void tx_fh_if5_mobipass(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
|
||||
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, proc->timestamp_tx&0xffffffff );
|
||||
send_IF5(eNB, proc->timestamp_tx, proc->subframe_tx, &seqno, IF5_MOBIPASS);
|
||||
}
|
||||
|
||||
void tx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
|
||||
send_IF4p5(eNB,proc->frame_tx, proc->subframe_tx, IF4p5_PDLFFT, 0);
|
||||
}
|
||||
@@ -544,7 +551,7 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
|
||||
// run PHY TX procedures the one after the other for all CCs to avoid race conditions
|
||||
// (may be relaxed in the future for performance reasons)
|
||||
// *****************************************
|
||||
if (wait_CCs(proc)<0) return(-1);
|
||||
//if (wait_CCs(proc)<0) return(-1);
|
||||
|
||||
if (oai_exit) return(-1);
|
||||
|
||||
@@ -871,6 +878,7 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
|
||||
|
||||
proc->frame_rx = (proc->timestamp_rx / (fp->samples_per_tti*10))&1023;
|
||||
proc->subframe_rx = (proc->timestamp_rx / fp->samples_per_tti)%10;
|
||||
proc->timestamp_tx = proc->timestamp_rx+(4*fp->samples_per_tti);
|
||||
// printf("trx_read <- USRP TS %llu (sf %d, first_rx %d)\n", proc->timestamp_rx,proc->subframe_rx,proc->first_rx);
|
||||
|
||||
if (proc->first_rx == 0) {
|
||||
@@ -957,7 +965,12 @@ void rx_fh_if4p5(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
|
||||
}
|
||||
|
||||
} while( (symbol_mask != symbol_mask_full) || (prach_rx == 1));
|
||||
|
||||
|
||||
//caculate timestamp_rx, timestamp_tx based on frame and subframe
|
||||
proc->timestamp_rx = ((proc->frame_rx * 10) + proc->subframe_rx ) * fp->samples_per_tti ;
|
||||
proc->timestamp_tx = proc->timestamp_rx + (4*fp->samples_per_tti);
|
||||
|
||||
|
||||
if (proc->first_rx == 0) {
|
||||
if (proc->subframe_rx != *subframe){
|
||||
LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,*subframe);
|
||||
@@ -1065,7 +1078,8 @@ void wakeup_slaves(eNB_proc_t *proc) {
|
||||
slave_proc->frame_rx = proc->frame_rx;
|
||||
slave_proc->subframe_rx = proc->subframe_rx;
|
||||
slave_proc->timestamp_rx = proc->timestamp_rx;
|
||||
|
||||
slave_proc->timestamp_tx = proc->timestamp_tx;
|
||||
|
||||
pthread_mutex_unlock( &slave_proc->mutex_FH );
|
||||
|
||||
if (cnt_slave == 0) {
|
||||
@@ -1262,15 +1276,16 @@ static void* eNB_thread_single( void* param ) {
|
||||
|
||||
T(T_ENB_MASTER_TICK, T_INT(0), T_INT(proc->frame_rx), T_INT(proc->subframe_rx));
|
||||
|
||||
proc_rxtx->subframe_rx = proc->subframe_rx;
|
||||
proc_rxtx->frame_rx = proc->frame_rx;
|
||||
proc_rxtx->subframe_tx = (proc->subframe_rx+4)%10;
|
||||
proc_rxtx->frame_tx = (proc->subframe_rx < 6) ? proc->frame_rx : (proc->frame_rx+1)&1023;
|
||||
proc_rxtx->timestamp_tx = proc->timestamp_tx;
|
||||
|
||||
// At this point, all information for subframe has been received on FH interface
|
||||
// If this proc is to provide synchronization, do so
|
||||
wakeup_slaves(proc);
|
||||
|
||||
proc_rxtx->subframe_rx = proc->subframe_rx;
|
||||
proc_rxtx->frame_rx = proc->frame_rx;
|
||||
proc_rxtx->subframe_tx = (proc->subframe_rx+4)%10;
|
||||
proc_rxtx->frame_tx = (proc->subframe_rx < 6) ? proc->frame_rx : (proc->frame_rx+1)&1023;
|
||||
if (rxtx(eNB,proc_rxtx,"eNB_thread_single") < 0) break;
|
||||
}
|
||||
|
||||
@@ -1375,7 +1390,23 @@ void init_eNB_proc(int inst) {
|
||||
pthread_setname_np( proc->pthread_single, name );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//for multiple CCs: setup master and slaves
|
||||
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||
eNB = PHY_vars_eNB_g[inst][CC_id];
|
||||
|
||||
if (eNB->node_timing == synch_to_ext_device) { //master
|
||||
eNB->proc.num_slaves = MAX_NUM_CCs-1;
|
||||
eNB->proc.slave_proc = (eNB_proc_t**)malloc(eNB->proc.num_slaves*sizeof(eNB_proc_t*));
|
||||
|
||||
for (i=0; i< eNB->proc.num_slaves; i++) {
|
||||
if (i < CC_id) eNB->proc.slave_proc[i] = &(PHY_vars_eNB_g[inst][i]->proc);
|
||||
if (i >= CC_id) eNB->proc.slave_proc[i] = &(PHY_vars_eNB_g[inst][i+1]->proc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* setup PHY proc TX sync mechanism */
|
||||
pthread_mutex_init(&sync_phy_proc.mutex_phy_proc_tx, NULL);
|
||||
pthread_cond_init(&sync_phy_proc.cond_phy_proc_tx, NULL);
|
||||
@@ -1590,14 +1621,14 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
eNB->start_rf = start_rf;
|
||||
eNB->start_if = start_if;
|
||||
eNB->fh_asynch = fh_if5_asynch_DL;
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[0]);
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[CC_id]);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize rf device\n");
|
||||
exit(-1);
|
||||
}
|
||||
eNB->rfdevice.host_type = RRH_HOST;
|
||||
eNB->ifdevice.host_type = RRH_HOST;
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[0], (eth_params+CC_id));
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[CC_id], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",ret,CC_id);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
@@ -1616,14 +1647,14 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
eNB->fh_asynch = fh_if4p5_asynch_DL;
|
||||
eNB->start_rf = start_rf;
|
||||
eNB->start_if = start_if;
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[0]);
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[CC_id]);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize rf device\n");
|
||||
exit(-1);
|
||||
}
|
||||
eNB->rfdevice.host_type = RRH_HOST;
|
||||
eNB->ifdevice.host_type = RRH_HOST;
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[0], (eth_params+CC_id));
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[CC_id], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",ret,CC_id);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
@@ -1645,7 +1676,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
eNB->start_rf = start_rf;
|
||||
eNB->start_if = NULL;
|
||||
eNB->fh_asynch = NULL;
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[0]);
|
||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[CC_id]);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize rf device\n");
|
||||
exit(-1);
|
||||
@@ -1660,9 +1691,17 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
eNB->te = dlsch_encoding;//(single_thread_flag==1) ? dlsch_encoding_2threads : dlsch_encoding;
|
||||
eNB->proc_uespec_rx = phy_procedures_eNB_uespec_RX;
|
||||
eNB->proc_tx = proc_tx_full;
|
||||
eNB->tx_fh = tx_fh_if5;
|
||||
eNB->rx_fh = rx_fh_if5;
|
||||
eNB->fh_asynch = (eNB->node_timing == synch_to_other) ? fh_if5_asynch_UL : NULL;
|
||||
if (eNB->node_timing == synch_to_other) {
|
||||
eNB->tx_fh = tx_fh_if5_mobipass;
|
||||
eNB->rx_fh = rx_fh_slave;
|
||||
eNB->fh_asynch = fh_if5_asynch_UL;
|
||||
|
||||
}
|
||||
else {
|
||||
eNB->tx_fh = tx_fh_if5;
|
||||
eNB->rx_fh = rx_fh_if5;
|
||||
eNB->fh_asynch = NULL;
|
||||
}
|
||||
|
||||
eNB->start_rf = NULL;
|
||||
eNB->start_if = start_if;
|
||||
@@ -1670,7 +1709,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
|
||||
eNB->ifdevice.host_type = BBU_HOST;
|
||||
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[0], (eth_params+CC_id));
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[CC_id], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",ret,CC_id);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
@@ -1691,7 +1730,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
eNB->fh_asynch = (eNB->node_timing == synch_to_other) ? fh_if4p5_asynch_UL : NULL;
|
||||
eNB->rfdevice.host_type = BBU_HOST;
|
||||
eNB->ifdevice.host_type = BBU_HOST;
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[0], (eth_params+CC_id));
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[CC_id], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",ret,CC_id);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
@@ -1716,7 +1755,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
|
||||
eNB->rfdevice.host_type = BBU_HOST;
|
||||
eNB->ifdevice.host_type = BBU_HOST;
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[0], (eth_params+CC_id));
|
||||
ret = openair0_transport_load(&eNB->ifdevice, &openair0_cfg[CC_id], (eth_params+CC_id));
|
||||
printf("openair0_transport_init returns %d for CC_id %d\n",ret,CC_id);
|
||||
if (ret<0) {
|
||||
printf("Exiting, cannot initialize transport protocol\n");
|
||||
@@ -1728,7 +1767,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
||||
}
|
||||
}
|
||||
|
||||
if (setup_eNB_buffers(PHY_vars_eNB_g[inst],&openair0_cfg[inst])!=0) {
|
||||
if (setup_eNB_buffers(PHY_vars_eNB_g[inst],&openair0_cfg[CC_id])!=0) {
|
||||
printf("Exiting, cannot initialize eNodeB Buffers\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
@@ -100,6 +100,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
||||
# include "s1ap_eNB.h"
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
# include "SIMULATION/ETH_TRANSPORT/proto.h"
|
||||
extern int netlink_init(void);
|
||||
#endif
|
||||
# endif
|
||||
#endif
|
||||
@@ -192,7 +193,7 @@ double tx_gain[MAX_NUM_CCs][4] = {{20,0,0,0},{20,0,0,0}};
|
||||
double rx_gain[MAX_NUM_CCs][4] = {{110,0,0,0},{20,0,0,0}};
|
||||
#endif
|
||||
|
||||
|
||||
double rx_gain_off = 0.0;
|
||||
|
||||
double sample_rate=30.72e6;
|
||||
double bw = 10.0e6;
|
||||
@@ -372,6 +373,7 @@ void help (void) {
|
||||
printf(" --calib-prach-tx run normal prach with maximum power, but don't continue random-access\n");
|
||||
printf(" --no-L2-connect bypass L2 and upper layers\n");
|
||||
printf(" --ue-rxgain set UE RX gain\n");
|
||||
printf(" --ue-rxgain-off external UE amplifier offset\n");
|
||||
printf(" --ue-txgain set UE TX gain\n");
|
||||
printf(" --ue-scan_carrier set UE to scan around carrier\n");
|
||||
printf(" --loop-memory get softmodem (UE) to loop through memory instead of acquiring from HW\n");
|
||||
@@ -676,6 +678,7 @@ static void get_options (int argc, char **argv)
|
||||
LONG_OPTION_NO_L2_CONNECT,
|
||||
LONG_OPTION_CALIB_PRACH_TX,
|
||||
LONG_OPTION_RXGAIN,
|
||||
LONG_OPTION_RXGAINOFF,
|
||||
LONG_OPTION_TXGAIN,
|
||||
LONG_OPTION_SCANCARRIER,
|
||||
LONG_OPTION_MAXPOWER,
|
||||
@@ -701,6 +704,7 @@ static void get_options (int argc, char **argv)
|
||||
{"no-L2-connect", no_argument, NULL, LONG_OPTION_NO_L2_CONNECT},
|
||||
{"calib-prach-tx", no_argument, NULL, LONG_OPTION_CALIB_PRACH_TX},
|
||||
{"ue-rxgain", required_argument, NULL, LONG_OPTION_RXGAIN},
|
||||
{"ue-rxgain-off", required_argument, NULL, LONG_OPTION_RXGAINOFF},
|
||||
{"ue-txgain", required_argument, NULL, LONG_OPTION_TXGAIN},
|
||||
{"ue-scan-carrier", no_argument, NULL, LONG_OPTION_SCANCARRIER},
|
||||
{"ue-max-power", required_argument, NULL, LONG_OPTION_MAXPOWER},
|
||||
@@ -777,6 +781,10 @@ static void get_options (int argc, char **argv)
|
||||
|
||||
break;
|
||||
|
||||
case LONG_OPTION_RXGAINOFF:
|
||||
rx_gain_off = atof(optarg);
|
||||
break;
|
||||
|
||||
case LONG_OPTION_TXGAIN:
|
||||
for (i=0; i<4; i++)
|
||||
tx_gain[0][i] = atof(optarg);
|
||||
@@ -1057,7 +1065,7 @@ static void get_options (int argc, char **argv)
|
||||
|
||||
if (enb_properties->properties[i]->rrh_gw_config[j].active == 1 ) {
|
||||
local_remote_radio = BBU_REMOTE_RADIO_HEAD;
|
||||
(eth_params+j)->local_if_name = enb_properties->properties[i]->rrh_gw_if_name;
|
||||
(eth_params+j)->local_if_name = enb_properties->properties[i]->rrh_gw_config[j].rrh_gw_if_name;
|
||||
(eth_params+j)->my_addr = enb_properties->properties[i]->rrh_gw_config[j].local_address;
|
||||
(eth_params+j)->my_port = enb_properties->properties[i]->rrh_gw_config[j].local_port;
|
||||
(eth_params+j)->remote_addr = enb_properties->properties[i]->rrh_gw_config[j].remote_address;
|
||||
@@ -1297,10 +1305,10 @@ void init_openair0() {
|
||||
|
||||
|
||||
if (local_remote_radio == BBU_REMOTE_RADIO_HEAD) {
|
||||
openair0_cfg[card].remote_addr = eth_params->remote_addr;
|
||||
openair0_cfg[card].remote_port = eth_params->remote_port;
|
||||
openair0_cfg[card].my_addr = eth_params->my_addr;
|
||||
openair0_cfg[card].my_port = eth_params->my_port;
|
||||
openair0_cfg[card].remote_addr = (eth_params+card)->remote_addr;
|
||||
openair0_cfg[card].remote_port = (eth_params+card)->remote_port;
|
||||
openair0_cfg[card].my_addr = (eth_params+card)->my_addr;
|
||||
openair0_cfg[card].my_port = (eth_params+card)->my_port;
|
||||
}
|
||||
|
||||
printf("HW: Configuring card %d, nb_antennas_tx/rx %d/%d\n",card,
|
||||
@@ -1344,7 +1352,7 @@ void init_openair0() {
|
||||
openair0_cfg[card].rx_gain[i] = PHY_vars_eNB_g[0][0]->rx_total_gain_dB;
|
||||
}
|
||||
else {
|
||||
openair0_cfg[card].rx_gain[i] = PHY_vars_UE_g[0][0]->rx_total_gain_dB;
|
||||
openair0_cfg[card].rx_gain[i] = PHY_vars_UE_g[0][0]->rx_total_gain_dB - rx_gain_off;
|
||||
}
|
||||
|
||||
|
||||
@@ -1356,7 +1364,7 @@ void init_openair0() {
|
||||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
int i,aa,card=0;
|
||||
int i,aa;
|
||||
#if defined (XFORMS)
|
||||
void *status;
|
||||
#endif
|
||||
@@ -1578,7 +1586,7 @@ int main( int argc, char **argv )
|
||||
else
|
||||
UE[CC_id]->pdcch_vars[0]->crnti = 0x1235;
|
||||
|
||||
UE[CC_id]->rx_total_gain_dB = (int)rx_gain[CC_id][0];
|
||||
UE[CC_id]->rx_total_gain_dB = (int)rx_gain[CC_id][0] + rx_gain_off;
|
||||
UE[CC_id]->tx_power_max_dBm = tx_max_power[CC_id];
|
||||
UE[CC_id]->N_TA_offset = 0;
|
||||
|
||||
|
||||
@@ -179,6 +179,9 @@ void init_UE(int nb_inst) {
|
||||
UE = PHY_vars_UE_g[inst][0];
|
||||
|
||||
ret = openair0_device_load(&(UE->rfdevice), &openair0_cfg[0]);
|
||||
if (ret !=0){
|
||||
exit_fun("Error loading device library");
|
||||
}
|
||||
UE->rfdevice.host_type = BBU_HOST;
|
||||
// UE->rfdevice.type = NONE_DEV;
|
||||
error_code = pthread_create(&UE->proc.pthread_ue, &UE->proc.attr_ue, UE_thread, NULL);
|
||||
@@ -1054,7 +1057,11 @@ void *UE_thread(void *arg) {
|
||||
UE->frame_parms.samples_per_tti,
|
||||
UE->frame_parms.nb_antennas_tx,
|
||||
1);
|
||||
|
||||
if (txs != UE->frame_parms.samples_per_tti) {
|
||||
LOG_E(PHY,"TX : Timeout (sent %d/%d)\n",txs, UE->frame_parms.samples_per_tti);
|
||||
exit_fun( "problem transmitting samples" );
|
||||
}
|
||||
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 0 );
|
||||
|
||||
}
|
||||
@@ -1080,7 +1087,10 @@ void *UE_thread(void *arg) {
|
||||
UE->frame_parms.samples_per_tti - rx_off_diff,
|
||||
UE->frame_parms.nb_antennas_tx,
|
||||
1);
|
||||
|
||||
if (txs != UE->frame_parms.samples_per_tti - rx_off_diff) {
|
||||
LOG_E(PHY,"TX : Timeout (sent %d/%d)\n",txs, UE->frame_parms.samples_per_tti-rx_off_diff);
|
||||
exit_fun( "problem transmitting samples" );
|
||||
}
|
||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 0 );
|
||||
|
||||
// read in first symbol of next frame and adjust for timing drift
|
||||
@@ -1162,6 +1172,7 @@ void *UE_thread(void *arg) {
|
||||
} // UE->is_synchronized==1
|
||||
|
||||
} // while !oai_exit
|
||||
return NULL;
|
||||
} // UE_thread
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,161 @@
|
||||
[*]
|
||||
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
||||
[*] Sat Aug 6 15:00:27 2016
|
||||
[*]
|
||||
[dumpfile] "/tmp/openair_dump_eNB.vcd"
|
||||
[dumpfile_mtime] "Sat Aug 6 14:59:21 2016"
|
||||
[dumpfile_size] 991809002
|
||||
[savefile] "/home/fourmi/openairinterface5g/targets/RT/USER/rcc_if4.gtkw"
|
||||
[timestart] 0
|
||||
[size] 1301 716
|
||||
[pos] 309 0
|
||||
*-19.793451 7382528436 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
||||
[sst_width] 284
|
||||
[signals_width] 262
|
||||
[sst_expanded] 1
|
||||
[sst_vpaned_height] 294
|
||||
@24
|
||||
variables.trx_ts[63:0]
|
||||
variables.trx_tst[63:0]
|
||||
@28
|
||||
functions.recv_if4
|
||||
functions.send_if4
|
||||
functions.eNB_thread_rxtx0
|
||||
@24
|
||||
variables.frame_number_RX0_eNB[63:0]
|
||||
variables.subframe_number_RX0_eNB[63:0]
|
||||
variables.frame_number_TX0_eNB[63:0]
|
||||
variables.subframe_number_TX0_eNB[63:0]
|
||||
@28
|
||||
functions.phy_procedures_eNb_tx0
|
||||
functions.phy_procedures_eNb_rx_common0
|
||||
functions.phy_procedures_eNb_rx_uespec0
|
||||
functions.eNB_thread_rxtx1
|
||||
@24
|
||||
variables.frame_number_RX1_eNB[63:0]
|
||||
variables.subframe_number_RX1_eNB[63:0]
|
||||
variables.frame_number_TX1_eNB[63:0]
|
||||
variables.subframe_number_TX1_eNB[63:0]
|
||||
@29
|
||||
functions.phy_procedures_eNb_tx1
|
||||
@28
|
||||
functions.phy_procedures_eNb_rx_common1
|
||||
functions.phy_procedures_eNb_rx_uespec1
|
||||
functions.phy_enb_sfgen
|
||||
functions.phy_eNB_slot_fep
|
||||
functions.phy_enb_prach_rx
|
||||
@24
|
||||
variables.dci_info[63:0]
|
||||
variables.ue0_BO[63:0]
|
||||
@420
|
||||
variables.ue0_BSR[63:0]
|
||||
variables.ue0_timing_advance[63:0]
|
||||
@28
|
||||
functions.macxface_initiate_ra_proc
|
||||
functions.macxface_terminate_ra_proc
|
||||
functions.phy_enb_ulsch_msg3
|
||||
functions.macxface_SR_indication
|
||||
@420
|
||||
variables.ue0_SR_ENERGY[63:0]
|
||||
variables.ue0_SR_THRES[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding0
|
||||
@24
|
||||
variables.ue0_res0[63:0]
|
||||
@420
|
||||
variables.ue0_rssi0[63:0]
|
||||
variables.ue0_MCS0[63:0]
|
||||
variables.ue0_RB0[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND0[63:0]
|
||||
variables.ue0_SFN0[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding1
|
||||
@24
|
||||
variables.ue0_res1[63:0]
|
||||
@420
|
||||
variables.ue0_rssi1[63:0]
|
||||
variables.ue0_MCS1[63:0]
|
||||
variables.ue0_RB1[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND1[63:0]
|
||||
variables.ue0_SFN1[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding2
|
||||
@24
|
||||
variables.ue0_res2[63:0]
|
||||
@420
|
||||
variables.ue0_rssi2[63:0]
|
||||
variables.ue0_MCS2[63:0]
|
||||
variables.ue0_RB2[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND2[63:0]
|
||||
variables.ue0_SFN2[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding3
|
||||
@24
|
||||
variables.ue0_res3[63:0]
|
||||
@420
|
||||
variables.ue0_rssi3[63:0]
|
||||
variables.ue0_MCS3[63:0]
|
||||
variables.ue0_RB3[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND3[63:0]
|
||||
variables.ue0_SFN3[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding4
|
||||
@420
|
||||
variables.ue0_rssi4[63:0]
|
||||
@24
|
||||
variables.ue0_res4[63:0]
|
||||
@420
|
||||
variables.ue0_MCS4[63:0]
|
||||
variables.ue0_RB4[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND4[63:0]
|
||||
variables.ue0_SFN4[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding5
|
||||
@24
|
||||
variables.ue0_res5[63:0]
|
||||
@420
|
||||
variables.ue0_rssi5[63:0]
|
||||
variables.ue0_MCS5[63:0]
|
||||
variables.ue0_RB5[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND5[63:0]
|
||||
variables.ue0_SFN5[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding6
|
||||
@24
|
||||
variables.ue0_res6[63:0]
|
||||
@420
|
||||
variables.ue0_rssi6[63:0]
|
||||
variables.ue0_MCS6[63:0]
|
||||
variables.ue0_RB6[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND6[63:0]
|
||||
variables.ue0_SFN6[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding7
|
||||
@24
|
||||
variables.ue0_res7[63:0]
|
||||
@420
|
||||
variables.ue0_rssi7[63:0]
|
||||
variables.ue0_MCS7[63:0]
|
||||
variables.ue0_RB7[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND7[63:0]
|
||||
variables.ue0_SFN7[63:0]
|
||||
@28
|
||||
functions.phy_enb_prach_rx
|
||||
functions.phy_eNB_dlsch_encoding
|
||||
functions.phy_eNB_dlsch_modulation
|
||||
functions.phy_eNB_dlsch_scrambling
|
||||
functions.phy_enb_pdcch_tx
|
||||
functions.phy_enb_rs_tx
|
||||
functions.rrc_mac_config_req
|
||||
functions.rlc_data_req
|
||||
functions.udp_enb_task
|
||||
[pattern_trace] 1
|
||||
[pattern_trace] 0
|
||||
@@ -0,0 +1,154 @@
|
||||
[*]
|
||||
[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI
|
||||
[*] Sun Jul 31 13:30:42 2016
|
||||
[*]
|
||||
[dumpfile] "/tmp/openair_dump_eNB.vcd"
|
||||
[dumpfile_mtime] "Sun Jul 31 13:21:59 2016"
|
||||
[dumpfile_size] 18273240
|
||||
[savefile] "/home/fourmi/openairinterface5g/targets/RT/USER/rcc_if5.gtkw"
|
||||
[timestart] 24070893000
|
||||
[size] 1301 716
|
||||
[pos] 309 0
|
||||
*-19.793451 29026062100 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
|
||||
[sst_width] 284
|
||||
[signals_width] 262
|
||||
[sst_expanded] 1
|
||||
[sst_vpaned_height] 294
|
||||
@24
|
||||
variables.trx_ts[63:0]
|
||||
variables.trx_tst[63:0]
|
||||
@28
|
||||
functions.send_if5
|
||||
functions.recv_if5
|
||||
functions.eNB_thread_rxtx0
|
||||
@24
|
||||
variables.frame_number_RX0_eNB[63:0]
|
||||
variables.subframe_number_RX0_eNB[63:0]
|
||||
variables.frame_number_TX0_eNB[63:0]
|
||||
variables.subframe_number_TX0_eNB[63:0]
|
||||
@28
|
||||
functions.eNB_thread_rxtx1
|
||||
@24
|
||||
variables.frame_number_RX1_eNB[63:0]
|
||||
variables.subframe_number_RX1_eNB[63:0]
|
||||
variables.frame_number_TX1_eNB[63:0]
|
||||
variables.subframe_number_TX1_eNB[63:0]
|
||||
@28
|
||||
functions.phy_enb_sfgen
|
||||
functions.phy_eNB_slot_fep
|
||||
functions.phy_enb_prach_rx
|
||||
@24
|
||||
variables.dci_info[63:0]
|
||||
variables.ue0_BO[63:0]
|
||||
@420
|
||||
variables.ue0_BSR[63:0]
|
||||
variables.ue0_timing_advance[63:0]
|
||||
@28
|
||||
functions.macxface_initiate_ra_proc
|
||||
functions.macxface_terminate_ra_proc
|
||||
functions.phy_enb_ulsch_msg3
|
||||
functions.macxface_SR_indication
|
||||
@420
|
||||
variables.ue0_SR_ENERGY[63:0]
|
||||
variables.ue0_SR_THRES[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding0
|
||||
@24
|
||||
variables.ue0_res0[63:0]
|
||||
@420
|
||||
variables.ue0_rssi0[63:0]
|
||||
variables.ue0_MCS0[63:0]
|
||||
variables.ue0_RB0[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND0[63:0]
|
||||
variables.ue0_SFN0[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding1
|
||||
@24
|
||||
variables.ue0_res1[63:0]
|
||||
@420
|
||||
variables.ue0_rssi1[63:0]
|
||||
variables.ue0_MCS1[63:0]
|
||||
variables.ue0_RB1[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND1[63:0]
|
||||
variables.ue0_SFN1[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding2
|
||||
@24
|
||||
variables.ue0_res2[63:0]
|
||||
@420
|
||||
variables.ue0_rssi2[63:0]
|
||||
variables.ue0_MCS2[63:0]
|
||||
variables.ue0_RB2[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND2[63:0]
|
||||
variables.ue0_SFN2[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding3
|
||||
@24
|
||||
variables.ue0_res3[63:0]
|
||||
@420
|
||||
variables.ue0_rssi3[63:0]
|
||||
variables.ue0_MCS3[63:0]
|
||||
variables.ue0_RB3[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND3[63:0]
|
||||
variables.ue0_SFN3[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding4
|
||||
@420
|
||||
variables.ue0_rssi4[63:0]
|
||||
@24
|
||||
variables.ue0_res4[63:0]
|
||||
@420
|
||||
variables.ue0_MCS4[63:0]
|
||||
variables.ue0_RB4[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND4[63:0]
|
||||
variables.ue0_SFN4[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding5
|
||||
@24
|
||||
variables.ue0_res5[63:0]
|
||||
@420
|
||||
variables.ue0_rssi5[63:0]
|
||||
variables.ue0_MCS5[63:0]
|
||||
variables.ue0_RB5[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND5[63:0]
|
||||
variables.ue0_SFN5[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding6
|
||||
@24
|
||||
variables.ue0_res6[63:0]
|
||||
@420
|
||||
variables.ue0_rssi6[63:0]
|
||||
variables.ue0_MCS6[63:0]
|
||||
variables.ue0_RB6[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND6[63:0]
|
||||
variables.ue0_SFN6[63:0]
|
||||
@28
|
||||
functions.phy_enb_ulsch_decoding7
|
||||
@24
|
||||
variables.ue0_res7[63:0]
|
||||
@420
|
||||
variables.ue0_rssi7[63:0]
|
||||
variables.ue0_MCS7[63:0]
|
||||
variables.ue0_RB7[63:0]
|
||||
@24
|
||||
variables.ue0_ROUND7[63:0]
|
||||
variables.ue0_SFN7[63:0]
|
||||
@28
|
||||
functions.phy_enb_prach_rx
|
||||
functions.phy_eNB_dlsch_encoding
|
||||
functions.phy_eNB_dlsch_modulation
|
||||
functions.phy_eNB_dlsch_scrambling
|
||||
functions.phy_enb_pdcch_tx
|
||||
functions.phy_enb_rs_tx
|
||||
functions.rrc_mac_config_req
|
||||
functions.rlc_data_req
|
||||
functions.udp_enb_task
|
||||
[pattern_trace] 1
|
||||
[pattern_trace] 0
|
||||
@@ -205,6 +205,8 @@ sigh (void *arg);
|
||||
void
|
||||
oai_shutdown (void);
|
||||
|
||||
void reset_opp_meas_oaisim (void);
|
||||
|
||||
void
|
||||
help (void)
|
||||
{
|
||||
@@ -437,9 +439,6 @@ static Data_Flow_Unit omv_data;
|
||||
#endif //ALU
|
||||
static module_id_t UE_inst = 0;
|
||||
static module_id_t eNB_inst = 0;
|
||||
#ifdef Rel10
|
||||
static module_id_t RN_id = 0;
|
||||
#endif
|
||||
|
||||
Packet_OTG_List_t *otg_pdcp_buffer;
|
||||
|
||||
@@ -463,13 +462,8 @@ l2l1_task (void *args_p)
|
||||
// Framing variables
|
||||
int32_t sf;
|
||||
|
||||
#ifdef Rel10
|
||||
relaying_type_t r_type = no_relay; // no relaying
|
||||
#endif
|
||||
|
||||
char fname[64], vname[64];
|
||||
|
||||
protocol_ctxt_t ctxt;
|
||||
//#ifdef XFORMS
|
||||
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
||||
// at eNB 0, an UL scope for every UE
|
||||
|
||||
@@ -1004,8 +1004,6 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
|
||||
int CC_id = device->CC_id;
|
||||
|
||||
int subframe;
|
||||
int ready_for_new_subframe=0;
|
||||
int subframe_eNB_mask_local;
|
||||
int sample_count=0;
|
||||
|
||||
*ptimestamp = last_eNB_rx_timestamp[eNB_id][CC_id];
|
||||
@@ -1057,8 +1055,6 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
|
||||
int UE_id = device->Mod_id;
|
||||
int CC_id = device->CC_id;
|
||||
int subframe;
|
||||
int ready_for_new_subframe=0;
|
||||
int subframe_UE_mask_local;
|
||||
int sample_count=0;
|
||||
int read_size;
|
||||
|
||||
@@ -1322,8 +1318,6 @@ void init_openair1(void)
|
||||
void init_openair2(void)
|
||||
{
|
||||
#ifdef OPENAIR2
|
||||
module_id_t enb_id;
|
||||
module_id_t UE_id;
|
||||
int CC_id;
|
||||
//#warning "eNB index is hard coded to zero"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user