From 30f0942dbc6f4eba4efe5bb75e8a648c81031b56 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Thu, 23 Feb 2023 13:31:08 +0100 Subject: [PATCH] fix for the case multiple USRP devices are specified in the config string --- maketags | 2 +- radio/USRP/USERSPACE/LIB/usrp_lib.cpp | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/maketags b/maketags index 87f445dd21..4c25bf6292 100755 --- a/maketags +++ b/maketags @@ -1,4 +1,4 @@ #!/bin/sh echo "building ctags for openair1 and openair2 ..." -ctags -e -R --exclude=openair1/DOCS/ --exclude=openair2/DOCS/ --exclude=openair1/SIMULATION/ --exclude=targets/DOCS/ --exclude=targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common nfapi executables sdr +ctags -e -R --exclude=openair1/DOCS/ --exclude=openair2/DOCS/ --exclude=openair1/SIMULATION/ --exclude=targets/DOCS/ --exclude=targets/PROJECTS/ openair1 openair2 openair3 targets cmake_targets common nfapi executables radio diff --git a/radio/USRP/USERSPACE/LIB/usrp_lib.cpp b/radio/USRP/USERSPACE/LIB/usrp_lib.cpp index 227c2f461c..074ba44eec 100644 --- a/radio/USRP/USERSPACE/LIB/usrp_lib.cpp +++ b/radio/USRP/USERSPACE/LIB/usrp_lib.cpp @@ -1067,18 +1067,28 @@ extern "C" { return -1; } - LOG_I(HW,"Found USRP %s\n", device_adds[0].get("type").c_str()); + std::string type_str, product_str; + if (args.find("addr0") != std::string::npos) { + type_str = "type0"; + product_str = "product0"; + } + else { + type_str = "type"; + product_str = "product"; + } + + LOG_I(HW,"Found USRP %s\n", device_adds[0].get(type_str).c_str()); double usrp_master_clock; - if (device_adds[0].get("type") == "b200") { + if (device_adds[0].get(type_str) == "b200") { device->type = USRP_B200_DEV; usrp_master_clock = 30.72e6; args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock); args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=7680, recv_frame_size=7680" ; } - if (device_adds[0].get("type") == "n3xx") { - const std::string product = device_adds[0].get("product"); + if (device_adds[0].get(type_str) == "n3xx") { + const std::string product = device_adds[0].get(product_str); printf("Found USRP %s\n", product.c_str()); device->type=USRP_N300_DEV; if (product == "n320") @@ -1091,7 +1101,7 @@ extern "C" { LOG_W(HW,"Can't set kernel parameters for N3x0\n"); } - if (device_adds[0].get("type") == "x300") { + if (device_adds[0].get(type_str) == "x300") { printf("Found USRP x300\n"); device->type=USRP_X300_DEV; usrp_master_clock = 184.32e6; @@ -1102,7 +1112,7 @@ extern "C" { LOG_W(HW,"Can't set kernel parameters for X3xx\n"); } - if (device_adds[0].get("type") == "x4xx") { + if (device_adds[0].get(type_str) == "x4xx") { printf("Found USRP x400\n"); device->type = USRP_X400_DEV; usrp_master_clock = 245.76e6;