Attention is currently required from: Hoernchen, Timur Davydov, fixeria, laforge, osmith.
pespin has posted comments on this change by Timur Davydov. ( https://gerrit.osmocom.org/c/osmo-trx/+/42198?usp=email )
Change subject: feat(usdr): add USDR backend support (osmo-trx-usdr) ......................................................................
Patch Set 5:
(40 comments)
File Transceiver52M/device/usdr/USDRDevice.h:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/471c550a_e5761512?usp=... : PS4, Line 12: This program is distributed in the hope that it will be useful,
Added the `*` prefix.
and the indentation still differs from the the lines above.
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f2a82332_9a4aa5a4?usp=... : PS4, Line 46: struct DeviceParameters {
Yes, replaced with `struct dev_desc` for consistency with the other devices.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/4f8422fd_5ab50155?usp=... : PS4, Line 48: * time correction for TX timestamp, in seconds, to align it with RX timestamp, which is needed to achieve correct
Fixed, wrapped to stay under 120 chars.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a1ead6bb_441d4300?usp=... : PS4, Line 54: using DeviceParametersMap = std::map<std::string, DeviceParameters>;
Yes, replaced with `dev_map_t` for consistency with the other devices.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/de9c7bca_dcdef9eb?usp=... : PS4, Line 86: public:
Reordered the class members to match the structure used in the other device classes (public section […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/644d6824_42434013?usp=... : PS4, Line 115: /**
Removed trailing whitespace.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f70ef8e2_893ba916?usp=... : PS4, Line 116: * @brief Read samples from the USDR.
Ack. […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/096ba097_1347a43d?usp=... : PS4, Line 126: bool *underrun = nullptr);
Aligned as suggested.
Done
File Transceiver52M/device/usdr/USDRDevice.h:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/4f484909_a53aac39?usp=... : PS3, Line 54: int txsps; ///< samples count per GSM symbol for Tx
Replaced with `tx_sps` and `rx_sps` from `RadioDevice`
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/b7f10edb_6afd13dc?usp=... : PS3, Line 60: int timeTxCorr = 0; ///< time correction for TX timestamp, in samples, to align it with RX timestamp, which is needed to achieve correct timing of the transmitted signal. This is a device-specific parameter that can be configured via dev_args and defaults to 0 if not specified.
Done
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/3cc3340a_949321a6?usp=... : PS3, Line 63: TIMESTAMP ts_last_recv = 0;
Fixed indentation throughout the file
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/62a9520e_10e54542?usp=... : PS3, Line 90: Read samples from the USDR.
Fixed comments throughout the file
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/311fa05a_4ce46b10?usp=... : PS3, Line 100: TIMESTAMP timestamp = 0xffffffff, bool *underrun = NULL);
Fixed indentation throughout the file
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/0b5e83b1_0deddbd0?usp=... : PS3, Line 121:
Fixed whitespaces throughout the file
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a876a8be_93671360?usp=... : PS3, Line 132: TIMESTAMP initialReadTimestamp(void) { return ts_initial;}
Fixed indentation throughout the file
Done
File Transceiver52M/device/usdr/USDRDevice.cpp:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/bac9759b_0fd0ecd1?usp=... : PS3, Line 49: {"limemini", {tx_offset: 86.769us}}, /* 94 samples at 1083333.33333 sps corresponds to 86.769 us */
Thanks, good catch — I indeed lost xSDR in that section. […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f653d980_0f9b118c?usp=... : PS3, Line 52: enum {
Replaced the enum with #define constants as suggested
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/7d6b5694_b0e53434?usp=... : PS3, Line 85: std::string msg = std::string("Error creating USDR device with connection string '") + connection_string + "' res: " + std::to_string(res) + "(" + strerror(res) + ")";
Reformatted the file to ensure all lines are within the 120-character limit
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/02b41a8a_c8939e46?usp=... : PS3, Line 180: dev = NULL;
Fixed indentation throughout the file
Done
File Transceiver52M/device/usdr/USDRDevice.cpp:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/7ea8e927_577d51c6?usp=... : PS4, Line 191: const int loglevel = parse_config(args, "loglevel", 3);
I’ve added a logging callback similar to the other backends. […]
Ack, fine.
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/28da068b_0e6c779f?usp=... : PS4, Line 199: const double rate = 0.27083333333e6 * tx_sps;
It comes from 1083333.33333 sps / 4. […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/e716211c_775c711d?usp=... : PS4, Line 203: uint64_t val;
I've moved the variable declarations to the top of the function, except for const ones in some funct […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f643e89a_41df4ba3?usp=... : PS4, Line 221: usdr_dme_set_uint_exception(dev, "/dm/sdr/0/tx/gain", 0);
Added the suggested macros and replaced the hardcoded paths accordingly.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/a85b9b60_4c86ab55?usp=... : PS4, Line 228: const char* fmt = "ci16";
Moved it to a #define at the top of the file.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/d95d074a_b34067c2?usp=... : PS4, Line 246: usdr_dms_sync_exception(dev, "rx", ped.size(), ped.data());
Replaced the remaining hardcoded strings with defines.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/c909c799_7310ba57?usp=... : PS4, Line 260: if (dev) {
Implemented as suggested.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/357dcc50_1169f130?usp=... : PS4, Line 269: return false;
Added an error message.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/1866d804_334efc44?usp=... : PS4, Line 296: return !started;
Implemented as suggested.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/0290b35e_e83b0182?usp=... : PS4, Line 327: double USDRDevice::setTxGain(double dB, size_t chan)
Removed all unused functions.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f8dcbd92_80861407?usp=... : PS4, Line 382: try {
Reworked it to follow the other backends: values are now cached per channel in arrays (rx_gains, tx_ […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/dca9c323_be9e8e78?usp=... : PS4, Line 392: TIMESTAMP timestamp, bool *underrun)
Fixed the indentation.
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/86153742_bcaf52f6?usp=... : PS4, Line 394: if (!started)
Replaced the check with the same bufs. […]
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/69188723_e0f9b0ed?usp=... : PS4, Line 421: bool *underrun, TIMESTAMP timestamp)
Fixed
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/fcecb741_2a71b9bc?usp=... : PS4, Line 475: std::string USDRDevice::getTxAntenna(size_t chan )
Removed
Not removed ;)
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/2b5e005a_9307955e?usp=... : PS4, Line 492: return GSM::Time(6,7);
Added space
Done
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/3268480a_2f30223f?usp=... : PS4, Line 610: return new USDRDevice(iface, cfg);
I don’t think additional device-specific checks are needed here. […]
Done
File debian/osmo-trx-usdr.install:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/f38b6ad5_542ad2da?usp=... : PS4, Line 3: /usr/bin/osmo-trx-usdr
It surprised me as well. […]
@osmith@sysmocom.de CC
File doc/manuals/chapters/trx-backends.adoc:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/81873d67_72d8b6ae?usp=... : PS3, Line 86: where multiple small SDRs are combined to present one or more TRX instances
Updated the documentation according to your remarks.
SO IIUC that means you didn't actually yet try/succeed to run multi-trx BTS with these devices, correct?
File doc/manuals/chapters/trx-devices.adoc:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/b71db28d_36b06576?usp=... : PS3, Line 102: scale the number of TRX instances.
Good point, thanks. […]
As mentioned in the other comment, multi-trx for a given BTS running multiple osmo-trx processes is not supported nowadays. Can you actually provide information on how did you test such a setup? Otherwise please update the documentation in this file.
File doc/manuals/chapters/trx-devices.adoc:
https://gerrit.osmocom.org/c/osmo-trx/+/42198/comment/da8c8ccb_8fdf65ed?usp=... : PS4, Line 127: instances. The current _osmo-trx-usdr_ backend operates in single-channel mode.
Added the missing newline at the end of the file.
Done