Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
400 commits
Select commit Hold shift + click to select a range
022e27a
add define macro for disabling dpll-mode checks (XO25M case)
irodushka May 23, 2025
0093407
LMK: improving XO chain solver, refactoring, XO=12.8M settings
irodushka May 24, 2025
570ff4e
xsdr wip
sergforce May 26, 2025
5ff19fa
fix
sergforce May 26, 2025
c6bf96a
lmk05138b: skip soft sync since it fails somehow
sergforce May 26, 2025
a9e521f
LMK create() refactored, xo params simplified
irodushka May 27, 2025
176ff72
xmass: initial fix
sergforce May 27, 2025
653e625
xmass: fix sysref_gen routing
sergforce May 27, 2025
98f438c
refactoring
irodushka May 31, 2025
1f437b8
Fix potential error in lmk05318_get_output_divider() + new dsdr unit-…
irodushka Jun 2, 2025
407991e
fix in lmk solver, comparing int and double
irodushka Jun 2, 2025
a6c1081
xdsp test refactoring & cleaning
irodushka Jun 5, 2025
61ff3d2
xdsp test refactoring & cleaning
irodushka Jun 5, 2025
5067598
Startup fix
vd2org Jun 6, 2025
a697979
Merge branch 'feature_pe_sync_xmass' into feature_pe_sync
irodushka Jun 6, 2025
3af934c
fix build warnings (except 2)
irodushka Jun 6, 2025
db17c28
Add LMK05313 BAW settings for XO=52M
irodushka Jun 13, 2025
128a034
Fix LMK05313 BAW settings for XO=52M
irodushka Jun 13, 2025
d13f931
dsdr: fix lmk05318b usage for dsdr/hiper
sergforce Jun 14, 2025
d9067a2
usdr_flash: do not overwrite image with the same ID
sergforce Jun 14, 2025
ac88557
xsdr/ssdr: lml autocalibration wip
sergforce Jun 14, 2025
61ecff3
dsdr: wait tps6381x PG signal
sergforce Jun 16, 2025
68a2150
ssdr/xsdr: automatic MMCM RX calibration
sergforce Jun 16, 2025
ae856da
xsdr/ssdr: improve LML RX calibration speed
sergforce Jun 17, 2025
cc6fd74
Limiting unit-test: lmk05318 only, &lmk05318_customer_test1
irodushka Jun 20, 2025
c39d7cf
Updated build version from main.
vd2org Jun 26, 2025
993602f
update lms7002m lml control
sergforce Sep 18, 2025
e472f5c
xsdr: sync with new firmware
sergforce Sep 19, 2025
9f3bc43
fix build
sergforce Sep 19, 2025
d2a0f3d
xsdr: update rx calibration
sergforce Sep 22, 2025
52c22c4
xsdr
sergforce Sep 22, 2025
1c5474f
xsdr: lml cal
sergforce Sep 22, 2025
f16a756
xsdr lml cal
sergforce Sep 22, 2025
543aadb
xsdr lml
sergforce Sep 22, 2025
eea46d0
xsdr: oprimized for xsdr_r1_master_22092025_3_noiqp_nodiv_hstl_lpwr_h…
sergforce Sep 24, 2025
f29e24f
fix tests
sergforce Sep 26, 2025
6c86676
soapy: fix test SoapySDR application
sergforce Sep 26, 2025
ed96840
ssdr: sync with GW
sergforce Sep 30, 2025
df57e93
ssdr: add fe_4ch support
sergforce Oct 2, 2025
7fafc2c
add fe control
sergforce Oct 3, 2025
129f584
DIRTY FIX for external i2c control
sergforce Oct 3, 2025
55588ef
ssdr: fe dac control
sergforce Oct 9, 2025
a425609
dsdr: Rev2 external buffer control
sergforce Oct 9, 2025
e10f356
dsdr update
sergforce Oct 9, 2025
54cdfae
Added GPSDO test utility
dtv-comp Oct 9, 2025
169aaaf
usdr_flash add warning
sergforce Oct 10, 2025
e1eb4eb
pciefe add DAC control
sergforce Oct 11, 2025
cd841e6
Added external frequency parameter to GPSDO test utility
dtv-comp Oct 11, 2025
9498d39
ssdr: wait lms8 bring up
sergforce Oct 13, 2025
8d89f35
ssdr fix path
sergforce Oct 13, 2025
cd7ddd4
ssdr optimize PLL settings
sergforce Oct 13, 2025
1e65dd8
ssdr: full support of MPW2015/2024
sergforce Oct 13, 2025
d7d8c76
ssdr: update pll settings
sergforce Oct 13, 2025
072d4fa
dsdr: add afe7903 configuration
sergforce Oct 13, 2025
eeacb66
fix typo
sergforce Oct 14, 2025
a7eb593
fix typo
sergforce Oct 14, 2025
5ab5115
New yamls for usdr_registers.
vd2org Oct 15, 2025
77f3306
Add initial support of USDR_PRO
sergforce Oct 20, 2025
cb6150f
ssdr_pro: add device id in PCIe driver
sergforce Oct 21, 2025
b898f5c
hiper_r2: initial support
sergforce Oct 23, 2025
cad9714
Add avx512 simd xdsp convs for (c)i12 formats
irodushka Oct 28, 2025
c779f0a
Merge pull request #90 from wavelet-lab/feature_avx512_i12_funcs
irodushka Oct 28, 2025
6596915
Add ci16_6ci16 & ci16_cf32, generics & AVX2 + tests
irodushka Oct 28, 2025
8292f90
Refactoring for 6-way generics
irodushka Oct 28, 2025
c1d4857
dsdr: fix crash when liblibafe79xx wasn't provided
sergforce Oct 29, 2025
ffbe1b6
hiper add LMS8A_MPW2024 and LMS8B_MPW2024 enviroment to alter LMS8 st…
sergforce Oct 29, 2025
3421bc5
Add ci16_6 avx512 convs
irodushka Oct 29, 2025
d8104f0
dsdr_hiper: fix readback of expanders in HiperR2
sergforce Oct 30, 2025
84ad4db
Fixed yamls installation.
vd2org Oct 30, 2025
6ec27f2
try to optimize redundant transforms on i12-f32 convs
irodushka Oct 30, 2025
4d88a8a
conv_ci12_4cf32_generic: fix sigfault when the last byte of packet is…
sergforce Oct 30, 2025
be62e25
conv_ci12_4cf32_avx512bw: unwrap operation by default (4x)
sergforce Oct 30, 2025
9dd9a50
Merge branch 'feature_pe_sync' into feature_i12_f32_optimization
irodushka Oct 31, 2025
faf2306
Hyper v2 support.
vd2org Oct 31, 2025
066cd14
hiper_v2: add exp_v2 commands
sergforce Oct 31, 2025
f0182d7
ci12_4cf32 optimized (AVX2)
irodushka Oct 31, 2025
c68036f
ci12_2f32 & 4f32 optims for AVX512
irodushka Oct 31, 2025
47ad192
SA AVX512 code written (not tested)
irodushka Oct 31, 2025
63899b7
Merge pull request #92 from wavelet-lab/feature_i12_f32_optimization
sergforce Oct 31, 2025
bd56874
xdsp: add AVX512VBMI check
sergforce Oct 31, 2025
6379c3f
Merge pull request #93 from wavelet-lab/feature_sa_AVX512
sergforce Nov 1, 2025
eef5f60
Hyper v2 support.
vd2org Nov 3, 2025
05e406f
Merge remote-tracking branch 'origin/feature_pe_sync' into feature_pe…
vd2org Nov 3, 2025
40f0c07
Hyper v2 support: fixed swapped gpios.
vd2org Nov 3, 2025
006c4ac
usdr_pcie_uram: fix metadata overrun issue for >15 delayed events
sergforce Nov 5, 2025
7032dd9
usdr_pcie_uram: set RX DMA boundaries for the newest FPGA images
sergforce Nov 5, 2025
bdb4f2a
pcie_uram_main: verbose dma buffer information
sergforce Nov 5, 2025
95b6f53
ssdr: add dynamic layout for r1/r2
sergforce Nov 6, 2025
c5d8fd7
usb: add initialization of DMA limiter in RX chain for newest FPGA im…
sergforce Nov 6, 2025
1e96550
usdr_flash add internal verbosity flag for debugging
sergforce Nov 6, 2025
b48ef76
dsdr_hiper: fix bugs in control
sergforce Nov 6, 2025
824c4b4
lite refactoring & optimization
irodushka Nov 6, 2025
ab5e474
dsdr: fix configuration message
sergforce Nov 7, 2025
3313e21
hiper: turnoff IF LNA by default
sergforce Nov 7, 2025
10ba328
Hyper v2 support: fixed swapped gpios(2).
vd2org Nov 7, 2025
5db6c6f
fft_window_ci16_cf32_function added (g&avx2) + utest + minors
irodushka Nov 7, 2025
fd51884
add AVX512 funcs for fft windows & i16-f32
irodushka Nov 8, 2025
db39caf
hiper: fix RX band selection
sergforce Nov 18, 2025
906eb92
dsdr: fix AFETDD control through GPIO
sergforce Nov 18, 2025
449a28d
hiper: introduce LMS8_MPW2024_MASK to override default MPW configurat…
sergforce Nov 18, 2025
c3184ad
dsdr: do not delay in case of error
sergforce Nov 18, 2025
a5ad155
dsdr: refacotr AFE7950 default configuration name
sergforce Nov 18, 2025
7e5bb5d
lms8001: add more tweaks for MPW2024
sergforce Nov 18, 2025
bd7df6f
Fixed soapy driver (#96)
dtv-comp Nov 18, 2025
279ccf3
Merge pull request #94 from wavelet-lab/feature_simd_convs_for_SA_MT
sergforce Nov 21, 2025
d08447d
driver: add automatic features detect for entreprise-like kernels
sergforce Nov 25, 2025
85cba23
usdr_pcie_uram: properly detect backport kernel features in REHL-like…
sergforce Nov 27, 2025
694823f
xsdp: add generic ci16->8cf32 transformation
sergforce Dec 1, 2025
f1c64d4
xsdp: update CMakeLists.txt
sergforce Dec 2, 2025
250532a
Add ci16_8cf32 AVX2
irodushka Dec 7, 2025
cdc25e1
Add ci16_8ci16 AVX2
irodushka Dec 8, 2025
b35ce92
refactoring
irodushka Dec 8, 2025
30d50a7
sfe_rx_4: fix typo in number of maximum channel check
sergforce Dec 9, 2025
8f59837
usdr_channel_info_map_default: initialize channel list to invalid map…
sergforce Dec 9, 2025
0ab43ab
sfetrx4: add 8-ch dsp chain support
sergforce Dec 9, 2025
86f932a
dsdr_hiper: cache LMS8_LO PLL settings not to apply it twice succesfully
sergforce Dec 9, 2025
422e196
m2_dsdr: unify 4-ch/8-ch DSP chain support alog with HIPER FE LO update
sergforce Dec 9, 2025
cd22be7
fgearbox: add US DSP layout
sergforce Dec 9, 2025
6eda83f
add ci16->8ci16 to core transform function
irodushka Dec 9, 2025
65cbe35
Merge branch 'feature_pe_sync' into feature_xdsp_6ci16_convs
irodushka Dec 9, 2025
3256f4d
Merge pull request #98 from wavelet-lab/feature_ci16_8_convs
sergforce Dec 9, 2025
934c95f
Merge branch 'feature_pe_sync' into feature_xdsp_6ci16_convs
sergforce Dec 9, 2025
e5d2bc0
Merge pull request #91 from wavelet-lab/feature_xdsp_6ci16_convs
sergforce Dec 9, 2025
4e41402
dsdr: fix reporting default temperature
sergforce Dec 10, 2025
fa2e3ad
dsdr: fix samplerate reinitialization
sergforce Dec 10, 2025
7b492e7
dsdr: fix TX x32 interpolation, x64,x128,x256 is buggy (due to regres…
sergforce Dec 10, 2025
9c2ef45
xsdp: ci16->3cf32_2 generic
sergforce Dec 10, 2025
9d3068b
xdsp add 3->1 mux for ci16/cf32
sergforce Dec 10, 2025
8f1c3f5
streaming: add x3 channel count support
sergforce Dec 10, 2025
6e96777
xdsp: add x3 mux templates
sergforce Dec 10, 2025
d365db5
dsdr: remove old code
sergforce Dec 11, 2025
f2df45e
Fixed build in case when the root folder have uppercase letters.
vd2org Dec 11, 2025
7cd34fb
Merge remote-tracking branch 'origin/feature_pe_sync' into feature_pe…
vd2org Dec 11, 2025
b24d7de
Fixed soapy timestamp
dtv-comp Dec 15, 2025
42cbb05
Merge pull request #99 from wavelet-lab/fix_soapy_ts
sergforce Dec 15, 2025
ed8c967
afe79xx: add tdd call
sergforce Dec 16, 2025
7a0ba7a
sfe_rx_4: fix 3x channel mapper
sergforce Dec 16, 2025
b507e16
dsdr: introduce AFE_PROFILE
sergforce Dec 16, 2025
064f86b
fix dsdr
sergforce Dec 17, 2025
02a33f2
xsdp: add relative REF field to compare algos
sergforce Dec 19, 2025
f4acf00
sfe_erx: fix 3/6-way transormation
sergforce Dec 19, 2025
76b32b9
dsdr: refactor AFE profiles
sergforce Dec 19, 2025
8060875
Fixed usdr_registers startup script.
vd2org Jan 8, 2026
6bfad77
intermediate commit, cleaning needed:
irodushka Jan 9, 2026
6e212f5
final edition, cleaned and perfect
irodushka Jan 11, 2026
6df50b2
Fixed descriptions.
vd2org Jan 21, 2026
2f3098c
usdr_dm_create: add -b precharge TX option to offset TX relative to RX
sergforce Jan 26, 2026
0e4be7e
espi_flash: fix uninitialized return when requested size == 0
sergforce Jan 26, 2026
6ce87aa
add USDR_LL_LOG macro with optional tagging device name in messages
sergforce Jan 26, 2026
76c4923
use USDR_LL_LOG instead of USDR_LOG
sergforce Jan 26, 2026
8a24903
mdev: enable device tagging in log messages
sergforce Jan 26, 2026
7deac0d
usdr_dm_sensors add -D option to select device
sergforce Jan 26, 2026
53066c6
tmp114: add configuration & UID functions
sergforce Jan 26, 2026
4274569
style fix
sergforce Jan 26, 2026
b141cf8
ext_fe_ch4_400_7200: improve logging
sergforce Jan 26, 2026
31801e9
usdr: allow RD32 ioctl() in order to properly detect device
sergforce Jan 26, 2026
85b7bab
dsdr: add proper control of 4ch0472 board
sergforce Jan 29, 2026
7c9436c
afe79xx: be more verbosive whet it fails to load
sergforce Jan 29, 2026
8c2b6cf
Merge pull request #101 from wavelet-lab/feature_triple_convs
sergforce Jan 29, 2026
dc59aa1
Fixed filter name for FE board control.
vd2org Feb 3, 2026
9b943f3
lmk04832: fix conflicting type
sergforce Feb 5, 2026
c290821
cmake: x86_64 is AMD64 under windows
sergforce Feb 5, 2026
65ee898
dmonitor: use PySide6 if available or fallback to pyqt5
sergforce Feb 5, 2026
012a0ae
use usdr_alignalloc / usdr_alignfree to allocate & free aligned memory
sergforce Feb 5, 2026
9b39b4b
use ftell_long for cross platform 64-bit offset access
sergforce Feb 5, 2026
1142caa
add portable fnmatch() for windows-like systems
sergforce Feb 5, 2026
88dd107
add conditional compilation fixes for WIN32
sergforce Feb 5, 2026
0752e14
use portable dynamic library API wrapper
sergforce Feb 5, 2026
6636a69
fix printf() format for 4/8 byte long type
sergforce Feb 5, 2026
6c3ae96
cmake: fix windows build
sergforce Feb 5, 2026
ef79b2d
Merge pull request #102 from wavelet-lab/fix_fe_filt_name
sergforce Feb 5, 2026
65cbca6
Fixed WASM build (#95)
dtv-comp Nov 18, 2025
0b62f29
Fix WASM build error in the feature_pe_sync branch
dtv-comp Feb 5, 2026
575368b
Merge pull request #103 from wavelet-lab/fix_wasm_build_pe_sync
sergforce Feb 5, 2026
d6e945b
usdr_port: add asprintf/vasprintf for Windows environment
sergforce Feb 8, 2026
be4159d
xlnx validate file CRC before being written
sergforce Feb 16, 2026
e614b5e
Add option to blank master firmware
sergforce Feb 17, 2026
ebb5708
fix bitstream parsing constants
sergforce Feb 18, 2026
c1ff7b7
fix device vfs for string objects and links
sergforce Feb 18, 2026
47448d8
si5332 improve spurs
sergforce Feb 18, 2026
c73c3b7
Add ip2corr for lms6
sergforce Feb 18, 2026
7764d51
improve dc calibration
sergforce Feb 18, 2026
bb349e8
fix xmass build
sergforce Feb 18, 2026
f40d33a
fix ports
sergforce Feb 18, 2026
d3b50a8
cmake: install CMake package config/targets and generate usdr.pc
dtv-comp Feb 18, 2026
f1b2638
pkg-config: fix libdir/includedir to use prefix/exec_prefix
dtv-comp Feb 18, 2026
4ecec56
docs: add instructions for locating installed usdr via pkg-config and…
dtv-comp Feb 18, 2026
5fe4602
refactor: replace POSIX semaphores with usdr semaphores for macOS com…
vd2org Feb 18, 2026
9845501
build: fix pkg-config paths and add URL to usdr.pc
dtv-comp Feb 20, 2026
99e78ee
add at24 EEPROM memory interface
sergforce Feb 21, 2026
3acf96b
xsdr fix for ssdr pro
sergforce Feb 21, 2026
17df5da
add at24 control
sergforce Feb 21, 2026
0786bdc
add initial python wrappers
sergforce Feb 21, 2026
f389a59
add python utilities to CMake
sergforce Feb 21, 2026
7de8219
fix: correct typos in comments, logs, and frequency endpoints
dtv-comp Feb 24, 2026
17dc6ab
Merge pull request #106 from wavelet-lab/fix-typos-and-frequency-endp…
sergforce Feb 26, 2026
4dbfdf1
ssdrrev3: fix for ultrascale
sergforce Feb 27, 2026
f73eb83
usdr_dm_create: add loopback option
sergforce Feb 27, 2026
f614244
Merge pull request #104 from wavelet-lab/feature_package_files
sergforce Feb 27, 2026
1f603b9
mac: fix sincosf()
sergforce Feb 27, 2026
22489e2
printf: fix formatting
sergforce Feb 27, 2026
5b3ac8a
port: define _GNU_SOURCE to use extended c library functions
sergforce Feb 27, 2026
efe6914
mac: increse default buffer size
sergforce Feb 27, 2026
8a1024f
Merge pull request #105 from wavelet-lab/feature_macos_port
sergforce Feb 27, 2026
2aa3651
mac: replace sincosf implementation with inline version for compatibi…
vd2org Feb 27, 2026
acd19d0
logging: downgrade unknown device message from ERROR to DEBUG
dtv-comp Mar 1, 2026
2ad9829
Merge pull request #107 from wavelet-lab/fix-log-level
sergforce Mar 1, 2026
36f84af
logging: fix additional misleveled messages and typo in libusb_generic
cvalentine99 Mar 1, 2026
e48b694
Merge pull request #108 from cvalentine99/fix-log-levels-and-typo
sergforce Mar 1, 2026
fa2e5db
ssdr: improve lml calibration
sergforce Mar 2, 2026
a7ef47f
Restored defaults.
vd2org Mar 2, 2026
a18e608
xsdr: fix incorrect vio set function
sergforce Mar 2, 2026
c7ad1bb
fix: clean up typos in logs, comments and YAML descriptions
dtv-comp Mar 2, 2026
c4c1e5c
fix: prescaller typo
dtv-comp Mar 2, 2026
429bde4
Merge pull request #109 from wavelet-lab/fix-typos
sergforce Mar 2, 2026
4b337ea
ssdr: improve LML
sergforce Mar 2, 2026
4c5a603
lms7002: wait LDO to settle during first SXX run
sergforce Mar 2, 2026
a386000
mmcm: use proper MIN/MAX for USP
sergforce Mar 2, 2026
c541d80
ssdr: fix restart LML calibration
sergforce Mar 3, 2026
3346a30
xsdr: fix RX_LML initial calibration for low
sergforce Mar 3, 2026
1b47e1e
lms8001: retry with different VCO divider
sergforce Mar 3, 2026
a17b37d
lms8001: make automatic recalibration after fail more robust
sergforce Mar 3, 2026
2a99164
ssdr: do not retune LMS7 if it's the same LO
sergforce Mar 3, 2026
be791af
xsdr: reset TSP after samplerate change
sergforce Mar 3, 2026
cfe90e1
improve calibration
sergforce Mar 4, 2026
a8998ef
xsdr: reduce calibration time
sergforce Mar 4, 2026
a66a74a
xsdr: LML calibration fixup
sergforce Mar 4, 2026
b605288
ssdr: use integer lms8
sergforce Mar 4, 2026
5267fd1
ssdr: improve lms8 smart tune
sergforce Mar 4, 2026
a0e9b94
ssdr: add interface to switch LMS8 int/frac mode
sergforce Mar 4, 2026
8f396c4
ssdr: RXTSP reset
sergforce Mar 4, 2026
726f6cf
ssdr: unify R0/R2/R3 configuration for A/B MPW2015/2024
sergforce Mar 6, 2026
3fd6573
lms7002: improve VCO calibaration by supporting dsicontinued ranges
sergforce Mar 8, 2026
8d1b1be
tools/python: add example for receiving samples via SoapySDR and plot…
dtv-comp Mar 11, 2026
8143ff5
tools/python: fix description
dtv-comp Mar 11, 2026
cb00e41
chirp generator - implementation (generic & SIMD) + dm_create option
irodushka Mar 15, 2026
731ec71
rm forgotten comments in test
irodushka Mar 15, 2026
64024db
xsdr: improve samplerate handling
sergforce Mar 16, 2026
df72db3
tools/python: guard optional SoapySDR Device.close() call
dtv-comp Mar 16, 2026
4f8ee6f
xsdr: fix frequency operations for freq>4Ghz
sergforce Mar 16, 2026
122f17c
xsdr: fix soapy sdr
sergforce Mar 16, 2026
9900648
Merge pull request #112 from wavelet-lab/feature_chirp_generator
sergforce Mar 17, 2026
865444d
xsdr: update to support TX-only MMCM configuration
sergforce Mar 17, 2026
ead1b05
Merge branch 'feature_pe_sync' of github.com:wavelet-lab/usdr-lib int…
sergforce Mar 17, 2026
1c9e050
Add example FFT TX script using SoapySDR for sine wave transmission
Mar 18, 2026
ef84250
usdr: init DSP chain
sergforce Mar 23, 2026
f7e21ce
xmass: add initial support in linux kernel
sergforce Mar 23, 2026
8a72868
xmass: firmware update utility
sergforce Mar 23, 2026
f5ff3a3
xmass: add rev1a control
sergforce Mar 23, 2026
9550553
xmass: add forgotten defines
sergforce Apr 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 40 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,3 +116,43 @@ cd ../src/lib/lowlevel/pcie_uram/driver
make
sudo insmod usdr_pcie_uram.ko
````

## Finding the installed `usdr` library

You can find and use the installed library in two common ways — with `pkg-config` or with CMake's `find_package`.

- Using pkg-config

```bash
# set to the install prefix used during `make install`
export INSTALL_PREFIX=/path/to/install
export PKG_CONFIG_PATH="$INSTALL_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"

# Get version, cflags and libs
pkg-config --modversion usdr
pkg-config --cflags usdr # include flags, e.g. -I/path/to/install/include
pkg-config --libs usdr # link flags, e.g. -L/path/to/install/lib -lusdr
```

- Using CMake `find_package` (CONFIG-mode)

Create a small CMake project that uses the installed package (replace `/path/to/install` with your install prefix):

```cmake
cmake_minimum_required(VERSION 3.8)
project(example C)
find_package(usdr CONFIG REQUIRED)
add_executable(example main.c)
target_link_libraries(example PRIVATE usdr::usdr)
```

Then configure and build:

```bash
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/install ..
cmake --build .
```

If `find_package` fails, ensure the file `usdrConfig.cmake` is installed under `<install-prefix>/lib/cmake/usdr/` (or the corresponding `libdir/cmake/usdr` for your system) and pass that prefix via `CMAKE_PREFIX_PATH`.

2 changes: 1 addition & 1 deletion Taskfile.box.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ vars:
NOW:
sh: "date +%Y%m%d%H%m%S"
LABEL:
sh: "echo box-$(basename {{.ROOT_DIR}})"
sh: "echo box-$(basename {{.ROOT_DIR}} | tr '[:upper:]' '[:lower:]')"
DOCKER_FILE_PREFIX: "docker/Dockerfile.box"

tasks:
Expand Down
2 changes: 2 additions & 0 deletions docker/Taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ tasks:
- prepare
dir: /work/build/source
cmds:
- echo "#!/usr/bin/env sh" > /usr/bin/lintian # dirty hack to disable lintian
- echo "exit 0" >> /usr/bin/lintian
- debuild -us -uc -eDH_VERBOSE=1
- cp -ra /work/build/*.deb /work/output/{{.OUTPUT_DIR_NAME}}/

Expand Down
4 changes: 2 additions & 2 deletions packaging/debian-bookworm/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usdr (0.9.9~bookworm0) stable; urgency=low
usdr (0.9.10b~bookworm0) stable; urgency=low

* Fixes and improvements

-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Sun, 30 Jan 2025 00:00:00 +0000
-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Thu, 26 Jun 2025 00:00:00 +0000
2 changes: 1 addition & 1 deletion packaging/debian-bookworm/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Source: usdr
Section: misc
Priority: optional
Maintainer: Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com>
Standards-Version: 0.9.9
Standards-Version: 0.9.10b
Homepage: https://github.com/wavelet-lab/usdr-lib
Vcs-Browser: https://github.com/wavelet-lab/usdr-lib
Vcs-Git: https://github.com/wavelet-lab/usdr-lib.git
Expand Down
4 changes: 2 additions & 2 deletions packaging/ubuntu-bionic/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usdr (0.9.9~bionic0) bionic; urgency=low
usdr (0.9.10b~bionic0) bionic; urgency=low

* Fixes and improvements

-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Sun, 30 Jan 2025 00:00:00 +0000
-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Thu, 26 Jun 2025 00:00:00 +0000
2 changes: 1 addition & 1 deletion packaging/ubuntu-bionic/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Source: usdr
Section: misc
Priority: optional
Maintainer: Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com>
Standards-Version: 0.9.9
Standards-Version: 0.9.10b
Homepage: https://github.com/wavelet-lab/usdr-lib
Vcs-Browser: https://github.com/wavelet-lab/usdr-lib
Vcs-Git: https://github.com/wavelet-lab/usdr-lib.git
Expand Down
4 changes: 2 additions & 2 deletions packaging/ubuntu-focal/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usdr (0.9.9~focal0) focal; urgency=low
usdr (0.9.10b~focal0) focal; urgency=low

* Fixes and improvements

-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Sun, 30 Jan 2025 00:00:00 +0000
-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Thu, 26 Jun 2025 00:00:00 +0000
2 changes: 1 addition & 1 deletion packaging/ubuntu-focal/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Source: usdr
Section: misc
Priority: optional
Maintainer: Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com>
Standards-Version: 0.9.9
Standards-Version: 0.9.10b
Homepage: https://github.com/wavelet-lab/usdr-lib
Vcs-Browser: https://github.com/wavelet-lab/usdr-lib
Vcs-Git: https://github.com/wavelet-lab/usdr-lib.git
Expand Down
4 changes: 2 additions & 2 deletions packaging/ubuntu-jammy/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usdr (0.9.9~jammy0) jammy; urgency=low
usdr (0.9.10b~jammy0) jammy; urgency=low

* Fixes and improvements

-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Sun, 30 Jan 2025 00:00:00 +0000
-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Thu, 26 Jun 2025 00:00:00 +0000
2 changes: 1 addition & 1 deletion packaging/ubuntu-jammy/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Source: usdr
Section: misc
Priority: optional
Maintainer: Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com>
Standards-Version: 0.9.9
Standards-Version: 0.9.10b
Homepage: https://github.com/wavelet-lab/usdr-lib
Vcs-Browser: https://github.com/wavelet-lab/usdr-lib
Vcs-Git: https://github.com/wavelet-lab/usdr-lib.git
Expand Down
4 changes: 2 additions & 2 deletions packaging/ubuntu-noble/changelog
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usdr (0.9.9~noble0) noble; urgency=low
usdr (0.9.10b~noble0) noble; urgency=low

* Fixes and improvements

-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Sun, 30 Jan 2025 00:00:00 +0000
-- Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com> Thu, 26 Jun 2025 00:00:00 +0000
2 changes: 1 addition & 1 deletion packaging/ubuntu-noble/control
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Source: usdr
Section: misc
Priority: optional
Maintainer: Ivan Kolesnikov <ivan.kolesnikov@wavelet-lab.com>
Standards-Version: 0.9.9
Standards-Version: 0.9.10b
Homepage: https://github.com/wavelet-lab/usdr-lib
Vcs-Browser: https://github.com/wavelet-lab/usdr-lib
Vcs-Git: https://github.com/wavelet-lab/usdr-lib.git
Expand Down
9 changes: 7 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2023-2024 Wavelet Lab
# Copyright (c) 2023-2026 Wavelet Lab
# SPDX-License-Identifier: MIT

cmake_minimum_required(VERSION 3.8)
Expand Down Expand Up @@ -34,7 +34,7 @@ option(ENABLE_DMONITOR "Enable debug tools" ON)
option(ENABLE_VERILATOR "Enable verilator lowlevel bridge" OFF)
option(ENABLE_SOAPY "Enable SopaySDR support" ON)
option(ENABLE_GUI "Enable USDR QT5 simple GUI" ON)
option(ENABLE_TESTS "Enable tests" ON)
option(ENABLE_TESTS "Enable tests" OFF)


add_feature_info(VerilatorBridge ENABLE_VERILATOR "Verilator support for emulated devices")
Expand Down Expand Up @@ -94,3 +94,8 @@ message(STATUS "Install libs: ${CMAKE_INSTALL_LIBDIR}")
message(STATUS "Shared libs: ${BUILD_SHARED_LIBS}")
message(STATUS "Data dir: ${CMAKE_INSTALL_FULL_DATADIR}")
message(STATUS "######################################################")

include(cmake/UsdrPackage.cmake)

# Use helper to generate/install CMake config, exported targets and pkg-config file
usdr_install_package(NAME usdr VERSION ${USDR_VERSION} TARGETS usdrTargets PKGCONFIG ON)
5 changes: 5 additions & 0 deletions src/Changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
Release 0.9.10b (2025-06-26)
==========================

- Fixes and improvements

Release 0.9.9 (2025-01-30)
==========================

Expand Down
73 changes: 73 additions & 0 deletions src/cmake/UsdrPackage.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Usdr CMake package helper
# Provides a function `usdr_install_package(NAME <name> VERSION <ver> TARGETS <exported_targets> PKGCONFIG <ON|OFF>)`

include(CMakePackageConfigHelpers)
get_filename_component(USDR_PACKAGE_HELPER_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)

function(usdr_install_package)
cmake_parse_arguments(_u "" "NAME;VERSION;PKGCONFIG" "TARGETS" ${ARGN})

if(NOT _u_NAME)
message(FATAL_ERROR "usdr_install_package: NAME is required")
endif()
if(NOT _u_VERSION)
message(FATAL_ERROR "usdr_install_package: VERSION is required")
endif()

set(_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${_u_NAME}")

# Helper dir (set at include-time) points to this file's directory
set(_usdr_helper_dir "${USDR_PACKAGE_HELPER_DIR}")

# Configure and write CMake package config files
set(_config_in "${_usdr_helper_dir}/${_u_NAME}Config.cmake.in")
if(NOT IS_ABSOLUTE "${_config_in}")
get_filename_component(_config_in "${_config_in}" REALPATH BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
endif()

configure_package_config_file(
"${_config_in}"
"${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}Config.cmake"
INSTALL_DESTINATION "${_install_dir}"
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}ConfigVersion.cmake"
VERSION ${_u_VERSION}
COMPATIBILITY AnyNewerVersion
)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}ConfigVersion.cmake"
DESTINATION "${_install_dir}"
)

# Install exported CMake targets
if(_u_TARGETS)
install(EXPORT ${_u_TARGETS}
FILE ${_u_NAME}Targets.cmake
NAMESPACE ${_u_NAME}::
DESTINATION "${_install_dir}"
)
endif()

# Optionally generate and install a pkg-config file
if(_u_PKGCONFIG STREQUAL "ON")
set(_pc_in "${_usdr_helper_dir}/${_u_NAME}.pc.in")
if(NOT IS_ABSOLUTE "${_pc_in}")
get_filename_component(_pc_in "${_pc_in}" REALPATH BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
endif()

# Provide substitutions for the pkg-config template
set(PACKAGE_NAME "${_u_NAME}")
set(PACKAGE_VERSION "${_u_VERSION}")

configure_file("${_pc_in}"
"${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}.pc" @ONLY)
unset(PACKAGE_NAME CACHE)
unset(PACKAGE_VERSION CACHE)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${_u_NAME}.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
endif()
endfunction()
2 changes: 1 addition & 1 deletion src/cmake/detect_arch.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ if(${WVLT_ARCH} STREQUAL "x86")
message(STATUS "Will compile for ${WVLT_ARCH} architecture")
message(STATUS "Intel SIMD intrinsics will be used")

elseif(${WVLT_ARCH} STREQUAL "x86_64")
elseif(${WVLT_ARCH} STREQUAL "x86_64" OR ${WVLT_ARCH} STREQUAL "AMD64")
add_definitions(-DWVLT_ARCH_X86_64)
set(WVLT_ARCH_X86_64 1 CACHE BOOL "Arch x86_64")
message(STATUS "Will compile for ${WVLT_ARCH} architecture")
Expand Down
12 changes: 12 additions & 0 deletions src/cmake/usdr.pc.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}/@CMAKE_INSTALL_BINDIR@
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/usdr

Name: @PACKAGE_NAME@
Description: usdr library
URL: https://docs.wsdr.io
Version: @PACKAGE_VERSION@
Requires: libusb-1.0
Libs: -L${libdir} -l@PACKAGE_NAME@
Cflags: -I${includedir}
8 changes: 8 additions & 0 deletions src/cmake/usdrConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@PACKAGE_INIT@

# Find dependencies used by the usdr package
include(CMakeFindDependencyMacro)
find_dependency(LIBUSB_1 REQUIRED)

# Import the targets exported by the usdr build
include("${CMAKE_CURRENT_LIST_DIR}/usdrTargets.cmake")
40 changes: 25 additions & 15 deletions src/dmonitor/pyqt5_widget.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,31 @@
#!/usr/bin/python3

# Copyright (c) 2023-2024 Wavelet Lab
# Copyright (c) 2023-2026 Wavelet Lab
# SPDX-License-Identifier: MIT

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QRegExpValidator, QPalette, QColor, QIcon
from PyQt5.QtCore import Qt, QObject, pyqtSignal, QRegExp
try:
from PySide6.QtWidgets import *
from PySide6.QtGui import QRegularExpressionValidator, QPalette, QColor, QIcon
from PySide6.QtCore import Qt, QObject, Signal, QRegularExpression
QT_VER = 6
except ImportError:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QRegExpValidator, QPalette, QColor, QIcon
from PyQt5.QtCore import Qt, QObject, pyqtSignal, QRegExp
QT_VER = 5

import math
import configparser
import re
import time
import os


ABS_PATH = os.path.dirname(os.path.abspath(__file__))


class LongSpinBox(QAbstractSpinBox):
valueChanged = pyqtSignal(int)
clicked = pyqtSignal(Qt.MouseButton)
valueChanged = Signal(int) if QT_VER == 6 else pyqtSignal(int)
clicked = Signal(Qt.MouseButton)if QT_VER == 6 else pyqtSignal(Qt.MouseButton)

def __init__(self, parent = None):
super(LongSpinBox, self).__init__(parent)
Expand All @@ -28,7 +34,11 @@ def __init__(self, parent = None):
self.setMaximum(255)
self.lineEdit().setText("0")
self.lineEdit().textChanged.connect(lambda t: self.setValue(int(t)))
self.lineEdit().setValidator(QRegExpValidator(QRegExp("[0-9]*"), self.lineEdit()))

if QT_VER == 6:
self.lineEdit().setValidator(QRegularExpressionValidator(QRegularExpression("[0-9]*"), self.lineEdit()))
else:
self.lineEdit().setValidator(QRegExpValidator(QRegExp("[0-9]*"), self.lineEdit()))

def setMaximum(self, max_value):
self.maximum = max_value
Expand Down Expand Up @@ -312,11 +322,11 @@ def load_button_clicked(self)->None:
if(not line):
break

line = line.rstrip('\n').strip()
line = line.rstrip(r'\n').strip()

if(found):

if re.match('^\[(.*)\]$', line) is not None:
if re.match(r'^\[(.*)\]$', line) is not None:
break

parts = line.split('=')
Expand All @@ -334,14 +344,14 @@ def load_button_clicked(self)->None:
regcnt += 1
#print('loaded 0x%04x=0x%04x' % (addr, val))
else:
found = ('[%s]' % ini_section_name) == line
found = (r'[%s]' % ini_section_name) == line
if(found):
print('LOAD: found section [%s] in file "%s"' % (ini_section_name, inifile_name))
print(r'LOAD: found section [%s] in file "%s"' % (ini_section_name, inifile_name))

if(not found):
print('LOAD: section [%s] not found in file "%s", registers were not loaded!' % (ini_section_name, inifile_name))
print(r'LOAD: section [%s] not found in file "%s", registers were not loaded!' % (ini_section_name, inifile_name))
else:
print('LOAD: %d registers were loaded from "%s".[%s]' % (regcnt, inifile_name, ini_section_name))
print(r'LOAD: %d registers were loaded from "%s".[%s]' % (regcnt, inifile_name, ini_section_name))
self.update()

f.close()
Expand Down
Loading