; Sample configuration file for ODR-DabMod

[remotecontrol]
; enable the telnet remote control on localhost:2121
; Since this is totally unsecure telnet, the software
; will only listen on the local loopback interface.
; To get secure remote access, use SSH port forwarding
telnet=1
telnetport=2121

; Enable zmq remote control.
; The zmq remote control is intended for machine-to-machine
; integration and requires that ODR-DabMod is built with zmq support.
; The zmq remote control may run in parallel with Telnet.
;
; Protocol:
; ODR-DabMod binds a zmq rep socket so clients must connect
; using either req or dealer socket.
; [] denotes message part as zmq multi-part message are used for delimitation.
; All message parts are utf-8 encoded strings and match the Telnet command set.
; Explicit codes are denoted with "".
; The following commands are supported:
; REQ: ["ping"]
; REP: ["ok"]
;
; REQ: ["get"][module name][parameter]
; REP: [value] _OR_ ["fail"][error description]
;
; REQ: ["set"][module name][parameter][value]
; REP: ["ok"] _OR_ ["fail"][error description]
zmqctrl=0
zmqctrlendpoint=tcp://127.0.0.1:9400

[log]
; Write to a logfile or to syslog.
; Setting filename to stderr is very useful during tests and development
syslog=0
filelog=1
filename=/dev/stderr

[input]
; A file or fifo input is using transport=file
transport=file
source=/dev/stdin

; When the end of file is reached, it is possible to rewind it
loop=0

; When recieving data using ZeroMQ, the source is the URI to be used
;transport=zeromq
;source=tcp://localhost:8080
; The option max_frames_queued defines the maximum number of ETI frames
; that can be in the input queue
;max_frames_queued=100

[modulator]
; Gain mode: 0=FIX, 1=MAX, 2=VAR
;
;   Mode 0 (FIX) uses a fixed factor and is really not recommended. It is more
; useful on an academic perspective for people trying to understand the DAB
; modulation.
;
;   Mode 1 (MAX) is the normalization of every OFDM symbol. No overshoot, no
; truncating, but varying output power (around 3dB) which might not be the best
; for some power amplifier. The output samples are limited to a magnitude
; of 32768.
;
;   Mode 2 (VAR) uses the method specified in ETSI 300 798. This method
; normalizes to 4 times the standard deviation for an approximation of the RMS
; power. So around 6/100000 samples will be truncated and will introduce some
; really minor distortion. But this mode also maximizes the output power. This
; is the gain mode recommended for real world operation as it is based on a DAB
; standard; the only difference is that ODR-DabMod uses a better resolution
; with 16 bits instead of 8 bits.
gainmode=2

; Transmission mode
; If not defined, take the mode from ETI
;mode=2

; The digital gain is a value that is multiplied to each sample. It is used
; to tune the chain to make sure that no non-linearities appear up to the
; USRP daughterboard programmable gain amplifier (PGA).
; If there is clipping, the spectral quality of the signal will quickly deteriorate,
; and wide-band noise will be generated.
;
; Be aware that there is a dependency with resampling.
digital_gain=0.8

; Output sample rate. Values other than 2048000 enable
; resampling.
; Warning! digital_gain settings are different if resampling
; is enabled or not !
rate=2048000

; CIC equaliser for USRP1 and USRP2
; Set to 0 to disable CicEqualiser
; when set to 400000000, an additional USRP2 check is enabled.
; See DabModulator.cpp line 186
dac_clk_rate=0

; The USRP1 does not have flexible clocking, you will need
;rate=3200000
; and
;dac_clk_rate=128000000

[firfilter]
; The FIR Filter can be used to create a better spectral quality.
; The filter taps can be calculated with the python script
; doc/fir-filter/generate-filter.py
enabled=0
filtertapsfile=simple_taps.txt

[output]
; choose output: possible values: uhd, file, zmq
output=uhd

[fileoutput]
; Two output formats are supported: In the default mode,
; the file output writes I/Q float values (i.e. complex float)
; to the file. The I and Q samples can take values up to
; 100000 in absolute magnitude with gainmode FIX.
; With gainmode VAR, they should never exceed 50000.
; With gainmode MAX, thet are limited to 32767.
;format=complexf
;
; When the format is set to s8, the output writes I/Q 8-bit
; signed integers, where the magnitude is multiplied by 128/50000
; effectively mapping the gainmode VAR range of -50000 -- 50000
; to -128 -- 128. For other gainmodes, use the digital_gain setting
; to make sure you don't create clipping.
;format=s8

; The output file:
filename=/dev/stdout

[uhdoutput]
; The UHD output can be directly used with the Ettus USRP devices
;
; You have to set master_clock_rate to a multiple of the
; sample_rate. Ideally, it should be
;   master_clock_rate = 4 * sample_rate
; or even a higher factor.
;
; Settings for a USRP B100:
device=
; you can put additional UHD device settings here
master_clock_rate=32768000
type=b100
txgain=2.0
; Try first with small gain values
; Also set rate to 2048000

; For the B200
; More information and measurements available on:
; http://wiki.opendigitalradio.org/index.php/USRP_B200_Measurements
;
; Settings:
;device=
;master_clock_rate=32768000
;type=b200
;txgain=40
; The B200 needs larger gains (up to 89dB) but,
; "Gain settings are application specific, but it is recommended that users
; consider using at least half of the available gain to get reasonable dynamic
; range."
;    From the B200 User Manual
;    http://files.ettus.com/uhd_docs/manual/html/usrp_b200.html


; For the USRP1
;device=
;type=usrp1
; the usrp1 can have two daughterboards, the subdevice parameter allows you
; to choose which one to use
;subdevice=A:0
; The USRP1 doesn't support master_clock_rate, you need to enable resamping


; You must specify either frequency or channel, but not both.
;frequency=234208000
channel=13C

; The reference clock to use. The gpsdo is the ODR LEA-M8F board, the
; official Ettus GPSDO is selected with gpsdo-ettus
; possible values : internal, external, MIMO, gpsdo, gpsdo-ettus
refclk_source=internal

; The reference one pulse-per second to use
; possible values : none, external, MIMO, gpsdo
pps_source=none

; Behaviour when external clock reference lock lost
; possible values: ignore, crash
behaviour_refclk_lock_lost=ignore

; The maximum accepted holdover time for the gpsdo.
; Valid only if the refclk and pps_source are set to gpsdo.
; This value is also used for the initial lock check, and must
; be at least a minute so that the GPSOD has enough time to lock
; and to start disciplining its oscillator.
; Units: seconds
; Set to 0 to disable holdover check
; default value: 0
max_gps_holdover_time=600

; section defining ZeroMQ output properties
[zmqoutput]

; on which port to listen for connections
; please see the Transports section in man zmq
; for more informat io the syntax
listen=tcp://*:54001

; what ZMQ socket type to use. Valid values: PUB, REP
; Please see man zmq_socket for documentation
socket_type=pub

; Used for SFN with the UHD output
[delaymanagement]

; Enable handling of timestamps for SFN
synchronous=0

; Whether to mute the TX when incoming frames have no timestamp
mutenotimestamps=0

; This offset is added to the TIST, and the sum defines the
; TX time of the transmission frame. It can by changed at runtime
; through the remote control.
offset=0.002

; The previous static vs dynamic offset distinction, and reading the
; modulatoroffset from a file has been removed.

[tii]
; (experimental)
; If these options are set, TII transmission is enabled.
; DAB modes I and II are supported, and must be set explicitly in
; this file. Reading DAB mode from ETI is not supported.
enable=0
comb=16
pattern=3