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'