Git Product home page Git Product logo

data-over-dab-example's Introduction

Data over DAB Example

This repository contains an example packager and a receiver that demonstrate how to use the Data over DAB libraries.

Requirements

The following libraries are required to build the code in this repository:

Depending on your operating system these libraries might be available in your OS package repository.

Building

Building the examples requires CMake

The first thing you need to do is to clone the repository and its submodules:

$ git clone --recursive https://github.com/Opendigitalradio/data-over-dab-example.git

Afterwards you are ready to configure and build the examples like so:

$ cd data-over-dab-example
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ cmake --build -- -j$(nproc)

The resulting binaries can be found in <build-directory>/products/Release/bin

Running

Per default, the packager packages the incoming data in way that makes it look like it comes from 10.0.0.2 and goes to 10.0.0.1. It also sets 1000 as the DAB packet address. Thus you need to make sure to pass 10.0.0.1 and 1000 as the receivers arguments.

Packager

To start the packager, you need to create the expected fifo and run the packager:

$ mkfifo /tmp/dabdata
$ <build-directory>/products/Release/bin/packager

NOTE: If you want to use ODR-DabMux to create a DAB multiplex that transports the data generated by the packager, you will need to start ODR-DabMux using the supplied demo.mux file PRIOR to running the packager:

$ odr-dabmux <source-root>/mux/demo.mux

You can also use the supplied run script if you want to transmit the multiplex using ODR-DabMod and a HackRF:

$ <source-root>/mux/run

Please note that the run script requires python and GNURadio with the modules for the HackRF to run.

Receiver

Running the receiver requires an SDR device compatible with librtlsdr. The receiver requires root access to create the virtual network device:

$ sudo <build-directory>/products/Release/bin/receiver 10.0.0.1 1000

Transmitting data

To send data via the DAB IP tunnel, you can send UDP datagrams to port 4321 on the machine the packager is running on. For example you can use netcat:

$ echo "Hello DAB" | nc -w0 -u 127.0.0.1 4321

Receiving data

Receiving the transmitted is equally as simple. On the machine that is running the receiver, you will simply listen on the address of the virtual network interface for UDP datagrams on the port specified in the packager (default 4242):

$ nc -u -l 10.0.0.1 4242

data-over-dab-example's People

Contributors

fmorgner avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

data-over-dab-example's Issues

Problems met when installing data-over-dab-example

I met 2 problems when installing data-over-dab-example.
Could anybody give me some advices?
Thanks a lot.

joseph@Joseph-Kubuntu:~/ODR-MMB-Tools/data-over-dab-example/build$ cmake --build .
Scanning dependencies of target dabdemod
[ 3%] Building CXX object external/dabdemod/src/CMakeFiles/dabdemod.dir/demodulator.cpp.o
[ 6%] Building CXX object external/dabdemod/src/CMakeFiles/dabdemod.dir/util/fft.cpp.o
[ 9%] Building CXX object external/dabdemod/src/CMakeFiles/dabdemod.dir/util/phase_reference.cpp.o
[ 12%] Building CXX object external/dabdemod/src/CMakeFiles/dabdemod.dir/util/symbol_handler.cpp.o
[ 16%] Building CXX object external/dabdemod/src/CMakeFiles/dabdemod.dir/util/deinterleaver.cpp.o
[ 19%] Linking CXX static library ../../../lib/libdabdemod.a
[ 19%] Built target dabdemod
Scanning dependencies of target dabdecode
[ 22%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/ensemble/ensemble.cpp.o
[ 25%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/ensemble/service.cpp.o
[ 29%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/ensemble/service_component.cpp.o
[ 32%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/ensemble/subchannel.cpp.o
[ 35%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/frame/cif.cpp.o
[ 38%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/frame/fib.cpp.o
[ 41%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/frame/frame.cpp.o
[ 45%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/parser/fic_parser.cpp.o
[ 48%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/parser/fic_parser_fig_0.cpp.o
[ 51%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/parser/fic_parser_fig_1.cpp.o
[ 54%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/viterbi/calc_metric.cpp.o
[ 58%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/viterbi/core_algorithms.cpp.o
[ 61%] Building CXX object external/dabdecode/src/CMakeFiles/dabdecode.dir/viterbi/fsm.cpp.o
[ 64%] Linking CXX static library ../../../lib/libdabdecode.a
[ 64%] Built target dabdecode
Scanning dependencies of target dabip
[ 67%] Building CXX object external/dabip/src/CMakeFiles/dabip.dir/util/crc16.cpp.o
[ 70%] Building CXX object external/dabip/src/CMakeFiles/dabip.dir/packet/packet_generator.cpp.o
[ 74%] Building CXX object external/dabip/src/CMakeFiles/dabip.dir/packet/packet_parser.cpp.o
[ 77%] Building CXX object external/dabip/src/CMakeFiles/dabip.dir/msc_data_group/msc_data_group_generator.cpp.o
[ 80%] Building CXX object external/dabip/src/CMakeFiles/dabip.dir/msc_data_group/msc_data_group_parser.cpp.o
[ 83%] Linking CXX static library ../../../lib/libdabip.a
[ 83%] Built target dabip
Scanning dependencies of target packager
[ 87%] Building CXX object src/CMakeFiles/packager.dir/packager.cpp.o
[ 90%] Linking CXX executable ../products/bin/packager
[ 90%] Built target packager
Scanning dependencies of target receiver
[ 93%] Building CXX object src/CMakeFiles/receiver.dir/receiver.cpp.o
/home/joseph/ODR-MMB-Tools/data-over-dab-example/src/receiver.cpp: In function ‘int main(int, char**)’:
/home/joseph/ODR-MMB-Tools/data-over-dab-example/src/receiver.cpp:111:65: error: use of deleted function ‘dab::ensemble::ensemble(dab::ensemble&&)’
auto ensemble = dab::ensemble{symbols, dab::kTransmissionMode1};
^
In file included from /home/joseph/ODR-MMB-Tools/data-over-dab-example/src/receiver.cpp:36:0:
/home/joseph/ODR-MMB-Tools/data-over-dab-example/external/dabdecode/include/dab/ensemble/ensemble.h:68:10: note: ‘dab::ensemble::ensemble(dab::ensemble&&)’ is implicitly deleted because the default definition would be ill-formed:
struct ensemble
^~~~~~~~
/home/joseph/ODR-MMB-Tools/data-over-dab-example/external/dabdecode/include/dab/ensemble/ensemble.h:68:10: error: use of deleted function ‘std::atomic::atomic(const std::atomic&)’
In file included from /usr/include/asio/detail/atomic_count.hpp:23:0,
from /usr/include/asio/detail/task_io_service.hpp:24,
from /usr/include/asio/impl/io_service.hpp:69,
from /usr/include/asio/io_service.hpp:765,
from /home/joseph/ODR-MMB-Tools/data-over-dab-example/include/tun_device.h:45,
from /home/joseph/ODR-MMB-Tools/data-over-dab-example/src/receiver.cpp:32:
/usr/include/c++/7/atomic:71:5: note: declared here
atomic(const atomic&) = delete;
^~~~~~
src/CMakeFiles/receiver.dir/build.make:62: recipe for target 'src/CMakeFiles/receiver.dir/receiver.cpp.o' failed
make[2]: *** [src/CMakeFiles/receiver.dir/receiver.cpp.o] Error 1
CMakeFiles/Makefile2:667: recipe for target 'src/CMakeFiles/receiver.dir/all' failed
make[1]: *** [src/CMakeFiles/receiver.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.