mirror of
				https://gitea.osmocom.org/cellular-infrastructure/osmo-trx.git
				synced 2025-11-03 21:53:18 +00:00 
			
		
		
		
	Compare commits
	
		
			17 Commits
		
	
	
		
			Hoernchen/
			...
			1.7.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					4f6e9eb4cf | ||
| 
						 | 
					24f938bfa5 | ||
| 
						 | 
					132ec7452d | ||
| 
						 | 
					553d6b0b51 | ||
| 
						 | 
					a7f5826351 | ||
| 
						 | 
					75cf9254a3 | ||
| 
						 | 
					c5f623f966 | ||
| 
						 | 
					8fd51cb7c9 | ||
| 
						 | 
					e6dc78e5c5 | ||
| 
						 | 
					9982b33597 | ||
| 
						 | 
					52ef221657 | ||
| 
						 | 
					ec13193cae | ||
| 
						 | 
					3d8598d460 | ||
| 
						 | 
					1d7f5a9175 | ||
| 
						 | 
					511d62733e | ||
| 
						 | 
					8f19df3bd7 | ||
| 
						 | 
					b7cde0f6a2 | 
							
								
								
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
open_collective: osmocom
 | 
			
		||||
@@ -54,7 +54,6 @@ EXTRA_DIST = \
 | 
			
		||||
	LEGAL \
 | 
			
		||||
	COPYING \
 | 
			
		||||
	README.md \
 | 
			
		||||
	contrib/osmo-trx.spec.in \
 | 
			
		||||
	debian \
 | 
			
		||||
	git-version-gen \
 | 
			
		||||
	$(NULL)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								README.md
									
									
									
									
									
								
							@@ -4,17 +4,17 @@ About OsmoTRX
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
* TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
* TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
* TS 05.04 "Modulation"
 | 
			
		||||
* TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
* TS 05.01 *Physical layer on the radio path*
 | 
			
		||||
* TS 05.02 *Multiplexing and Multiple Access on the Radio Path*
 | 
			
		||||
* TS 05.04 *Modulation*
 | 
			
		||||
* TS 05.10 *Radio subsystem synchronization*
 | 
			
		||||
 | 
			
		||||
OsmoTRX is originally based on the transceiver code from the
 | 
			
		||||
[OpenBTS](https://osmocom.org/projects/osmobts/wiki/OpenBTS) project, but setup
 | 
			
		||||
to operate independently with the purpose of using with non-OpenBTS software and
 | 
			
		||||
projects, specifically within the Osmocom stack.  Used together with
 | 
			
		||||
[OsmoBTS](https://osmocom.org/projects/osmobts/wiki) you can get a pretty
 | 
			
		||||
standard GSM BTS with Abis interface as per the relevant 3GPP specifications.
 | 
			
		||||
standard GSM/GPRS/EGPRS BTS with Abis interface as per the relevant 3GPP specifications.
 | 
			
		||||
 | 
			
		||||
Homepage
 | 
			
		||||
--------
 | 
			
		||||
@@ -27,7 +27,7 @@ GIT Repository
 | 
			
		||||
 | 
			
		||||
You can clone from the official osmo-trx.git repository using
 | 
			
		||||
 | 
			
		||||
        git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-trx`
 | 
			
		||||
        git clone https://gitea.osmocom.org/cellular-infrastructure/osmo-trx
 | 
			
		||||
 | 
			
		||||
There is a web interface at <https://gitea.osmocom.org/cellular-infrastructure/osmo-trx>
 | 
			
		||||
 | 
			
		||||
@@ -39,6 +39,13 @@ also available online for each of the sub-libraries at User Manual for OsmoTRX
 | 
			
		||||
can be generated during the build process, and is also available online at
 | 
			
		||||
<https://ftp.osmocom.org/docs/latest/osmotrx-usermanual.pdf>.
 | 
			
		||||
 | 
			
		||||
Forum
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
We welcome any osmo-trx related discussions in the
 | 
			
		||||
[Cellular Network Infrastructure -> 2 RAN (GERAN)](https://discourse.osmocom.org/c/cni/geran)
 | 
			
		||||
section of the osmocom discourse (web based Forum).
 | 
			
		||||
 | 
			
		||||
Mailing List
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
@@ -50,13 +57,20 @@ Please observe the [Osmocom Mailing List
 | 
			
		||||
Rules](https://osmocom.org/projects/cellular-infrastructure/wiki/Mailing_List_Rules)
 | 
			
		||||
when posting.
 | 
			
		||||
 | 
			
		||||
Issue Tracker
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
We use the [issue tracker of the osmo-trx project on osmocom.org](https://osmocom.org/projects/osmotrx/issues) for
 | 
			
		||||
tracking the state of bug reports and feature requests.  Feel free to submit any issues you may find, or help
 | 
			
		||||
us out by resolving existing issues.
 | 
			
		||||
 | 
			
		||||
Contributing
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Our coding standards are described at
 | 
			
		||||
<https://osmocom.org/projects/cellular-infrastructure/wiki/Coding_standards>
 | 
			
		||||
 | 
			
		||||
We us a gerrit based patch submission/review process for managing contributions.
 | 
			
		||||
We use a Gerrit based patch submission/review process for managing contributions.
 | 
			
		||||
Please see <https://osmocom.org/projects/cellular-infrastructure/wiki/Gerrit>
 | 
			
		||||
for more details
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,9 @@
 | 
			
		||||
# When cleaning up this file: bump API version in corresponding Makefile.am and rename corresponding debian/lib*.install
 | 
			
		||||
# according to https://osmocom.org/projects/cellular-infrastructure/wiki/Make_a_new_release
 | 
			
		||||
# In short: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html#Updating-version-info
 | 
			
		||||
# LIBVERSION=c:r:a
 | 
			
		||||
# If the library source code has changed at all since the last update, then increment revision: c:r + 1:a.
 | 
			
		||||
# If any interfaces have been added, removed, or changed since the last update: c + 1:0:a.
 | 
			
		||||
# If any interfaces have been added since the last public release: c:r:a + 1.
 | 
			
		||||
# If any interfaces have been removed or changed since the last public release: c:r:0.
 | 
			
		||||
#library	what			description / commit summary line
 | 
			
		||||
 
 | 
			
		||||
@@ -127,16 +127,16 @@ osmo_trx_uhd_LDADD = \
 | 
			
		||||
	$(UHD_LIBS)
 | 
			
		||||
osmo_trx_uhd_CPPFLAGS  = $(AM_CPPFLAGS) $(UHD_CFLAGS)
 | 
			
		||||
 | 
			
		||||
if ENABLE_MS_TRX
 | 
			
		||||
bin_PROGRAMS += osmo-trx-ms-uhd
 | 
			
		||||
osmo_trx_ms_uhd_SOURCES = $(MS_LOWER_SRC) $(MS_UPPER_SRC)
 | 
			
		||||
osmo_trx_ms_uhd_LDADD = \
 | 
			
		||||
	$(builddir)/device/uhd/libdevice.la \
 | 
			
		||||
	$(COMMON_LDADD) \
 | 
			
		||||
	$(UHD_LIBS) \
 | 
			
		||||
	$(TRXCON_LDADD)
 | 
			
		||||
osmo_trx_ms_uhd_CPPFLAGS  = $(AM_CPPFLAGS) $(UHD_CFLAGS) -DBUILDUHD
 | 
			
		||||
endif
 | 
			
		||||
#if ENABLE_MS_TRX
 | 
			
		||||
#bin_PROGRAMS += osmo-trx-ms-uhd
 | 
			
		||||
#osmo_trx_ms_uhd_SOURCES = $(MS_LOWER_SRC) $(MS_UPPER_SRC)
 | 
			
		||||
#osmo_trx_ms_uhd_LDADD = \
 | 
			
		||||
#	$(builddir)/device/uhd/libdevice.la \
 | 
			
		||||
#	$(COMMON_LDADD) \
 | 
			
		||||
#	$(UHD_LIBS) \
 | 
			
		||||
#	$(TRXCON_LDADD)
 | 
			
		||||
#osmo_trx_ms_uhd_CPPFLAGS  = $(AM_CPPFLAGS) $(UHD_CFLAGS) -DBUILDUHD
 | 
			
		||||
#endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
if DEVICE_USRP1
 | 
			
		||||
 
 | 
			
		||||
@@ -269,7 +269,8 @@ struct blade_hw {
 | 
			
		||||
 | 
			
		||||
		bool is_locked;
 | 
			
		||||
		blade_check(bladerf_set_pll_enable, dev, true);
 | 
			
		||||
		blade_check(bladerf_set_pll_refclk, dev, 10000000UL);
 | 
			
		||||
		uint64_t refclock = 10000000UL;
 | 
			
		||||
		blade_check(bladerf_set_pll_refclk, dev, refclock);
 | 
			
		||||
		for (int i = 0; i < 20; i++) {
 | 
			
		||||
			usleep(50 * 1000);
 | 
			
		||||
			bladerf_get_pll_lock_state(dev, &is_locked);
 | 
			
		||||
 
 | 
			
		||||
@@ -645,6 +645,7 @@ int main(int argc, char *argv[])
 | 
			
		||||
 | 
			
		||||
	osmo_init_logging2(tall_trx_ctx, &log_info);
 | 
			
		||||
	log_enable_multithread();
 | 
			
		||||
	log_cache_enable();
 | 
			
		||||
	osmo_stats_init(tall_trx_ctx);
 | 
			
		||||
	vty_init(&g_vty_info);
 | 
			
		||||
	logging_vty_add_cmds();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								configure.ac
									
									
									
									
									
								
							@@ -82,10 +82,10 @@ AC_TYPE_SIZE_T
 | 
			
		||||
AC_HEADER_TIME
 | 
			
		||||
AC_C_BIGENDIAN
 | 
			
		||||
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.9.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.9.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.9.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 1.9.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.10.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.10.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.10.0)
 | 
			
		||||
PKG_CHECK_MODULES(LIBOSMOCODING, libosmocoding >= 1.10.0)
 | 
			
		||||
 | 
			
		||||
AC_ARG_ENABLE(sanitize,
 | 
			
		||||
	[AS_HELP_STRING(
 | 
			
		||||
@@ -240,7 +240,6 @@ AS_IF([test "x$with_sse" != "xno"], [
 | 
			
		||||
    AM_CONDITIONAL(HAVE_SSE4_1, false)
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
dnl Check if the compiler supports specified GCC's built-in function
 | 
			
		||||
AC_DEFUN([CHECK_BUILTIN_SUPPORT], [
 | 
			
		||||
  AC_CACHE_CHECK(
 | 
			
		||||
    [whether ${CC} has $1 built-in],
 | 
			
		||||
@@ -380,6 +379,5 @@ AC_CONFIG_FILES([\
 | 
			
		||||
    contrib/Makefile \
 | 
			
		||||
    contrib/systemd/Makefile \
 | 
			
		||||
    doc/manuals/Makefile \
 | 
			
		||||
    contrib/osmo-trx.spec \
 | 
			
		||||
])
 | 
			
		||||
AC_OUTPUT
 | 
			
		||||
 
 | 
			
		||||
@@ -85,7 +85,17 @@ export PKG_CONFIG_PATH="$inst/lib/pkgconfig:$PKG_CONFIG_PATH"
 | 
			
		||||
export LD_LIBRARY_PATH="$inst/lib"
 | 
			
		||||
export PATH="$inst/bin:$PATH"
 | 
			
		||||
 | 
			
		||||
CONFIG="--enable-sanitize --enable-werror --with-uhd --with-usrp1 --with-lms --with-ipc --with-mstrx $INSTR"
 | 
			
		||||
CONFIG="
 | 
			
		||||
	--enable-sanitize
 | 
			
		||||
	--enable-werror
 | 
			
		||||
	--with-bladerf
 | 
			
		||||
	--with-ipc
 | 
			
		||||
	--with-lms
 | 
			
		||||
	--with-mstrx
 | 
			
		||||
	--with-uhd
 | 
			
		||||
	--with-usrp1
 | 
			
		||||
	$INSTR
 | 
			
		||||
"
 | 
			
		||||
 | 
			
		||||
# Additional configure options and depends
 | 
			
		||||
if [ "$WITH_MANUALS" = "1" ]; then
 | 
			
		||||
@@ -109,7 +119,7 @@ $MAKE check \
 | 
			
		||||
  || cat-testlogs.sh
 | 
			
		||||
 | 
			
		||||
if arch | grep -v -q arm; then
 | 
			
		||||
	DISTCHECK_CONFIGURE_FLAGS="$CONFIG" $MAKE $PARALLEL_MAKE distcheck \
 | 
			
		||||
	DISTCHECK_CONFIGURE_FLAGS="$(echo $CONFIG | tr -d '\n')" $MAKE $PARALLEL_MAKE distcheck \
 | 
			
		||||
	  || cat-testlogs.sh
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,254 +0,0 @@
 | 
			
		||||
#
 | 
			
		||||
# spec file for package osmo-trx
 | 
			
		||||
#
 | 
			
		||||
# Copyright (c) 2017, Martin Hauke <mardnh@gmx.de>
 | 
			
		||||
#
 | 
			
		||||
# All modifications and additions to the file contributed by third parties
 | 
			
		||||
# remain the property of their copyright owners, unless otherwise agreed
 | 
			
		||||
# upon. The license for this file, and modifications and additions to the
 | 
			
		||||
# file, is the same license as for the pristine package itself (unless the
 | 
			
		||||
# license for the pristine package is not an Open Source License, in which
 | 
			
		||||
# case the license is the MIT License). An "Open Source License" is a
 | 
			
		||||
# license that conforms to the Open Source Definition (Version 1.9)
 | 
			
		||||
# published by the Open Source Initiative.
 | 
			
		||||
 | 
			
		||||
Name:           osmo-trx
 | 
			
		||||
Version:        @VERSION@
 | 
			
		||||
Release:        0
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS
 | 
			
		||||
License:        AGPL-3.0-or-later
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
URL:            https://osmocom.org/projects/osmotrx
 | 
			
		||||
Source:         %{name}-%{version}.tar.xz
 | 
			
		||||
BuildRequires:  autoconf
 | 
			
		||||
BuildRequires:  automake
 | 
			
		||||
BuildRequires:  fdupes
 | 
			
		||||
BuildRequires:  gcc-c++
 | 
			
		||||
BuildRequires:  libtool
 | 
			
		||||
BuildRequires:  pkgconfig >= 0.20
 | 
			
		||||
%if 0%{?suse_version}
 | 
			
		||||
BuildRequires:  systemd-rpm-macros
 | 
			
		||||
%endif
 | 
			
		||||
%if ! 0%{?centos_ver}
 | 
			
		||||
BuildRequires:  pkgconfig(LimeSuite)
 | 
			
		||||
BuildRequires:  pkgconfig(usrp) >= 3.3
 | 
			
		||||
%endif
 | 
			
		||||
BuildRequires:  pkgconfig(fftw3f)
 | 
			
		||||
BuildRequires:  pkgconfig(libosmocoding) >= 1.9.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmocore) >= 1.9.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmoctrl) >= 1.9.0
 | 
			
		||||
BuildRequires:  pkgconfig(libosmovty) >= 1.9.0
 | 
			
		||||
BuildRequires:  pkgconfig(libusb-1.0)
 | 
			
		||||
BuildRequires:  pkgconfig(uhd)
 | 
			
		||||
%{?systemd_requires}
 | 
			
		||||
%if 0%{?suse_version} > 1325
 | 
			
		||||
BuildRequires:  libboost_program_options-devel
 | 
			
		||||
BuildRequires:  libboost_system-devel
 | 
			
		||||
BuildRequires:  libboost_test-devel
 | 
			
		||||
BuildRequires:  libboost_thread-devel
 | 
			
		||||
%else
 | 
			
		||||
BuildRequires:  boost-devel
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%description
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
TS 05.04 "Modulation"
 | 
			
		||||
TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
 | 
			
		||||
In this context, BTS is "Base transceiver station". It's the stations that
 | 
			
		||||
connect mobile phones to the mobile network.
 | 
			
		||||
 | 
			
		||||
3GPP is the "3rd Generation Partnership Project" which is the collaboration
 | 
			
		||||
between different telecommunication associations for developing new
 | 
			
		||||
generations of mobile phone networks. (post-2G/GSM)
 | 
			
		||||
 | 
			
		||||
%package uhd
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS (UHD)
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
Requires:       uhd-firmware
 | 
			
		||||
 | 
			
		||||
%description uhd
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
TS 05.04 "Modulation"
 | 
			
		||||
TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
 | 
			
		||||
In this context, BTS is "Base transceiver station". It's the stations that
 | 
			
		||||
connect mobile phones to the mobile network.
 | 
			
		||||
 | 
			
		||||
3GPP is the "3rd Generation Partnership Project" which is the collaboration
 | 
			
		||||
between different telecommunication associations for developing new
 | 
			
		||||
generations of mobile phone networks. (post-2G/GSM)
 | 
			
		||||
 | 
			
		||||
%if ! 0%{?centos_ver}
 | 
			
		||||
%package usrp1
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS (USRP1)
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
 | 
			
		||||
%description usrp1
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
TS 05.04 "Modulation"
 | 
			
		||||
TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
 | 
			
		||||
In this context, BTS is "Base transceiver station". It's the stations that
 | 
			
		||||
connect mobile phones to the mobile network.
 | 
			
		||||
 | 
			
		||||
3GPP is the "3rd Generation Partnership Project" which is the collaboration
 | 
			
		||||
between different telecommunication associations for developing new
 | 
			
		||||
generations of mobile phone networks. (post-2G/GSM)
 | 
			
		||||
 | 
			
		||||
%package lms
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS (LimeSuite)
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
 | 
			
		||||
%description lms
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
TS 05.04 "Modulation"
 | 
			
		||||
TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
 | 
			
		||||
In this context, BTS is "Base transceiver station". It's the stations that
 | 
			
		||||
connect mobile phones to the mobile network.
 | 
			
		||||
 | 
			
		||||
3GPP is the "3rd Generation Partnership Project" which is the collaboration
 | 
			
		||||
between different telecommunication associations for developing new
 | 
			
		||||
generations of mobile phone networks. (post-2G/GSM)
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%package ipc
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS (IPC)
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
 | 
			
		||||
%description ipc
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
TS 05.01 "Physical layer on the radio path"
 | 
			
		||||
TS 05.02 "Multiplexing and Multiple Access on the Radio Path"
 | 
			
		||||
TS 05.04 "Modulation"
 | 
			
		||||
TS 05.10 "Radio subsystem synchronization"
 | 
			
		||||
 | 
			
		||||
In this context, BTS is "Base transceiver station". It's the stations that
 | 
			
		||||
connect mobile phones to the mobile network.
 | 
			
		||||
 | 
			
		||||
3GPP is the "3rd Generation Partnership Project" which is the collaboration
 | 
			
		||||
between different telecommunication associations for developing new
 | 
			
		||||
generations of mobile phone networks. (post-2G/GSM)
 | 
			
		||||
 | 
			
		||||
%package ipc-test
 | 
			
		||||
Summary:        SDR transceiver that implements Layer 1 of a GSM BTS (IPC) driver test utility
 | 
			
		||||
Group:          Productivity/Telephony/Servers
 | 
			
		||||
 | 
			
		||||
%description ipc-test
 | 
			
		||||
OsmoTRX is a software-defined radio transceiver that implements the Layer 1
 | 
			
		||||
physical layer of a BTS comprising the following 3GPP specifications:
 | 
			
		||||
 | 
			
		||||
This package include the test tools for osmo-trx-ipc
 | 
			
		||||
 | 
			
		||||
%prep
 | 
			
		||||
%setup -q
 | 
			
		||||
 | 
			
		||||
%build
 | 
			
		||||
echo "%{version}" >.tarball-version
 | 
			
		||||
autoreconf -fi
 | 
			
		||||
 | 
			
		||||
%if 0%{?centos_ver}
 | 
			
		||||
%configure \
 | 
			
		||||
  --docdir=%{_docdir}/%{name} \
 | 
			
		||||
  --with-systemdsystemunitdir=%{_unitdir} \
 | 
			
		||||
  --without-lms \
 | 
			
		||||
  --with-uhd \
 | 
			
		||||
  --without-usrp1 \
 | 
			
		||||
  --with-ipc
 | 
			
		||||
%else
 | 
			
		||||
%configure \
 | 
			
		||||
  --docdir=%{_docdir}/%{name} \
 | 
			
		||||
  --with-systemdsystemunitdir=%{_unitdir} \
 | 
			
		||||
  --with-lms \
 | 
			
		||||
  --with-uhd \
 | 
			
		||||
  --with-usrp1 \
 | 
			
		||||
  --with-ipc
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
make %{?_smp_mflags} V=1
 | 
			
		||||
 | 
			
		||||
%check
 | 
			
		||||
make %{?_smp_mflags} check || (find . -name testsuite.log -exec cat {} +)
 | 
			
		||||
 | 
			
		||||
%install
 | 
			
		||||
%make_install
 | 
			
		||||
%fdupes -s %{buildroot}/%{_datadir}
 | 
			
		||||
 | 
			
		||||
%if 0%{?suse_version}
 | 
			
		||||
%pre    lms %service_add_pre    osmo-trx-lms.service
 | 
			
		||||
%post   lms %service_add_post   osmo-trx-lms.service
 | 
			
		||||
%preun  lms %service_del_preun  osmo-trx-lms.service
 | 
			
		||||
%postun lms %service_del_postun osmo-trx-lms.service
 | 
			
		||||
%pre    uhd %service_add_pre    osmo-trx-uhd.service
 | 
			
		||||
%post   uhd %service_add_post   osmo-trx-uhd.service
 | 
			
		||||
%preun  uhd %service_del_preun  osmo-trx-uhd.service
 | 
			
		||||
%postun uhd %service_del_postun osmo-trx-uhd.service
 | 
			
		||||
%pre    usrp1 %service_add_pre    osmo-trx-usrp1.service
 | 
			
		||||
%post   usrp1 %service_add_post   osmo-trx-usrp1.service
 | 
			
		||||
%preun  usrp1 %service_del_preun  osmo-trx-usrp1.service
 | 
			
		||||
%postun usrp1 %service_del_postun osmo-trx-usrp1.service
 | 
			
		||||
%pre    ipc %service_add_pre    osmo-trx-ipc.service
 | 
			
		||||
%post   ipc %service_add_post   osmo-trx-ipc.service
 | 
			
		||||
%preun  ipc %service_del_preun  osmo-trx-ipc.service
 | 
			
		||||
%postun ipc %service_del_postun osmo-trx-ipc.service
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%files
 | 
			
		||||
%license COPYING
 | 
			
		||||
%doc README.md
 | 
			
		||||
%doc %{_docdir}/%{name}/examples
 | 
			
		||||
 | 
			
		||||
%if ! 0%{?centos_ver}
 | 
			
		||||
%files lms
 | 
			
		||||
%{_bindir}/osmo-trx-lms
 | 
			
		||||
%dir %{_sysconfdir}/osmocom
 | 
			
		||||
%config(noreplace) %{_sysconfdir}/osmocom/osmo-trx-lms.cfg
 | 
			
		||||
%{_unitdir}/osmo-trx-lms.service
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%files uhd
 | 
			
		||||
%{_bindir}/osmo-trx-uhd
 | 
			
		||||
%dir %{_sysconfdir}/osmocom
 | 
			
		||||
%config(noreplace) %{_sysconfdir}/osmocom/osmo-trx-uhd.cfg
 | 
			
		||||
%{_unitdir}/osmo-trx-uhd.service
 | 
			
		||||
 | 
			
		||||
%if ! 0%{?centos_ver}
 | 
			
		||||
%files usrp1
 | 
			
		||||
%{_bindir}/osmo-trx-usrp1
 | 
			
		||||
%dir %{_datadir}/usrp
 | 
			
		||||
%dir %{_datadir}/usrp/rev2
 | 
			
		||||
%dir %{_datadir}/usrp/rev4
 | 
			
		||||
%{_datadir}/usrp/rev2/std_inband.rbf
 | 
			
		||||
%{_datadir}/usrp/rev4/std_inband.rbf
 | 
			
		||||
%{_unitdir}/osmo-trx-usrp1.service
 | 
			
		||||
%endif
 | 
			
		||||
 | 
			
		||||
%files ipc
 | 
			
		||||
%{_bindir}/osmo-trx-ipc
 | 
			
		||||
%dir %{_sysconfdir}/osmocom
 | 
			
		||||
%config(noreplace) %{_sysconfdir}/osmocom/osmo-trx-ipc.cfg
 | 
			
		||||
%{_unitdir}/osmo-trx-ipc.service
 | 
			
		||||
 | 
			
		||||
%files ipc-test
 | 
			
		||||
%{_bindir}/ipc-driver-test
 | 
			
		||||
 | 
			
		||||
%changelog
 | 
			
		||||
@@ -8,8 +8,11 @@ Type=simple
 | 
			
		||||
Restart=always
 | 
			
		||||
StateDirectory=osmocom
 | 
			
		||||
WorkingDirectory=%S/osmocom
 | 
			
		||||
User=osmocom
 | 
			
		||||
Group=osmocom
 | 
			
		||||
ExecStart=/usr/bin/osmo-trx-ipc -C /etc/osmocom/osmo-trx-ipc.cfg
 | 
			
		||||
RestartSec=2
 | 
			
		||||
AmbientCapabilities=CAP_SYS_NICE
 | 
			
		||||
# CPU scheduling policy:
 | 
			
		||||
CPUSchedulingPolicy=rr
 | 
			
		||||
# For real-time scheduling policies an integer between 1 (lowest priority) and 99 (highest priority):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,11 @@ Type=simple
 | 
			
		||||
Restart=always
 | 
			
		||||
StateDirectory=osmocom
 | 
			
		||||
WorkingDirectory=%S/osmocom
 | 
			
		||||
User=osmocom
 | 
			
		||||
Group=osmocom
 | 
			
		||||
ExecStart=/usr/bin/osmo-trx-lms -C /etc/osmocom/osmo-trx-lms.cfg
 | 
			
		||||
RestartSec=2
 | 
			
		||||
AmbientCapabilities=CAP_SYS_NICE
 | 
			
		||||
# CPU scheduling policy:
 | 
			
		||||
CPUSchedulingPolicy=rr
 | 
			
		||||
# For real-time scheduling policies an integer between 1 (lowest priority) and 99 (highest priority):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,9 +8,12 @@ Type=simple
 | 
			
		||||
Restart=always
 | 
			
		||||
StateDirectory=osmocom
 | 
			
		||||
WorkingDirectory=%S/osmocom
 | 
			
		||||
Environment=HOME=%h
 | 
			
		||||
Environment=HOME=%S/osmocom
 | 
			
		||||
User=osmocom
 | 
			
		||||
Group=osmocom
 | 
			
		||||
ExecStart=/usr/bin/osmo-trx-uhd -C /etc/osmocom/osmo-trx-uhd.cfg
 | 
			
		||||
RestartSec=2
 | 
			
		||||
AmbientCapabilities=CAP_SYS_NICE
 | 
			
		||||
# CPU scheduling policy:
 | 
			
		||||
CPUSchedulingPolicy=rr
 | 
			
		||||
# For real-time scheduling policies an integer between 1 (lowest priority) and 99 (highest priority):
 | 
			
		||||
 
 | 
			
		||||
@@ -8,8 +8,11 @@ Type=simple
 | 
			
		||||
Restart=always
 | 
			
		||||
StateDirectory=osmocom
 | 
			
		||||
WorkingDirectory=%S/osmocom
 | 
			
		||||
User=osmocom
 | 
			
		||||
Group=osmocom
 | 
			
		||||
ExecStart=/usr/bin/osmo-trx-usrp1 -C /etc/osmocom/osmo-trx-usrp1.cfg
 | 
			
		||||
RestartSec=2
 | 
			
		||||
AmbientCapabilities=CAP_SYS_NICE
 | 
			
		||||
# CPU scheduling policy:
 | 
			
		||||
CPUSchedulingPolicy=rr
 | 
			
		||||
# For real-time scheduling policies an integer between 1 (lowest priority) and 99 (highest priority):
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										52
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										52
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
								
							@@ -1,3 +1,55 @@
 | 
			
		||||
osmo-trx (1.7.0) unstable; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Eric ]
 | 
			
		||||
  * ms: adjust ts advance
 | 
			
		||||
  * ms: reduce rx burst queue size
 | 
			
		||||
  * ms: init blade with fpga control
 | 
			
		||||
  * devices: fix wrong gain to power mapping
 | 
			
		||||
  * ms: get rid of std::thread
 | 
			
		||||
  * ms: add demod test tool and data
 | 
			
		||||
 | 
			
		||||
  [ Vadim Yanitskiy ]
 | 
			
		||||
  * osmo-trx-ms: bump osmocom-bb submodule commit
 | 
			
		||||
  * Transceiver::ctrl_sock_handle_rx(): fix copy-pasted comments
 | 
			
		||||
  * build: include version files into the release tarball
 | 
			
		||||
  * doc/examples: fix missing config files in release tarballs
 | 
			
		||||
  * README.md: cosmetic: fix a typo
 | 
			
		||||
 | 
			
		||||
  [ Harald Welte ]
 | 
			
		||||
  * osmo-trx-uhd: Make sure HOME environment variable is set
 | 
			
		||||
  * README.md: Improve markdown formatting
 | 
			
		||||
  * README.md: Add Forum and Issue Tracker links
 | 
			
		||||
  * Add funding link to github mirror
 | 
			
		||||
  * README.md: Remove stray apostrophe
 | 
			
		||||
 | 
			
		||||
  [ Andreas Eversberg ]
 | 
			
		||||
  * Use uniform log format for default config files
 | 
			
		||||
 | 
			
		||||
  [ Eric Wild ]
 | 
			
		||||
  * ms: do not set the blade tuning mode
 | 
			
		||||
  * ms: hard preswapped VA gsm bits
 | 
			
		||||
  * ms: add sigproclib demod
 | 
			
		||||
  * ms: fix up template deduction failure
 | 
			
		||||
  * ms: update osmocom-bb submodule
 | 
			
		||||
  * ms: disabe uhd ms build
 | 
			
		||||
  * transceiver: use log level cache
 | 
			
		||||
 | 
			
		||||
  [ Oliver Smith ]
 | 
			
		||||
  * gitignore: add .version
 | 
			
		||||
  * debian/rules: make configure args diff friendly
 | 
			
		||||
  * debian: add osmo-trx-ms-blade
 | 
			
		||||
  * contrib/jenkins: make configure args diff friendly
 | 
			
		||||
  * contrib/jenkins: add --with-bladerf
 | 
			
		||||
  * contrib: remove rpm spec file
 | 
			
		||||
  * contrib/systemd: run as osmocom user
 | 
			
		||||
  * contrib/systemd/osmo-trx-uhd: fix HOME=
 | 
			
		||||
 | 
			
		||||
  [ Pau Espin Pedrol ]
 | 
			
		||||
  * code-architecture.adoc: Fix missing alignment in digraph
 | 
			
		||||
  * doc: Introduce documentation for osmo-trx-ipc and its IPC interface
 | 
			
		||||
 | 
			
		||||
 -- Oliver Smith <osmith@sysmocom.de>  Wed, 24 Jul 2024 15:57:14 +0200
 | 
			
		||||
 | 
			
		||||
osmo-trx (1.6.0) unstable; urgency=medium
 | 
			
		||||
 | 
			
		||||
  [ Vadim Yanitskiy ]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							@@ -15,8 +15,8 @@ Build-Depends: debhelper (>= 10),
 | 
			
		||||
               libusrp-dev,
 | 
			
		||||
               liblimesuite-dev,
 | 
			
		||||
               libbladerf-dev,
 | 
			
		||||
               libosmocore-dev (>= 1.9.0),
 | 
			
		||||
               osmo-gsm-manuals-dev (>= 1.5.0)
 | 
			
		||||
               libosmocore-dev (>= 1.10.0),
 | 
			
		||||
               osmo-gsm-manuals-dev (>= 1.6.0)
 | 
			
		||||
Standards-Version: 3.9.6
 | 
			
		||||
Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-trx
 | 
			
		||||
Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-trx
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								debian/osmo-trx-ipc.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								debian/osmo-trx-ipc.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
case "$1" in
 | 
			
		||||
	configure)
 | 
			
		||||
		# Create the osmocom group and user (if it doesn't exist yet)
 | 
			
		||||
		if ! getent group osmocom >/dev/null; then
 | 
			
		||||
			groupadd --system osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		if ! getent passwd osmocom >/dev/null; then
 | 
			
		||||
			useradd \
 | 
			
		||||
				--system \
 | 
			
		||||
				--gid osmocom \
 | 
			
		||||
				--home-dir /var/lib/osmocom \
 | 
			
		||||
				--shell /sbin/nologin \
 | 
			
		||||
				--comment "Open Source Mobile Communications" \
 | 
			
		||||
				osmocom
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Fix permissions of previous (root-owned) install (OS#4107)
 | 
			
		||||
		if dpkg --compare-versions "$2" le "1.13.0"; then
 | 
			
		||||
			if [ -e /etc/osmocom/osmo-trx-ipc.cfg ]; then
 | 
			
		||||
				chown -v osmocom:osmocom /etc/osmocom/osmo-trx-ipc.cfg
 | 
			
		||||
				chmod -v 0660 /etc/osmocom/osmo-trx-ipc.cfg
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			if [ -d /etc/osmocom ]; then
 | 
			
		||||
				chown -v root:osmocom /etc/osmocom
 | 
			
		||||
				chmod -v 2775 /etc/osmocom
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			mkdir -p /var/lib/osmocom
 | 
			
		||||
			chown -R -v osmocom:osmocom /var/lib/osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# dh_installdeb(1) will replace this with shell code automatically
 | 
			
		||||
# generated by other debhelper scripts.
 | 
			
		||||
#DEBHELPER#
 | 
			
		||||
							
								
								
									
										38
									
								
								debian/osmo-trx-lms.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								debian/osmo-trx-lms.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
case "$1" in
 | 
			
		||||
	configure)
 | 
			
		||||
		# Create the osmocom group and user (if it doesn't exist yet)
 | 
			
		||||
		if ! getent group osmocom >/dev/null; then
 | 
			
		||||
			groupadd --system osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		if ! getent passwd osmocom >/dev/null; then
 | 
			
		||||
			useradd \
 | 
			
		||||
				--system \
 | 
			
		||||
				--gid osmocom \
 | 
			
		||||
				--home-dir /var/lib/osmocom \
 | 
			
		||||
				--shell /sbin/nologin \
 | 
			
		||||
				--comment "Open Source Mobile Communications" \
 | 
			
		||||
				osmocom
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Fix permissions of previous (root-owned) install (OS#4107)
 | 
			
		||||
		if dpkg --compare-versions "$2" le "1.13.0"; then
 | 
			
		||||
			if [ -e /etc/osmocom/osmo-trx-lms.cfg ]; then
 | 
			
		||||
				chown -v osmocom:osmocom /etc/osmocom/osmo-trx-lms.cfg
 | 
			
		||||
				chmod -v 0660 /etc/osmocom/osmo-trx-lms.cfg
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			if [ -d /etc/osmocom ]; then
 | 
			
		||||
				chown -v root:osmocom /etc/osmocom
 | 
			
		||||
				chmod -v 2775 /etc/osmocom
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			mkdir -p /var/lib/osmocom
 | 
			
		||||
			chown -R -v osmocom:osmocom /var/lib/osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# dh_installdeb(1) will replace this with shell code automatically
 | 
			
		||||
# generated by other debhelper scripts.
 | 
			
		||||
#DEBHELPER#
 | 
			
		||||
							
								
								
									
										38
									
								
								debian/osmo-trx-uhd.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								debian/osmo-trx-uhd.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
case "$1" in
 | 
			
		||||
	configure)
 | 
			
		||||
		# Create the osmocom group and user (if it doesn't exist yet)
 | 
			
		||||
		if ! getent group osmocom >/dev/null; then
 | 
			
		||||
			groupadd --system osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		if ! getent passwd osmocom >/dev/null; then
 | 
			
		||||
			useradd \
 | 
			
		||||
				--system \
 | 
			
		||||
				--gid osmocom \
 | 
			
		||||
				--home-dir /var/lib/osmocom \
 | 
			
		||||
				--shell /sbin/nologin \
 | 
			
		||||
				--comment "Open Source Mobile Communications" \
 | 
			
		||||
				osmocom
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Fix permissions of previous (root-owned) install (OS#4107)
 | 
			
		||||
		if dpkg --compare-versions "$2" le "1.13.0"; then
 | 
			
		||||
			if [ -e /etc/osmocom/osmo-trx-uhd.cfg ]; then
 | 
			
		||||
				chown -v osmocom:osmocom /etc/osmocom/osmo-trx-uhd.cfg
 | 
			
		||||
				chmod -v 0660 /etc/osmocom/osmo-trx-uhd.cfg
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			if [ -d /etc/osmocom ]; then
 | 
			
		||||
				chown -v root:osmocom /etc/osmocom
 | 
			
		||||
				chmod -v 2775 /etc/osmocom
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			mkdir -p /var/lib/osmocom
 | 
			
		||||
			chown -R -v osmocom:osmocom /var/lib/osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# dh_installdeb(1) will replace this with shell code automatically
 | 
			
		||||
# generated by other debhelper scripts.
 | 
			
		||||
#DEBHELPER#
 | 
			
		||||
							
								
								
									
										38
									
								
								debian/osmo-trx-usrp1.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								debian/osmo-trx-usrp1.postinst
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
#!/bin/sh -e
 | 
			
		||||
case "$1" in
 | 
			
		||||
	configure)
 | 
			
		||||
		# Create the osmocom group and user (if it doesn't exist yet)
 | 
			
		||||
		if ! getent group osmocom >/dev/null; then
 | 
			
		||||
			groupadd --system osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		if ! getent passwd osmocom >/dev/null; then
 | 
			
		||||
			useradd \
 | 
			
		||||
				--system \
 | 
			
		||||
				--gid osmocom \
 | 
			
		||||
				--home-dir /var/lib/osmocom \
 | 
			
		||||
				--shell /sbin/nologin \
 | 
			
		||||
				--comment "Open Source Mobile Communications" \
 | 
			
		||||
				osmocom
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Fix permissions of previous (root-owned) install (OS#4107)
 | 
			
		||||
		if dpkg --compare-versions "$2" le "1.13.0"; then
 | 
			
		||||
			if [ -e /etc/osmocom/osmo-trx-usrp1.cfg ]; then
 | 
			
		||||
				chown -v osmocom:osmocom /etc/osmocom/osmo-trx-usrp1.cfg
 | 
			
		||||
				chmod -v 0660 /etc/osmocom/osmo-trx-usrp1.cfg
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			if [ -d /etc/osmocom ]; then
 | 
			
		||||
				chown -v root:osmocom /etc/osmocom
 | 
			
		||||
				chmod -v 2775 /etc/osmocom
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			mkdir -p /var/lib/osmocom
 | 
			
		||||
			chown -R -v osmocom:osmocom /var/lib/osmocom
 | 
			
		||||
		fi
 | 
			
		||||
		;;
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
# dh_installdeb(1) will replace this with shell code automatically
 | 
			
		||||
# generated by other debhelper scripts.
 | 
			
		||||
#DEBHELPER#
 | 
			
		||||
@@ -9,7 +9,7 @@ digraph hierarchy {
 | 
			
		||||
node[shape=record,style=filled,fillcolor=gray95]
 | 
			
		||||
edge[dir=back, arrowtail=empty]
 | 
			
		||||
 | 
			
		||||
2[label = "{Transceiver|+ constructor()\l+ destructor()\l+ init()\l+ numChans()\l+ receiveFIFO()\l+ setSignalHandler()}"]
 | 
			
		||||
2[label = "{Transceiver|+ constructor()\l+ destructor()\l+ init()\l+ numChans()\l+ receiveFIFO()\l+ setSignalHandler()\l}"]
 | 
			
		||||
3[label = "{RadioInterface|...}"]
 | 
			
		||||
4[label = "{RadioInterfaceResamp|...}"]
 | 
			
		||||
5[label = "{RadioInterfaceMulti|...}"]
 | 
			
		||||
@@ -17,6 +17,7 @@ edge[dir=back, arrowtail=empty]
 | 
			
		||||
7[label = "{UHDDevice|...}"]
 | 
			
		||||
8[label = "{LMSDevice|...}"]
 | 
			
		||||
9[label = "{USRPDevice|...}"]
 | 
			
		||||
10[label = "{IPCDevice|...}"]
 | 
			
		||||
 | 
			
		||||
2->3[arrowtail=odiamond]
 | 
			
		||||
3->4[constraint=false]
 | 
			
		||||
@@ -25,6 +26,7 @@ edge[dir=back, arrowtail=empty]
 | 
			
		||||
6->7
 | 
			
		||||
6->8
 | 
			
		||||
6->9
 | 
			
		||||
6->10
 | 
			
		||||
}
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										301
									
								
								doc/manuals/chapters/ipc_if.adoc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										301
									
								
								doc/manuals/chapters/ipc_if.adoc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,301 @@
 | 
			
		||||
[[ipc_if]]
 | 
			
		||||
== osmo-trx-ipc IPC Interface
 | 
			
		||||
 | 
			
		||||
This interface is the one used by _osmo_trx_ipc_ backend to communicate to a
 | 
			
		||||
third party process in charge of driving the lowest layer device-specific bits
 | 
			
		||||
(from now on the Driver).
 | 
			
		||||
 | 
			
		||||
It consists of a set of Unix Domain (UD) sockets for the control plane, plus a
 | 
			
		||||
shared memory region for the data plane.
 | 
			
		||||
 | 
			
		||||
Related code can be found in the
 | 
			
		||||
https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc[Transceiver52M/device/ipc/]
 | 
			
		||||
directory in _osmo-trx.git_.
 | 
			
		||||
 | 
			
		||||
If you are a potential driver implementator, the
 | 
			
		||||
various primitives and data structures are publicly available in header file
 | 
			
		||||
https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/shm.h[Transceiver52M/device/ipc/shm.h].
 | 
			
		||||
 | 
			
		||||
=== Control plane
 | 
			
		||||
 | 
			
		||||
Control plane protocol is transmitted over Unix Domain (UD) sockets using
 | 
			
		||||
message based primitives. Each primitive has a type identified by an integer,
 | 
			
		||||
and each type of primitive has a number of extra attributes attached to it. The
 | 
			
		||||
IPC interface consists of 2 types of UD sockets:
 | 
			
		||||
 | 
			
		||||
* _Master_ UD socket: One per osmo-trx-ipc process.
 | 
			
		||||
 | 
			
		||||
* _Channel_ UD socket: One for each channel managed by osmo-trx-ipc process.
 | 
			
		||||
 | 
			
		||||
The _Driver_ is in all cases expected to take the server role when creating UD
 | 
			
		||||
sockets, while _osmo-trx-ipc_ takes the client role and connects to sockets
 | 
			
		||||
provided by the driver.
 | 
			
		||||
 | 
			
		||||
=== Master UD socket
 | 
			
		||||
 | 
			
		||||
During startup, _osmo-trx-ipc_ will try connecting to the _Driver_ Master UD
 | 
			
		||||
socket located in the path provided by its own (VTY) configuration. As a result,
 | 
			
		||||
it means the _Driver_ process must be running and listening on the Master UD
 | 
			
		||||
socket before _osmo-trx-ipc_ is started, otherwise _osmo-trx-ipc_ will fail and
 | 
			
		||||
exit.
 | 
			
		||||
 | 
			
		||||
Once connected, _osmo-trx-ipc_ will submit a `GREETING_REQ` message primitive
 | 
			
		||||
announcing the maximum supported protocol version (first version ever is `1`,
 | 
			
		||||
increasing over time).
 | 
			
		||||
 | 
			
		||||
The _Driver_ shall then answer in `GREETING_CNF` message primitive with its own
 | 
			
		||||
maximum supported version (`<=` version received), providing 0 if none is
 | 
			
		||||
supported.
 | 
			
		||||
 | 
			
		||||
If _osmo-trx-ipc_ receives back the requested version, then both sides agreed
 | 
			
		||||
on the protocol version to use.
 | 
			
		||||
If _osmo-trx-ipc_ receives back a lower version, it shall decide to continue
 | 
			
		||||
with version negotiation using a lower version, until a supported version or 0
 | 
			
		||||
is received. If finally 0 is received, _osmo-trx-ipc_ will disconnect and exit
 | 
			
		||||
with failure.
 | 
			
		||||
 | 
			
		||||
Once the version is negotiated (`v1` as of current date), _osmo-trx-ipc_ will
 | 
			
		||||
ask for device information and available characeristics to the _Driver_ using
 | 
			
		||||
the `INFO_REQ` message primitive.
 | 
			
		||||
 | 
			
		||||
The _Driver_ shall then answer with a `INFO_CNF` message
 | 
			
		||||
containing information, such as:
 | 
			
		||||
 | 
			
		||||
* String containing device description
 | 
			
		||||
 | 
			
		||||
* Available reference clocks,
 | 
			
		||||
 | 
			
		||||
* {rx,tx} I/Q scaling factors
 | 
			
		||||
 | 
			
		||||
* Maximum number of channels supported
 | 
			
		||||
 | 
			
		||||
* for each channel:
 | 
			
		||||
 | 
			
		||||
** List of available {rx,tx} paths/antennas.
 | 
			
		||||
 | 
			
		||||
** {min,max}{rx,tx} gains
 | 
			
		||||
 | 
			
		||||
** Nominal transmit power
 | 
			
		||||
 | 
			
		||||
All the information received from the _Driver_ during `INFO_CNF` will be used by
 | 
			
		||||
_osmo-trx-ipc_ to decide whether it can fullfil the requested configuration from
 | 
			
		||||
the user, and proceed to open the device, or exit with a failure (for instance
 | 
			
		||||
number of channels, referece clock or tx/rx antenna selected by the user cannot
 | 
			
		||||
be fullfilled).
 | 
			
		||||
 | 
			
		||||
_osmo-trx-ipc_ will then proceed to open the device and do an initial
 | 
			
		||||
configuration using an `OPEN_REQ` message, where it will provide the _Driver_
 | 
			
		||||
with the desired selected configuration (such as number of channels, rx/tx
 | 
			
		||||
paths, clock reference, bandwidth filters, etc.).
 | 
			
		||||
 | 
			
		||||
The _Driver_ shall then configure the device and send back a `OPEN_CNF` with:
 | 
			
		||||
 | 
			
		||||
* `return_code` integer attribute set to `0` on success or `!0` on error.
 | 
			
		||||
 | 
			
		||||
* Name of the Posix Shared Memory region where data plane is going to be
 | 
			
		||||
transmitted.
 | 
			
		||||
 | 
			
		||||
* One path for each channel, containing the just-created UD socket to manage
 | 
			
		||||
that channel (for instance by taking Master UD socket path and appending
 | 
			
		||||
`_$chan_idx`).
 | 
			
		||||
 | 
			
		||||
* Path Delay: this is the loopback path delay in samples (= used as a timestamp
 | 
			
		||||
offset internally by _osmo-trx-ipc_), this value contains the analog delay as
 | 
			
		||||
well as the delay introduced by the digital filters in the fpga in the sdr
 | 
			
		||||
devices, and is therefore device type and bandwidth/sample rate dependant. This
 | 
			
		||||
can not be omitted, wrong values will lead to a _osmo-trx-ipc_ that just doesn't
 | 
			
		||||
detect any bursts.
 | 
			
		||||
 | 
			
		||||
Finally, _osmo-trx-ipc_ will connect to each channel's UD socket (see next
 | 
			
		||||
section).
 | 
			
		||||
 | 
			
		||||
Upon _osmo-trx-ipc_ closing the UD master socket connection, the _Driver_ shall
 | 
			
		||||
go into _closed_ state: stop all processing and instruct the device to power
 | 
			
		||||
off.
 | 
			
		||||
 | 
			
		||||
TIP: See
 | 
			
		||||
https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/shm.h[Transceiver52M/device/ipc/shm.h]
 | 
			
		||||
for the detailed definition of all the related message primitives and data
 | 
			
		||||
types for this socket.
 | 
			
		||||
 | 
			
		||||
=== Channel UD Socket
 | 
			
		||||
 | 
			
		||||
This socket can be used by _osmo-trx-ipc_ to start/stop data plane processing or
 | 
			
		||||
change channel's parameters such as Rx/Tx Frequency, Rx/Tx gains, etc.
 | 
			
		||||
 | 
			
		||||
A channel can be either in _started_ or _stopped_ state. When a channel is
 | 
			
		||||
created (during `OPEN_REQ` in the Master UD Socket), it's by default in
 | 
			
		||||
_stopped_ state. `START_REQ` and `STOP_REQ` messages control this state, and
 | 
			
		||||
eventual failures can be reported through `START_CNF` and `STOP_CNF` by the
 | 
			
		||||
_Driver_.
 | 
			
		||||
 | 
			
		||||
The message `START_REQ` instructs the _Driver_ to start processing data in the
 | 
			
		||||
data plane. Similary, `STOP_REQ` instructs the _Driver_ to stop processing data
 | 
			
		||||
in the data plane.
 | 
			
		||||
 | 
			
		||||
Some parameters are usually changed only when the channel is in stopped mode,
 | 
			
		||||
for instance Rx/Tx Frequency.
 | 
			
		||||
 | 
			
		||||
TIP: See
 | 
			
		||||
https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/shm.h[Transceiver52M/device/ipc/shm.h]
 | 
			
		||||
for the detailed definition of all the related message primitives and data
 | 
			
		||||
types for this socket.
 | 
			
		||||
 | 
			
		||||
=== Data Plane
 | 
			
		||||
 | 
			
		||||
Data plane protocol is implemented by means of a ring buffer structure on top of
 | 
			
		||||
Posix Shared Memory (see `man 7 shm_overview`) between _osmo-trx-ipc_ process
 | 
			
		||||
and the _Driver_.
 | 
			
		||||
 | 
			
		||||
The Posix Shared Memory region is created and its memory structure prepared by
 | 
			
		||||
the _Driver_ and its name shared with _osmo-trx-ipc_ during _OPEN_CNF_ message
 | 
			
		||||
in the Master UD Socket from the Control Plane. Resource allocation for the
 | 
			
		||||
shared memory area and cleanup is up to the ipc server, as is mutex
 | 
			
		||||
initialization for the buffers.
 | 
			
		||||
 | 
			
		||||
==== Posix Shared Memory structure
 | 
			
		||||
 | 
			
		||||
[[fig-shm-structure]]
 | 
			
		||||
.General overview of Posix Shared Memory structure
 | 
			
		||||
[graphviz]
 | 
			
		||||
----
 | 
			
		||||
digraph hierarchy {
 | 
			
		||||
node[shape=record,style=filled,fillcolor=gray95]
 | 
			
		||||
edge[dir=back, arrowtail=empty]
 | 
			
		||||
 | 
			
		||||
SHM[label = "{Posix Shared Memory region|+ num_chans\l+ Channels[]\l}"]
 | 
			
		||||
CHAN0[label = "{Channel 0|...}"]
 | 
			
		||||
CHAN1[label = "{Channel 1|...}"]
 | 
			
		||||
CHANN[label = "{Channel ...|}"]
 | 
			
		||||
STREAM0_UL[label = "{UL Stream|+ semaphore\l+ read_next\l+ write_next\l+ buffer_size /* In samples */\l+ num_buffers\l+ sample_buffers[]\l}"]
 | 
			
		||||
STREAM0_DL[label = "{DL Stream|+ semaphore\l+ read_next\l+ write_next\l+ buffer_size /* In samples */\l+ num_buffers\l+ sample_buffers[]\l}"]
 | 
			
		||||
STREAM1_UL[label = "{UL Stream|...}"]
 | 
			
		||||
STREAM1_DL[label = "{DL Stream|...}"]
 | 
			
		||||
STREAMN_UL[label = "{UL Stream|...}"]
 | 
			
		||||
STREAMN_DL[label = "{DL Stream|...}"]
 | 
			
		||||
BUF_0DL0[label = "{DL Sample Buffer 0|+ timestamp\l+ buffer_size /* In samples */\l+ samples[] = [16bit I + 16bit Q,...]\l}"]
 | 
			
		||||
BUF_0DLN[label = "{DL Sample Buffer ....|...}"]
 | 
			
		||||
BUF_0UL0[label = "{UL Sample Buffer 0|+ timestamp\l+ buffer_size /* In samples */\l+ samples[] = [16bit I + 16bit Q,...]\l}"]
 | 
			
		||||
BUF_0ULN[label = "{UL Sample Buffer ...|...}"]
 | 
			
		||||
 | 
			
		||||
SHM->CHAN0
 | 
			
		||||
SHM->CHAN1
 | 
			
		||||
SHM->CHANN
 | 
			
		||||
 | 
			
		||||
CHAN0->STREAM0_DL
 | 
			
		||||
CHAN0->STREAM0_UL
 | 
			
		||||
STREAM0_DL->BUF_0DL0
 | 
			
		||||
STREAM0_DL->BUF_0DLN
 | 
			
		||||
STREAM0_UL->BUF_0UL0
 | 
			
		||||
STREAM0_UL->BUF_0ULN
 | 
			
		||||
 | 
			
		||||
CHAN1->STREAM1_UL
 | 
			
		||||
CHAN1->STREAM1_DL
 | 
			
		||||
 | 
			
		||||
CHANN->STREAMN_UL
 | 
			
		||||
CHANN->STREAMN_DL
 | 
			
		||||
}
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
The Posix Shared Memory region contains an array of _Channels_.
 | 
			
		||||
 | 
			
		||||
Each _Channel_ contains 2 Streams:
 | 
			
		||||
 | 
			
		||||
* Downlink _Stream_
 | 
			
		||||
 | 
			
		||||
* Uplink _Stream_
 | 
			
		||||
 | 
			
		||||
Each _Stream_ handles a ring buffer, which is implemented as:
 | 
			
		||||
 | 
			
		||||
* An array of pointers to _Sample Buffer_ structures.
 | 
			
		||||
 | 
			
		||||
* Variables containing the number of buffers in the array, as well as the
 | 
			
		||||
maximum size in samples for each Sample Buffer.
 | 
			
		||||
 | 
			
		||||
* Variables containing `next_read` and `next_write` _Sample Buffer_ (its index
 | 
			
		||||
in the array of pointers).
 | 
			
		||||
 | 
			
		||||
* Unnamed Posix semaphores to do the required locking while using the ring
 | 
			
		||||
buffer.
 | 
			
		||||
 | 
			
		||||
Each _Sample Buffer_ contains:
 | 
			
		||||
 | 
			
		||||
* A `timestamp` variable, containing the position in the stream of the first
 | 
			
		||||
sample in the buffer
 | 
			
		||||
 | 
			
		||||
* A `data_len` variable, containing the amount of samples available to process
 | 
			
		||||
in the buffer
 | 
			
		||||
 | 
			
		||||
* An array of samples of size specified by the stream struct it is part of.
 | 
			
		||||
 | 
			
		||||
==== Posix Shared Memory format
 | 
			
		||||
 | 
			
		||||
The Posix Shared memory region shall be formatted applying the following
 | 
			
		||||
considerations:
 | 
			
		||||
 | 
			
		||||
* All pointers in the memory region are encoded as offsets from the start
 | 
			
		||||
address of the region itself, to allow different processes with different
 | 
			
		||||
address spaces to decode them.
 | 
			
		||||
 | 
			
		||||
* All structs must be force-aligned to 8 bytes
 | 
			
		||||
 | 
			
		||||
* Number of buffers must be power of 2 (2,4,8,16,...) - 4 appears to be plenty
 | 
			
		||||
 | 
			
		||||
* IQ samples format: One (complex) sample consists of 16bit i + 16bit q, so the
 | 
			
		||||
buffer size is number of IQ pairs.
 | 
			
		||||
 | 
			
		||||
* A reasonable per-buffer size (in samples) is 2500, since this happens to be
 | 
			
		||||
the ususal TX (downlink) buffer size used by _osmo-trx-ipc_ with the b210 (rx
 | 
			
		||||
over-the-wire packet size for the b210 is 2040 samples, so the larger value of
 | 
			
		||||
both is convenient).
 | 
			
		||||
 | 
			
		||||
TIP: See
 | 
			
		||||
https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/shm.h[Transceiver52M/device/ipc/shm.h]
 | 
			
		||||
for the detailed definition of all the objects being part of the Posix Shared
 | 
			
		||||
memory region structure
 | 
			
		||||
 | 
			
		||||
==== Posix Shared Memory procedures
 | 
			
		||||
 | 
			
		||||
The queue in the shared memory area is not supposed to be used for actual
 | 
			
		||||
buffering of data, only for exchange, so the general expectation is that it is
 | 
			
		||||
mostly empty. The only exception to that might be minor processing delays, and
 | 
			
		||||
during startup.
 | 
			
		||||
 | 
			
		||||
Care must be taken to ensure that only timed waits for the mutex protecting it
 | 
			
		||||
and the condition variables are used, in order to ensure that no deadlock occurs
 | 
			
		||||
should the other side die/quit.
 | 
			
		||||
 | 
			
		||||
Thread cancellation should be disabled during reads/writes from/to the queue. In
 | 
			
		||||
general a timeout can be considered a non recoverable error during regular
 | 
			
		||||
processing after startup, at least with the current timeout value of one second.
 | 
			
		||||
 | 
			
		||||
Should over- or underflows occur a corresponding message should be sent towards
 | 
			
		||||
_osmo-trx-ipc_.
 | 
			
		||||
 | 
			
		||||
Upon **read** of `N` samples, the reader does something like:
 | 
			
		||||
 | 
			
		||||
. Acquire the semaphore in the channel's stream object.
 | 
			
		||||
 | 
			
		||||
. Read `stream->next_read`, if `next_read==next_write`, become blocked in
 | 
			
		||||
another sempahore (unlocking the previous one) until writer signals us, then
 | 
			
		||||
`buff = stream->buffers[next_read]`
 | 
			
		||||
 | 
			
		||||
. Read `buff->data_len` samples, reset the buffer data (`data_len=0`),
 | 
			
		||||
increment `next_read` and if read samples is `<N`, continue with next buffer
 | 
			
		||||
until `next_read==next_write`, then block again or if timeout elapsed, then  we
 | 
			
		||||
reach conditon buffer underflow and `return len < N`.
 | 
			
		||||
 | 
			
		||||
. Release the semaphore
 | 
			
		||||
 | 
			
		||||
Upon **write** of `N` samples, the writer does something like:
 | 
			
		||||
 | 
			
		||||
. Acquire the semapore in the channel's stream object.
 | 
			
		||||
 | 
			
		||||
. Write samples to `buff = stream->buffers[next_write]`. If `data_len!=0`,
 | 
			
		||||
signal `buffer_overflow` (increase field in stream object) and probably
 | 
			
		||||
increase next_read`.
 | 
			
		||||
 | 
			
		||||
. Increase `next_write`.
 | 
			
		||||
 | 
			
		||||
. If `next_write` was `== next_read`, signal the reader through the other
 | 
			
		||||
semaphore that it can continue reading.
 | 
			
		||||
@@ -71,3 +71,103 @@ with a memory buffer. In this mode, data written to the USRP is actually stored
 | 
			
		||||
in a buffer, and read commands to the USRP simply pull data from this buffer.
 | 
			
		||||
This was very useful in early testing, and still may be useful in testing basic
 | 
			
		||||
Transceiver and radioInterface functionality.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[[backend_ipc]]
 | 
			
		||||
=== `osmo-trx-ipc` Inter Process Communication backend
 | 
			
		||||
 | 
			
		||||
This OsmoTRX model provides its own Inter Process Communication (IPC) interface
 | 
			
		||||
to drive the radio device driver (from now on the Driver), allowing for third
 | 
			
		||||
party processes to implement the lowest layer device-specific bits without being
 | 
			
		||||
affected by copyleft licenses of OsmoTRX.
 | 
			
		||||
 | 
			
		||||
For more information on such interface, see section <<ipc_if>>.
 | 
			
		||||
 | 
			
		||||
[[fig-backend-ipc]]
 | 
			
		||||
.Architecture with _osmo-trx-ipc_ and its IPC _Driver_
 | 
			
		||||
[graphviz]
 | 
			
		||||
----
 | 
			
		||||
digraph G {
 | 
			
		||||
        rankdir=LR;
 | 
			
		||||
        MS0 [label="MS"];
 | 
			
		||||
        MS1 [label="MS"];
 | 
			
		||||
        OsmoTRX [label="osmo-trx-ipc", color=red];
 | 
			
		||||
        BTS;
 | 
			
		||||
 | 
			
		||||
        subgraph cluster_ipc_driver {
 | 
			
		||||
                label = "IPC Driver";
 | 
			
		||||
                color=red;
 | 
			
		||||
                RE [label = "Radio Equipment"];
 | 
			
		||||
                REC [label="Radio Equipment Controller"];
 | 
			
		||||
                RE->REC;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        REC->OsmoTRX [label="IPC Interface", color=red];
 | 
			
		||||
 | 
			
		||||
        MS0->RE [label="Um"];
 | 
			
		||||
        MS1->RE [label="Um"];
 | 
			
		||||
        OsmoTRX->BTS [label="bursts over UDP"];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
A sample config file for this OsmoTRX model can be found in _osmo-trx.git_ https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/doc/examples/osmo-trx-ipc/osmo-trx-ipc.cfg[doc/examples/osmo-trx-ipc/osmo-trx-ipc.cfg]
 | 
			
		||||
 | 
			
		||||
In the config file, the following VTY command can be used to set up the IPC UD Master Socket _osmo-trx-ipc_ will connect to at startup:
 | 
			
		||||
 | 
			
		||||
.Example: _osmo-trx-ipc_ will connect to UD Master Socket /tmp/ipc_sock0 upon startup
 | 
			
		||||
----
 | 
			
		||||
dev-args ipc_msock=/tmp/ipc_sock0
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
==== ipc-device-test
 | 
			
		||||
 | 
			
		||||
When built with `--with-ipc --with-uhd` configure options, _osmo-trx.git_ will
 | 
			
		||||
build the test program called _ipc-driver-test_. This program implements the
 | 
			
		||||
_Driver_ side of the osmo-trx-ipc interface (see <<ipc_if>> for more
 | 
			
		||||
information) on one side, and also interacts internally with UHD (eg B210 as
 | 
			
		||||
when using osmo-trx-uhd).
 | 
			
		||||
 | 
			
		||||
You can use this small program as a reference to:
 | 
			
		||||
 | 
			
		||||
* Test and experiment with _osmo-trx-ipc_.
 | 
			
		||||
 | 
			
		||||
* Write your own IPC _Driver_ connecting to osmo-trx-ipc.
 | 
			
		||||
 | 
			
		||||
[[fig-backend-ipc-device-test]]
 | 
			
		||||
.Architecture with _osmo-trx-ipc_ and ipc-device-test as IPC _Driver_
 | 
			
		||||
[graphviz]
 | 
			
		||||
----
 | 
			
		||||
digraph G {
 | 
			
		||||
        rankdir=LR;
 | 
			
		||||
        MS0 [label="MS"];
 | 
			
		||||
        MS1 [label="MS"];
 | 
			
		||||
        SDR;
 | 
			
		||||
        ipc_device_test[label = "ipc-device-test", color=red];
 | 
			
		||||
        OsmoTRX [label="osmo-trx-ipc", color=red];
 | 
			
		||||
        BTS;
 | 
			
		||||
 | 
			
		||||
        MS0->SDR [label="Um"];
 | 
			
		||||
        MS1->SDR [label="Um"];
 | 
			
		||||
        SDR->ipc_device_test [label="UHD"];
 | 
			
		||||
        ipc_device_test->OsmoTRX [label="IPC Interface", color=red];
 | 
			
		||||
        OsmoTRX->BTS [label="bursts over UDP"];
 | 
			
		||||
}
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
The code for this app is found here:
 | 
			
		||||
 | 
			
		||||
* https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/ipc-driver-test.h[Transceiver52M/device/ipc/ipc-driver-test.h]
 | 
			
		||||
 | 
			
		||||
* https://gitea.osmocom.org/cellular-infrastructure/osmo-trx/src/branch/master/Transceiver52M/device/ipc/ipc-driver-test.c[Transceiver52M/device/ipc/ipc-driver-test.c]
 | 
			
		||||
 | 
			
		||||
Those files use the server-side (_Driver_ side) code to operate the Posix Shared
 | 
			
		||||
Memory region implemented in files `shm.c`, `shm.h`, `ipc_shm.c` and `ipc_shm.h`
 | 
			
		||||
in the same directory.
 | 
			
		||||
 | 
			
		||||
Most of the code in that same directory is deliverately released under a BSD
 | 
			
		||||
license (unlike most of _osmo-trx.git_), allowing third parties to reuse/recycle
 | 
			
		||||
the code on their implemented _Driver_ program no matter it being proprietary or
 | 
			
		||||
under an open license. However, care must be taken with external dependencies,
 | 
			
		||||
as for instance shm.c uses the talloc memory allocator, which is GPL licensed
 | 
			
		||||
and hence cannot be used in a proprietary driver.
 | 
			
		||||
@@ -35,6 +35,8 @@ include::./common/chapters/vty_cpu_sched.adoc[]
 | 
			
		||||
 | 
			
		||||
include::./common/chapters/trx_if.adoc[]
 | 
			
		||||
 | 
			
		||||
include::{srcdir}/chapters/ipc_if.adoc[]
 | 
			
		||||
 | 
			
		||||
include::./common/chapters/port_numbers.adoc[]
 | 
			
		||||
 | 
			
		||||
include::./common/chapters/bibliography.adoc[]
 | 
			
		||||
 
 | 
			
		||||
 Submodule osmocom-bb updated: a41ca4bbc4...f12b17dffb
									
								
							
		Reference in New Issue
	
	Block a user