id: digital_constellation_modulator
label: Constellation Modulator
flags: [ python ]

parameters:
-   id: constellation
    label: Constellation
    dtype: raw
-   id: differential
    label: Differential Encoding
    dtype: bool
    default: 'True'
    options: ['True', 'False']
    option_labels: ['Yes', 'No']
-   id: samples_per_symbol
    label: Samples/Symbol
    dtype: int
    default: '2'
-   id: excess_bw
    label: Excess BW
    dtype: real
    default: '0.35'
-   id: verbose
    label: Verbose
    dtype: bool
    default: 'False'
    options: ['True', 'False']
    option_labels: ['On', 'Off']
    hide: ${ ('part' if str(verbose) == 'False' else 'none') }
-   id: log
    label: Log
    dtype: bool
    default: 'False'
    options: ['True', 'False']
    option_labels: ['On', 'Off']
    hide: ${ ('part' if str(log) == 'False' else 'none') }
-   id: truncate
    label: Truncate Filter Transient
    dtype: bool
    default: 'False'
    options: ['True', 'False']
    option_labels: ['Yes', 'No']
    hide: ${ ('part' if str(truncate) == 'False' else 'none') }
inputs:
-   domain: stream
    dtype: byte

outputs:
-   domain: stream
    dtype: complex

templates:
    imports: from gnuradio import digital
    make: |-
        digital.generic_mod(
            constellation=${constellation},
            differential=${differential},
            samples_per_symbol=${samples_per_symbol},
            pre_diff_code=True,
            excess_bw=${excess_bw},
            verbose=${verbose},
            log=${log},
            truncate=${truncate})

file_format: 1
