Files
libewsdr_dmr/README.md
T
2026-07-15 10:10:01 +03:00

49 lines
1.7 KiB
Markdown

# EWSDR DMR native adapter
This optional shared library isolates `mbelib` and the imported DMR core from
the Lazarus application. It intentionally does not depend on PulseAudio,
ncurses, libsndfile or the DSD-FME command-line frontend.
Build on Linux:
```sh
cmake -S native/dmr -B build/dmr -DCMAKE_BUILD_TYPE=Release
cmake --build build/dmr
```
The Pascal burst/FEC layer extracts three row-major `char[4][24]` AMBE+2
frames from each selected voice-slot burst and feeds them through this ABI.
Decoded 8 kHz mono PCM is resampled to EWSDR's 48 kHz speaker/web route.
For a build-tree run, either copy `libewsdr_dmr.so` beside the EWSDR executable
or add `build/dmr` to `LD_LIBRARY_PATH`. `cmake --install build/dmr` installs the
adapter system-wide. The GUI and daemon remain usable (with metadata but no
voice) when this optional library is absent.
## Jenkins cross-build for Windows x64
Use `jenkins/build-mbelib-win64.sh` in a Jenkins job that checks out mbelib.
It creates `install-win64` with `mbelib.h`, the import library, `libmbe.dll`,
and the MinGW runtime DLLs.
Configure the mbelib job to archive `install-win64/**`. In the EWSDR job, copy
that artifact to `deps/mbelib` and then run
`native/dmr/jenkins/build-ewsdr-dmr-win64.sh` before `lazbuild`. The script
expects the resulting prefix at
`$WORKSPACE/deps/mbelib/install-win64`, builds from
`$WORKSPACE/native/dmr`, and stages the DLL bundle in
`$WORKSPACE/bin/x86_64-win64` beside the future `ewsdr.exe`. All paths can be
overridden with environment variables.
Declarative/Scripted Pipeline example for the artifact transfer:
```groovy
copyArtifacts(
projectName: 'mbelib',
selector: lastSuccessful(),
filter: 'install-win64/**',
target: 'deps/mbelib'
)
sh 'native/dmr/jenkins/build-ewsdr-dmr-win64.sh'
```