introducing the selection of tx and rx subdev
This commit is contained in:
@@ -2057,6 +2057,16 @@ static void NRRCconfig_RU(void) {
|
|||||||
RC.ru[j]->openair0_cfg.sdr_addrs = strdup(*(RUParamList.paramarray[j][RU_SDR_ADDRS].strptr));
|
RC.ru[j]->openair0_cfg.sdr_addrs = strdup(*(RUParamList.paramarray[j][RU_SDR_ADDRS].strptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config_isparamset(RUParamList.paramarray[j], RU_TX_SUBDEV)) {
|
||||||
|
RC.ru[j]->openair0_cfg.tx_subdev = strdup(*(RUParamList.paramarray[j][RU_TX_SUBDEV].strptr));
|
||||||
|
LOG_I(PHY, "RU USRP tx subdev == %s\n", RC.ru[j]->openair0_cfg.tx_subdev);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config_isparamset(RUParamList.paramarray[j], RU_RX_SUBDEV)) {
|
||||||
|
RC.ru[j]->openair0_cfg.rx_subdev = strdup(*(RUParamList.paramarray[j][RU_RX_SUBDEV].strptr));
|
||||||
|
LOG_I(PHY, "RU USRP rx subdev == %s\n", RC.ru[j]->openair0_cfg.rx_subdev);
|
||||||
|
}
|
||||||
|
|
||||||
if (config_isparamset(RUParamList.paramarray[j], RU_SDR_CLK_SRC)) {
|
if (config_isparamset(RUParamList.paramarray[j], RU_SDR_CLK_SRC)) {
|
||||||
if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "internal") == 0) {
|
if (strcmp(*(RUParamList.paramarray[j][RU_SDR_CLK_SRC].strptr), "internal") == 0) {
|
||||||
RC.ru[j]->openair0_cfg.clock_source = internal;
|
RC.ru[j]->openair0_cfg.clock_source = internal;
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ typedef enum {
|
|||||||
#define CONFIG_STRING_RU_SL_AHEAD "sl_ahead"
|
#define CONFIG_STRING_RU_SL_AHEAD "sl_ahead"
|
||||||
#define CONFIG_STRING_RU_NR_FLAG "nr_flag"
|
#define CONFIG_STRING_RU_NR_FLAG "nr_flag"
|
||||||
#define CONFIG_STRING_RU_NR_SCS_FOR_RASTER "nr_scs_for_raster"
|
#define CONFIG_STRING_RU_NR_SCS_FOR_RASTER "nr_scs_for_raster"
|
||||||
|
#define CONFIG_STRING_RU_TX_SUBDEV "tx_subdev"
|
||||||
|
#define CONFIG_STRING_RU_RX_SUBDEV "rx_subdev"
|
||||||
|
|
||||||
#define HLP_RU_SF_AHEAD "LTE TX processing advance"
|
#define HLP_RU_SF_AHEAD "LTE TX processing advance"
|
||||||
#define HLP_RU_SL_AHEAD "NR TX processing advance"
|
#define HLP_RU_SL_AHEAD "NR TX processing advance"
|
||||||
@@ -142,6 +144,8 @@ typedef enum {
|
|||||||
#define RU_SL_AHEAD 30
|
#define RU_SL_AHEAD 30
|
||||||
#define RU_NR_FLAG 31
|
#define RU_NR_FLAG 31
|
||||||
#define RU_NR_SCS_FOR_RASTER 32
|
#define RU_NR_SCS_FOR_RASTER 32
|
||||||
|
#define RU_TX_SUBDEV 33
|
||||||
|
#define RU_RX_SUBDEV 34
|
||||||
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
/* RU configuration parameters */
|
/* RU configuration parameters */
|
||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
@@ -180,6 +184,8 @@ typedef enum {
|
|||||||
{CONFIG_STRING_RU_SL_AHEAD, HLP_RU_SL_AHEAD, 0, iptr:NULL, defintval:6, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_SL_AHEAD, HLP_RU_SL_AHEAD, 0, iptr:NULL, defintval:6, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_NR_FLAG, HLP_RU_NR_FLAG, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_NR_FLAG, HLP_RU_NR_FLAG, 0, iptr:NULL, defintval:0, TYPE_INT, 0}, \
|
||||||
{CONFIG_STRING_RU_NR_SCS_FOR_RASTER, HLP_RU_NR_SCS_FOR_RASTER, 0, iptr:NULL, defintval:1, TYPE_INT, 0}, \
|
{CONFIG_STRING_RU_NR_SCS_FOR_RASTER, HLP_RU_NR_SCS_FOR_RASTER, 0, iptr:NULL, defintval:1, TYPE_INT, 0}, \
|
||||||
|
{CONFIG_STRING_RU_TX_SUBDEV, NULL, 0, strptr:NULL, defstrval:"", TYPE_STRING, 0}, \
|
||||||
|
{CONFIG_STRING_RU_RX_SUBDEV, NULL, 0, strptr:NULL, defstrval:"", TYPE_STRING, 0}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|||||||
@@ -178,6 +178,10 @@ typedef struct {
|
|||||||
int rx_num_channels;
|
int rx_num_channels;
|
||||||
//! number of TX channels (=TX antennas)
|
//! number of TX channels (=TX antennas)
|
||||||
int tx_num_channels;
|
int tx_num_channels;
|
||||||
|
//! rx daughter card
|
||||||
|
char* rx_subdev;
|
||||||
|
//! tx daughter card
|
||||||
|
char* tx_subdev;
|
||||||
//! \brief RX base addresses for mmapped_dma
|
//! \brief RX base addresses for mmapped_dma
|
||||||
int32_t *rxbase[4];
|
int32_t *rxbase[4];
|
||||||
//! \brief TX base addresses for mmapped_dma
|
//! \brief TX base addresses for mmapped_dma
|
||||||
|
|||||||
@@ -1021,7 +1021,7 @@ extern "C" {
|
|||||||
sscanf(uhd::get_version_string().c_str(),"%d.%d.%d",&vers,&subvers,&subsubvers);
|
sscanf(uhd::get_version_string().c_str(),"%d.%d.%d",&vers,&subvers,&subsubvers);
|
||||||
LOG_I(HW,"UHD version %s (%d.%d.%d)\n",
|
LOG_I(HW,"UHD version %s (%d.%d.%d)\n",
|
||||||
uhd::get_version_string().c_str(),vers,subvers,subsubvers);
|
uhd::get_version_string().c_str(),vers,subvers,subsubvers);
|
||||||
std::string args;
|
std::string args,tx_subdev,rx_subdev;
|
||||||
|
|
||||||
if (openair0_cfg[0].sdr_addrs == NULL) {
|
if (openair0_cfg[0].sdr_addrs == NULL) {
|
||||||
args = "type=b200";
|
args = "type=b200";
|
||||||
@@ -1347,6 +1347,13 @@ extern "C" {
|
|||||||
|
|
||||||
LOG_D(HW, "usrp->get_tx_num_channels() == %zd\n", s->usrp->get_tx_num_channels());
|
LOG_D(HW, "usrp->get_tx_num_channels() == %zd\n", s->usrp->get_tx_num_channels());
|
||||||
LOG_D(HW, "openair0_cfg[0].tx_num_channels == %d\n", openair0_cfg[0].tx_num_channels);
|
LOG_D(HW, "openair0_cfg[0].tx_num_channels == %d\n", openair0_cfg[0].tx_num_channels);
|
||||||
|
LOG_I(HW, "openair0_cfg[0].tx_subdev == %s\n", openair0_cfg[0].tx_subdev);
|
||||||
|
LOG_I(HW, "openair0_cfg[0].rx_subdev == %s\n", openair0_cfg[0].rx_subdev);
|
||||||
|
|
||||||
|
tx_subdev = openair0_cfg[0].tx_subdev;
|
||||||
|
rx_subdev = openair0_cfg[0].rx_subdev;
|
||||||
|
s->usrp->set_tx_subdev_spec(tx_subdev);
|
||||||
|
s->usrp->set_rx_subdev_spec(rx_subdev);
|
||||||
|
|
||||||
for(int i=0; i<((int) s->usrp->get_tx_num_channels()); i++) {
|
for(int i=0; i<((int) s->usrp->get_tx_num_channels()); i++) {
|
||||||
::uhd::gain_range_t gain_range_tx = s->usrp->get_tx_gain_range(i);
|
::uhd::gain_range_t gain_range_tx = s->usrp->get_tx_gain_range(i);
|
||||||
@@ -1419,6 +1426,7 @@ extern "C" {
|
|||||||
LOG_I(HW," Actual TX packet size: %lu\n",s->tx_stream->get_max_num_samps());
|
LOG_I(HW," Actual TX packet size: %lu\n",s->tx_stream->get_max_num_samps());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cout << boost::format("Using Device: %s") % s->usrp->get_pp_string() << std::endl;
|
||||||
LOG_I(HW,"Device timestamp: %f...\n", s->usrp->get_time_now().get_real_secs());
|
LOG_I(HW,"Device timestamp: %f...\n", s->usrp->get_time_now().get_real_secs());
|
||||||
device->trx_write_func = trx_usrp_write;
|
device->trx_write_func = trx_usrp_write;
|
||||||
device->trx_read_func = trx_usrp_read;
|
device->trx_read_func = trx_usrp_read;
|
||||||
|
|||||||
Reference in New Issue
Block a user