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

1.7 KiB

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:

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:

copyArtifacts(
  projectName: 'mbelib',
  selector: lastSuccessful(),
  filter: 'install-win64/**',
  target: 'deps/mbelib'
)
sh 'native/dmr/jenkins/build-ewsdr-dmr-win64.sh'