; This is an example configuration file that illustrates
; how to define service linking

; More information about the usage of the tools is available
; in the guide, which can be found on the
; www.opendigitalradio.org website.
;
general {
    dabmode 1
    nbframes 0

    syslog false
    tist false
    managementport 12720
}

remotecontrol {
    telnetport 12721
}

; Service linking sets
linking {
    ; Every child section declares one linkage sets according to
    ; TS 103 176 Clause 5.2.3 "Linkage sets". This information will
    ; be encoded in FIG 0/6
    set-fu {
        ; Linkage Set Number is a 12-bit number that identifies the linkage set
        ; in a country (requires coordination between multiplex operators in a country)
        ; (mandatory)
        lsn 0xabc

        ; Hard link means that all services carry the same programme, soft links means
        ; that the programmes are related in some way. (default true)
        hard true

        ; Whether this linkage set affects only one country or several. Linkage sets that
        ; include AMSS or DRM services need to have this set to true. (default false)
        international false

        ; Every linkage set has to contain a service from the current ensemble (mandatory)
        keyservice srv-fu

        ; List of services to be included (mandatory)
        list {
            ; Every service has a uid that can be used as a human-readable description

            ; The first example is a link to a DAB service on another ensemble.
            fu-on-my-friends-mux {
                ; Possible options: dab, fm, drm, amss (mandatory)
                type dab

                ; if type is dab, the id is a DAB service ID (mandatory)
                id 0x8daf

                ; Since this link set has international false, we do not need to specify
                ; the ECC. With internation true, the following would be needed
                ; (mandatory if internation true)
                ;ecc 0xec
            }

            ; The second example is a link to an FM transmission
            fu-on-fm {
                ; Possible options: dab, fm, drm, amss
                type fm

                ; if type is fm, the id is a PI-code
                id 0x1A2B

                ; Also here, ECC declaration is not required
            }
        }
    }

    ; And now an international true to test more options
    set-ri {
        lsn 0xdef
        hard soft
        international true
        keyservice srv-ri

        list {
            ri-on-drm {
                type drm
                id 0x1298
                ecc 0xec
            }

            ri-on-amss {
                type amss
                id 0x1A2B
                ecc 0xea
            }

            ri-on-fm {
                type fm
                id 0x4C5D
                ecc 0x4f
            }
        }
    }
}

; According to ETSI TR 101 496-2 Clause 3.6.10.
; The configuration structure reflects the FIG 0/21 of
; ETSI EN 300 401 Clause 8.1.8
frequency_information {
    fi_1 {
        fi_dab_1 {
            range_modulation dab
            continuity true
            eid 0x4fff
            frequencies {
                entry_a {
                    signal_mode_1 true
                    adjacent true
                    frequency 234.208
                }
                entry_b {
                    signal_mode_1 true
                    adjacent true
                    frequency 188.928
                }
            }
        }
        fi_fm_1 {
            range_modulation fm
            continuity true
            pi_code 0x1234
            frequencies "87.6 105.2"
        }
    }
    fi_2 {
        fi_drm_3 {
            range_modulation drm
            continuity true
            drm_id 0x12ab45
            frequencies "15.21 22.4"
        }
        fi_amss_4 {
            range_modulation amss
            continuity true
            amss_id 0x33cc88
            frequencies "14.8"
        }
    }
}

; For information about the ensemble, service, subchannels, components and outputs,
; please see doc/example.mux and doc/advanced.mux
ensemble {
    id 0x4fff
    ecc 0xec

    local-time-offset auto
    label "OpenDigitalRadio"
    shortlabel "ODR"
}

services {
    srv-fu {
        id 0x8daa
        label "Funk"

        ; If this service is present in other ensembles, it can be announced
        ; through FIG0/24. other_ensembles is a comma separated list of
        ; ensemble IDs (decimal or hexadecimal with 0x prefix)
        other_ensembles "0x4ffe,0x4ffd"
    }
    srv-ri {
        id 0x8dab
        label "Rick"
    }
}

subchannels {
    sub-fu {
        type dabplus
        inputfile "tcp://*:9000"
        bitrate 96
        id 1
        protection 3
        zmq-buffer 40
        zmq-prebuffering 20
    }
    sub-ri {
        type dabplus
        inputfile "tcp://*:9001"
        bitrate 96
        id 2
        protection 3
        zmq-buffer 40
        zmq-prebuffering 20
    }
}

components {
    comp-fu {
        service srv-fu
        subchannel sub-fu
    }

    comp-ri {
        service srv-ri
        subchannel sub-ri
    }
}

outputs {
    file "file://./test.eti?type=raw"
    ;throttle "simul://"
}