summaryrefslogtreecommitdiff
path: root/gr-digital/grc/digital_symbol_sync_xx.block.yml
blob: 29b011b7fe99aa034db386d414524c0e792cefda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
id: digital_symbol_sync_xx
label: Symbol Sync
category: '[Core]/Synchronizers'
flags: [ python, cpp ]

parameters:
-   id: type
    label: I/O Type
    dtype: enum
    options: [cc, ff]
    option_labels: [Complex, Float]
    option_attributes:
        input: [complex, float]
        output: [complex, float]
    hide: part
-   id: ted_type
    label: Timing Error Detector
    dtype: enum
    options: [digital.TED_MUELLER_AND_MULLER, digital.TED_MOD_MUELLER_AND_MULLER,
        digital.TED_ZERO_CROSSING, digital.TED_GARDNER, digital.TED_EARLY_LATE, digital.TED_DANDREA_AND_MENGALI_GEN_MSK,
        digital.TED_MENGALI_AND_DANDREA_GMSK, digital.TED_SIGNAL_TIMES_SLOPE_ML, digital.TED_SIGNUM_TIMES_SLOPE_ML]
    option_labels: ["Mueller and Müller", "Modified Mueller and Müller", Zero
            Crossing, Gardner, Early-Late, D'Andrea and Mengali Gen MSK, Mengali and
            D'Andrea GMSK, 'y[n]y''[n] Maximum likelihood', 'sgn(y[n])y''[n] Maximum
            likelihood']
    option_attributes:
        hide_constellation: [part, part, part, all, all, all, all, all, all]
-   id: constellation
    label: TED Slicer Constellation
    dtype: raw
    default: digital.constellation_bpsk().base()
    hide: ${ ted_type.hide_constellation }
-   id: sps
    label: Samples per Symbol
    dtype: real
    default: sps
-   id: ted_gain
    label: Expected TED Gain
    dtype: real
    default: '1.0'
-   id: loop_bw
    label: Loop Bandwidth
    dtype: real
    default: '0.045'
-   id: damping
    label: Damping Factor
    dtype: real
    default: '1.0'
-   id: max_dev
    label: Maximum Deviation
    dtype: real
    default: '1.5'
-   id: osps
    label: Output Samples/Symbol
    dtype: int
    default: '1'
-   id: resamp_type
    label: Interpolating Resampler
    dtype: enum
    options: [digital.IR_MMSE_8TAP, digital.IR_PFB_NO_MF, digital.IR_PFB_MF]
    option_labels: ['MMSE, 8 tap FIR', 'Polyphase Filterbank, MMSE', 'Polyphase Filterbank,
            MF']
    option_attributes:
        hide_nfilters: [all, none, none]
        hide_pfb_mf_taps: [all, all, none]
-   id: nfilters
    label: Filterbank Arms
    dtype: int
    default: '128'
    hide: ${ resamp_type.hide_nfilters }
-   id: pfb_mf_taps
    label: PFB MF Taps
    dtype: real_vector
    default: '[]'
    hide: ${ resamp_type.hide_pfb_mf_taps }

inputs:
-   domain: stream
    dtype: ${ type.input }

outputs:
-   domain: stream
    dtype: ${ type.output }
-   label: error
    domain: stream
    dtype: float
    optional: true
-   label: T_inst
    domain: stream
    dtype: float
    optional: true
-   label: T_avg
    domain: stream
    dtype: float
    optional: true

templates:
    imports: |-
        from gnuradio import digital
        from gnuradio import filter
    make: |-
        digital.symbol_sync_${type}(
            ${ted_type}, 
            ${sps}, 
            ${loop_bw}, 
            ${damping},
            ${ted_gain}, 
            ${max_dev}, 
            ${osps}, 
            ${constellation}, 
            ${resamp_type}, 
            ${nfilters},
            ${pfb_mf_taps})
    callbacks:
    - set_loop_bandwidth(${loop_bw})
    - set_damping_factor(${damping})
    - set_ted_gain(${ted_gain})

cpp_templates:
    includes: ['#include <gnuradio/digital/symbol_sync_${type}.h>']
    declarations: 'digital::symbol_sync_${type}::sptr ${id};'
    make: |-
        std::vector<float> pfb_mf_taps = {${str(pfb_mf_taps)[1:-1]}};
        this->${id} = digital::symbol_sync_${type}::make(
            ${ted_type}, 
            ${sps}, 
            ${loop_bw}, 
            ${damping},
            ${ted_gain}, 
            ${max_dev}, 
            ${osps}, 
            ${constellation}, 
            ${resamp_type}, 
            ${nfilters},
            pfb_mf_taps);
    link: ['gnuradio::gnuradio-digital']
    callbacks:
    - set_loop_bandwidth(${loop_bw})
    - set_damping_factor(${damping})
    - set_ted_gain(${ted_gain})
    translations:
        digital\.: 'digital::'

file_format: 1