Testbed Readme
Directory Structure of DVB-H Project
The subversion link of the mobile TV project is: https://cs-svn.cs.surrey.sfu.ca/svn/nsl The directory should be self-contained: users can set up a base station with only Ubuntu and our project directory. To achieve this, please keep our code within the project directory, and create symbolic links if necessary. For example, Apache server may access web files, which reside in /home/cly/DVB-H/web, through a link. Notice that we keep binaries that do not come with Ubuntu packages (such as timeslicer and sec2ts) in our bin/ directories. Common binaries (such as argtable2-dev) are installed through apt-get in /usr or /usr/local.
The current directory structure is as the following:
. |-- bin binaries for DVB-H service |-- media sample video files |-- scripts test scripts to launch test configurations | `-- esg_ipdc_test test case with IPDC ESG and one TV channel |-- src (possibly modified) source code for programs not supported by Ubuntu | |-- LinuxSDK driver and API of the modulator card | |-- OpenCaster DVB-T utilities, note that it only works with Python 2.4 | |-- enc_proto an early IPE prototype used to evaluate our algorithms (based on fatcaps) | |-- fatcaps_v0.5 IP Encapsulator | |-- fec-3.0.1 FEC library used by fatcaps | |-- flute mad flute code, we only use its simple sender | `-- log4c-1.2.1 logging library for C programs |-- tar (unmodified) source code from other projects `-- web web user interface `-- configs
Start Test Cases with Scripts
Several test cases, such as esg_ipdc_test, can be started with scripts under script/ directory. Such directory contains three sub-directories:
scripts/esg_ipdc_test/ psi/si table configurations are in this directory |-- esg ESG and (flute) fdt files are here | `-- flute-downloads not used, created by mad flute |-- run.py script to start the broadcast service |-- stop.py script to stop all utility/background processes |-- launch.sh auxiliary script called by run.py to start utility processes `-- logs log files of log4c, whose granularity is controlled by log4crc
To start a test case, cd into that directory, and run "sudo ./run.py". To stop a test case, run "sudo ./stop.py" under the same directory. Occasionally, you may need to kill some processes. Following is a complete list of relevant processes:
- timeslicer
- vlc
- flute
- tsnullfiller
- tsnullshaper
- sec2ts
- DtPlay
The run.py, launch.sh, and stop.py, describe how we invoke/combine the utilities for a complete base station solution. We give a high-level, itemized, startup procedure below. Please read these three scripts for more details.
- start vlc to stream video files (by launch.sh)
- start flute to send ESG files (by launch.sh)
- start dataaggregator to capture packets from vlc into temp files (by launch.sh)
- start dataaggregator to capture packets from flute into temp files (by launch.sh)
- start timeslicer to encapsulate IP streams into a MPEG-2 traffic stream (by launch.sh)
- call python code to generate PSI/SI tables, and store them in a temp file (by run.py)
- mux PSI/SI tables with the MPEG-2 traffic stream (by run.py)
- start Dtplay to send MPEG-2 traffic stream over-the-air (by run.py)
The current available test cases are:
- esg_ipdc_test: implements IPDC ESG with 1 TV channel. To demonstrate the ESG stack.
- esg_oma_test: implements OMA BCAST ESG with 1 TV channel. To demonstrate the ESG stack.
- energy_test: broadcast 8 TV channels, without FEC (due to high CPU load), with OMA BCAST ESG to the first channel only. To demonstrate the PC receiver and P2OPT algorithm.
Start Test Cases with Web UI
XXX to be completed XXX