Commit 03decb04 authored by rdoost's avatar rdoost

adding mme addresses to conf file, added SF_DL check to TX, cosmetic changes to iris_lib

parent 57009d1d
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include "UTIL/LOG/log_extern.h" #include "UTIL/LOG/log_extern.h"
#include "common_lib.h" #include "common_lib.h"
#define SAMPLE_RATE_DOWN 4 #define SAMPLE_RATE_DOWN 1
/*! \brief Iris Configuration */ /*! \brief Iris Configuration */
typedef struct typedef struct
...@@ -170,6 +170,7 @@ static int trx_iris_write(openair0_device *device, openair0_timestamp timestamp, ...@@ -170,6 +170,7 @@ static int trx_iris_write(openair0_device *device, openair0_timestamp timestamp,
printf("Unable to write stream!\n"); printf("Unable to write stream!\n");
break; break;
} }
flag = 0;
samples_sent += ret; samples_sent += ret;
samps[0] += ret; samps[0] += ret;
if (cc % 2 == 0) if (cc % 2 == 0)
...@@ -482,6 +483,7 @@ extern "C" { ...@@ -482,6 +483,7 @@ extern "C" {
// Initialize Iris device // Initialize Iris device
device->openair0_cfg = openair0_cfg; device->openair0_cfg = openair0_cfg;
SoapySDR::Kwargs args;
for (card = 0; card < MAX_CARDS; card++) for (card = 0; card < MAX_CARDS; card++)
{ {
char* remote_addr = device->openair0_cfg[card].remote_addr; char* remote_addr = device->openair0_cfg[card].remote_addr;
...@@ -491,7 +493,8 @@ extern "C" { ...@@ -491,7 +493,8 @@ extern "C" {
while (srl != NULL) while (srl != NULL)
{ {
LOG_I(HW,"Attempting to open Iris device: %s\n", srl); LOG_I(HW,"Attempting to open Iris device: %s\n", srl);
std::string args = "driver="+std::string(drvtype)+",serial="+std::string(srl)+",remote:prot=tcp"; args["driver"] = drvtype;
args["serial"] = srl;
s->iris.push_back(SoapySDR::Device::make(args)); s->iris.push_back(SoapySDR::Device::make(args));
srl = strtok(NULL, ","); srl = strtok(NULL, ",");
} }
...@@ -523,7 +526,7 @@ extern "C" { ...@@ -523,7 +526,7 @@ extern "C" {
//openair0_cfg[0].samples_per_packet = 1024; //openair0_cfg[0].samples_per_packet = 1024;
//openair0_cfg[0].tx_sample_advance = 80; //openair0_cfg[0].tx_sample_advance = 80;
openair0_cfg[0].tx_bw = 30e6; openair0_cfg[0].tx_bw = 30e6;
openair0_cfg[0].rx_bw = 5e6; openair0_cfg[0].rx_bw = 30e6;
break; break;
case 1920000: case 1920000:
//openair0_cfg[0].samples_per_packet = 1024; //openair0_cfg[0].samples_per_packet = 1024;
...@@ -577,7 +580,7 @@ extern "C" { ...@@ -577,7 +580,7 @@ extern "C" {
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]);
if (openair0_cfg[0].duplex_mode == 1 ) //duplex_mode_TDD if (openair0_cfg[0].duplex_mode == 1 ) //duplex_mode_TDD
s->iris[r]->setAntenna(SOAPY_SDR_RX, i, (i==0)?"TRXA":"TRXB"); s->iris[r]->setAntenna(SOAPY_SDR_RX, i, s->iris[r]->listAntennas(SOAPY_SDR_RX,i)[0]);
s->iris[r]->setDCOffsetMode(SOAPY_SDR_RX, i, true); // move somewhere else s->iris[r]->setDCOffsetMode(SOAPY_SDR_RX, i, true); // move somewhere else
} }
} }
...@@ -590,19 +593,19 @@ extern "C" { ...@@ -590,19 +593,19 @@ extern "C" {
} }
// create tx & rx streamer // create tx & rx streamer
const SoapySDR::Kwargs &arg = SoapySDR::Kwargs(); //const SoapySDR::Kwargs &arg = SoapySDR::Kwargs();
std::vector<size_t> channels={}; std::vector<size_t> channels;
for (i = 0; i < s->rx_num_channels; i++) for (i = 0; i < s->rx_num_channels; i++)
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX)) if (i < s->iris[r]->getNumChannels(SOAPY_SDR_RX))
channels.push_back(i); channels.push_back(i);
s->rxStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_RX, SOAPY_SDR_CS16, channels, arg)); s->rxStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_RX, SOAPY_SDR_CS16, channels)); //, arg));
std::vector<size_t> tx_channels={}; std::vector<size_t> tx_channels={};
for (i = 0; i < s->tx_num_channels; i++) for (i = 0; i < s->tx_num_channels; i++)
if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX)) if (i < s->iris[r]->getNumChannels(SOAPY_SDR_TX))
tx_channels.push_back(i); tx_channels.push_back(i);
s->txStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_TX, SOAPY_SDR_CS16, tx_channels, arg)); s->txStream.push_back(s->iris[r]->setupStream(SOAPY_SDR_TX, SOAPY_SDR_CS16, tx_channels)); //, arg));
s->iris[r]->setHardwareTime(0, ""); //s->iris[r]->setHardwareTime(0, "");
for (i = 0; i < s->rx_num_channels; i++) { for (i = 0; i < s->rx_num_channels; i++) {
......
...@@ -17,7 +17,7 @@ eNBs = ...@@ -17,7 +17,7 @@ eNBs =
mobile_country_code = "208"; mobile_country_code = "208";
mobile_network_code = "94"; mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
...@@ -31,7 +31,7 @@ eNBs = ...@@ -31,7 +31,7 @@ eNBs =
tdd_config_s = 0; tdd_config_s = 0;
prefix_type = "NORMAL"; prefix_type = "NORMAL";
eutra_band = 38; eutra_band = 38;
downlink_frequency = 2600000000L; downlink_frequency = 2580000000L;
uplink_frequency_offset = 0; uplink_frequency_offset = 0;
Nid_cell = 57; Nid_cell = 57;
N_RB_DL = 25; N_RB_DL = 25;
...@@ -137,8 +137,8 @@ eNBs = ...@@ -137,8 +137,8 @@ eNBs =
////////// MME parameters: ////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.12.70"; mme_ip_address = ( { ipv4 = "10.224.20.11";
ipv6 = "192:168:30::17"; ipv6 = "fe80::6a6:9555:ded:fafa/64";
active = "yes"; active = "yes";
preference = "ipv4"; preference = "ipv4";
} }
...@@ -146,7 +146,7 @@ eNBs = ...@@ -146,7 +146,7 @@ eNBs =
rrh_gw_config = ({ rrh_gw_config = ({
local_if_name = "eth0"; local_if_name = "eth0";
remote_address = "remote,0127"; remote_address = "iris,0205";
local_address = "10.224.20.40"; local_address = "10.224.20.40";
local_port = 50000; #for raw option local port must be the same to remote local_port = 50000; #for raw option local port must be the same to remote
remote_port = 50000; remote_port = 50000;
...@@ -162,11 +162,16 @@ rrh_gw_config = ({ ...@@ -162,11 +162,16 @@ rrh_gw_config = ({
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
#ENB_INTERFACE_NAME_FOR_S1_MME = "eth1";
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; #ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.146/24";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.146/24"; #ENB_INTERFACE_NAME_FOR_S1U = "eth1";
ENB_INTERFACE_NAME_FOR_S1U = "eth1"; #ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.146/24";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.146/24"; #ENB_PORT_FOR_S1U = 2152; # Spec 2152
ENB_INTERFACE_NAME_FOR_S1_MME = "enp1s0f0";
ENB_IPV4_ADDRESS_FOR_S1_MME = "10.224.20.35/26";
ENB_INTERFACE_NAME_FOR_S1U = "enp1s0f0";
ENB_IPV4_ADDRESS_FOR_S1U = "10.224.20.35/26";
ENB_PORT_FOR_S1U = 2152; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
......
...@@ -17,7 +17,7 @@ eNBs = ...@@ -17,7 +17,7 @@ eNBs =
mobile_country_code = "208"; mobile_country_code = "208";
mobile_network_code = "94"; mobile_network_code = "92";
////////// Physical parameters: ////////// Physical parameters:
...@@ -50,7 +50,7 @@ eNBs = ...@@ -50,7 +50,7 @@ eNBs =
pucch_nRB_CQI = 1; pucch_nRB_CQI = 1;
pucch_nCS_AN = 0; pucch_nCS_AN = 0;
pucch_n1_AN = 32; pucch_n1_AN = 32;
pdsch_referenceSignalPower = -60; pdsch_referenceSignalPower = -30;
pdsch_p_b = 0; pdsch_p_b = 0;
pusch_n_SB = 1; pusch_n_SB = 1;
pusch_enable64QAM = "DISABLE"; pusch_enable64QAM = "DISABLE";
...@@ -68,7 +68,7 @@ eNBs = ...@@ -68,7 +68,7 @@ eNBs =
srs_ackNackST =; srs_ackNackST =;
srs_MaxUpPts =;*/ srs_MaxUpPts =;*/
pusch_p0_Nominal = -90; pusch_p0_Nominal = -70;
pusch_alpha = "AL1"; pusch_alpha = "AL1";
pucch_p0_Nominal = -96; pucch_p0_Nominal = -96;
msg3_delta_Preamble = 6; msg3_delta_Preamble = 6;
...@@ -137,8 +137,8 @@ eNBs = ...@@ -137,8 +137,8 @@ eNBs =
////////// MME parameters: ////////// MME parameters:
mme_ip_address = ( { ipv4 = "192.168.12.70"; mme_ip_address = ( { ipv4 = "10.224.20.11";
ipv6 = "192:168:30::17"; ipv6 = "fe80::6a6:9555:ded:fafa";
active = "yes"; active = "yes";
preference = "ipv4"; preference = "ipv4";
} }
...@@ -146,7 +146,7 @@ eNBs = ...@@ -146,7 +146,7 @@ eNBs =
rrh_gw_config = ({ rrh_gw_config = ({
local_if_name = "eth0"; local_if_name = "eth0";
remote_address = "remote,0106"; remote_address = "iris,0205";
local_address = "10.224.20.47" local_address = "10.224.20.47"
local_port = 50000; #for raw option local port must be the same to remote local_port = 50000; #for raw option local port must be the same to remote
remote_port = 50000; remote_port = 50000;
...@@ -161,12 +161,17 @@ rrh_gw_config = ({ ...@@ -161,12 +161,17 @@ rrh_gw_config = ({
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
ENB_INTERFACE_NAME_FOR_S1_MME = "enp1s0f0";
ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; ENB_IPV4_ADDRESS_FOR_S1_MME = "10.224.20.35/26";
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.146/24"; ENB_INTERFACE_NAME_FOR_S1U = "enp1s0f0";
ENB_INTERFACE_NAME_FOR_S1U = "eth1"; ENB_IPV4_ADDRESS_FOR_S1U = "10.224.20.35/26";
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.146/24";
ENB_PORT_FOR_S1U = 2152; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
#ENB_INTERFACE_NAME_FOR_S1_MME = "enp1s0f0";
#ENB_IPV4_ADDRESS_FOR_S1_MME = "10.224.20.35/26";
#ENB_INTERFACE_NAME_FOR_S1U = "enp1s0f0";
#ENB_IPV4_ADDRESS_FOR_S1U = "10.224.20.35/26";
#ENB_PORT_FOR_S1U = 2152; # Spec 2152
}; };
log_config : log_config :
......
...@@ -875,7 +875,10 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) { ...@@ -875,7 +875,10 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
void *rxp[fp->nb_antennas_rx],*txp[fp->nb_antennas_tx]; void *rxp[fp->nb_antennas_rx],*txp[fp->nb_antennas_tx];
unsigned int rxs,txs; unsigned int rxs,txs;
int i; int i;
int flag = 1;
int tx_sfoffset = 3;//(eNB->single_thread_flag == 1) ? 3 : 3; int tx_sfoffset = 3;//(eNB->single_thread_flag == 1) ? 3 : 3;
//lte_subframe_t TXSF_type = subframe_select(fp,(proc->subframe_rx+tx_sfoffset)%10);
//if (proc->first_rx==0 && TXSF_type != SF_UL) {
if (proc->first_rx==0) { if (proc->first_rx==0) {
// Transmit TX buffer based on timestamp from RX // Transmit TX buffer based on timestamp from RX
...@@ -886,13 +889,14 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) { ...@@ -886,13 +889,14 @@ void rx_rf(PHY_VARS_eNB *eNB,int *frame,int *subframe) {
for (i=0; i<fp->nb_antennas_tx; i++) for (i=0; i<fp->nb_antennas_tx; i++)
txp[i] = (void*)&eNB->common_vars.txdata[0][i][((proc->subframe_rx+tx_sfoffset)%10)*fp->samples_per_tti]; txp[i] = (void*)&eNB->common_vars.txdata[0][i][((proc->subframe_rx+tx_sfoffset)%10)*fp->samples_per_tti];
//lte_subframe_t SFnext_type = subframe_select(fp,(proc->subframe_rx+tx_sfoffset+1)%10);
//if (SFnext_type == SF_UL) flag = 3;
txs = eNB->rfdevice.trx_write_func(&eNB->rfdevice, txs = eNB->rfdevice.trx_write_func(&eNB->rfdevice,
proc->timestamp_rx+(tx_sfoffset*fp->samples_per_tti)-openair0_cfg[0].tx_sample_advance, proc->timestamp_rx+(tx_sfoffset*fp->samples_per_tti)-openair0_cfg[0].tx_sample_advance,
txp, txp,
fp->samples_per_tti, fp->samples_per_tti,
fp->nb_antennas_tx, fp->nb_antennas_tx,
1); flag);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 0 ); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 0 );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment