summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHåkon Vågsether <haakonsv@gmail.com>2017-09-24 12:16:22 +0200
committerHåkon Vågsether <haakonsv@gmail.com>2017-10-10 10:49:36 +0200
commitbaf7eaf8f29d5a490f2580917362cf5b3db47281 (patch)
tree7afab4ee2dfa6439ecf95d47aa68996020ea04c5
parent6fa9d33246251f44a0e78682e50e9a1cb0b03171 (diff)
Added auto-generated YAML blocks
-rw-r--r--gr-analog/grc/CMakeLists.txt4
-rw-r--r--gr-analog/grc/analog.tree.yml39
-rw-r--r--gr-analog/grc/analog_agc2_xx.block.yml53
-rw-r--r--gr-analog/grc/analog_agc2_xx.xml71
-rw-r--r--gr-analog/grc/analog_agc3_xx.block.yml57
-rw-r--r--gr-analog/grc/analog_agc3_xx.xml77
-rw-r--r--gr-analog/grc/analog_agc_xx.block.yml48
-rw-r--r--gr-analog/grc/analog_agc_xx.xml64
-rw-r--r--gr-analog/grc/analog_am_demod_cf.block.yml33
-rw-r--r--gr-analog/grc/analog_am_demod_cf.xml47
-rw-r--r--gr-analog/grc/analog_block_tree.xml81
-rw-r--r--gr-analog/grc/analog_const_source_x.block.yml28
-rw-r--r--gr-analog/grc/analog_const_source_x.xml52
-rw-r--r--gr-analog/grc/analog_cpfsk_bc.block.yml31
-rw-r--r--gr-analog/grc/analog_cpfsk_bc.xml38
-rw-r--r--gr-analog/grc/analog_ctcss_squelch_ff.block.yml45
-rw-r--r--gr-analog/grc/analog_ctcss_squelch_ff.xml80
-rw-r--r--gr-analog/grc/analog_dpll_bb.block.yml26
-rw-r--r--gr-analog/grc/analog_dpll_bb.xml31
-rw-r--r--gr-analog/grc/analog_fastnoise_source_x.block.yml45
-rw-r--r--gr-analog/grc/analog_fastnoise_source_x.xml86
-rw-r--r--gr-analog/grc/analog_feedforward_agc_cc.block.yml26
-rw-r--r--gr-analog/grc/analog_feedforward_agc_cc.xml32
-rw-r--r--gr-analog/grc/analog_fm_deemph.block.yml25
-rw-r--r--gr-analog/grc/analog_fm_deemph.xml31
-rw-r--r--gr-analog/grc/analog_fm_demod_cf.block.yml46
-rw-r--r--gr-analog/grc/analog_fm_demod_cf.xml68
-rw-r--r--gr-analog/grc/analog_fm_preemph.block.yml29
-rw-r--r--gr-analog/grc/analog_fm_preemph.xml37
-rw-r--r--gr-analog/grc/analog_fmdet_cf.block.yml31
-rw-r--r--gr-analog/grc/analog_fmdet_cf.xml45
-rw-r--r--gr-analog/grc/analog_frequency_modulator_fc.block.yml23
-rw-r--r--gr-analog/grc/analog_frequency_modulator_fc.xml26
-rw-r--r--gr-analog/grc/analog_nbfm_rx.block.yml38
-rw-r--r--gr-analog/grc/analog_nbfm_rx.xml56
-rw-r--r--gr-analog/grc/analog_nbfm_tx.block.yml42
-rw-r--r--gr-analog/grc/analog_nbfm_tx.xml64
-rw-r--r--gr-analog/grc/analog_noise_source_x.block.yml38
-rw-r--r--gr-analog/grc/analog_noise_source_x.xml77
-rw-r--r--gr-analog/grc/analog_phase_modulator_fc.block.yml23
-rw-r--r--gr-analog/grc/analog_phase_modulator_fc.xml26
-rw-r--r--gr-analog/grc/analog_pll_carriertracking_cc.block.yml31
-rw-r--r--gr-analog/grc/analog_pll_carriertracking_cc.xml38
-rw-r--r--gr-analog/grc/analog_pll_freqdet_cf.block.yml31
-rw-r--r--gr-analog/grc/analog_pll_freqdet_cf.xml38
-rw-r--r--gr-analog/grc/analog_pll_refout_cc.block.yml31
-rw-r--r--gr-analog/grc/analog_pll_refout_cc.xml38
-rw-r--r--gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml47
-rw-r--r--gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml68
-rw-r--r--gr-analog/grc/analog_pwr_squelch_xx.block.yml44
-rw-r--r--gr-analog/grc/analog_pwr_squelch_xx.xml67
-rw-r--r--gr-analog/grc/analog_quadrature_demod_cf.block.yml47
-rw-r--r--gr-analog/grc/analog_quadrature_demod_cf.xml55
-rw-r--r--gr-analog/grc/analog_rail_ff.block.yml27
-rw-r--r--gr-analog/grc/analog_rail_ff.xml54
-rw-r--r--gr-analog/grc/analog_random_source_x.block.yml47
-rw-r--r--gr-analog/grc/analog_random_source_x.xml75
-rw-r--r--gr-analog/grc/analog_random_uniform_source_x.block.yml32
-rw-r--r--gr-analog/grc/analog_random_uniform_source_x.xml55
-rw-r--r--gr-analog/grc/analog_sig_source_x.block.yml57
-rw-r--r--gr-analog/grc/analog_sig_source_x.xml109
-rw-r--r--gr-analog/grc/analog_simple_squelch_cc.block.yml27
-rw-r--r--gr-analog/grc/analog_simple_squelch_cc.xml32
-rw-r--r--gr-analog/grc/analog_standard_squelch.block.yml28
-rw-r--r--gr-analog/grc/analog_standard_squelch.xml32
-rw-r--r--gr-analog/grc/analog_wfm_rcv.block.yml25
-rw-r--r--gr-analog/grc/analog_wfm_rcv.xml33
-rw-r--r--gr-analog/grc/analog_wfm_rcv_pll.block.yml29
-rw-r--r--gr-analog/grc/analog_wfm_rcv_pll.xml37
-rw-r--r--gr-analog/grc/analog_wfm_tx.block.yml40
-rw-r--r--gr-analog/grc/analog_wfm_tx.xml55
-rw-r--r--gr-audio/grc/CMakeLists.txt4
-rw-r--r--gr-audio/grc/audio_sink.block.yml49
-rw-r--r--gr-audio/grc/audio_sink.xml87
-rw-r--r--gr-audio/grc/audio_source.block.yml49
-rw-r--r--gr-audio/grc/audio_source.xml87
-rw-r--r--gr-blocks/grc/CMakeLists.txt10
-rw-r--r--gr-blocks/grc/blocks.tree.yml171
-rw-r--r--gr-blocks/grc/blocks_abs_xx.block.yml32
-rw-r--r--gr-blocks/grc/blocks_abs_xx.xml48
-rw-r--r--gr-blocks/grc/blocks_add_const_vxx.block.yml43
-rw-r--r--gr-blocks/grc/blocks_add_const_vxx.xml67
-rw-r--r--gr-blocks/grc/blocks_add_xx.block.yml42
-rw-r--r--gr-blocks/grc/blocks_add_xx.xml63
-rw-r--r--gr-blocks/grc/blocks_and_const_xx.block.yml31
-rw-r--r--gr-blocks/grc/blocks_and_const_xx.xml48
-rw-r--r--gr-blocks/grc/blocks_and_xx.block.yml34
-rw-r--r--gr-blocks/grc/blocks_and_xx.xml48
-rw-r--r--gr-blocks/grc/blocks_argmax_xx.block.yml45
-rw-r--r--gr-blocks/grc/blocks_argmax_xx.xml61
-rw-r--r--gr-blocks/grc/blocks_block_tree.xml239
-rw-r--r--gr-blocks/grc/blocks_burst_tagger.block.yml52
-rw-r--r--gr-blocks/grc/blocks_burst_tagger.xml87
-rw-r--r--gr-blocks/grc/blocks_char_to_float.block.yml31
-rw-r--r--gr-blocks/grc/blocks_char_to_float.xml35
-rw-r--r--gr-blocks/grc/blocks_char_to_short.block.yml25
-rw-r--r--gr-blocks/grc/blocks_char_to_short.xml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_arg.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_arg.xml29
-rw-r--r--gr-blocks/grc/blocks_complex_to_float.block.yml34
-rw-r--r--gr-blocks/grc/blocks_complex_to_float.xml36
-rw-r--r--gr-blocks/grc/blocks_complex_to_imag.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_imag.xml29
-rw-r--r--gr-blocks/grc/blocks_complex_to_interleaved_char.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_interleaved_char.xml37
-rw-r--r--gr-blocks/grc/blocks_complex_to_interleaved_short.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_interleaved_short.xml37
-rw-r--r--gr-blocks/grc/blocks_complex_to_mag.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_mag.xml29
-rw-r--r--gr-blocks/grc/blocks_complex_to_mag_squared.block.yml28
-rw-r--r--gr-blocks/grc/blocks_complex_to_mag_squared.xml29
-rw-r--r--gr-blocks/grc/blocks_complex_to_magphase.block.yml34
-rw-r--r--gr-blocks/grc/blocks_complex_to_magphase.xml36
-rw-r--r--gr-blocks/grc/blocks_complex_to_real.block.yml29
-rw-r--r--gr-blocks/grc/blocks_complex_to_real.xml30
-rw-r--r--gr-blocks/grc/blocks_conjugate_cc.block.yml16
-rw-r--r--gr-blocks/grc/blocks_conjugate_cc.xml20
-rw-r--r--gr-blocks/grc/blocks_copy.block.yml57
-rw-r--r--gr-blocks/grc/blocks_copy.xml104
-rw-r--r--gr-blocks/grc/blocks_ctrlport_performance.block.yml17
-rw-r--r--gr-blocks/grc/blocks_ctrlport_performance.xml48
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe2_c.block.yml41
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe2_c.xml92
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe2_x.block.yml48
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe2_x.xml123
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe_c.block.yml25
-rw-r--r--gr-blocks/grc/blocks_ctrlport_probe_c.xml55
-rw-r--r--gr-blocks/grc/blocks_ctrlport_viewer.block.yml17
-rw-r--r--gr-blocks/grc/blocks_ctrlport_viewer.xml48
-rw-r--r--gr-blocks/grc/blocks_deinterleave.block.yml48
-rw-r--r--gr-blocks/grc/blocks_deinterleave.xml74
-rw-r--r--gr-blocks/grc/blocks_delay.block.yml50
-rw-r--r--gr-blocks/grc/blocks_delay.xml75
-rw-r--r--gr-blocks/grc/blocks_divide_XX.block.yml42
-rw-r--r--gr-blocks/grc/blocks_divide_XX.xml63
-rw-r--r--gr-blocks/grc/blocks_endian_swap.block.yml26
-rw-r--r--gr-blocks/grc/blocks_endian_swap.xml41
-rw-r--r--gr-blocks/grc/blocks_exponentiate_const_cci.block.yml43
-rw-r--r--gr-blocks/grc/blocks_exponentiate_const_cci.xml45
-rw-r--r--gr-blocks/grc/blocks_file_descriptor_sink.block.yml34
-rw-r--r--gr-blocks/grc/blocks_file_descriptor_sink.xml59
-rw-r--r--gr-blocks/grc/blocks_file_descriptor_source.block.yml37
-rw-r--r--gr-blocks/grc/blocks_file_descriptor_source.xml73
-rw-r--r--gr-blocks/grc/blocks_file_meta_sink.block.yml70
-rw-r--r--gr-blocks/grc/blocks_file_meta_sink.xml124
-rw-r--r--gr-blocks/grc/blocks_file_meta_source.block.yml48
-rw-r--r--gr-blocks/grc/blocks_file_meta_source.xml94
-rw-r--r--gr-blocks/grc/blocks_file_sink.block.yml51
-rw-r--r--gr-blocks/grc/blocks_file_sink.xml92
-rw-r--r--gr-blocks/grc/blocks_file_source.block.yml51
-rw-r--r--gr-blocks/grc/blocks_file_source.xml85
-rw-r--r--gr-blocks/grc/blocks_float_to_char.block.yml31
-rw-r--r--gr-blocks/grc/blocks_float_to_char.xml35
-rw-r--r--gr-blocks/grc/blocks_float_to_complex.block.yml34
-rw-r--r--gr-blocks/grc/blocks_float_to_complex.xml36
-rw-r--r--gr-blocks/grc/blocks_float_to_int.block.yml31
-rw-r--r--gr-blocks/grc/blocks_float_to_int.xml35
-rw-r--r--gr-blocks/grc/blocks_float_to_short.block.yml31
-rw-r--r--gr-blocks/grc/blocks_float_to_short.xml35
-rw-r--r--gr-blocks/grc/blocks_float_uchar.block.yml16
-rw-r--r--gr-blocks/grc/blocks_float_uchar.xml20
-rw-r--r--gr-blocks/grc/blocks_head.block.yml42
-rw-r--r--gr-blocks/grc/blocks_head.xml66
-rw-r--r--gr-blocks/grc/blocks_int_to_float.block.yml31
-rw-r--r--gr-blocks/grc/blocks_int_to_float.xml35
-rw-r--r--gr-blocks/grc/blocks_integrate_xx.block.yml35
-rw-r--r--gr-blocks/grc/blocks_integrate_xx.xml58
-rw-r--r--gr-blocks/grc/blocks_interleave.block.yml48
-rw-r--r--gr-blocks/grc/blocks_interleave.xml74
-rw-r--r--gr-blocks/grc/blocks_interleaved_char_to_complex.block.yml28
-rw-r--r--gr-blocks/grc/blocks_interleaved_char_to_complex.xml37
-rw-r--r--gr-blocks/grc/blocks_interleaved_short_to_complex.block.yml37
-rw-r--r--gr-blocks/grc/blocks_interleaved_short_to_complex.xml53
-rw-r--r--gr-blocks/grc/blocks_keep_m_in_n.block.yml49
-rw-r--r--gr-blocks/grc/blocks_keep_m_in_n.xml76
-rw-r--r--gr-blocks/grc/blocks_keep_one_in_n.block.yml44
-rw-r--r--gr-blocks/grc/blocks_keep_one_in_n.xml67
-rw-r--r--gr-blocks/grc/blocks_magphase_to_complex.block.yml34
-rw-r--r--gr-blocks/grc/blocks_magphase_to_complex.xml36
-rw-r--r--gr-blocks/grc/blocks_max_xx.block.yml47
-rw-r--r--gr-blocks/grc/blocks_max_xx.xml64
-rw-r--r--gr-blocks/grc/blocks_message_debug.block.yml19
-rw-r--r--gr-blocks/grc/blocks_message_debug.xml27
-rw-r--r--gr-blocks/grc/blocks_message_strobe.block.yml33
-rw-r--r--gr-blocks/grc/blocks_message_strobe.xml37
-rw-r--r--gr-blocks/grc/blocks_message_strobe_random.block.yml50
-rw-r--r--gr-blocks/grc/blocks_message_strobe_random.xml69
-rw-r--r--gr-blocks/grc/blocks_min_xx.block.yml47
-rw-r--r--gr-blocks/grc/blocks_min_xx.xml64
-rw-r--r--gr-blocks/grc/blocks_moving_average_xx.block.yml49
-rw-r--r--gr-blocks/grc/blocks_moving_average_xx.xml77
-rw-r--r--gr-blocks/grc/blocks_multiply_by_tag_value_cc.block.yml25
-rw-r--r--gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml32
-rw-r--r--gr-blocks/grc/blocks_multiply_conjugate_cc.block.yml33
-rw-r--r--gr-blocks/grc/blocks_multiply_conjugate_cc.xml35
-rw-r--r--gr-blocks/grc/blocks_multiply_const_vxx.block.yml43
-rw-r--r--gr-blocks/grc/blocks_multiply_const_vxx.xml67
-rw-r--r--gr-blocks/grc/blocks_multiply_const_xx.block.yml41
-rw-r--r--gr-blocks/grc/blocks_multiply_const_xx.xml62
-rw-r--r--gr-blocks/grc/blocks_multiply_matrix_xx.block.yml47
-rw-r--r--gr-blocks/grc/blocks_multiply_matrix_xx.xml68
-rw-r--r--gr-blocks/grc/blocks_multiply_xx.block.yml42
-rw-r--r--gr-blocks/grc/blocks_multiply_xx.xml63
-rw-r--r--gr-blocks/grc/blocks_mute_xx.block.yml35
-rw-r--r--gr-blocks/grc/blocks_mute_xx.xml66
-rw-r--r--gr-blocks/grc/blocks_nlog10_ff.block.yml37
-rw-r--r--gr-blocks/grc/blocks_nlog10_ff.xml42
-rw-r--r--gr-blocks/grc/blocks_nop.block.yml44
-rw-r--r--gr-blocks/grc/blocks_nop.xml68
-rw-r--r--gr-blocks/grc/blocks_not_xx.block.yml25
-rw-r--r--gr-blocks/grc/blocks_not_xx.xml40
-rw-r--r--gr-blocks/grc/blocks_null_sink.block.yml43
-rw-r--r--gr-blocks/grc/blocks_null_sink.xml71
-rw-r--r--gr-blocks/grc/blocks_null_source.block.yml39
-rw-r--r--gr-blocks/grc/blocks_null_source.xml70
-rw-r--r--gr-blocks/grc/blocks_or_xx.block.yml34
-rw-r--r--gr-blocks/grc/blocks_or_xx.xml48
-rw-r--r--gr-blocks/grc/blocks_pack_k_bits_bb.block.yml24
-rw-r--r--gr-blocks/grc/blocks_pack_k_bits_bb.xml30
-rw-r--r--gr-blocks/grc/blocks_packed_to_unpacked_xx.block.yml44
-rw-r--r--gr-blocks/grc/blocks_packed_to_unpacked_xx.xml68
-rw-r--r--gr-blocks/grc/blocks_patterned_interleaver.block.yml42
-rw-r--r--gr-blocks/grc/blocks_patterned_interleaver.xml66
-rw-r--r--gr-blocks/grc/blocks_pdu_filter.block.yml40
-rw-r--r--gr-blocks/grc/blocks_pdu_filter.xml52
-rw-r--r--gr-blocks/grc/blocks_pdu_remove.block.yml28
-rw-r--r--gr-blocks/grc/blocks_pdu_remove.xml30
-rw-r--r--gr-blocks/grc/blocks_pdu_set.block.yml33
-rw-r--r--gr-blocks/grc/blocks_pdu_set.xml37
-rw-r--r--gr-blocks/grc/blocks_pdu_to_tagged_stream.block.yml29
-rw-r--r--gr-blocks/grc/blocks_pdu_to_tagged_stream.xml46
-rw-r--r--gr-blocks/grc/blocks_peak_detector2_fb.block.yml38
-rw-r--r--gr-blocks/grc/blocks_peak_detector2_fb.xml46
-rw-r--r--gr-blocks/grc/blocks_peak_detector_xb.block.yml47
-rw-r--r--gr-blocks/grc/blocks_peak_detector_xb.xml68
-rw-r--r--gr-blocks/grc/blocks_plateau_detector_fb.block.yml25
-rw-r--r--gr-blocks/grc/blocks_plateau_detector_fb.xml26
-rw-r--r--gr-blocks/grc/blocks_probe_rate.block.yml44
-rw-r--r--gr-blocks/grc/blocks_probe_rate.xml71
-rw-r--r--gr-blocks/grc/blocks_probe_signal_vx.block.yml35
-rw-r--r--gr-blocks/grc/blocks_probe_signal_vx.xml59
-rw-r--r--gr-blocks/grc/blocks_probe_signal_x.block.yml26
-rw-r--r--gr-blocks/grc/blocks_probe_signal_x.xml51
-rw-r--r--gr-blocks/grc/blocks_random_pdu.block.yml38
-rw-r--r--gr-blocks/grc/blocks_random_pdu.xml47
-rw-r--r--gr-blocks/grc/blocks_regenerate_bb.block.yml25
-rw-r--r--gr-blocks/grc/blocks_regenerate_bb.xml32
-rw-r--r--gr-blocks/grc/blocks_repack_bits_bb.block.yml47
-rw-r--r--gr-blocks/grc/blocks_repack_bits_bb.xml70
-rw-r--r--gr-blocks/grc/blocks_repeat.block.yml41
-rw-r--r--gr-blocks/grc/blocks_repeat.xml65
-rw-r--r--gr-blocks/grc/blocks_rms_xx.block.yml31
-rw-r--r--gr-blocks/grc/blocks_rms_xx.xml42
-rw-r--r--gr-blocks/grc/blocks_rotator_cc.block.yml24
-rw-r--r--gr-blocks/grc/blocks_rotator_cc.xml27
-rw-r--r--gr-blocks/grc/blocks_sample_and_hold_xx.block.yml28
-rw-r--r--gr-blocks/grc/blocks_sample_and_hold_xx.xml49
-rw-r--r--gr-blocks/grc/blocks_short_to_char.block.yml25
-rw-r--r--gr-blocks/grc/blocks_short_to_char.xml28
-rw-r--r--gr-blocks/grc/blocks_short_to_float.block.yml31
-rw-r--r--gr-blocks/grc/blocks_short_to_float.xml35
-rw-r--r--gr-blocks/grc/blocks_skiphead.block.yml40
-rw-r--r--gr-blocks/grc/blocks_skiphead.xml65
-rw-r--r--gr-blocks/grc/blocks_socket_pdu.block.yml63
-rw-r--r--gr-blocks/grc/blocks_socket_pdu.xml88
-rw-r--r--gr-blocks/grc/blocks_stream_mux.block.yml48
-rw-r--r--gr-blocks/grc/blocks_stream_mux.xml75
-rw-r--r--gr-blocks/grc/blocks_stream_to_streams.block.yml43
-rw-r--r--gr-blocks/grc/blocks_stream_to_streams.xml67
-rw-r--r--gr-blocks/grc/blocks_stream_to_tagged_stream.block.yml43
-rw-r--r--gr-blocks/grc/blocks_stream_to_tagged_stream.xml66
-rw-r--r--gr-blocks/grc/blocks_stream_to_vector.block.yml42
-rw-r--r--gr-blocks/grc/blocks_stream_to_vector.xml66
-rw-r--r--gr-blocks/grc/blocks_stream_to_vector_decimator.block.yml47
-rw-r--r--gr-blocks/grc/blocks_stream_to_vector_decimator.xml77
-rw-r--r--gr-blocks/grc/blocks_streams_to_stream.block.yml43
-rw-r--r--gr-blocks/grc/blocks_streams_to_stream.xml67
-rw-r--r--gr-blocks/grc/blocks_streams_to_vector.block.yml43
-rw-r--r--gr-blocks/grc/blocks_streams_to_vector.xml67
-rw-r--r--gr-blocks/grc/blocks_stretch_ff.block.yml28
-rw-r--r--gr-blocks/grc/blocks_stretch_ff.xml34
-rw-r--r--gr-blocks/grc/blocks_sub_xx.block.yml42
-rw-r--r--gr-blocks/grc/blocks_sub_xx.xml63
-rw-r--r--gr-blocks/grc/blocks_tag_debug.block.yml53
-rw-r--r--gr-blocks/grc/blocks_tag_debug.xml88
-rw-r--r--gr-blocks/grc/blocks_tag_gate.block.yml50
-rw-r--r--gr-blocks/grc/blocks_tag_gate.xml78
-rw-r--r--gr-blocks/grc/blocks_tag_object.block.yml44
-rw-r--r--gr-blocks/grc/blocks_tag_object.xml52
-rw-r--r--gr-blocks/grc/blocks_tag_share.block.yml48
-rw-r--r--gr-blocks/grc/blocks_tag_share.xml96
-rw-r--r--gr-blocks/grc/blocks_tagged_file_sink.block.yml35
-rw-r--r--gr-blocks/grc/blocks_tagged_file_sink.xml60
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_align.block.yml37
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_align.xml59
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_multiply_length.block.yml46
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_multiply_length.xml70
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_mux.block.yml46
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_mux.xml71
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_to_pdu.block.yml30
-rw-r--r--gr-blocks/grc/blocks_tagged_stream_to_pdu.xml47
-rw-r--r--gr-blocks/grc/blocks_tags_strobe.block.yml49
-rw-r--r--gr-blocks/grc/blocks_tags_strobe.xml76
-rw-r--r--gr-blocks/grc/blocks_tcp_server_sink.block.yml42
-rw-r--r--gr-blocks/grc/blocks_tcp_server_sink.xml77
-rw-r--r--gr-blocks/grc/blocks_test_tag_variable_rate_ff.block.yml29
-rw-r--r--gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml47
-rw-r--r--gr-blocks/grc/blocks_threshold_ff.block.yml33
-rw-r--r--gr-blocks/grc/blocks_threshold_ff.xml40
-rw-r--r--gr-blocks/grc/blocks_throttle.block.yml48
-rw-r--r--gr-blocks/grc/blocks_throttle.xml74
-rw-r--r--gr-blocks/grc/blocks_transcendental.block.yml30
-rw-r--r--gr-blocks/grc/blocks_transcendental.xml41
-rw-r--r--gr-blocks/grc/blocks_tuntap_pdu.block.yml34
-rw-r--r--gr-blocks/grc/blocks_tuntap_pdu.xml48
-rw-r--r--gr-blocks/grc/blocks_uchar_to_float.block.yml16
-rw-r--r--gr-blocks/grc/blocks_uchar_to_float.xml20
-rw-r--r--gr-blocks/grc/blocks_udp_sink.block.yml45
-rw-r--r--gr-blocks/grc/blocks_udp_sink.xml76
-rw-r--r--gr-blocks/grc/blocks_udp_source.block.yml48
-rw-r--r--gr-blocks/grc/blocks_udp_source.xml79
-rw-r--r--gr-blocks/grc/blocks_unpack_k_bits_bb.block.yml21
-rw-r--r--gr-blocks/grc/blocks_unpack_k_bits_bb.xml25
-rw-r--r--gr-blocks/grc/blocks_unpacked_to_packed_xx.block.yml44
-rw-r--r--gr-blocks/grc/blocks_unpacked_to_packed_xx.xml68
-rw-r--r--gr-blocks/grc/blocks_vco_c.block.yml27
-rw-r--r--gr-blocks/grc/blocks_vco_c.xml35
-rw-r--r--gr-blocks/grc/blocks_vco_f.block.yml27
-rw-r--r--gr-blocks/grc/blocks_vco_f.xml35
-rw-r--r--gr-blocks/grc/blocks_vector_insert_x.block.yml44
-rw-r--r--gr-blocks/grc/blocks_vector_insert_x.xml80
-rw-r--r--gr-blocks/grc/blocks_vector_sink_x.block.yml30
-rw-r--r--gr-blocks/grc/blocks_vector_sink_x.xml54
-rw-r--r--gr-blocks/grc/blocks_vector_source_x.block.yml47
-rw-r--r--gr-blocks/grc/blocks_vector_source_x.xml86
-rw-r--r--gr-blocks/grc/blocks_vector_to_stream.block.yml42
-rw-r--r--gr-blocks/grc/blocks_vector_to_stream.xml66
-rw-r--r--gr-blocks/grc/blocks_vector_to_streams.block.yml43
-rw-r--r--gr-blocks/grc/blocks_vector_to_streams.xml67
-rw-r--r--gr-blocks/grc/blocks_wavfile_sink.block.yml36
-rw-r--r--gr-blocks/grc/blocks_wavfile_sink.xml43
-rw-r--r--gr-blocks/grc/blocks_wavfile_source.block.yml32
-rw-r--r--gr-blocks/grc/blocks_wavfile_source.xml44
-rw-r--r--gr-blocks/grc/blocks_xor_xx.block.yml34
-rw-r--r--gr-blocks/grc/blocks_xor_xx.xml48
-rw-r--r--gr-blocks/grc/xmlrpc_client.block.yml30
-rw-r--r--gr-blocks/grc/xmlrpc_client.xml42
-rw-r--r--gr-blocks/grc/xmlrpc_server.block.yml34
-rw-r--r--gr-blocks/grc/xmlrpc_server.xml41
-rw-r--r--gr-channels/grc/CMakeLists.txt4
-rw-r--r--gr-channels/grc/channels.tree.yml20
-rw-r--r--gr-channels/grc/channels_amp_bal.block.yml24
-rw-r--r--gr-channels/grc/channels_amp_bal.xml27
-rw-r--r--gr-channels/grc/channels_block_tree.xml55
-rw-r--r--gr-channels/grc/channels_cfo_model.block.yml44
-rw-r--r--gr-channels/grc/channels_cfo_model.xml52
-rw-r--r--gr-channels/grc/channels_channel_model.block.yml56
-rw-r--r--gr-channels/grc/channels_channel_model.xml79
-rw-r--r--gr-channels/grc/channels_channel_model2.block.yml56
-rw-r--r--gr-channels/grc/channels_channel_model2.xml79
-rw-r--r--gr-channels/grc/channels_conj_fs_iqcorr.block.yml29
-rw-r--r--gr-channels/grc/channels_conj_fs_iqcorr.xml34
-rw-r--r--gr-channels/grc/channels_distortion_2_gen.block.yml24
-rw-r--r--gr-channels/grc/channels_distortion_2_gen.xml27
-rw-r--r--gr-channels/grc/channels_distortion_3_gen.block.yml24
-rw-r--r--gr-channels/grc/channels_distortion_3_gen.xml27
-rw-r--r--gr-channels/grc/channels_dynamic_channel_model.block.yml98
-rw-r--r--gr-channels/grc/channels_dynamic_channel_model.xml136
-rw-r--r--gr-channels/grc/channels_fading_model.block.yml57
-rw-r--r--gr-channels/grc/channels_fading_model.xml75
-rw-r--r--gr-channels/grc/channels_impairments.block.yml60
-rw-r--r--gr-channels/grc/channels_impairments.xml76
-rw-r--r--gr-channels/grc/channels_iqbal_gen.block.yml29
-rw-r--r--gr-channels/grc/channels_iqbal_gen.xml34
-rw-r--r--gr-channels/grc/channels_phase_bal.block.yml24
-rw-r--r--gr-channels/grc/channels_phase_bal.xml27
-rw-r--r--gr-channels/grc/channels_phase_noise_gen.block.yml29
-rw-r--r--gr-channels/grc/channels_phase_noise_gen.xml34
-rw-r--r--gr-channels/grc/channels_quantizer.block.yml24
-rw-r--r--gr-channels/grc/channels_quantizer.xml27
-rw-r--r--gr-channels/grc/channels_selective_fading_model.block.yml87
-rw-r--r--gr-channels/grc/channels_selective_fading_model.xml109
-rw-r--r--gr-channels/grc/channels_selective_fading_model2.block.yml100
-rw-r--r--gr-channels/grc/channels_selective_fading_model2.xml128
-rw-r--r--gr-channels/grc/channels_sro_model.block.yml44
-rw-r--r--gr-channels/grc/channels_sro_model.xml52
-rw-r--r--gr-digital/grc/CMakeLists.txt4
-rw-r--r--gr-digital/grc/digital.tree.yml85
-rw-r--r--gr-digital/grc/digital_additive_scrambler_bb.block.yml43
-rw-r--r--gr-digital/grc/digital_additive_scrambler_bb.xml56
-rw-r--r--gr-digital/grc/digital_binary_slicer_fb.block.yml16
-rw-r--r--gr-digital/grc/digital_binary_slicer_fb.xml20
-rw-r--r--gr-digital/grc/digital_block_tree.xml134
-rw-r--r--gr-digital/grc/digital_burst_shaper.block.yml50
-rw-r--r--gr-digital/grc/digital_burst_shaper.xml71
-rw-r--r--gr-digital/grc/digital_chunks_to_symbols.block.yml53
-rw-r--r--gr-digital/grc/digital_chunks_to_symbols.xml78
-rw-r--r--gr-digital/grc/digital_clock_recovery_mm_xx.block.yml51
-rw-r--r--gr-digital/grc/digital_clock_recovery_mm_xx.xml69
-rw-r--r--gr-digital/grc/digital_cma_equalizer_cc.block.yml33
-rw-r--r--gr-digital/grc/digital_cma_equalizer_cc.xml42
-rw-r--r--gr-digital/grc/digital_constellation.block.yml72
-rw-r--r--gr-digital/grc/digital_constellation.xml113
-rw-r--r--gr-digital/grc/digital_constellation_decoder_cb.block.yml21
-rw-r--r--gr-digital/grc/digital_constellation_decoder_cb.xml25
-rw-r--r--gr-digital/grc/digital_constellation_modulator.block.yml58
-rw-r--r--gr-digital/grc/digital_constellation_modulator.xml111
-rw-r--r--gr-digital/grc/digital_constellation_receiver_cb.block.yml62
-rw-r--r--gr-digital/grc/digital_constellation_receiver_cb.xml92
-rw-r--r--gr-digital/grc/digital_constellation_rect.block.yml65
-rw-r--r--gr-digital/grc/digital_constellation_rect.xml89
-rw-r--r--gr-digital/grc/digital_constellation_soft_decoder_cf.block.yml21
-rw-r--r--gr-digital/grc/digital_constellation_soft_decoder_cf.xml25
-rw-r--r--gr-digital/grc/digital_corr_est_cc.block.yml38
-rw-r--r--gr-digital/grc/digital_corr_est_cc.xml50
-rw-r--r--gr-digital/grc/digital_correlate_access_code_bb.block.yml25
-rw-r--r--gr-digital/grc/digital_correlate_access_code_bb.xml31
-rw-r--r--gr-digital/grc/digital_correlate_access_code_tag_xx.block.yml40
-rw-r--r--gr-digital/grc/digital_correlate_access_code_tag_xx.xml55
-rw-r--r--gr-digital/grc/digital_correlate_access_code_xx_ts.block.yml37
-rw-r--r--gr-digital/grc/digital_correlate_access_code_xx_ts.xml58
-rw-r--r--gr-digital/grc/digital_costas_loop_cc.block.yml48
-rw-r--r--gr-digital/grc/digital_costas_loop_cc.xml74
-rw-r--r--gr-digital/grc/digital_cpmmod_bc.block.yml40
-rw-r--r--gr-digital/grc/digital_cpmmod_bc.xml69
-rw-r--r--gr-digital/grc/digital_crc32_async_bb.block.yml25
-rw-r--r--gr-digital/grc/digital_crc32_async_bb.xml32
-rw-r--r--gr-digital/grc/digital_crc32_bb.block.yml33
-rw-r--r--gr-digital/grc/digital_crc32_bb.xml47
-rw-r--r--gr-digital/grc/digital_descrambler_bb.block.yml30
-rw-r--r--gr-digital/grc/digital_descrambler_bb.xml38
-rw-r--r--gr-digital/grc/digital_diff_decoder_bb.block.yml21
-rw-r--r--gr-digital/grc/digital_diff_decoder_bb.xml25
-rw-r--r--gr-digital/grc/digital_diff_encoder_bb.block.yml21
-rw-r--r--gr-digital/grc/digital_diff_encoder_bb.xml25
-rw-r--r--gr-digital/grc/digital_diff_phasor_cc.block.yml16
-rw-r--r--gr-digital/grc/digital_diff_phasor_cc.xml20
-rw-r--r--gr-digital/grc/digital_dxpsk_demod.block.yml75
-rw-r--r--gr-digital/grc/digital_dxpsk_demod.xml154
-rw-r--r--gr-digital/grc/digital_dxpsk_mod.block.yml52
-rw-r--r--gr-digital/grc/digital_dxpsk_mod.xml117
-rw-r--r--gr-digital/grc/digital_fll_band_edge_cc.block.yml53
-rw-r--r--gr-digital/grc/digital_fll_band_edge_cc.xml70
-rw-r--r--gr-digital/grc/digital_framer_sink_1.block.yml17
-rw-r--r--gr-digital/grc/digital_framer_sink_1.xml21
-rw-r--r--gr-digital/grc/digital_gfsk_demod.block.yml58
-rw-r--r--gr-digital/grc/digital_gfsk_demod.xml95
-rw-r--r--gr-digital/grc/digital_gfsk_mod.block.yml45
-rw-r--r--gr-digital/grc/digital_gfsk_mod.xml74
-rw-r--r--gr-digital/grc/digital_glfsr_source_x.block.yml37
-rw-r--r--gr-digital/grc/digital_glfsr_source_x.xml61
-rw-r--r--gr-digital/grc/digital_gmsk_demod.block.yml54
-rw-r--r--gr-digital/grc/digital_gmsk_demod.xml88
-rw-r--r--gr-digital/grc/digital_gmsk_mod.block.yml41
-rw-r--r--gr-digital/grc/digital_gmsk_mod.xml67
-rw-r--r--gr-digital/grc/digital_gmskmod_bc.block.yml30
-rw-r--r--gr-digital/grc/digital_gmskmod_bc.xml38
-rw-r--r--gr-digital/grc/digital_hdlc_deframer_bp.block.yml26
-rw-r--r--gr-digital/grc/digital_hdlc_deframer_bp.xml27
-rw-r--r--gr-digital/grc/digital_hdlc_framer_pb.block.yml21
-rw-r--r--gr-digital/grc/digital_hdlc_framer_pb.xml20
-rw-r--r--gr-digital/grc/digital_header_payload_demux.block.yml85
-rw-r--r--gr-digital/grc/digital_header_payload_demux.xml138
-rw-r--r--gr-digital/grc/digital_kurtotic_equalizer_cc.block.yml26
-rw-r--r--gr-digital/grc/digital_kurtotic_equalizer_cc.xml31
-rw-r--r--gr-digital/grc/digital_lms_dd_equalizer_cc.block.yml32
-rw-r--r--gr-digital/grc/digital_lms_dd_equalizer_cc.xml41
-rw-r--r--gr-digital/grc/digital_map_bb.block.yml21
-rw-r--r--gr-digital/grc/digital_map_bb.xml25
-rw-r--r--gr-digital/grc/digital_modulate_vector.block.yml22
-rw-r--r--gr-digital/grc/digital_modulate_vector.xml34
-rw-r--r--gr-digital/grc/digital_mpsk_snr_est_cc.block.yml35
-rw-r--r--gr-digital/grc/digital_mpsk_snr_est_cc.xml56
-rw-r--r--gr-digital/grc/digital_msk_timing_recovery_cc.block.yml42
-rw-r--r--gr-digital/grc/digital_msk_timing_recovery_cc.xml49
-rw-r--r--gr-digital/grc/digital_ofdm_carrier_allocator_cvc.block.yml44
-rw-r--r--gr-digital/grc/digital_ofdm_carrier_allocator_cvc.xml51
-rw-r--r--gr-digital/grc/digital_ofdm_chanest_vcvc.block.yml53
-rw-r--r--gr-digital/grc/digital_ofdm_chanest_vcvc.xml64
-rw-r--r--gr-digital/grc/digital_ofdm_cyclic_prefixer.block.yml38
-rw-r--r--gr-digital/grc/digital_ofdm_cyclic_prefixer.xml67
-rw-r--r--gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.block.yml46
-rw-r--r--gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.xml58
-rw-r--r--gr-digital/grc/digital_ofdm_rx.block.yml95
-rw-r--r--gr-digital/grc/digital_ofdm_rx.xml190
-rw-r--r--gr-digital/grc/digital_ofdm_serializer_vcc.block.yml51
-rw-r--r--gr-digital/grc/digital_ofdm_serializer_vcc.xml60
-rw-r--r--gr-digital/grc/digital_ofdm_sync_sc_cfb.block.yml35
-rw-r--r--gr-digital/grc/digital_ofdm_sync_sc_cfb.xml44
-rw-r--r--gr-digital/grc/digital_ofdm_tx.block.yml100
-rw-r--r--gr-digital/grc/digital_ofdm_tx.xml196
-rw-r--r--gr-digital/grc/digital_packet_headergenerator_bb.block.yml27
-rw-r--r--gr-digital/grc/digital_packet_headergenerator_bb.xml26
-rw-r--r--gr-digital/grc/digital_packet_headergenerator_bb_default.block.yml25
-rw-r--r--gr-digital/grc/digital_packet_headergenerator_bb_default.xml26
-rw-r--r--gr-digital/grc/digital_packet_headerparser_b.block.yml21
-rw-r--r--gr-digital/grc/digital_packet_headerparser_b.xml19
-rw-r--r--gr-digital/grc/digital_packet_headerparser_b_default.block.yml25
-rw-r--r--gr-digital/grc/digital_packet_headerparser_b_default.xml26
-rw-r--r--gr-digital/grc/digital_packet_sink.block.yml24
-rw-r--r--gr-digital/grc/digital_packet_sink.xml32
-rw-r--r--gr-digital/grc/digital_pfb_clock_sync.block.yml69
-rw-r--r--gr-digital/grc/digital_pfb_clock_sync.xml97
-rw-r--r--gr-digital/grc/digital_pn_correlator_cc.block.yml29
-rw-r--r--gr-digital/grc/digital_pn_correlator_cc.xml37
-rw-r--r--gr-digital/grc/digital_probe_density_b.block.yml24
-rw-r--r--gr-digital/grc/digital_probe_density_b.xml29
-rw-r--r--gr-digital/grc/digital_probe_mpsk_snr_est_c.block.yml42
-rw-r--r--gr-digital/grc/digital_probe_mpsk_snr_est_c.xml67
-rw-r--r--gr-digital/grc/digital_protocol_formatter_async.block.yml26
-rw-r--r--gr-digital/grc/digital_protocol_formatter_async.xml33
-rw-r--r--gr-digital/grc/digital_protocol_formatter_bb.block.yml25
-rw-r--r--gr-digital/grc/digital_protocol_formatter_bb.xml32
-rw-r--r--gr-digital/grc/digital_protocol_parser_b.block.yml22
-rw-r--r--gr-digital/grc/digital_protocol_parser_b.xml25
-rw-r--r--gr-digital/grc/digital_psk_demod.block.yml79
-rw-r--r--gr-digital/grc/digital_psk_demod.xml146
-rw-r--r--gr-digital/grc/digital_psk_mod.block.yml65
-rw-r--r--gr-digital/grc/digital_psk_mod.xml126
-rw-r--r--gr-digital/grc/digital_qam_demod.block.yml80
-rw-r--r--gr-digital/grc/digital_qam_demod.xml147
-rw-r--r--gr-digital/grc/digital_qam_mod.block.yml65
-rw-r--r--gr-digital/grc/digital_qam_mod.xml126
-rw-r--r--gr-digital/grc/digital_scrambler_bb.block.yml30
-rw-r--r--gr-digital/grc/digital_scrambler_bb.xml38
-rw-r--r--gr-digital/grc/digital_simple_correlator.block.yml21
-rw-r--r--gr-digital/grc/digital_simple_correlator.xml25
-rw-r--r--gr-digital/grc/digital_simple_framer.block.yml21
-rw-r--r--gr-digital/grc/digital_simple_framer.xml25
-rw-r--r--gr-digital/grc/digital_symbol_sync_xx.block.yml108
-rw-r--r--gr-digital/grc/digital_symbol_sync_xx.xml207
-rw-r--r--gr-digital/grc/variable_header_format_default.block.yml25
-rw-r--r--gr-digital/grc/variable_header_format_default.xml42
-rw-r--r--gr-dtv/grc/CMakeLists.txt110
-rw-r--r--gr-dtv/grc/dtv.tree.yml62
-rw-r--r--gr-dtv/grc/dtv_atsc_deinterleaver.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_deinterleaver.xml25
-rw-r--r--gr-dtv/grc/dtv_atsc_depad.block.yml17
-rw-r--r--gr-dtv/grc/dtv_atsc_depad.xml24
-rw-r--r--gr-dtv/grc/dtv_atsc_derandomizer.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_derandomizer.xml25
-rw-r--r--gr-dtv/grc/dtv_atsc_equalizer.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_equalizer.xml25
-rw-r--r--gr-dtv/grc/dtv_atsc_field_sync_mux.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_field_sync_mux.xml22
-rw-r--r--gr-dtv/grc/dtv_atsc_fpll.block.yml21
-rw-r--r--gr-dtv/grc/dtv_atsc_fpll.xml29
-rw-r--r--gr-dtv/grc/dtv_atsc_fs_checker.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_fs_checker.xml25
-rw-r--r--gr-dtv/grc/dtv_atsc_interleaver.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_interleaver.xml22
-rw-r--r--gr-dtv/grc/dtv_atsc_pad.block.yml17
-rw-r--r--gr-dtv/grc/dtv_atsc_pad.xml21
-rw-r--r--gr-dtv/grc/dtv_atsc_randomizer.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_randomizer.xml22
-rw-r--r--gr-dtv/grc/dtv_atsc_rs_decoder.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_rs_decoder.xml25
-rw-r--r--gr-dtv/grc/dtv_atsc_rs_encoder.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_rs_encoder.xml22
-rw-r--r--gr-dtv/grc/dtv_atsc_rx.block.yml24
-rw-r--r--gr-dtv/grc/dtv_atsc_rx.xml35
-rw-r--r--gr-dtv/grc/dtv_atsc_rx_filter.block.yml24
-rw-r--r--gr-dtv/grc/dtv_atsc_rx_filter.xml35
-rw-r--r--gr-dtv/grc/dtv_atsc_sync.block.yml22
-rw-r--r--gr-dtv/grc/dtv_atsc_sync.xml30
-rw-r--r--gr-dtv/grc/dtv_atsc_trellis_encoder.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_trellis_encoder.xml22
-rw-r--r--gr-dtv/grc/dtv_atsc_viterbi_decoder.block.yml18
-rw-r--r--gr-dtv/grc/dtv_atsc_viterbi_decoder.xml25
-rw-r--r--gr-dtv/grc/dtv_block_tree.xml106
-rw-r--r--gr-dtv/grc/dtv_catv_frame_sync_enc_bb.block.yml29
-rw-r--r--gr-dtv/grc/dtv_catv_frame_sync_enc_bb.xml41
-rw-r--r--gr-dtv/grc/dtv_catv_randomizer_bb.block.yml25
-rw-r--r--gr-dtv/grc/dtv_catv_randomizer_bb.xml35
-rw-r--r--gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.block.yml16
-rw-r--r--gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.xml20
-rw-r--r--gr-dtv/grc/dtv_catv_transport_framing_enc_bb.block.yml16
-rw-r--r--gr-dtv/grc/dtv_catv_transport_framing_enc_bb.xml20
-rw-r--r--gr-dtv/grc/dtv_catv_trellis_enc_bb.block.yml25
-rw-r--r--gr-dtv/grc/dtv_catv_trellis_enc_bb.xml35
-rw-r--r--gr-dtv/grc/dtv_dvb_bbheader_bb.block.yml154
-rw-r--r--gr-dtv/grc/dtv_dvb_bbheader_bb.xml596
-rw-r--r--gr-dtv/grc/dtv_dvb_bbscrambler_bb.block.yml118
-rw-r--r--gr-dtv/grc/dtv_dvb_bbscrambler_bb.xml512
-rw-r--r--gr-dtv/grc/dtv_dvb_bch_bb.block.yml118
-rw-r--r--gr-dtv/grc/dtv_dvb_bch_bb.xml512
-rw-r--r--gr-dtv/grc/dtv_dvb_ldpc_bb.block.yml126
-rw-r--r--gr-dtv/grc/dtv_dvb_ldpc_bb.xml528
-rw-r--r--gr-dtv/grc/dtv_dvbs2_interleaver_bb.block.yml86
-rw-r--r--gr-dtv/grc/dtv_dvbs2_interleaver_bb.xml455
-rw-r--r--gr-dtv/grc/dtv_dvbs2_modulator_bc.block.yml102
-rw-r--r--gr-dtv/grc/dtv_dvbs2_modulator_bc.xml504
-rw-r--r--gr-dtv/grc/dtv_dvbs2_physical_cc.block.yml98
-rw-r--r--gr-dtv/grc/dtv_dvbs2_physical_cc.xml476
-rw-r--r--gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.block.yml41
-rw-r--r--gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.xml72
-rw-r--r--gr-dtv/grc/dtv_dvbt2_framemapper_cc.block.yml203
-rw-r--r--gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml562
-rw-r--r--gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.block.yml104
-rw-r--r--gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.xml301
-rw-r--r--gr-dtv/grc/dtv_dvbt2_interleaver_bb.block.yml40
-rw-r--r--gr-dtv/grc/dtv_dvbt2_interleaver_bb.xml105
-rw-r--r--gr-dtv/grc/dtv_dvbt2_miso_cc.block.yml86
-rw-r--r--gr-dtv/grc/dtv_dvbt2_miso_cc.xml254
-rw-r--r--gr-dtv/grc/dtv_dvbt2_modulator_bc.block.yml39
-rw-r--r--gr-dtv/grc/dtv_dvbt2_modulator_bc.xml75
-rw-r--r--gr-dtv/grc/dtv_dvbt2_p1insertion_cc.block.yml106
-rw-r--r--gr-dtv/grc/dtv_dvbt2_p1insertion_cc.xml276
-rw-r--r--gr-dtv/grc/dtv_dvbt2_paprtr_cc.block.yml105
-rw-r--r--gr-dtv/grc/dtv_dvbt2_paprtr_cc.xml286
-rw-r--r--gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.block.yml137
-rw-r--r--gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.xml386
-rw-r--r--gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.block.yml47
-rw-r--r--gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.xml89
-rw-r--r--gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.block.yml47
-rw-r--r--gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.xml89
-rw-r--r--gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.block.yml39
-rw-r--r--gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.xml43
-rw-r--r--gr-dtv/grc/dtv_dvbt_convolutional_interleaver.block.yml39
-rw-r--r--gr-dtv/grc/dtv_dvbt_convolutional_interleaver.xml43
-rw-r--r--gr-dtv/grc/dtv_dvbt_demap.block.yml48
-rw-r--r--gr-dtv/grc/dtv_dvbt_demap.xml90
-rw-r--r--gr-dtv/grc/dtv_dvbt_demod_reference_signals.block.yml86
-rw-r--r--gr-dtv/grc/dtv_dvbt_demod_reference_signals.xml222
-rw-r--r--gr-dtv/grc/dtv_dvbt_energy_descramble.block.yml27
-rw-r--r--gr-dtv/grc/dtv_dvbt_energy_descramble.xml29
-rw-r--r--gr-dtv/grc/dtv_dvbt_energy_dispersal.block.yml28
-rw-r--r--gr-dtv/grc/dtv_dvbt_energy_dispersal.xml29
-rw-r--r--gr-dtv/grc/dtv_dvbt_inner_coder.block.yml57
-rw-r--r--gr-dtv/grc/dtv_dvbt_inner_coder.xml112
-rw-r--r--gr-dtv/grc/dtv_dvbt_map.block.yml48
-rw-r--r--gr-dtv/grc/dtv_dvbt_map.xml90
-rw-r--r--gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.block.yml45
-rw-r--r--gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.xml76
-rw-r--r--gr-dtv/grc/dtv_dvbt_reed_solomon_dec.block.yml57
-rw-r--r--gr-dtv/grc/dtv_dvbt_reed_solomon_dec.xml70
-rw-r--r--gr-dtv/grc/dtv_dvbt_reed_solomon_enc.block.yml57
-rw-r--r--gr-dtv/grc/dtv_dvbt_reed_solomon_enc.xml70
-rw-r--r--gr-dtv/grc/dtv_dvbt_reference_signals.block.yml86
-rw-r--r--gr-dtv/grc/dtv_dvbt_reference_signals.xml222
-rw-r--r--gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.block.yml37
-rw-r--r--gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.xml56
-rw-r--r--gr-dtv/grc/dtv_dvbt_viterbi_decoder.block.yml51
-rw-r--r--gr-dtv/grc/dtv_dvbt_viterbi_decoder.xml120
-rw-r--r--gr-fec/grc/CMakeLists.txt4
-rw-r--r--gr-fec/grc/fec.tree.yml43
-rw-r--r--gr-fec/grc/fec_async_decoder.block.yml43
-rw-r--r--gr-fec/grc/fec_async_decoder.xml68
-rw-r--r--gr-fec/grc/fec_async_encoder.block.yml50
-rw-r--r--gr-fec/grc/fec_async_encoder.xml84
-rw-r--r--gr-fec/grc/fec_ber_bf.block.yml37
-rw-r--r--gr-fec/grc/fec_ber_bf.xml54
-rw-r--r--gr-fec/grc/fec_bercurve_generator.block.yml63
-rw-r--r--gr-fec/grc/fec_bercurve_generator.xml104
-rw-r--r--gr-fec/grc/fec_block_tree.xml57
-rw-r--r--gr-fec/grc/fec_decode_ccsds_27_bb.block.yml16
-rw-r--r--gr-fec/grc/fec_decode_ccsds_27_bb.xml20
-rw-r--r--gr-fec/grc/fec_decode_ccsds_27_fb.block.yml16
-rw-r--r--gr-fec/grc/fec_decode_ccsds_27_fb.xml20
-rw-r--r--gr-fec/grc/fec_decoder.block.yml41
-rw-r--r--gr-fec/grc/fec_decoder.xml91
-rw-r--r--gr-fec/grc/fec_depuncture_bb.block.yml33
-rw-r--r--gr-fec/grc/fec_depuncture_bb.xml45
-rw-r--r--gr-fec/grc/fec_encoder.block.yml41
-rw-r--r--gr-fec/grc/fec_encoder.xml91
-rw-r--r--gr-fec/grc/fec_extended_async_encoder.block.yml30
-rw-r--r--gr-fec/grc/fec_extended_async_encoder.xml38
-rw-r--r--gr-fec/grc/fec_extended_decoder.block.yml44
-rw-r--r--gr-fec/grc/fec_extended_decoder.xml72
-rw-r--r--gr-fec/grc/fec_extended_encoder.block.yml35
-rw-r--r--gr-fec/grc/fec_extended_encoder.xml57
-rw-r--r--gr-fec/grc/fec_extended_tagged_decoder.block.yml47
-rw-r--r--gr-fec/grc/fec_extended_tagged_decoder.xml65
-rw-r--r--gr-fec/grc/fec_extended_tagged_encoder.block.yml37
-rw-r--r--gr-fec/grc/fec_extended_tagged_encoder.xml50
-rw-r--r--gr-fec/grc/fec_puncture_xx.block.yml35
-rw-r--r--gr-fec/grc/fec_puncture_xx.xml53
-rw-r--r--gr-fec/grc/fec_tagged_decoder.block.yml47
-rw-r--r--gr-fec/grc/fec_tagged_decoder.xml74
-rw-r--r--gr-fec/grc/fec_tagged_encoder.block.yml47
-rw-r--r--gr-fec/grc/fec_tagged_encoder.xml74
-rw-r--r--gr-fec/grc/ldpc_decoder_def_list.block.yml53
-rw-r--r--gr-fec/grc/ldpc_decoder_def_list.xml87
-rw-r--r--gr-fec/grc/ldpc_encoder_def_list.block.yml38
-rwxr-xr-xgr-fec/grc/ldpc_encoder_def_list.xml68
-rw-r--r--gr-fec/grc/tpc_decoder_def_list.block.yml77
-rw-r--r--gr-fec/grc/tpc_decoder_def_list.xml142
-rw-r--r--gr-fec/grc/tpc_encoder_def_list.block.yml66
-rwxr-xr-xgr-fec/grc/tpc_encoder_def_list.xml107
-rw-r--r--gr-fec/grc/variable_cc_decoder_def_list.block.yml76
-rw-r--r--gr-fec/grc/variable_cc_decoder_def_list.xml148
-rw-r--r--gr-fec/grc/variable_cc_encoder_def_list.block.yml66
-rw-r--r--gr-fec/grc/variable_cc_encoder_def_list.xml133
-rw-r--r--gr-fec/grc/variable_ccsds_encoder_def_list.block.yml46
-rw-r--r--gr-fec/grc/variable_ccsds_encoder_def_list.xml97
-rw-r--r--gr-fec/grc/variable_dummy_decoder_def_list.block.yml40
-rw-r--r--gr-fec/grc/variable_dummy_decoder_def_list.xml75
-rw-r--r--gr-fec/grc/variable_dummy_encoder_def_list.block.yml36
-rw-r--r--gr-fec/grc/variable_dummy_encoder_def_list.xml67
-rw-r--r--gr-fec/grc/variable_ldpc_G_matrix_object.block.yml31
-rw-r--r--gr-fec/grc/variable_ldpc_G_matrix_object.xml43
-rw-r--r--gr-fec/grc/variable_ldpc_H_matrix_object.block.yml40
-rw-r--r--gr-fec/grc/variable_ldpc_H_matrix_object.xml55
-rw-r--r--gr-fec/grc/variable_ldpc_bit_flip_decoder.block.yml51
-rw-r--r--gr-fec/grc/variable_ldpc_bit_flip_decoder.xml86
-rw-r--r--gr-fec/grc/variable_ldpc_encoder_G.block.yml42
-rw-r--r--gr-fec/grc/variable_ldpc_encoder_G.xml77
-rw-r--r--gr-fec/grc/variable_ldpc_encoder_H.block.yml42
-rw-r--r--gr-fec/grc/variable_ldpc_encoder_H.xml75
-rw-r--r--gr-fec/grc/variable_polar_code_configurator.block.yml42
-rw-r--r--gr-fec/grc/variable_polar_code_configurator.xml59
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc.block.yml45
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc.xml74
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc_list.block.yml49
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc_list.xml80
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc_systematic.block.yml42
-rw-r--r--gr-fec/grc/variable_polar_decoder_sc_systematic.xml68
-rw-r--r--gr-fec/grc/variable_polar_encoder.block.yml52
-rw-r--r--gr-fec/grc/variable_polar_encoder.xml89
-rw-r--r--gr-fec/grc/variable_polar_encoder_systematic.block.yml42
-rw-r--r--gr-fec/grc/variable_polar_encoder_systematic.xml68
-rw-r--r--gr-fec/grc/variable_repetition_decoder_def_list.block.yml49
-rw-r--r--gr-fec/grc/variable_repetition_decoder_def_list.xml89
-rw-r--r--gr-fec/grc/variable_repetition_encoder_def_list.block.yml39
-rw-r--r--gr-fec/grc/variable_repetition_encoder_def_list.xml74
-rw-r--r--gr-fft/grc/CMakeLists.txt10
-rw-r--r--gr-fft/grc/fft.tree.yml7
-rw-r--r--gr-fft/grc/fft_block_tree.xml41
-rw-r--r--gr-fft/grc/fft_ctrlport_probe_psd.block.yml31
-rw-r--r--gr-fft/grc/fft_ctrlport_probe_psd.xml63
-rw-r--r--gr-fft/grc/fft_fft_vxx.block.yml60
-rw-r--r--gr-fft/grc/fft_fft_vxx.xml88
-rw-r--r--gr-fft/grc/fft_goertzel_fc.block.yml30
-rw-r--r--gr-fft/grc/fft_goertzel_fc.xml37
-rw-r--r--gr-fft/grc/fft_logpwrfft_x.block.yml59
-rw-r--r--gr-fft/grc/fft_logpwrfft_x.xml90
-rw-r--r--gr-filter/grc/CMakeLists.txt64
-rw-r--r--gr-filter/grc/filter.tree.yml35
-rw-r--r--gr-filter/grc/filter_band_pass_filter.block.yml85
-rw-r--r--gr-filter/grc/filter_band_pass_filter.xml166
-rw-r--r--gr-filter/grc/filter_band_reject_filter.block.yml80
-rw-r--r--gr-filter/grc/filter_band_reject_filter.xml132
-rw-r--r--gr-filter/grc/filter_block_tree.xml74
-rw-r--r--gr-filter/grc/filter_dc_blocker_xx.block.yml35
-rw-r--r--gr-filter/grc/filter_dc_blocker_xx.xml51
-rw-r--r--gr-filter/grc/filter_fft_filter_xxx.block.yml52
-rw-r--r--gr-filter/grc/filter_fft_filter_xxx.xml75
-rw-r--r--gr-filter/grc/filter_filter_delay_fc.block.yml26
-rw-r--r--gr-filter/grc/filter_filter_delay_fc.xml31
-rw-r--r--gr-filter/grc/filter_filterbank_vcvcf.block.yml26
-rw-r--r--gr-filter/grc/filter_filterbank_vcvcf.xml29
-rw-r--r--gr-filter/grc/filter_fir_filter_xxx.block.yml49
-rw-r--r--gr-filter/grc/filter_fir_filter_xxx.xml89
-rw-r--r--gr-filter/grc/filter_freq_xlating_fft_filter_ccc.block.yml51
-rw-r--r--gr-filter/grc/filter_freq_xlating_fft_filter_ccc.xml62
-rw-r--r--gr-filter/grc/filter_freq_xlating_fir_filter_xxx.block.yml55
-rw-r--r--gr-filter/grc/filter_freq_xlating_fir_filter_xxx.xml100
-rw-r--r--gr-filter/grc/filter_high_pass_filter.block.yml77
-rw-r--r--gr-filter/grc/filter_high_pass_filter.xml127
-rw-r--r--gr-filter/grc/filter_hilbert_fc.block.yml35
-rw-r--r--gr-filter/grc/filter_hilbert_fc.xml64
-rw-r--r--gr-filter/grc/filter_iir_filter_xxx.block.yml44
-rw-r--r--gr-filter/grc/filter_iir_filter_xxx.xml93
-rw-r--r--gr-filter/grc/filter_interp_fir_filter_xxx.block.yml49
-rw-r--r--gr-filter/grc/filter_interp_fir_filter_xxx.xml89
-rw-r--r--gr-filter/grc/filter_low_pass_filter.block.yml77
-rw-r--r--gr-filter/grc/filter_low_pass_filter.xml127
-rw-r--r--gr-filter/grc/filter_low_pass_xlating_filter.block.yml79
-rw-r--r--gr-filter/grc/filter_low_pass_xlating_filter.xml144
-rw-r--r--gr-filter/grc/filter_mmse_interpolator_xx.block.yml33
-rw-r--r--gr-filter/grc/filter_mmse_interpolator_xx.xml46
-rw-r--r--gr-filter/grc/filter_mmse_resampler_xx.block.yml40
-rw-r--r--gr-filter/grc/filter_mmse_resampler_xx.xml56
-rw-r--r--gr-filter/grc/filter_pfb_arb_resampler.block.yml55
-rw-r--r--gr-filter/grc/filter_pfb_arb_resampler.xml87
-rw-r--r--gr-filter/grc/filter_pfb_channelizer.block.yml56
-rw-r--r--gr-filter/grc/filter_pfb_channelizer.xml77
-rw-r--r--gr-filter/grc/filter_pfb_channelizer_hier.block.yml55
-rw-r--r--gr-filter/grc/filter_pfb_channelizer_hier.xml80
-rw-r--r--gr-filter/grc/filter_pfb_decimator.block.yml56
-rw-r--r--gr-filter/grc/filter_pfb_decimator.xml91
-rw-r--r--gr-filter/grc/filter_pfb_interpolator.block.yml38
-rw-r--r--gr-filter/grc/filter_pfb_interpolator.xml51
-rw-r--r--gr-filter/grc/filter_pfb_synthesizer.block.yml55
-rw-r--r--gr-filter/grc/filter_pfb_synthesizer.xml73
-rw-r--r--gr-filter/grc/filter_rational_resampler_base_xxx.block.yml46
-rw-r--r--gr-filter/grc/filter_rational_resampler_base_xxx.xml86
-rw-r--r--gr-filter/grc/filter_rational_resampler_xxx.block.yml62
-rw-r--r--gr-filter/grc/filter_rational_resampler_xxx.xml92
-rw-r--r--gr-filter/grc/filter_root_raised_cosine_filter.block.yml70
-rw-r--r--gr-filter/grc/filter_root_raised_cosine_filter.xml101
-rw-r--r--gr-filter/grc/filter_single_pole_iir_filter_xx.block.yml38
-rw-r--r--gr-filter/grc/filter_single_pole_iir_filter_xx.xml51
-rw-r--r--gr-filter/grc/variable_band_pass_filter_taps.block.yml53
-rw-r--r--gr-filter/grc/variable_band_pass_filter_taps.xml97
-rw-r--r--gr-filter/grc/variable_band_reject_filter_taps.block.yml46
-rw-r--r--gr-filter/grc/variable_band_reject_filter_taps.xml81
-rw-r--r--gr-filter/grc/variable_high_pass_filter_taps.block.yml42
-rw-r--r--gr-filter/grc/variable_high_pass_filter_taps.xml75
-rw-r--r--gr-filter/grc/variable_low_pass_filter_taps.block.yml42
-rw-r--r--gr-filter/grc/variable_low_pass_filter_taps.xml75
-rw-r--r--gr-filter/grc/variable_rrc_filter_taps.block.yml34
-rw-r--r--gr-filter/grc/variable_rrc_filter_taps.xml50
-rw-r--r--gr-trellis/grc/CMakeLists.txt26
-rw-r--r--gr-trellis/grc/trellis_encoder_xx.block.yml59
-rw-r--r--gr-trellis/grc/trellis_encoder_xx.xml103
-rw-r--r--gr-trellis/grc/trellis_metrics_x.block.yml50
-rw-r--r--gr-trellis/grc/trellis_metrics_x.xml91
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_combined_xx.block.yml102
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml172
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_x.block.yml75
-rw-r--r--gr-trellis/grc/trellis_pccc_decoder_x.xml119
-rw-r--r--gr-trellis/grc/trellis_pccc_encoder_xx.block.yml58
-rw-r--r--gr-trellis/grc/trellis_pccc_encoder_xx.xml100
-rw-r--r--gr-trellis/grc/trellis_permutation.block.yml54
-rw-r--r--gr-trellis/grc/trellis_permutation.xml85
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_combined_xx.block.yml102
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml172
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_x.block.yml75
-rw-r--r--gr-trellis/grc/trellis_sccc_decoder_x.xml119
-rw-r--r--gr-trellis/grc/trellis_sccc_encoder_xx.block.yml58
-rw-r--r--gr-trellis/grc/trellis_sccc_encoder_xx.xml100
-rw-r--r--gr-trellis/grc/trellis_siso_combined_f.block.yml79
-rw-r--r--gr-trellis/grc/trellis_siso_combined_f.xml129
-rw-r--r--gr-trellis/grc/trellis_siso_f.block.yml67
-rw-r--r--gr-trellis/grc/trellis_siso_f.xml100
-rw-r--r--gr-trellis/grc/trellis_viterbi_combined_xx.block.yml76
-rw-r--r--gr-trellis/grc/trellis_viterbi_combined_xx.xml133
-rw-r--r--gr-trellis/grc/trellis_viterbi_x.block.yml53
-rw-r--r--gr-trellis/grc/trellis_viterbi_x.xml74
-rw-r--r--gr-video-sdl/grc/CMakeLists.txt4
-rw-r--r--gr-video-sdl/grc/video.tree.yml3
-rw-r--r--gr-video-sdl/grc/video_block_tree.xml13
-rw-r--r--gr-video-sdl/grc/video_sdl_sink.block.yml61
-rw-r--r--gr-video-sdl/grc/video_sdl_sink.xml86
-rw-r--r--gr-vocoder/grc/CMakeLists.txt42
-rw-r--r--gr-vocoder/grc/CMakeLists.txt.orig38
-rw-r--r--gr-vocoder/grc/vocoder.tree.yml22
-rw-r--r--gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_alaw_decode_bs.xml20
-rw-r--r--gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_alaw_encode_sb.xml22
-rw-r--r--gr-vocoder/grc/vocoder_block_tree.xml54
-rw-r--r--gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml30
-rw-r--r--gr-vocoder/grc/vocoder_codec2_decode_ps.xml60
-rw-r--r--gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml30
-rw-r--r--gr-vocoder/grc/vocoder_codec2_encode_sp.xml61
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_decode.block.yml26
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_decode.xml32
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_decode_bs.xml21
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_encode.block.yml26
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_encode.xml32
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_cvsd_encode_sb.xml22
-rw-r--r--gr-vocoder/grc/vocoder_freedv_rx_ss.block.yml33
-rw-r--r--gr-vocoder/grc/vocoder_freedv_rx_ss.xml58
-rw-r--r--gr-vocoder/grc/vocoder_freedv_tx_ss.block.yml31
-rw-r--r--gr-vocoder/grc/vocoder_freedv_tx_ss.xml57
-rw-r--r--gr-vocoder/grc/vocoder_g721_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g721_decode_bs.xml20
-rw-r--r--gr-vocoder/grc/vocoder_g721_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g721_encode_sb.xml22
-rw-r--r--gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g723_24_decode_bs.xml20
-rw-r--r--gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g723_24_encode_sb.xml22
-rw-r--r--gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g723_40_decode_bs.xml20
-rw-r--r--gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_g723_40_encode_sb.xml22
-rw-r--r--gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml17
-rw-r--r--gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml21
-rw-r--r--gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml17
-rw-r--r--gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml23
-rw-r--r--gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_ulaw_decode_bs.xml20
-rw-r--r--gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml16
-rw-r--r--gr-vocoder/grc/vocoder_ulaw_encode_sb.xml22
-rw-r--r--gr-zeromq/grc/CMakeLists.txt24
-rw-r--r--gr-zeromq/grc/zeromq_pub_msg_sink.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_pub_msg_sink.xml28
-rw-r--r--gr-zeromq/grc/zeromq_pub_sink.block.yml48
-rw-r--r--gr-zeromq/grc/zeromq_pub_sink.xml89
-rw-r--r--gr-zeromq/grc/zeromq_pull_msg_source.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_pull_msg_source.xml28
-rw-r--r--gr-zeromq/grc/zeromq_pull_source.block.yml48
-rw-r--r--gr-zeromq/grc/zeromq_pull_source.xml89
-rw-r--r--gr-zeromq/grc/zeromq_push_msg_sink.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_push_msg_sink.xml28
-rw-r--r--gr-zeromq/grc/zeromq_push_sink.block.yml48
-rw-r--r--gr-zeromq/grc/zeromq_push_sink.xml89
-rw-r--r--gr-zeromq/grc/zeromq_rep_msg_sink.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_rep_msg_sink.xml28
-rw-r--r--gr-zeromq/grc/zeromq_rep_sink.block.yml49
-rw-r--r--gr-zeromq/grc/zeromq_rep_sink.xml89
-rw-r--r--gr-zeromq/grc/zeromq_req_msg_source.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_req_msg_source.xml28
-rw-r--r--gr-zeromq/grc/zeromq_req_source.block.yml48
-rw-r--r--gr-zeromq/grc/zeromq_req_source.xml89
-rw-r--r--gr-zeromq/grc/zeromq_sub_msg_source.block.yml23
-rw-r--r--gr-zeromq/grc/zeromq_sub_msg_source.xml28
-rw-r--r--gr-zeromq/grc/zeromq_sub_source.block.yml48
-rw-r--r--gr-zeromq/grc/zeromq_sub_source.xml89
904 files changed, 19071 insertions, 32803 deletions
diff --git a/gr-analog/grc/CMakeLists.txt b/gr-analog/grc/CMakeLists.txt
index 1251af5b83..35456cee31 100644
--- a/gr-analog/grc/CMakeLists.txt
+++ b/gr-analog/grc/CMakeLists.txt
@@ -17,5 +17,5 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
-file(GLOB xml_files "*.xml")
-install(FILES ${xml_files} DESTINATION ${GRC_BLOCKS_DIR})
+file(GLOB yml_files "*.yml")
+install(FILES ${yml_files} DESTINATION ${GRC_BLOCKS_DIR})
diff --git a/gr-analog/grc/analog.tree.yml b/gr-analog/grc/analog.tree.yml
new file mode 100644
index 0000000000..44a88bd5c5
--- /dev/null
+++ b/gr-analog/grc/analog.tree.yml
@@ -0,0 +1,39 @@
+'[Core]':
+- Level Controllers:
+ - analog_agc_xx
+ - analog_agc2_xx
+ - analog_agc3_xx
+ - analog_feedforward_agc_cc
+ - analog_ctcss_squelch_ff
+ - analog_pwr_squelch_xx
+ - analog_simple_squelch_cc
+ - analog_standard_squelch
+ - analog_rail_ff
+- Modulators:
+ - analog_frequency_modulator_fc
+ - analog_phase_modulator_fc
+ - analog_quadrature_demod_cf
+ - analog_nbfm_tx
+ - analog_nbfm_rx
+ - analog_wfm_tx
+ - analog_wfm_rcv
+ - analog_wfm_rcv_pll
+ - analog_am_demod_cf
+ - analog_fm_demod_cf
+ - analog_fm_deemph
+ - analog_fm_preemph
+- Waveform Generators:
+ - analog_sig_source_x
+ - analog_const_source_x
+ - analog_noise_source_x
+ - analog_fastnoise_source_x
+ - analog_random_source_x
+ - analog_random_uniform_source_x
+- Synchronizers:
+ - analog_pll_carriertracking_cc
+ - analog_pll_freqdet_cf
+ - analog_pll_refout_cc
+- Peak Detectors:
+ - analog_dpll_bb
+- Measurement Tools:
+ - analog_probe_avg_mag_sqrd_x
diff --git a/gr-analog/grc/analog_agc2_xx.block.yml b/gr-analog/grc/analog_agc2_xx.block.yml
new file mode 100644
index 0000000000..93990b5c3b
--- /dev/null
+++ b/gr-analog/grc/analog_agc2_xx.block.yml
@@ -0,0 +1,53 @@
+id: analog_agc2_xx
+label: AGC2
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: attack_rate
+ label: Attack Rate
+ dtype: real
+ default: 1e-1
+- id: decay_rate
+ label: Decay Rate
+ dtype: real
+ default: 1e-2
+- id: reference
+ label: Reference
+ dtype: real
+ default: '1.0'
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1.0'
+- id: max_gain
+ label: Max Gain
+ dtype: real
+ default: '65536'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: |-
+ analog.agc2_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain})
+ self.${id}.set_max_gain(${max_gain})
+ callbacks:
+ - set_attack_rate(${attack_rate})
+ - set_decay_rate(${decay_rate})
+ - set_reference(${reference})
+ - set_gain(${gain})
+ - set_max_gain(${max_gain})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_agc2_xx.xml b/gr-analog/grc/analog_agc2_xx.xml
deleted file mode 100644
index cafd6a09b5..0000000000
--- a/gr-analog/grc/analog_agc2_xx.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##AGC2
-###################################################
- -->
-<block>
- <name>AGC2</name>
- <key>analog_agc2_xx</key>
- <import>from gnuradio import analog</import>
- <make>analog.agc2_$(type.fcn)($attack_rate, $decay_rate, $reference, $gain)
-self.$(id).set_max_gain($max_gain)</make>
- <callback>set_attack_rate($attack_rate)</callback>
- <callback>set_decay_rate($decay_rate)</callback>
- <callback>set_reference($reference)</callback>
- <callback>set_gain($gain)</callback>
- <callback>set_max_gain($max_gain)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Attack Rate</name>
- <key>attack_rate</key>
- <value>1e-1</value>
- <type>real</type>
- </param>
- <param>
- <name>Decay Rate</name>
- <key>decay_rate</key>
- <value>1e-2</value>
- <type>real</type>
- </param>
- <param>
- <name>Reference</name>
- <key>reference</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Gain</name>
- <key>max_gain</key>
- <value>65536</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_agc3_xx.block.yml b/gr-analog/grc/analog_agc3_xx.block.yml
new file mode 100644
index 0000000000..17a03f6771
--- /dev/null
+++ b/gr-analog/grc/analog_agc3_xx.block.yml
@@ -0,0 +1,57 @@
+id: analog_agc3_xx
+label: AGC3
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex]
+ option_attributes:
+ fcn: [cc]
+ hide: part
+- id: attack_rate
+ label: Attack Rate
+ dtype: real
+ default: 1e-3
+- id: decay_rate
+ label: Decay Rate
+ dtype: real
+ default: 1e-4
+- id: reference
+ label: Reference
+ dtype: real
+ default: '1.0'
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1.0'
+- id: max_gain
+ label: Max Gain
+ dtype: real
+ default: '65536'
+- id: iir_update_decim
+ label: IIR Update Decimation
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: |-
+ analog.agc3_${type.fcn}(${attack_rate}, ${decay_rate}, ${reference}, ${gain}, ${iir_update_decim})
+ self.${id}.set_max_gain(${max_gain})
+ callbacks:
+ - set_attack_rate(${attack_rate})
+ - set_decay_rate(${decay_rate})
+ - set_reference(${reference})
+ - set_gain(${gain})
+ - set_max_gain(${max_gain})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_agc3_xx.xml b/gr-analog/grc/analog_agc3_xx.xml
deleted file mode 100644
index 1e6b9fd382..0000000000
--- a/gr-analog/grc/analog_agc3_xx.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##AGC3
-###################################################
- -->
-<block>
- <name>AGC3</name>
- <key>analog_agc3_xx</key>
- <import>from gnuradio import analog</import>
- <make>analog.agc3_$(type.fcn)($attack_rate, $decay_rate, $reference, $gain, $iir_update_decim)
-self.$(id).set_max_gain($max_gain)</make>
- <callback>set_attack_rate($attack_rate)</callback>
- <callback>set_decay_rate($decay_rate)</callback>
- <callback>set_reference($reference)</callback>
- <callback>set_gain($gain)</callback>
- <callback>set_max_gain($max_gain)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
-<!-- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option> -->
- </param>
- <param>
- <name>Attack Rate</name>
- <key>attack_rate</key>
- <value>1e-3</value>
- <type>real</type>
- </param>
- <param>
- <name>Decay Rate</name>
- <key>decay_rate</key>
- <value>1e-4</value>
- <type>real</type>
- </param>
- <param>
- <name>Reference</name>
- <key>reference</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Gain</name>
- <key>max_gain</key>
- <value>65536</value>
- <type>real</type>
- </param>
- <param>
- <name>IIR Update Decimation</name>
- <key>iir_update_decim</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_agc_xx.block.yml b/gr-analog/grc/analog_agc_xx.block.yml
new file mode 100644
index 0000000000..52ef26f79f
--- /dev/null
+++ b/gr-analog/grc/analog_agc_xx.block.yml
@@ -0,0 +1,48 @@
+id: analog_agc_xx
+label: AGC
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: rate
+ label: Rate
+ dtype: real
+ default: 1e-4
+- id: reference
+ label: Reference
+ dtype: real
+ default: '1.0'
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1.0'
+- id: max_gain
+ label: Max Gain
+ dtype: real
+ default: '65536'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: |-
+ analog.agc_${type.fcn}(${rate}, ${reference}, ${gain})
+ self.${id}.set_max_gain(${max_gain})
+ callbacks:
+ - set_rate(${rate})
+ - set_reference(${reference})
+ - set_gain(${gain})
+ - set_max_gain(${max_gain})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_agc_xx.xml b/gr-analog/grc/analog_agc_xx.xml
deleted file mode 100644
index 085ded3d8c..0000000000
--- a/gr-analog/grc/analog_agc_xx.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##AGC
-###################################################
- -->
-<block>
- <name>AGC</name>
- <key>analog_agc_xx</key>
- <import>from gnuradio import analog</import>
- <make>analog.agc_$(type.fcn)($rate, $reference, $gain)
-self.$(id).set_max_gain($max_gain)</make>
- <callback>set_rate($rate)</callback>
- <callback>set_reference($reference)</callback>
- <callback>set_gain($gain)</callback>
- <callback>set_max_gain($max_gain)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Rate</name>
- <key>rate</key>
- <value>1e-4</value>
- <type>real</type>
- </param>
- <param>
- <name>Reference</name>
- <key>reference</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Gain</name>
- <key>max_gain</key>
- <value>65536</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_am_demod_cf.block.yml b/gr-analog/grc/analog_am_demod_cf.block.yml
new file mode 100644
index 0000000000..8bc6cc1c31
--- /dev/null
+++ b/gr-analog/grc/analog_am_demod_cf.block.yml
@@ -0,0 +1,33 @@
+id: analog_am_demod_cf
+label: AM Demod
+
+parameters:
+- id: chan_rate
+ label: Channel Rate
+ dtype: real
+- id: audio_decim
+ label: Audio Decimation
+ dtype: int
+- id: audio_pass
+ label: Audio Pass
+ dtype: real
+ default: '5000'
+- id: audio_stop
+ label: Audio Stop
+ dtype: real
+ default: '5500'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.am_demod_cf(\n\tchannel_rate=${chan_rate},\n\taudio_decim=${audio_decim},\n\
+ \taudio_pass=${audio_pass},\n\taudio_stop=${audio_stop},\n)"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_am_demod_cf.xml b/gr-analog/grc/analog_am_demod_cf.xml
deleted file mode 100644
index b066882bda..0000000000
--- a/gr-analog/grc/analog_am_demod_cf.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##AM Demod
-###################################################
- -->
-<block>
- <name>AM Demod</name>
- <key>analog_am_demod_cf</key>
- <import>from gnuradio import analog</import>
- <make>analog.am_demod_cf(
- channel_rate=$chan_rate,
- audio_decim=$audio_decim,
- audio_pass=$audio_pass,
- audio_stop=$audio_stop,
-)</make>
- <param>
- <name>Channel Rate</name>
- <key>chan_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Audio Decimation</name>
- <key>audio_decim</key>
- <type>int</type>
- </param>
- <param>
- <name>Audio Pass</name>
- <key>audio_pass</key>
- <value>5000</value>
- <type>real</type>
- </param>
- <param>
- <name>Audio Stop</name>
- <key>audio_stop</key>
- <value>5500</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_block_tree.xml b/gr-analog/grc/analog_block_tree.xml
deleted file mode 100644
index 7337c34c3e..0000000000
--- a/gr-analog/grc/analog_block_tree.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR Analog blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Level Controllers</name>
- <block>analog_agc_xx</block>
- <block>analog_agc2_xx</block>
- <block>analog_agc3_xx</block>
- <block>analog_feedforward_agc_cc</block>
- <block>analog_ctcss_squelch_ff</block>
- <block>analog_pwr_squelch_xx</block>
- <block>analog_simple_squelch_cc</block>
- <block>analog_standard_squelch</block>
- <block>analog_rail_ff</block>
- </cat>
- <cat>
- <name>Modulators</name>
- <block>analog_frequency_modulator_fc</block>
- <block>analog_phase_modulator_fc</block>
- <block>analog_quadrature_demod_cf</block>
- <block>analog_nbfm_tx</block>
- <block>analog_nbfm_rx</block>
- <block>analog_wfm_tx</block>
- <block>analog_wfm_rcv</block>
- <block>analog_wfm_rcv_pll</block>
- <block>analog_am_demod_cf</block>
- <block>analog_fm_demod_cf</block>
- <block>analog_fm_deemph</block>
- <block>analog_fm_preemph</block>
- </cat>
- <cat>
- <name>Waveform Generators</name>
- <block>analog_sig_source_x</block>
- <block>analog_const_source_x</block>
- <block>analog_noise_source_x</block>
- <block>analog_fastnoise_source_x</block>
- <block>analog_random_source_x</block>
- <block>analog_random_uniform_source_x</block>
- </cat>
- <cat>
- <name>Synchronizers</name>
- <block>analog_pll_carriertracking_cc</block>
- <block>analog_pll_freqdet_cf</block>
- <block>analog_pll_refout_cc</block>
- </cat>
- <cat>
- <name>Peak Detectors</name>
- <block>analog_dpll_bb</block>
- </cat>
- <cat>
- <name>Measurement Tools</name>
- <block>analog_probe_avg_mag_sqrd_x</block>
- </cat>
-</cat>
diff --git a/gr-analog/grc/analog_const_source_x.block.yml b/gr-analog/grc/analog_const_source_x.block.yml
new file mode 100644
index 0000000000..ac676b7ac4
--- /dev/null
+++ b/gr-analog/grc/analog_const_source_x.block.yml
@@ -0,0 +1,28 @@
+id: analog_const_source_x
+label: Constant Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ const_type: [complex, real, int, int]
+ fcn: [c, f, i, s]
+ hide: part
+- id: const
+ label: Constant
+ dtype: ${ type.const_type }
+ default: '0'
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.sig_source_${type.fcn}(0, analog.GR_CONST_WAVE, 0, 0, ${const})
+ callbacks:
+ - set_offset(${const})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_const_source_x.xml b/gr-analog/grc/analog_const_source_x.xml
deleted file mode 100644
index de8c306264..0000000000
--- a/gr-analog/grc/analog_const_source_x.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Constant Source: Custom wrapper
-###################################################
- -->
-<block>
- <name>Constant Source</name>
- <key>analog_const_source_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.sig_source_$(type.fcn)(0, analog.GR_CONST_WAVE, 0, 0, $const)</make>
- <callback>set_offset($const)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- <opt>const_type:complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- <opt>const_type:real</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- <opt>const_type:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- <opt>const_type:int</opt>
- </option>
- </param>
- <param>
- <name>Constant</name>
- <key>const</key>
- <value>0</value>
- <type>$type.const_type</type>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_cpfsk_bc.block.yml b/gr-analog/grc/analog_cpfsk_bc.block.yml
new file mode 100644
index 0000000000..c9ccbaac27
--- /dev/null
+++ b/gr-analog/grc/analog_cpfsk_bc.block.yml
@@ -0,0 +1,31 @@
+id: analog_cpfsk_bc
+label: CPFSK
+category: '[Core]/Deprecated'
+
+parameters:
+- id: k
+ label: K
+ dtype: real
+- id: amplitude
+ label: Amplitude
+ dtype: real
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.cpfsk_bc(${k}, ${amplitude}, ${samples_per_symbol})
+ callbacks:
+ - set_amplitude(${amplitude})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_cpfsk_bc.xml b/gr-analog/grc/analog_cpfsk_bc.xml
deleted file mode 100644
index 5108ff61f9..0000000000
--- a/gr-analog/grc/analog_cpfsk_bc.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##CPFSK
-###################################################
- -->
-<block>
- <name>CPFSK</name>
- <key>analog_cpfsk_bc</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import analog</import>
- <make>analog.cpfsk_bc($k, $amplitude, $samples_per_symbol)</make>
- <callback>set_amplitude($amplitude)</callback>
- <param>
- <name>K</name>
- <key>k</key>
- <type>real</type>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amplitude</key>
- <type>real</type>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_ctcss_squelch_ff.block.yml b/gr-analog/grc/analog_ctcss_squelch_ff.block.yml
new file mode 100644
index 0000000000..a3dd89f1f6
--- /dev/null
+++ b/gr-analog/grc/analog_ctcss_squelch_ff.block.yml
@@ -0,0 +1,45 @@
+id: analog_ctcss_squelch_ff
+label: CTCSS Squelch
+
+parameters:
+- id: rate
+ label: Sampling Rate (Hz)
+ dtype: real
+ default: samp_rate
+- id: freq
+ label: Tone Frequency
+ dtype: real
+ default: '100.0'
+- id: level
+ label: Level
+ dtype: real
+ default: '0.01'
+- id: len
+ label: Length
+ dtype: int
+ default: '0'
+- id: ramp
+ label: Ramp
+ dtype: int
+ default: '0'
+- id: gate
+ label: Gate
+ dtype: bool
+ default: 'False'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.ctcss_squelch_ff(${rate}, ${freq}, ${level}, ${len}, ${ramp}, ${gate})
+ callbacks:
+ - set_level(${level})
+ - set_frequency(${freq})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_ctcss_squelch_ff.xml b/gr-analog/grc/analog_ctcss_squelch_ff.xml
deleted file mode 100644
index 7a2248aa7e..0000000000
--- a/gr-analog/grc/analog_ctcss_squelch_ff.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#
-# Copyright 2011 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##CTCSS Squelch
-###################################################
- -->
-<block>
- <name>CTCSS Squelch</name>
- <key>analog_ctcss_squelch_ff</key>
- <import>from gnuradio import analog</import>
- <make>analog.ctcss_squelch_ff($rate, $freq, $level, $len, $ramp, $gate)</make>
- <callback>set_level($level)</callback>
- <callback>set_frequency($freq)</callback>
- <param>
- <name>Sampling Rate (Hz)</name>
- <key>rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Tone Frequency</name>
- <key>freq</key>
- <value>100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Level</name>
- <key>level</key>
- <value>0.01</value>
- <type>real</type>
- </param>
- <param>
- <name>Length</name>
- <key>len</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Ramp</name>
- <key>ramp</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Gate</name>
- <key>gate</key>
- <value>False</value>
- <type>bool</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_dpll_bb.block.yml b/gr-analog/grc/analog_dpll_bb.block.yml
new file mode 100644
index 0000000000..289f3a283d
--- /dev/null
+++ b/gr-analog/grc/analog_dpll_bb.block.yml
@@ -0,0 +1,26 @@
+id: analog_dpll_bb
+label: Detect Peak
+
+parameters:
+- id: period
+ label: Period
+ dtype: real
+- id: gain
+ label: Gain
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.dpll_bb(${period}, ${gain})
+ callbacks:
+ - set_gain(${gain})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_dpll_bb.xml b/gr-analog/grc/analog_dpll_bb.xml
deleted file mode 100644
index 65a489414d..0000000000
--- a/gr-analog/grc/analog_dpll_bb.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Detect Peak
-###################################################
- -->
-<block>
- <name>Detect Peak</name>
- <key>analog_dpll_bb</key>
- <import>from gnuradio import analog</import>
- <make>analog.dpll_bb($period, $gain)</make>
- <callback>set_gain($gain)</callback>
- <param>
- <name>Period</name>
- <key>period</key>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_fastnoise_source_x.block.yml b/gr-analog/grc/analog_fastnoise_source_x.block.yml
new file mode 100644
index 0000000000..21c4366074
--- /dev/null
+++ b/gr-analog/grc/analog_fastnoise_source_x.block.yml
@@ -0,0 +1,45 @@
+id: analog_fastnoise_source_x
+label: Fast Noise Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [c, f, i, s]
+ hide: part
+- id: noise_type
+ label: Noise Type
+ dtype: int
+ default: analog.GR_GAUSSIAN
+ options: [analog.GR_UNIFORM, analog.GR_GAUSSIAN, analog.GR_LAPLACIAN, analog.GR_IMPULSE]
+ option_labels: [Uniform, Gaussian, Laplacian, Impulse]
+- id: amp
+ label: Amplitude
+ dtype: real
+ default: '1'
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: samples
+ label: Variate Pool Size
+ dtype: int
+ default: '8192'
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.fastnoise_source_${type.fcn}(${noise_type}, ${amp}, ${seed}, ${samples})
+ callbacks:
+ - set_type(${noise_type})
+ - set_amplitude(${amp})
+
+documentation: |-
+ The fast noise source works by pre-generating a pool of random variates taken from the specified distribution. At runtime, samples are then uniform randomly chosen from this pool which is a very fast operation.
+
+file_format: 1
diff --git a/gr-analog/grc/analog_fastnoise_source_x.xml b/gr-analog/grc/analog_fastnoise_source_x.xml
deleted file mode 100644
index f18c8c2f54..0000000000
--- a/gr-analog/grc/analog_fastnoise_source_x.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Fast Noise Source
-###################################################
- -->
-<block>
- <name>Fast Noise Source</name>
- <key>analog_fastnoise_source_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.fastnoise_source_$(type.fcn)($noise_type, $amp, $seed, $samples)</make>
- <callback>set_type($noise_type)</callback>
- <callback>set_amplitude($amp)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- </param>
- <param>
- <name>Noise Type</name>
- <key>noise_type</key>
- <value>analog.GR_GAUSSIAN</value>
- <type>int</type>
- <option>
- <name>Uniform</name>
- <key>analog.GR_UNIFORM</key>
- </option>
- <option>
- <name>Gaussian</name>
- <key>analog.GR_GAUSSIAN</key>
- </option>
- <option>
- <name>Laplacian</name>
- <key>analog.GR_LAPLACIAN</key>
- </option>
- <option>
- <name>Impulse</name>
- <key>analog.GR_IMPULSE</key>
- </option>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amp</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Variate Pool Size</name>
- <key>samples</key>
- <value>8192</value>
- <type>int</type>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
- <doc>
-The fast noise source works by pre-generating a pool of random variates taken from the specified distribution. At runtime, samples are then uniform randomly chosen from this pool which is a very fast operation.
- </doc>
-</block>
diff --git a/gr-analog/grc/analog_feedforward_agc_cc.block.yml b/gr-analog/grc/analog_feedforward_agc_cc.block.yml
new file mode 100644
index 0000000000..fd49a654a8
--- /dev/null
+++ b/gr-analog/grc/analog_feedforward_agc_cc.block.yml
@@ -0,0 +1,26 @@
+id: analog_feedforward_agc_cc
+label: Feed Forward AGC
+
+parameters:
+- id: num_samples
+ label: Num Samples
+ dtype: int
+ default: '1024'
+- id: reference
+ label: Reference
+ dtype: real
+ default: '1.0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.feedforward_agc_cc(${num_samples}, ${reference})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_feedforward_agc_cc.xml b/gr-analog/grc/analog_feedforward_agc_cc.xml
deleted file mode 100644
index 66d200a847..0000000000
--- a/gr-analog/grc/analog_feedforward_agc_cc.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Feed Forward AGC
-###################################################
- -->
-<block>
- <name>Feed Forward AGC</name>
- <key>analog_feedforward_agc_cc</key>
- <import>from gnuradio import analog</import>
- <make>analog.feedforward_agc_cc($num_samples, $reference)</make>
- <param>
- <name>Num Samples</name>
- <key>num_samples</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <param>
- <name>Reference</name>
- <key>reference</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_fm_deemph.block.yml b/gr-analog/grc/analog_fm_deemph.block.yml
new file mode 100644
index 0000000000..b9c11a6842
--- /dev/null
+++ b/gr-analog/grc/analog_fm_deemph.block.yml
@@ -0,0 +1,25 @@
+id: analog_fm_deemph
+label: FM Deemphasis
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.fm_deemph(fs=${samp_rate}, tau=${tau})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_fm_deemph.xml b/gr-analog/grc/analog_fm_deemph.xml
deleted file mode 100644
index 0fcb5a87d4..0000000000
--- a/gr-analog/grc/analog_fm_deemph.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Deemphasis
-###################################################
- -->
-<block>
- <name>FM Deemphasis</name>
- <key>analog_fm_deemph</key>
- <import>from gnuradio import analog</import>
- <make>analog.fm_deemph(fs=$samp_rate, tau=$tau)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_fm_demod_cf.block.yml b/gr-analog/grc/analog_fm_demod_cf.block.yml
new file mode 100644
index 0000000000..a558253a2c
--- /dev/null
+++ b/gr-analog/grc/analog_fm_demod_cf.block.yml
@@ -0,0 +1,46 @@
+id: analog_fm_demod_cf
+label: FM Demod
+
+parameters:
+- id: chan_rate
+ label: Channel Rate
+ dtype: real
+- id: audio_decim
+ label: Audio Decimation
+ dtype: int
+- id: deviation
+ label: Deviation
+ dtype: real
+ default: '75000'
+- id: audio_pass
+ label: Audio Pass
+ dtype: real
+ default: '15000'
+- id: audio_stop
+ label: Audio Stop
+ dtype: real
+ default: '16000'
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1.0'
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.fm_demod_cf(\n\tchannel_rate=${chan_rate},\n\taudio_decim=${audio_decim},\n\
+ \tdeviation=${deviation},\n\taudio_pass=${audio_pass},\n\taudio_stop=${audio_stop},\n\
+ \tgain=${gain},\n\ttau=${tau},\n)"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_fm_demod_cf.xml b/gr-analog/grc/analog_fm_demod_cf.xml
deleted file mode 100644
index c903ddfc73..0000000000
--- a/gr-analog/grc/analog_fm_demod_cf.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Demod
-###################################################
- -->
-<block>
- <name>FM Demod</name>
- <key>analog_fm_demod_cf</key>
- <import>from gnuradio import analog</import>
- <make>analog.fm_demod_cf(
- channel_rate=$chan_rate,
- audio_decim=$audio_decim,
- deviation=$deviation,
- audio_pass=$audio_pass,
- audio_stop=$audio_stop,
- gain=$gain,
- tau=$tau,
-)</make>
- <param>
- <name>Channel Rate</name>
- <key>chan_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Audio Decimation</name>
- <key>audio_decim</key>
- <type>int</type>
- </param>
- <param>
- <name>Deviation</name>
- <key>deviation</key>
- <value>75000</value>
- <type>real</type>
- </param>
- <param>
- <name>Audio Pass</name>
- <key>audio_pass</key>
- <value>15000</value>
- <type>real</type>
- </param>
- <param>
- <name>Audio Stop</name>
- <key>audio_stop</key>
- <value>16000</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_fm_preemph.block.yml b/gr-analog/grc/analog_fm_preemph.block.yml
new file mode 100644
index 0000000000..d3f05d3164
--- /dev/null
+++ b/gr-analog/grc/analog_fm_preemph.block.yml
@@ -0,0 +1,29 @@
+id: analog_fm_preemph
+label: FM Preemphasis
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+- id: fh
+ label: High Corner Freq
+ dtype: real
+ default: '-1.0'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.fm_preemph(fs=${samp_rate}, tau=${tau}, fh=${fh})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_fm_preemph.xml b/gr-analog/grc/analog_fm_preemph.xml
deleted file mode 100644
index a754ce9c6f..0000000000
--- a/gr-analog/grc/analog_fm_preemph.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Preemphasis
-###################################################
- -->
-<block>
- <name>FM Preemphasis</name>
- <key>analog_fm_preemph</key>
- <import>from gnuradio import analog</import>
- <make>analog.fm_preemph(fs=$samp_rate, tau=$tau, fh=$fh)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <param>
- <name>High Corner Freq</name>
- <key>fh</key>
- <value>-1.0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_fmdet_cf.block.yml b/gr-analog/grc/analog_fmdet_cf.block.yml
new file mode 100644
index 0000000000..ee8661b80f
--- /dev/null
+++ b/gr-analog/grc/analog_fmdet_cf.block.yml
@@ -0,0 +1,31 @@
+id: analog_fmdet_cf
+label: FM Detector
+
+parameters:
+- id: samplerate
+ label: Sample rate
+ dtype: real
+- id: freq_low
+ label: Lowest frequency
+ dtype: real
+- id: freq_high
+ label: Highest frequency
+ dtype: real
+- id: scl
+ label: Scale factor
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.fmdet_cf(\n\tsamplerate=${samplerate},\n\tfreq_low=${freq_low},\n\
+ \tfreq_high=${freq_high},\n\tscl=${scl}\n)"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_fmdet_cf.xml b/gr-analog/grc/analog_fmdet_cf.xml
deleted file mode 100644
index 26688b2893..0000000000
--- a/gr-analog/grc/analog_fmdet_cf.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FM Detector
-###################################################
- -->
-<block>
- <name>FM Detector</name>
- <key>analog_fmdet_cf</key>
- <import>from gnuradio import analog</import>
- <make>analog.fmdet_cf(
- samplerate=$samplerate,
- freq_low=$freq_low,
- freq_high=$freq_high,
- scl=$scl
-)</make>
- <param>
- <name>Sample rate</name>
- <key>samplerate</key>
- <type>real</type>
- </param>
- <param>
- <name>Lowest frequency</name>
- <key>freq_low</key>
- <type>real</type>
- </param>
- <param>
- <name>Highest frequency</name>
- <key>freq_high</key>
- <type>real</type>
- </param>
- <param>
- <name>Scale factor</name>
- <key>scl</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_frequency_modulator_fc.block.yml b/gr-analog/grc/analog_frequency_modulator_fc.block.yml
new file mode 100644
index 0000000000..09f3e807f3
--- /dev/null
+++ b/gr-analog/grc/analog_frequency_modulator_fc.block.yml
@@ -0,0 +1,23 @@
+id: analog_frequency_modulator_fc
+label: Frequency Mod
+
+parameters:
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.frequency_modulator_fc(${sensitivity})
+ callbacks:
+ - set_sensitivity(${sensitivity})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_frequency_modulator_fc.xml b/gr-analog/grc/analog_frequency_modulator_fc.xml
deleted file mode 100644
index 3b6cd159a1..0000000000
--- a/gr-analog/grc/analog_frequency_modulator_fc.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Frequency Modulator
-###################################################
- -->
-<block>
- <name>Frequency Mod</name>
- <key>analog_frequency_modulator_fc</key>
- <import>from gnuradio import analog</import>
- <make>analog.frequency_modulator_fc($sensitivity)</make>
- <callback>set_sensitivity($sensitivity)</callback>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_nbfm_rx.block.yml b/gr-analog/grc/analog_nbfm_rx.block.yml
new file mode 100644
index 0000000000..8bb3da7684
--- /dev/null
+++ b/gr-analog/grc/analog_nbfm_rx.block.yml
@@ -0,0 +1,38 @@
+id: analog_nbfm_rx
+label: NBFM Receive
+
+parameters:
+- id: audio_rate
+ label: Audio Rate
+ dtype: int
+- id: quad_rate
+ label: Quadrature Rate
+ dtype: int
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+- id: max_dev
+ label: Max Deviation
+ dtype: real
+ default: 5e3
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+asserts:
+- ${ (quad_rate)%(audio_rate) == 0 }
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.nbfm_rx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\
+ \ttau=${tau},\n\tmax_dev=${max_dev},\n )"
+ callbacks:
+ - set_max_deviation(${max_dev})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_nbfm_rx.xml b/gr-analog/grc/analog_nbfm_rx.xml
deleted file mode 100644
index 9250b77b5e..0000000000
--- a/gr-analog/grc/analog_nbfm_rx.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##NBFM Receive
-###################################################
- -->
-<block>
- <name>NBFM Receive</name>
- <key>analog_nbfm_rx</key>
- <import>from gnuradio import analog</import>
- <make>analog.nbfm_rx(
- audio_rate=$audio_rate,
- quad_rate=$quad_rate,
- tau=$tau,
- max_dev=$max_dev,
- )</make>
- <callback>set_max_deviation($max_dev)</callback>
-
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
-
- <param>
- <name>Max Deviation</name>
- <key>max_dev</key>
- <value>5e3</value>
- <type>real</type>
- </param>
-
- <check>($quad_rate)%($audio_rate) == 0</check>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_nbfm_tx.block.yml b/gr-analog/grc/analog_nbfm_tx.block.yml
new file mode 100644
index 0000000000..00f63f8d64
--- /dev/null
+++ b/gr-analog/grc/analog_nbfm_tx.block.yml
@@ -0,0 +1,42 @@
+id: analog_nbfm_tx
+label: NBFM Transmit
+
+parameters:
+- id: audio_rate
+ label: Audio Rate
+ dtype: int
+- id: quad_rate
+ label: Quadrature Rate
+ dtype: int
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+- id: max_dev
+ label: Max Deviation
+ dtype: real
+ default: 5e3
+- id: fh
+ label: Preemphasis High Corner Freq
+ dtype: real
+ default: '-1.0'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+asserts:
+- ${ (quad_rate)%(audio_rate) == 0 }
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.nbfm_tx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\
+ \ttau=${tau},\n\tmax_dev=${max_dev},\n\tfh=${fh},\n )"
+ callbacks:
+ - set_max_deviation(${max_dev})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_nbfm_tx.xml b/gr-analog/grc/analog_nbfm_tx.xml
deleted file mode 100644
index bc80fffbcb..0000000000
--- a/gr-analog/grc/analog_nbfm_tx.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##NBFM Transmit
-###################################################
- -->
-<block>
- <name>NBFM Transmit</name>
- <key>analog_nbfm_tx</key>
- <import>from gnuradio import analog</import>
- <make>analog.nbfm_tx(
- audio_rate=$audio_rate,
- quad_rate=$quad_rate,
- tau=$tau,
- max_dev=$max_dev,
- fh=$fh,
- )</make>
- <callback>set_max_deviation($max_dev)</callback>
-
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
-
- <param>
- <name>Max Deviation</name>
- <key>max_dev</key>
- <value>5e3</value>
- <type>real</type>
- </param>
-
- <param>
- <name>Preemphasis High Corner Freq</name>
- <key>fh</key>
- <value>-1.0</value>
- <type>real</type>
- </param>
-
- <check>($quad_rate)%($audio_rate) == 0</check>
-
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_noise_source_x.block.yml b/gr-analog/grc/analog_noise_source_x.block.yml
new file mode 100644
index 0000000000..bb3f67209e
--- /dev/null
+++ b/gr-analog/grc/analog_noise_source_x.block.yml
@@ -0,0 +1,38 @@
+id: analog_noise_source_x
+label: Noise Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [c, f, i, s]
+ hide: part
+- id: noise_type
+ label: Noise Type
+ dtype: int
+ default: analog.GR_GAUSSIAN
+ options: [analog.GR_UNIFORM, analog.GR_GAUSSIAN, analog.GR_LAPLACIAN, analog.GR_IMPULSE]
+ option_labels: [Uniform, Gaussian, Laplacian, Impulse]
+- id: amp
+ label: Amplitude
+ dtype: real
+ default: '1'
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.noise_source_${type.fcn}(${noise_type}, ${amp}, ${seed})
+ callbacks:
+ - set_type(${noise_type})
+ - set_amplitude(${amp})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_noise_source_x.xml b/gr-analog/grc/analog_noise_source_x.xml
deleted file mode 100644
index 5404e78960..0000000000
--- a/gr-analog/grc/analog_noise_source_x.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Noise Source
-###################################################
- -->
-<block>
- <name>Noise Source</name>
- <key>analog_noise_source_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.noise_source_$(type.fcn)($noise_type, $amp, $seed)</make>
- <callback>set_type($noise_type)</callback>
- <callback>set_amplitude($amp)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- </param>
- <param>
- <name>Noise Type</name>
- <key>noise_type</key>
- <value>analog.GR_GAUSSIAN</value>
- <type>int</type>
- <option>
- <name>Uniform</name>
- <key>analog.GR_UNIFORM</key>
- </option>
- <option>
- <name>Gaussian</name>
- <key>analog.GR_GAUSSIAN</key>
- </option>
- <option>
- <name>Laplacian</name>
- <key>analog.GR_LAPLACIAN</key>
- </option>
- <option>
- <name>Impulse</name>
- <key>analog.GR_IMPULSE</key>
- </option>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amp</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_phase_modulator_fc.block.yml b/gr-analog/grc/analog_phase_modulator_fc.block.yml
new file mode 100644
index 0000000000..6d38ddd010
--- /dev/null
+++ b/gr-analog/grc/analog_phase_modulator_fc.block.yml
@@ -0,0 +1,23 @@
+id: analog_phase_modulator_fc
+label: Phase Mod
+
+parameters:
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.phase_modulator_fc(${sensitivity})
+ callbacks:
+ - set_sensitivity(${sensitivity})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_phase_modulator_fc.xml b/gr-analog/grc/analog_phase_modulator_fc.xml
deleted file mode 100644
index c13af769c9..0000000000
--- a/gr-analog/grc/analog_phase_modulator_fc.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Phase Modulator
-###################################################
- -->
-<block>
- <name>Phase Mod</name>
- <key>analog_phase_modulator_fc</key>
- <import>from gnuradio import analog</import>
- <make>analog.phase_modulator_fc($sensitivity)</make>
- <callback>set_sensitivity($sensitivity)</callback>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_pll_carriertracking_cc.block.yml b/gr-analog/grc/analog_pll_carriertracking_cc.block.yml
new file mode 100644
index 0000000000..1a66aca0a7
--- /dev/null
+++ b/gr-analog/grc/analog_pll_carriertracking_cc.block.yml
@@ -0,0 +1,31 @@
+id: analog_pll_carriertracking_cc
+label: PLL Carrier Tracking
+
+parameters:
+- id: w
+ label: Loop Bandwidth
+ dtype: real
+- id: max_freq
+ label: Max Freq
+ dtype: real
+- id: min_freq
+ label: Min Freq
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.pll_carriertracking_cc(${w}, ${max_freq}, ${min_freq})
+ callbacks:
+ - set_loop_bandwidth(${w})
+ - set_max_freq(${max_freq})
+ - set_min_freq(${min_freq})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_pll_carriertracking_cc.xml b/gr-analog/grc/analog_pll_carriertracking_cc.xml
deleted file mode 100644
index 95ec4b415b..0000000000
--- a/gr-analog/grc/analog_pll_carriertracking_cc.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##PLL Carrier Tracking
-###################################################
- -->
-<block>
- <name>PLL Carrier Tracking</name>
- <key>analog_pll_carriertracking_cc</key>
- <import>from gnuradio import analog</import>
- <make>analog.pll_carriertracking_cc($w, $max_freq, $min_freq)</make>
- <callback>set_loop_bandwidth($w)</callback>
- <callback>set_max_freq($max_freq)</callback>
- <callback>set_min_freq($min_freq)</callback>
- <param>
- <name>Loop Bandwidth</name>
- <key>w</key>
- <type>real</type>
- </param>
- <param>
- <name>Max Freq</name>
- <key>max_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Min Freq</name>
- <key>min_freq</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_pll_freqdet_cf.block.yml b/gr-analog/grc/analog_pll_freqdet_cf.block.yml
new file mode 100644
index 0000000000..b9fe199dd2
--- /dev/null
+++ b/gr-analog/grc/analog_pll_freqdet_cf.block.yml
@@ -0,0 +1,31 @@
+id: analog_pll_freqdet_cf
+label: PLL Freq Det
+
+parameters:
+- id: w
+ label: Loop Bandwidth
+ dtype: real
+- id: max_freq
+ label: Max Freq
+ dtype: real
+- id: min_freq
+ label: Min Freq
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.pll_freqdet_cf(${w}, ${max_freq}, ${min_freq})
+ callbacks:
+ - set_loop_bandwidth(${w})
+ - set_max_freq(${max_freq})
+ - set_min_freq(${min_freq})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_pll_freqdet_cf.xml b/gr-analog/grc/analog_pll_freqdet_cf.xml
deleted file mode 100644
index 0d44c160bd..0000000000
--- a/gr-analog/grc/analog_pll_freqdet_cf.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##PLL Frequency Det
-###################################################
- -->
-<block>
- <name>PLL Freq Det</name>
- <key>analog_pll_freqdet_cf</key>
- <import>from gnuradio import analog</import>
- <make>analog.pll_freqdet_cf($w, $max_freq, $min_freq)</make>
- <callback>set_loop_bandwidth($w)</callback>
- <callback>set_max_freq($max_freq)</callback>
- <callback>set_min_freq($min_freq)</callback>
- <param>
- <name>Loop Bandwidth</name>
- <key>w</key>
- <type>real</type>
- </param>
- <param>
- <name>Max Freq</name>
- <key>max_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Min Freq</name>
- <key>min_freq</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_pll_refout_cc.block.yml b/gr-analog/grc/analog_pll_refout_cc.block.yml
new file mode 100644
index 0000000000..5acd85c3b6
--- /dev/null
+++ b/gr-analog/grc/analog_pll_refout_cc.block.yml
@@ -0,0 +1,31 @@
+id: analog_pll_refout_cc
+label: PLL Ref Out
+
+parameters:
+- id: w
+ label: Loop Bandwidth
+ dtype: real
+- id: max_freq
+ label: Max Freq
+ dtype: real
+- id: min_freq
+ label: Min Freq
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.pll_refout_cc(${w}, ${max_freq}, ${min_freq})
+ callbacks:
+ - set_loop_bandwidth(${w})
+ - set_max_freq(${max_freq})
+ - set_min_freq(${min_freq})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_pll_refout_cc.xml b/gr-analog/grc/analog_pll_refout_cc.xml
deleted file mode 100644
index eb2d752b27..0000000000
--- a/gr-analog/grc/analog_pll_refout_cc.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##PLL Reference Out
-###################################################
- -->
-<block>
- <name>PLL Ref Out</name>
- <key>analog_pll_refout_cc</key>
- <import>from gnuradio import analog</import>
- <make>analog.pll_refout_cc($w, $max_freq, $min_freq)</make>
- <callback>set_loop_bandwidth($w)</callback>
- <callback>set_max_freq($max_freq)</callback>
- <callback>set_min_freq($min_freq)</callback>
- <param>
- <name>Loop Bandwidth</name>
- <key>w</key>
- <type>real</type>
- </param>
- <param>
- <name>Max Freq</name>
- <key>max_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Min Freq</name>
- <key>min_freq</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml
new file mode 100644
index 0000000000..ad128c1521
--- /dev/null
+++ b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.block.yml
@@ -0,0 +1,47 @@
+id: analog_probe_avg_mag_sqrd_x
+label: Probe Avg Mag^2
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [c, f, cf]
+ option_labels: [Complex, Float, Complex->Float]
+ option_attributes:
+ hide: [all, all, '']
+ input: [complex, float, complex]
+ optional: ['1', '1', '0']
+ hide: part
+- id: threshold
+ label: Threshold (dB)
+ dtype: real
+ default: '0'
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: float
+ optional: true
+ hide: ${ type.hide }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.probe_avg_mag_sqrd_${type}(${threshold}, ${alpha})
+ callbacks:
+ - set_alpha(${alpha})
+ - set_threshold(${threshold})
+ - reset()
+
+documentation: |-
+ Available functions to probe: level()
+
+ Use with the function probe block.
+
+file_format: 1
diff --git a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml b/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml
deleted file mode 100644
index 98e6702ffd..0000000000
--- a/gr-analog/grc/analog_probe_avg_mag_sqrd_x.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Probe Average Magnitude Squared
-###################################################
- -->
-<block>
- <name>Probe Avg Mag^2</name>
- <key>analog_probe_avg_mag_sqrd_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.probe_avg_mag_sqrd_$(type)($threshold, $alpha)</make>
- <callback>set_alpha($alpha)</callback>
- <callback>set_threshold($threshold)</callback>
- <callback>reset()</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>c</key>
- <opt>input:complex</opt>
- <opt>optional:1</opt>
- <opt>hide:all</opt>
- </option>
- <option>
- <name>Float</name>
- <key>f</key>
- <opt>input:float</opt>
- <opt>optional:1</opt>
- <opt>hide:all</opt>
- </option>
- <option>
- <name>Complex->Float</name>
- <key>cf</key>
- <opt>input:complex</opt>
- <opt>optional:0</opt>
- <opt>hide:</opt>
- </option>
- </param>
- <param>
- <name>Threshold (dB)</name>
- <key>threshold</key>
- <value>0</value>
- <type>real</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <optional>$type.optional</optional>
- <hide>$type.hide</hide>
- </source>
- <doc>
-Available functions to probe: level()
-
-Use with the function probe block.
- </doc>
-</block>
diff --git a/gr-analog/grc/analog_pwr_squelch_xx.block.yml b/gr-analog/grc/analog_pwr_squelch_xx.block.yml
new file mode 100644
index 0000000000..20bcfa923e
--- /dev/null
+++ b/gr-analog/grc/analog_pwr_squelch_xx.block.yml
@@ -0,0 +1,44 @@
+id: analog_pwr_squelch_xx
+label: Power Squelch
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: threshold
+ label: Threshold (dB)
+ dtype: real
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: 1e-4
+- id: ramp
+ label: Ramp
+ dtype: int
+ default: '0'
+- id: gate
+ label: Gate
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.pwr_squelch_${type.fcn}(${threshold}, ${alpha}, ${ramp}, ${gate})
+ callbacks:
+ - set_threshold(${threshold})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_pwr_squelch_xx.xml b/gr-analog/grc/analog_pwr_squelch_xx.xml
deleted file mode 100644
index a75f85cf10..0000000000
--- a/gr-analog/grc/analog_pwr_squelch_xx.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Power Squelch
-###################################################
- -->
-<block>
- <name>Power Squelch</name>
- <key>analog_pwr_squelch_xx</key>
- <import>from gnuradio import analog</import>
- <make>analog.pwr_squelch_$(type.fcn)($threshold, $alpha, $ramp, $gate)</make>
- <callback>set_threshold($threshold)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Threshold (dB)</name>
- <key>threshold</key>
- <type>real</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>1e-4</value>
- <type>real</type>
- </param>
- <param>
- <name>Ramp</name>
- <key>ramp</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Gate</name>
- <key>gate</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_quadrature_demod_cf.block.yml b/gr-analog/grc/analog_quadrature_demod_cf.block.yml
new file mode 100644
index 0000000000..874b286c87
--- /dev/null
+++ b/gr-analog/grc/analog_quadrature_demod_cf.block.yml
@@ -0,0 +1,47 @@
+id: analog_quadrature_demod_cf
+label: Quadrature Demod
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: real
+ default: samp_rate/(2*math.pi*fsk_deviation_hz/8.0)
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: |-
+ from gnuradio import analog
+ import math
+ make: analog.quadrature_demod_cf(${gain})
+ callbacks:
+ - set_gain(${gain})
+
+documentation: |-
+ This can be used to demod FM, FSK, GMSK, etc. The input is complex
+ baseband, output is the signal frequency in relation to the sample
+ rated, multiplied with the gain.
+
+ Mathematically, this block calculates the product of the one-sample
+ delayed input and the conjugate undelayed signal, and then calculates
+ the argument of the resulting complex number:
+
+ y[n] = \mathrm{arg}\left(x[n] \, \bar x [n-1]\right).
+
+ Let x be a complex sinusoid with amplitude A>0, (absolute)
+ frequency f\in\mathbb R and phase \phi_0\in[0;2\pi] sampled at
+ f_s>0 so, without loss of generality,
+
+ x[n]= A e^{j2\pi( \frac f{f_s} n + \phi_0)}\f
+
+ then
+
+ y[n] = \mathrm{arg}\left(A e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} \overline{A e^{j2\pi( \frac f{f_s} (n-1) + \phi_0)}}\right)\ = \mathrm{arg}\left(A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} e^{-j2\pi( \frac f{f_s} (n-1) + \phi_0)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0 - \frac f{f_s} (n-1) - \phi_0\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n - \frac f{f_s} (n-1)\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} \left(n-(n-1)\right)\right)}\right)\ = \mathrm{arg}\left( A^2 e^{j2\pi \frac f{f_s}}\right) \intertext{$A$ is real, so is $A^2$ and hence only \textit{scales}, therefore $\mathrm{arg}(\cdot)$ is invariant:} = \mathrm{arg}\left(e^{j2\pi \frac f{f_s}}\right)\= \frac f{f_s}\\
+
+file_format: 1
diff --git a/gr-analog/grc/analog_quadrature_demod_cf.xml b/gr-analog/grc/analog_quadrature_demod_cf.xml
deleted file mode 100644
index 447acf2ed8..0000000000
--- a/gr-analog/grc/analog_quadrature_demod_cf.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Quadrature Demodulator
-###################################################
- -->
-<block>
- <name>Quadrature Demod</name>
- <key>analog_quadrature_demod_cf</key>
- <import>from gnuradio import analog</import>
- <import>import math</import>
- <make>analog.quadrature_demod_cf($gain)</make>
- <callback>set_gain($gain)</callback>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>samp_rate/(2*math.pi*fsk_deviation_hz/8.0)</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
- <doc>
-This can be used to demod FM, FSK, GMSK, etc. The input is complex
-baseband, output is the signal frequency in relation to the sample
-rated, multiplied with the gain.
-
-Mathematically, this block calculates the product of the one-sample
-delayed input and the conjugate undelayed signal, and then calculates
-the argument of the resulting complex number:
-
-y[n] = \mathrm{arg}\left(x[n] \, \bar x [n-1]\right).
-
-Let x be a complex sinusoid with amplitude A>0, (absolute)
-frequency f\in\mathbb R and phase \phi_0\in[0;2\pi] sampled at
-f_s>0 so, without loss of generality,
-
-x[n]= A e^{j2\pi( \frac f{f_s} n + \phi_0)}\f
-
-then
-
-y[n] = \mathrm{arg}\left(A e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} \overline{A e^{j2\pi( \frac f{f_s} (n-1) + \phi_0)}}\right)\\
- = \mathrm{arg}\left(A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0\right)} e^{-j2\pi( \frac f{f_s} (n-1) + \phi_0)}\right)\\
- = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n + \phi_0 - \frac f{f_s} (n-1) - \phi_0\right)}\right)\\
- = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} n - \frac f{f_s} (n-1)\right)}\right)\\
- = \mathrm{arg}\left( A^2 e^{j2\pi\left( \frac f{f_s} \left(n-(n-1)\right)\right)}\right)\\
- = \mathrm{arg}\left( A^2 e^{j2\pi \frac f{f_s}}\right) \intertext{$A$ is real, so is $A^2$ and hence only \textit{scales}, therefore $\mathrm{arg}(\cdot)$ is invariant:} = \mathrm{arg}\left(e^{j2\pi \frac f{f_s}}\right)\\
-= \frac f{f_s}\\
- </doc>
-</block>
diff --git a/gr-analog/grc/analog_rail_ff.block.yml b/gr-analog/grc/analog_rail_ff.block.yml
new file mode 100644
index 0000000000..8a2d2e8a54
--- /dev/null
+++ b/gr-analog/grc/analog_rail_ff.block.yml
@@ -0,0 +1,27 @@
+id: analog_rail_ff
+label: Rail
+
+parameters:
+- id: lo
+ label: Low clipping
+ dtype: real
+- id: hi
+ label: Hi clipping
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.rail_ff(${lo}, ${hi})
+ callbacks:
+ - set_lo(${lo})
+ - set_hi(${hi})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_rail_ff.xml b/gr-analog/grc/analog_rail_ff.xml
deleted file mode 100644
index 87dff09771..0000000000
--- a/gr-analog/grc/analog_rail_ff.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#
-# Copyright 2012 Free Software Foundation, Inc.
-#
-# This file is part of GNU Radio
-#
-# GNU Radio is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GNU Radio is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Radio; see the file COPYING. If not, write to
-# the Free Software Foundation, Inc., 51 Franklin Street,
-# Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Rail
-###################################################
- -->
-<block>
- <name>Rail</name>
- <key>analog_rail_ff</key>
- <import>from gnuradio import analog</import>
- <make>analog.rail_ff($lo, $hi)</make>
- <callback>set_lo($lo)</callback>
- <callback>set_hi($hi)</callback>
- <param>
- <name>Low clipping</name>
- <key>lo</key>
- <type>real</type>
- </param>
- <param>
- <name>Hi clipping</name>
- <key>hi</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_random_source_x.block.yml b/gr-analog/grc/analog_random_source_x.block.yml
new file mode 100644
index 0000000000..595aa81b6d
--- /dev/null
+++ b/gr-analog/grc/analog_random_source_x.block.yml
@@ -0,0 +1,47 @@
+id: analog_random_source_x
+label: Random Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [i, s, b]
+ hide: part
+- id: min
+ label: Minimum
+ dtype: int
+ default: '0'
+- id: max
+ label: Maximum
+ dtype: int
+ default: '2'
+- id: num_samps
+ label: Num Samples
+ dtype: int
+ default: '1000'
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import numpy
+ make: blocks.vector_source_${type.fcn}(map(int, numpy.random.randint(${min}, ${max},
+ ${num_samps})), ${repeat})
+
+documentation: |-
+ Generate num samples of random numbers of [min, max). Repeat samples if specified.
+
+ Ex: With min=0 and max=2, the sequence 01110101... will be generated.
+
+file_format: 1
diff --git a/gr-analog/grc/analog_random_source_x.xml b/gr-analog/grc/analog_random_source_x.xml
deleted file mode 100644
index e466c02fbe..0000000000
--- a/gr-analog/grc/analog_random_source_x.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Random Source:
-## Custom block
-###################################################
- -->
-<block>
- <name>Random Source</name>
- <key>analog_random_source_x</key>
- <import>from gnuradio import blocks</import>
- <import>import numpy</import>
- <make>blocks.vector_source_$(type.fcn)(map(int, numpy.random.randint($min, $max, $num_samps)), $repeat)</make>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>Minimum</name>
- <key>min</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Maximum</name>
- <key>max</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Samples</name>
- <key>num_samps</key>
- <value>1000</value>
- <type>int</type>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
- <doc>
-Generate num samples of random numbers of [min, max). Repeat samples if specified.
-
-Ex: With min=0 and max=2, the sequence 01110101... will be generated.
- </doc>
-</block>
diff --git a/gr-analog/grc/analog_random_uniform_source_x.block.yml b/gr-analog/grc/analog_random_uniform_source_x.block.yml
new file mode 100644
index 0000000000..d76bc903a5
--- /dev/null
+++ b/gr-analog/grc/analog_random_uniform_source_x.block.yml
@@ -0,0 +1,32 @@
+id: analog_random_uniform_source_x
+label: Random Uniform Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [i, s, b]
+ offset_type: [int, int, int]
+ hide: part
+- id: minimum
+ label: Minimum
+ dtype: int
+- id: maximum
+ label: Maximum
+ dtype: int
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.random_uniform_source_${type.fcn}(${minimum}, ${maximum}, ${seed})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_random_uniform_source_x.xml b/gr-analog/grc/analog_random_uniform_source_x.xml
deleted file mode 100644
index c81b637f97..0000000000
--- a/gr-analog/grc/analog_random_uniform_source_x.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Random Uniform Source</name>
- <key>analog_random_uniform_source_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.random_uniform_source_$(type.fcn)($minimum, $maximum, $seed)</make>
-
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- <opt>offset_type:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- <opt>offset_type:int</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- <opt>offset_type:int</opt>
- </option>
- </param>
-
- <param>
- <name>Minimum</name>
- <key>minimum</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Maximum</name>
- <key>maximum</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_sig_source_x.block.yml b/gr-analog/grc/analog_sig_source_x.block.yml
new file mode 100644
index 0000000000..2fbc853a9b
--- /dev/null
+++ b/gr-analog/grc/analog_sig_source_x.block.yml
@@ -0,0 +1,57 @@
+id: analog_sig_source_x
+label: Signal Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [c, f, i, s]
+ offset_type: [complex, real, int, int]
+ hide: part
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: waveform
+ label: Waveform
+ dtype: int
+ default: analog.GR_COS_WAVE
+ options: [analog.GR_CONST_WAVE, analog.GR_SIN_WAVE, analog.GR_COS_WAVE, analog.GR_SQR_WAVE,
+ analog.GR_TRI_WAVE, analog.GR_SAW_WAVE]
+ option_labels: [Constant, Sine, Cosine, Square, Triangle, Saw Tooth]
+- id: freq
+ label: Frequency
+ dtype: real
+ default: '1000'
+- id: amp
+ label: Amplitude
+ dtype: real
+ default: '1'
+- id: offset
+ label: Offset
+ dtype: ${ type.offset_type }
+ default: '0'
+
+inputs:
+- domain: message
+ id: freq
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.sig_source_${type.fcn}(${samp_rate}, ${waveform}, ${freq}, ${amp},
+ ${offset})
+ callbacks:
+ - set_sampling_freq(${samp_rate})
+ - set_waveform(${waveform})
+ - set_frequency(${freq})
+ - set_amplitude(${amp})
+ - set_offset(${offset})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_sig_source_x.xml b/gr-analog/grc/analog_sig_source_x.xml
deleted file mode 100644
index e3c587b254..0000000000
--- a/gr-analog/grc/analog_sig_source_x.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Signal Source
-###################################################
- -->
-<block>
- <name>Signal Source</name>
- <key>analog_sig_source_x</key>
- <import>from gnuradio import analog</import>
- <make>analog.sig_source_$(type.fcn)($samp_rate, $waveform, $freq, $amp, $offset)</make>
- <callback>set_sampling_freq($samp_rate)</callback>
- <callback>set_waveform($waveform)</callback>
- <callback>set_frequency($freq)</callback>
- <callback>set_amplitude($amp)</callback>
- <callback>set_offset($offset)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- <opt>offset_type:complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- <opt>offset_type:real</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- <opt>offset_type:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- <opt>offset_type:int</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Waveform</name>
- <key>waveform</key>
- <value>analog.GR_COS_WAVE</value>
- <type>int</type>
- <option>
- <name>Constant</name>
- <key>analog.GR_CONST_WAVE</key>
- </option>
- <option>
- <name>Sine</name>
- <key>analog.GR_SIN_WAVE</key>
- </option>
- <option>
- <name>Cosine</name>
- <key>analog.GR_COS_WAVE</key>
- </option>
- <option>
- <name>Square</name>
- <key>analog.GR_SQR_WAVE</key>
- </option>
- <option>
- <name>Triangle</name>
- <key>analog.GR_TRI_WAVE</key>
- </option>
- <option>
- <name>Saw Tooth</name>
- <key>analog.GR_SAW_WAVE</key>
- </option>
- </param>
- <param>
- <name>Frequency</name>
- <key>freq</key>
- <value>1000</value>
- <type>real</type>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amp</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Offset</name>
- <key>offset</key>
- <value>0</value>
- <type>$type.offset_type</type>
- </param>
- <sink>
- <name>freq</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_simple_squelch_cc.block.yml b/gr-analog/grc/analog_simple_squelch_cc.block.yml
new file mode 100644
index 0000000000..17a98eb4ba
--- /dev/null
+++ b/gr-analog/grc/analog_simple_squelch_cc.block.yml
@@ -0,0 +1,27 @@
+id: analog_simple_squelch_cc
+label: Simple Squelch
+
+parameters:
+- id: threshold
+ label: Threshold (dB)
+ dtype: real
+- id: alpha
+ label: Alpha
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import analog
+ make: analog.simple_squelch_cc(${threshold}, ${alpha})
+ callbacks:
+ - set_threshold(${threshold})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_simple_squelch_cc.xml b/gr-analog/grc/analog_simple_squelch_cc.xml
deleted file mode 100644
index 648921a149..0000000000
--- a/gr-analog/grc/analog_simple_squelch_cc.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Simple Squelch
-###################################################
- -->
-<block>
- <name>Simple Squelch</name>
- <key>analog_simple_squelch_cc</key>
- <import>from gnuradio import analog</import>
- <make>analog.simple_squelch_cc($threshold, $alpha)</make>
- <callback>set_threshold($threshold)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Threshold (dB)</name>
- <key>threshold</key>
- <type>real</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_standard_squelch.block.yml b/gr-analog/grc/analog_standard_squelch.block.yml
new file mode 100644
index 0000000000..d753dfaf01
--- /dev/null
+++ b/gr-analog/grc/analog_standard_squelch.block.yml
@@ -0,0 +1,28 @@
+id: analog_standard_squelch
+label: Standard Squelch
+
+parameters:
+- id: audio_rate
+ label: Audio Rate
+ dtype: real
+- id: threshold
+ label: Threshold
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: |-
+ analog.standard_squelch(audio_rate=${audio_rate})
+ self.${id}.set_threshold(${threshold})
+ callbacks:
+ - set_threshold(${threshold})
+
+file_format: 1
diff --git a/gr-analog/grc/analog_standard_squelch.xml b/gr-analog/grc/analog_standard_squelch.xml
deleted file mode 100644
index 264c57ab56..0000000000
--- a/gr-analog/grc/analog_standard_squelch.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Standard Squelch
-###################################################
- -->
-<block>
- <name>Standard Squelch</name>
- <key>analog_standard_squelch</key>
- <import>from gnuradio import analog</import>
- <make>analog.standard_squelch(audio_rate=$audio_rate)
-self.$(id).set_threshold($threshold)</make>
- <callback>set_threshold($threshold)</callback>
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_wfm_rcv.block.yml b/gr-analog/grc/analog_wfm_rcv.block.yml
new file mode 100644
index 0000000000..eb3a84893e
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_rcv.block.yml
@@ -0,0 +1,25 @@
+id: analog_wfm_rcv
+label: WBFM Receive
+
+parameters:
+- id: quad_rate
+ label: Quadrature Rate
+ dtype: real
+- id: audio_decimation
+ label: Audio Decimation
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.wfm_rcv(\n\tquad_rate=${quad_rate},\n\taudio_decimation=${audio_decimation},\n\
+ )"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_wfm_rcv.xml b/gr-analog/grc/analog_wfm_rcv.xml
deleted file mode 100644
index ce2abb92de..0000000000
--- a/gr-analog/grc/analog_wfm_rcv.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Receive
-###################################################
- -->
-<block>
- <name>WBFM Receive</name>
- <key>analog_wfm_rcv</key>
- <import>from gnuradio import analog</import>
- <make>analog.wfm_rcv(
- quad_rate=$quad_rate,
- audio_decimation=$audio_decimation,
-)</make>
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Audio Decimation</name>
- <key>audio_decimation</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_wfm_rcv_pll.block.yml b/gr-analog/grc/analog_wfm_rcv_pll.block.yml
new file mode 100644
index 0000000000..e5e3d76ccc
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_rcv_pll.block.yml
@@ -0,0 +1,29 @@
+id: analog_wfm_rcv_pll
+label: WBFM Receive PLL
+
+parameters:
+- id: quad_rate
+ label: Quadrature Rate
+ dtype: real
+- id: audio_decimation
+ label: Audio Decimation
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- label: Lout
+ domain: stream
+ dtype: float
+- label: Rout
+ domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.wfm_rcv_pll(\n\tdemod_rate=${quad_rate},\n\taudio_decimation=${audio_decimation},\n\
+ )"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_wfm_rcv_pll.xml b/gr-analog/grc/analog_wfm_rcv_pll.xml
deleted file mode 100644
index db31ed9bee..0000000000
--- a/gr-analog/grc/analog_wfm_rcv_pll.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Receive PLL
-###################################################
- -->
-<block>
- <name>WBFM Receive PLL</name>
- <key>analog_wfm_rcv_pll</key>
- <import>from gnuradio import analog</import>
- <make>analog.wfm_rcv_pll(
- demod_rate=$quad_rate,
- audio_decimation=$audio_decimation,
-)</make>
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Audio Decimation</name>
- <key>audio_decimation</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>Lout</name>
- <type>float</type>
- </source>
- <source>
- <name>Rout</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-analog/grc/analog_wfm_tx.block.yml b/gr-analog/grc/analog_wfm_tx.block.yml
new file mode 100644
index 0000000000..1e4346c41d
--- /dev/null
+++ b/gr-analog/grc/analog_wfm_tx.block.yml
@@ -0,0 +1,40 @@
+id: analog_wfm_tx
+label: WBFM Transmit
+
+parameters:
+- id: audio_rate
+ label: Audio Rate
+ dtype: int
+- id: quad_rate
+ label: Quadrature Rate
+ dtype: int
+- id: tau
+ label: Tau
+ dtype: real
+ default: 75e-6
+- id: max_dev
+ label: Max Deviation
+ dtype: real
+ default: 75e3
+- id: fh
+ label: Preemphasis High Corner Freq
+ dtype: real
+ default: '-1.0'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+asserts:
+- ${ (quad_rate)%(audio_rate) == 0 }
+
+templates:
+ imports: from gnuradio import analog
+ make: "analog.wfm_tx(\n\taudio_rate=${audio_rate},\n\tquad_rate=${quad_rate},\n\
+ \ttau=${tau},\n\tmax_dev=${max_dev},\n\tfh=${fh},\n)"
+
+file_format: 1
diff --git a/gr-analog/grc/analog_wfm_tx.xml b/gr-analog/grc/analog_wfm_tx.xml
deleted file mode 100644
index 507c2ea894..0000000000
--- a/gr-analog/grc/analog_wfm_tx.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##WBFM Transmit
-###################################################
- -->
-<block>
- <name>WBFM Transmit</name>
- <key>analog_wfm_tx</key>
- <import>from gnuradio import analog</import>
- <make>analog.wfm_tx(
- audio_rate=$audio_rate,
- quad_rate=$quad_rate,
- tau=$tau,
- max_dev=$max_dev,
- fh=$fh,
-)</make>
- <param>
- <name>Audio Rate</name>
- <key>audio_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Quadrature Rate</name>
- <key>quad_rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Tau</name>
- <key>tau</key>
- <value>75e-6</value>
- <type>real</type>
- </param>
- <param>
- <name>Max Deviation</name>
- <key>max_dev</key>
- <value>75e3</value>
- <type>real</type>
- </param>
- <param>
- <name>Preemphasis High Corner Freq</name>
- <key>fh</key>
- <value>-1.0</value>
- <type>real</type>
- </param>
- <check>($quad_rate)%($audio_rate) == 0</check>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-audio/grc/CMakeLists.txt b/gr-audio/grc/CMakeLists.txt
index 7da5fbc352..ead168ee4c 100644
--- a/gr-audio/grc/CMakeLists.txt
+++ b/gr-audio/grc/CMakeLists.txt
@@ -18,5 +18,5 @@
# Boston, MA 02110-1301, USA.
########################################################################
-file(GLOB xml_files "*.xml")
-install(FILES ${xml_files} DESTINATION ${GRC_BLOCKS_DIR})
+file(GLOB yml_files "*.yml")
+install(FILES ${yml_files} DESTINATION ${GRC_BLOCKS_DIR})
diff --git a/gr-audio/grc/audio_sink.block.yml b/gr-audio/grc/audio_sink.block.yml
new file mode 100644
index 0000000000..05dd947f81
--- /dev/null
+++ b/gr-audio/grc/audio_sink.block.yml
@@ -0,0 +1,49 @@
+id: audio_sink
+label: Audio Sink
+category: '[Core]/Audio'
+flags: throttle
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: int
+ default: samp_rate
+ options: ['16000', '22050', '24000', '32000', '44100', '48000']
+ option_labels: [16KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz]
+- id: device_name
+ label: Device Name
+ dtype: string
+ hide: ${ ('none' if device_name else 'part') }
+- id: ok_to_block
+ label: OK to Block
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '1'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: float
+ multiplicity: ${ num_inputs }
+
+asserts:
+- ${ 0 < num_inputs }
+
+templates:
+ imports: from gnuradio import audio
+ make: audio.sink(${samp_rate}, ${device_name}, ${ok_to_block})
+
+documentation: |-
+ Not all sampling rates will be supported by your hardware.
+
+ Leave the device name blank to choose deafult audio device. ALSA users with audio trouble may try setting the device name to plughw:0,0
+
+ The audio sink can have multiple inputs depending upon your hardware. For example, set the inputs to 2 for stereo audio.
+
+file_format: 1
diff --git a/gr-audio/grc/audio_sink.xml b/gr-audio/grc/audio_sink.xml
deleted file mode 100644
index 9181055cd9..0000000000
--- a/gr-audio/grc/audio_sink.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Audio Sink
-###################################################
- -->
-<block>
- <name>Audio Sink</name>
- <key>audio_sink</key>
- <category>[Core]/Audio</category>
- <flags>throttle</flags>
- <import>from gnuradio import audio</import>
- <make>audio.sink($samp_rate, $device_name, $ok_to_block)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>int</type>
- <option>
- <name>16KHz</name>
- <key>16000</key>
- </option>
- <option>
- <name>22.05KHz</name>
- <key>22050</key>
- </option>
- <option>
- <name>24KHz</name>
- <key>24000</key>
- </option>
- <option>
- <name>32KHz</name>
- <key>32000</key>
- </option>
- <option>
- <name>44.1KHz</name>
- <key>44100</key>
- </option>
- <option>
- <name>48KHz</name>
- <key>48000</key>
- </option>
- </param>
- <param>
- <name>Device Name</name>
- <key>device_name</key>
- <value></value>
- <type>string</type>
- <hide>#if $device_name() then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>OK to Block</name>
- <key>ok_to_block</key>
- <value>True</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>0 &lt; $num_inputs</check>
- <sink>
- <name>in</name>
- <type>float</type>
- <nports>$num_inputs</nports>
- </sink>
- <doc>
-Not all sampling rates will be supported by your hardware.
-
-Leave the device name blank to choose deafult audio device. \
-ALSA users with audio trouble may try setting the device name to plughw:0,0
-
-The audio sink can have multiple inputs depending upon your hardware. \
-For example, set the inputs to 2 for stereo audio.
- </doc>
-</block>
diff --git a/gr-audio/grc/audio_source.block.yml b/gr-audio/grc/audio_source.block.yml
new file mode 100644
index 0000000000..cf22ab3cbe
--- /dev/null
+++ b/gr-audio/grc/audio_source.block.yml
@@ -0,0 +1,49 @@
+id: audio_source
+label: Audio Source
+category: '[Core]/Audio'
+flags: throttle
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: int
+ default: samp_rate
+ options: ['16000', '22050', '24000', '32000', '44100', '48000']
+ option_labels: [16KHz, 22.05KHz, 24KHz, 32KHz, 44.1KHz, 48KHz]
+- id: device_name
+ label: Device Name
+ dtype: string
+ hide: ${ ('none' if device_name else 'part') }
+- id: ok_to_block
+ label: OK to Block
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: part
+- id: num_outputs
+ label: Num Outputs
+ dtype: int
+ default: '1'
+ hide: part
+
+outputs:
+- domain: stream
+ dtype: float
+ multiplicity: ${ num_outputs }
+
+asserts:
+- ${ 0 < num_outputs }
+
+templates:
+ imports: from gnuradio import audio
+ make: audio.source(${samp_rate}, ${device_name}, ${ok_to_block})
+
+documentation: |-
+ Not all sampling rates will be supported by your hardware.
+
+ Leave the device name blank to choose deafult audio device. ALSA users with audio trouble may try setting the device name to plughw:0,0
+
+ The audio source can have multiple outputs depending upon your hardware. For example, set the outputs to 2 for stereo audio.
+
+file_format: 1
diff --git a/gr-audio/grc/audio_source.xml b/gr-audio/grc/audio_source.xml
deleted file mode 100644
index 044b14466f..0000000000
--- a/gr-audio/grc/audio_source.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Audio Source
-###################################################
- -->
-<block>
- <name>Audio Source</name>
- <key>audio_source</key>
- <category>[Core]/Audio</category>
- <flags>throttle</flags>
- <import>from gnuradio import audio</import>
- <make>audio.source($samp_rate, $device_name, $ok_to_block)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>int</type>
- <option>
- <name>16KHz</name>
- <key>16000</key>
- </option>
- <option>
- <name>22.05KHz</name>
- <key>22050</key>
- </option>
- <option>
- <name>24KHz</name>
- <key>24000</key>
- </option>
- <option>
- <name>32KHz</name>
- <key>32000</key>
- </option>
- <option>
- <name>44.1KHz</name>
- <key>44100</key>
- </option>
- <option>
- <name>48KHz</name>
- <key>48000</key>
- </option>
- </param>
- <param>
- <name>Device Name</name>
- <key>device_name</key>
- <value></value>
- <type>string</type>
- <hide>#if $device_name() then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>OK to Block</name>
- <key>ok_to_block</key>
- <value>True</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Num Outputs</name>
- <key>num_outputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>0 &lt; $num_outputs</check>
- <source>
- <name>out</name>
- <type>float</type>
- <nports>$num_outputs</nports>
- </source>
- <doc>
-Not all sampling rates will be supported by your hardware.
-
-Leave the device name blank to choose deafult audio device. \
-ALSA users with audio trouble may try setting the device name to plughw:0,0
-
-The audio source can have multiple outputs depending upon your hardware. \
-For example, set the outputs to 2 for stereo audio.
- </doc>
-</block>
diff --git a/gr-blocks/grc/CMakeLists.txt b/gr-blocks/grc/CMakeLists.txt
index 2dd1481a47..3d0e5d81a0 100644
--- a/gr-blocks/grc/CMakeLists.txt
+++ b/gr-blocks/grc/CMakeLists.txt
@@ -18,14 +18,14 @@
# Boston, MA 02110-1301, USA.
########################################################################
-file(GLOB xml_files "*.xml")
+file(GLOB yml_files "*.yml")
# Force out the controlport GRC blocks if we've disabled it.
if(NOT ENABLE_GR_CTRLPORT)
- list(REMOVE_ITEM xml_files
- ${CMAKE_CURRENT_SOURCE_DIR}/ctrlport_probe_c.xml
- ${CMAKE_CURRENT_SOURCE_DIR}/ctrlport_probe2_c.xml
+ list(REMOVE_ITEM yml_files
+ ${CMAKE_CURRENT_SOURCE_DIR}/ctrlport_probe_c.block.yml
+ ${CMAKE_CURRENT_SOURCE_DIR}/ctrlport_probe2_c.block.yml
)
endif(NOT ENABLE_GR_CTRLPORT)
-install(FILES ${xml_files} DESTINATION ${GRC_BLOCKS_DIR})
+install(FILES ${yml_files} DESTINATION ${GRC_BLOCKS_DIR})
diff --git a/gr-blocks/grc/blocks.tree.yml b/gr-blocks/grc/blocks.tree.yml
new file mode 100644
index 0000000000..ebe509ddc4
--- /dev/null
+++ b/gr-blocks/grc/blocks.tree.yml
@@ -0,0 +1,171 @@
+'[Core]':
+- Audio:
+ - blocks_wavfile_source
+ - blocks_wavfile_sink
+- Boolean Operators:
+ - blocks_and_xx
+ - blocks_and_const_xx
+ - blocks_not_xx
+ - blocks_or_xx
+ - blocks_xor_xx
+- Byte Operators:
+ - blocks_packed_to_unpacked_xx
+ - blocks_unpacked_to_packed_xx
+ - blocks_pack_k_bits_bb
+ - blocks_unpack_k_bits_bb
+ - blocks_repack_bits_bb
+- Control Port:
+ - blocks_ctrlport_monitor
+ - blocks_ctrlport_monitor_performance
+ - blocks_ctrlport_probe2_x
+ - blocks_ctrlport_probe2_c
+ - blocks_ctrlport_probe_c
+- Debug Tools:
+ - blocks_vector_sink_x
+ - blocks_tag_debug
+ - blocks_message_debug
+ - blocks_random_pdu
+ - blocks_message_strobe
+ - blocks_message_strobe_random
+ - blocks_tags_strobe
+ - blocks_test_tag_variable_rate_ff
+- File Operators:
+ - blocks_wavfile_source
+ - blocks_wavfile_sink
+ - blocks_file_source
+ - blocks_file_sink
+ - blocks_file_descriptor_source
+ - blocks_file_descriptor_sink
+ - blocks_file_meta_source
+ - blocks_file_meta_sink
+ - blocks_tagged_file_sink
+- Level Controllers:
+ - blocks_mute_xx
+ - blocks_sample_and_hold_xx
+ - blocks_moving_average_xx
+ - blocks_threshold_ff
+- Math Operators:
+ - blocks_abs_xx
+ - blocks_add_xx
+ - blocks_add_const_vxx
+ - blocks_divide_xx
+ - blocks_exponentiate_const_cci
+ - blocks_multiply_xx
+ - blocks_multiply_const_xx
+ - blocks_multiply_const_vxx
+ - blocks_multiply_conjugate_cc
+ - blocks_multiply_matrix_xx
+ - blocks_multiply_by_tag_value_cc
+ - blocks_sub_xx
+ - blocks_conjugate_cc
+ - blocks_integrate_xx
+ - blocks_nlog10_ff
+ - blocks_rms_xx
+ - blocks_rotator_cc
+ - blocks_transcendental
+ - blocks_argmax_xx
+ - blocks_max_xx
+ - blocks_min_xx
+- Measurement Tools:
+ - blocks_message_debug
+ - blocks_tag_debug
+ - blocks_probe_signal_x
+ - blocks_probe_signal_vx
+ - blocks_probe_rate
+ - blocks_ctrlport_probe2_c
+ - blocks_ctrlport_probe_c
+- Message Tools:
+ - blocks_message_strobe
+ - blocks_message_strobe_random
+ - blocks_message_debug
+ - blocks_pdu_filter
+ - blocks_pdu_remove
+ - blocks_pdu_set
+ - blocks_pdu_to_tagged_stream
+ - blocks_tagged_stream_multiply_length
+ - blocks_tagged_stream_to_pdu
+ - blocks_random_pdu
+- Misc:
+ - blocks_throttle
+ - blocks_vector_source_x
+ - blocks_head
+ - blocks_skiphead
+ - blocks_delay
+ - blocks_null_source
+ - blocks_null_sink
+ - blocks_copy
+ - blocks_nop
+ - xmlrpc_server
+ - xmlrpc_client
+- Modulators:
+ - blocks_vco_f
+ - blocks_vco_c
+- Networking Tools:
+ - blocks_tuntap_pdu
+ - blocks_socket_pdu
+ - blocks_tcp_server_sink
+ - blocks_udp_source
+ - blocks_udp_sink
+- Peak Detectors:
+ - blocks_burst_tagger
+ - blocks_peak_detector_xb
+ - blocks_peak_detector2_fb
+ - blocks_plateau_detector_fb
+- Stream Operators:
+ - blocks_deinterleave
+ - blocks_interleave
+ - blocks_keep_m_in_n
+ - blocks_keep_one_in_n
+ - blocks_stream_mux
+ - blocks_stream_to_streams
+ - blocks_stream_to_vector
+ - blocks_streams_to_stream
+ - blocks_streams_to_vector
+ - blocks_stream_to_vector_decimator
+ - blocks_vector_to_stream
+ - blocks_vector_to_streams
+ - blocks_patterned_interleaver
+ - blocks_endian_swap
+ - blocks_vector_insert_x
+ - blocks_tagged_stream_mux
+ - blocks_repeat
+ - blocks_regenerate_bb
+ - blocks_stretch_ff
+- Stream Tag Tools:
+ - blocks_tag_debug
+ - blocks_tag_gate
+ - blocks_tag_share
+ - blocks_tagged_file_sink
+ - blocks_tagged_stream_mux
+ - blocks_tagged_stream_align
+ - blocks_stream_to_tagged_stream
+ - blocks_test_tag_variable_rate_ff
+- Type Converters:
+ - blocks_char_to_float
+ - blocks_char_to_short
+ - blocks_complex_to_interleaved_char
+ - blocks_complex_to_interleaved_short
+ - blocks_complex_to_float
+ - blocks_complex_to_magphase
+ - blocks_complex_to_imag
+ - blocks_complex_to_real
+ - blocks_complex_to_mag
+ - blocks_complex_to_mag_squared
+ - blocks_complex_to_arg
+ - blocks_float_to_char
+ - blocks_float_to_complex
+ - blocks_magphase_to_complex
+ - blocks_float_to_int
+ - blocks_float_to_short
+ - blocks_float_to_uchar
+ - blocks_int_to_float
+ - blocks_interleaved_short_to_complex
+ - blocks_interleaved_char_to_complex
+ - blocks_short_to_char
+ - blocks_short_to_float
+ - blocks_uchar_to_float
+- Waveform Generators:
+ - blocks_vco_f
+ - blocks_vco_c
+- Variables:
+ - variable_tag_object
diff --git a/gr-blocks/grc/blocks_abs_xx.block.yml b/gr-blocks/grc/blocks_abs_xx.block.yml
new file mode 100644
index 0000000000..12d9a8fc3a
--- /dev/null
+++ b/gr-blocks/grc/blocks_abs_xx.block.yml
@@ -0,0 +1,32 @@
+id: blocks_abs_xx
+label: Abs
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, float]
+ option_attributes:
+ fcn: [ii, ss, ff]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.abs_${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_abs_xx.xml b/gr-blocks/grc/blocks_abs_xx.xml
deleted file mode 100644
index 77298716c8..0000000000
--- a/gr-blocks/grc/blocks_abs_xx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Abs Block
-###################################################
- -->
-<block>
- <name>Abs</name>
- <key>blocks_abs_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.abs_$(type.fcn)($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_add_const_vxx.block.yml b/gr-blocks/grc/blocks_add_const_vxx.block.yml
new file mode 100644
index 0000000000..b95065cdba
--- /dev/null
+++ b/gr-blocks/grc/blocks_add_const_vxx.block.yml
@@ -0,0 +1,43 @@
+id: blocks_add_const_vxx
+label: Add Const
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ const_type: [complex_vector, real_vector, int_vector, int_vector]
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: const
+ label: Constant
+ dtype: ${ type.const_type }
+ default: '0'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ len(const) == vlen }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.add_const_v${type.fcn}(${const})
+ callbacks:
+ - set_k(${const})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_add_const_vxx.xml b/gr-blocks/grc/blocks_add_const_vxx.xml
deleted file mode 100644
index 96303acef1..0000000000
--- a/gr-blocks/grc/blocks_add_const_vxx.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Add Const Block:
-## all types, 1 output, 1 input & const
-###################################################
- -->
-<block>
- <name>Add Const</name>
- <key>blocks_add_const_vxx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.add_const_v$(type.fcn)($const)</make>
- <callback>set_k($const)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>const_type:complex_vector</opt>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>const_type:real_vector</opt>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>const_type:int_vector</opt>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>const_type:int_vector</opt>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Constant</name>
- <key>const</key>
- <value>0</value>
- <type>$type.const_type</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>len($const) == $vlen</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_add_xx.block.yml b/gr-blocks/grc/blocks_add_xx.block.yml
new file mode 100644
index 0000000000..38df37a65b
--- /dev/null
+++ b/gr-blocks/grc/blocks_add_xx.block.yml
@@ -0,0 +1,42 @@
+id: blocks_add_xx
+label: Add
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_inputs > 1 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.add_v${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_add_xx.xml b/gr-blocks/grc/blocks_add_xx.xml
deleted file mode 100644
index 951dff5e5b..0000000000
--- a/gr-blocks/grc/blocks_add_xx.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Add Block:
-## all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Add</name>
- <key>blocks_add_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.add_v$(type.fcn)($vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt; 1</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_and_const_xx.block.yml b/gr-blocks/grc/blocks_and_const_xx.block.yml
new file mode 100644
index 0000000000..459527260c
--- /dev/null
+++ b/gr-blocks/grc/blocks_and_const_xx.block.yml
@@ -0,0 +1,31 @@
+id: blocks_and_const_xx
+label: And Const
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: const
+ label: Constant
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.and_const_${type.fcn}(${const})
+ callbacks:
+ - set_k(${const})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_and_const_xx.xml b/gr-blocks/grc/blocks_and_const_xx.xml
deleted file mode 100644
index d0abbfe51b..0000000000
--- a/gr-blocks/grc/blocks_and_const_xx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## And Const Block:
-## all types, 1 output, 1 input & const
-###################################################
- -->
-<block>
- <name>And Const</name>
- <key>blocks_and_const_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.and_const_$(type.fcn)($const)</make>
- <callback>set_k($const)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Constant</name>
- <key>const</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_and_xx.block.yml b/gr-blocks/grc/blocks_and_xx.block.yml
new file mode 100644
index 0000000000..a8bba020a5
--- /dev/null
+++ b/gr-blocks/grc/blocks_and_xx.block.yml
@@ -0,0 +1,34 @@
+id: blocks_and_xx
+label: And
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+asserts:
+- ${ num_inputs >= 2 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.and_${type.fcn}()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_and_xx.xml b/gr-blocks/grc/blocks_and_xx.xml
deleted file mode 100644
index 317a0f6457..0000000000
--- a/gr-blocks/grc/blocks_and_xx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Logical And Block
-###################################################
- -->
-<block>
- <name>And</name>
- <key>blocks_and_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.and_$(type.fcn)()</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 2</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_argmax_xx.block.yml b/gr-blocks/grc/blocks_argmax_xx.block.yml
new file mode 100644
index 0000000000..723f3fed6a
--- /dev/null
+++ b/gr-blocks/grc/blocks_argmax_xx.block.yml
@@ -0,0 +1,45 @@
+id: blocks_argmax_xx
+label: Argmax
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [float, int, short]
+ option_attributes:
+ fcn: [fs, is, dd]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- label: max_vec
+ domain: stream
+ dtype: short
+- label: max_inp
+ domain: stream
+ dtype: short
+
+asserts:
+- ${ num_inputs >= 1 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.argmax_${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_argmax_xx.xml b/gr-blocks/grc/blocks_argmax_xx.xml
deleted file mode 100644
index 7adfa75973..0000000000
--- a/gr-blocks/grc/blocks_argmax_xx.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##ArgMax:
-## 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Argmax</name>
- <key>blocks_argmax_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.argmax_$(type.fcn)($vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:fs</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:is</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:dd</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 1</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>max_vec</name>
- <type>short</type>
- </source>
- <source>
- <name>max_inp</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_block_tree.xml b/gr-blocks/grc/blocks_block_tree.xml
deleted file mode 100644
index ef2703f695..0000000000
--- a/gr-blocks/grc/blocks_block_tree.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012,2013 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for gr-blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Audio</name>
- <block>blocks_wavfile_source</block>
- <block>blocks_wavfile_sink</block>
- </cat>
- <cat>
- <name>Boolean Operators</name>
- <block>blocks_and_xx</block>
- <block>blocks_and_const_xx</block>
- <block>blocks_not_xx</block>
- <block>blocks_or_xx</block>
- <block>blocks_xor_xx</block>
- </cat>
- <cat>
- <name>Byte Operators</name>
- <block>blocks_packed_to_unpacked_xx</block>
- <block>blocks_unpacked_to_packed_xx</block>
- <block>blocks_pack_k_bits_bb</block>
- <block>blocks_unpack_k_bits_bb</block>
- <block>blocks_repack_bits_bb</block>
- </cat>
- <cat>
- <name>Control Port</name>
- <block>blocks_ctrlport_monitor</block>
- <block>blocks_ctrlport_monitor_performance</block>
- <block>blocks_ctrlport_probe2_x</block>
- <block>blocks_ctrlport_probe2_c</block>
- <block>blocks_ctrlport_probe_c</block>
- </cat>
- <cat>
- <name>Debug Tools</name>
- <block>blocks_vector_sink_x</block>
- <block>blocks_tag_debug</block>
- <block>blocks_message_debug</block>
- <block>blocks_random_pdu</block>
- <block>blocks_message_strobe</block>
- <block>blocks_message_strobe_random</block>
- <block>blocks_tags_strobe</block>
- <block>blocks_test_tag_variable_rate_ff</block>
- </cat>
- <cat>
- <name>File Operators</name>
- <block>blocks_wavfile_source</block>
- <block>blocks_wavfile_sink</block>
- <block>blocks_file_source</block>
- <block>blocks_file_sink</block>
- <block>blocks_file_descriptor_source</block>
- <block>blocks_file_descriptor_sink</block>
- <block>blocks_file_meta_source</block>
- <block>blocks_file_meta_sink</block>
- <block>blocks_tagged_file_sink</block>
- </cat>
- <cat>
- <name>Level Controllers</name>
- <block>blocks_mute_xx</block>
- <block>blocks_sample_and_hold_xx</block>
- <block>blocks_moving_average_xx</block>
- <block>blocks_threshold_ff</block>
- </cat>
- <cat>
- <name>Math Operators</name>
- <block>blocks_abs_xx</block>
- <block>blocks_add_xx</block>
- <block>blocks_add_const_vxx</block>
- <block>blocks_divide_xx</block>
- <block>blocks_exponentiate_const_cci</block>
- <block>blocks_multiply_xx</block>
- <block>blocks_multiply_const_xx</block>
- <block>blocks_multiply_const_vxx</block>
- <block>blocks_multiply_conjugate_cc</block>
- <block>blocks_multiply_matrix_xx</block>
- <block>blocks_multiply_by_tag_value_cc</block>
- <block>blocks_sub_xx</block>
- <block>blocks_conjugate_cc</block>
- <block>blocks_integrate_xx</block>
- <block>blocks_nlog10_ff</block>
- <block>blocks_rms_xx</block>
- <block>blocks_rotator_cc</block>
- <block>blocks_transcendental</block>
- <block>blocks_argmax_xx</block>
- <block>blocks_max_xx</block>
- <block>blocks_min_xx</block>
- </cat>
- <cat>
- <name>Measurement Tools</name>
- <block>blocks_message_debug</block>
- <block>blocks_tag_debug</block>
- <block>blocks_probe_signal_x</block>
- <block>blocks_probe_signal_vx</block>
- <block>blocks_probe_rate</block>
- <block>blocks_ctrlport_probe2_c</block>
- <block>blocks_ctrlport_probe_c</block>
- </cat>
- <cat>
- <name>Message Tools</name>
- <block>blocks_message_strobe</block>
- <block>blocks_message_strobe_random</block>
- <block>blocks_message_debug</block>
- <block>blocks_pdu_filter</block>
- <block>blocks_pdu_remove</block>
- <block>blocks_pdu_set</block>
- <block>blocks_pdu_to_tagged_stream</block>
- <block>blocks_tagged_stream_multiply_length</block>
- <block>blocks_tagged_stream_to_pdu</block>
- <block>blocks_random_pdu</block>
- </cat>
- <cat>
- <name>Misc</name>
- <block>blocks_throttle</block>
- <block>blocks_vector_source_x</block>
- <block>blocks_head</block>
- <block>blocks_skiphead</block>
- <block>blocks_delay</block>
- <block>blocks_null_source</block>
- <block>blocks_null_sink</block>
- <block>blocks_copy</block>
- <block>blocks_nop</block>
- <block>xmlrpc_server</block>
- <block>xmlrpc_client</block>
- </cat>
- <cat>
- <name>Modulators</name>
- <block>blocks_vco_f</block>
- <block>blocks_vco_c</block>
- </cat>
- <cat>
- <name>Networking Tools</name>
- <block>blocks_tuntap_pdu</block>
- <block>blocks_socket_pdu</block>
- <block>blocks_tcp_server_sink</block>
- <block>blocks_udp_source</block>
- <block>blocks_udp_sink</block>
- </cat>
- <cat>
- <name>Peak Detectors</name>
- <block>blocks_burst_tagger</block>
- <block>blocks_peak_detector_xb</block>
- <block>blocks_peak_detector2_fb</block>
- <block>blocks_plateau_detector_fb</block>
- </cat>
- <cat>
- <name>Stream Operators</name>
- <block>blocks_deinterleave</block>
- <block>blocks_interleave</block>
- <block>blocks_keep_m_in_n</block>
- <block>blocks_keep_one_in_n</block>
- <block>blocks_stream_mux</block>
- <block>blocks_stream_to_streams</block>
- <block>blocks_stream_to_vector</block>
- <block>blocks_streams_to_stream</block>
- <block>blocks_streams_to_vector</block>
- <block>blocks_stream_to_vector_decimator</block>
- <block>blocks_vector_to_stream</block>
- <block>blocks_vector_to_streams</block>
- <block>blocks_patterned_interleaver</block>
- <block>blocks_endian_swap</block>
- <block>blocks_vector_insert_x</block>
- <block>blocks_tagged_stream_mux</block>
- <block>blocks_repeat</block>
- <block>blocks_regenerate_bb</block>
- <block>blocks_stretch_ff</block>
- </cat>
- <cat>
- <name>Stream Tag Tools</name>
- <block>blocks_tag_debug</block>
- <block>blocks_tag_gate</block>
- <block>blocks_tag_share</block>
- <block>blocks_tagged_file_sink</block>
- <block>blocks_tagged_stream_mux</block>
- <block>blocks_tagged_stream_align</block>
- <block>blocks_stream_to_tagged_stream</block>
- <block>blocks_test_tag_variable_rate_ff</block>
- </cat>
- <cat>
- <name>Type Converters</name>
- <block>blocks_char_to_float</block>
- <block>blocks_char_to_short</block>
- <block>blocks_complex_to_interleaved_char</block>
- <block>blocks_complex_to_interleaved_short</block>
- <block>blocks_complex_to_float</block>
- <block>blocks_complex_to_magphase</block>
- <block>blocks_complex_to_imag</block>
- <block>blocks_complex_to_real</block>
- <block>blocks_complex_to_mag</block>
- <block>blocks_complex_to_mag_squared</block>
- <block>blocks_complex_to_arg</block>
- <block>blocks_float_to_char</block>
- <block>blocks_float_to_complex</block>
- <block>blocks_magphase_to_complex</block>
- <block>blocks_float_to_int</block>
- <block>blocks_float_to_short</block>
- <block>blocks_float_to_uchar</block>
- <block>blocks_int_to_float</block>
- <block>blocks_interleaved_short_to_complex</block>
- <block>blocks_interleaved_char_to_complex</block>
- <block>blocks_short_to_char</block>
- <block>blocks_short_to_float</block>
- <block>blocks_uchar_to_float</block>
- </cat>
- <cat>
- <name>Waveform Generators</name>
- <block>blocks_vco_f</block>
- <block>blocks_vco_c</block>
- </cat>
- <cat>
- <name>Variables</name>
- <block>variable_tag_object</block>
- </cat>
-</cat>
diff --git a/gr-blocks/grc/blocks_burst_tagger.block.yml b/gr-blocks/grc/blocks_burst_tagger.block.yml
new file mode 100644
index 0000000000..d2c4882e30
--- /dev/null
+++ b/gr-blocks/grc/blocks_burst_tagger.block.yml
@@ -0,0 +1,52 @@
+id: blocks_burst_tagger
+label: Burst Tagger
+
+parameters:
+- id: type
+ label: Stream Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: true_key
+ label: True KeyID
+ dtype: string
+ default: burst
+- id: true_value
+ label: True Value
+ dtype: bool
+ default: 'True'
+- id: false_key
+ label: False KeyID
+ dtype: string
+ default: burst
+- id: false_value
+ label: False Value
+ dtype: bool
+ default: 'False'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: 1
+- label: trigger
+ domain: stream
+ dtype: short
+ vlen: 1
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: 1
+
+templates:
+ imports: from gnuradio import blocks
+ make: "blocks.burst_tagger(${type.size})\nself.${id}.set_true_tag(${true_key},${true_value})\n\
+ self.${id}.set_false_tag(${false_key},${false_value})\n\t"
+ callbacks:
+ - set_true_tag(${true_key},${true_value})
+ - set_false_tag(${false_key},${false_value})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_burst_tagger.xml b/gr-blocks/grc/blocks_burst_tagger.xml
deleted file mode 100644
index f603b53489..0000000000
--- a/gr-blocks/grc/blocks_burst_tagger.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Burst tagger:
-## all types, 1 output, 2 input: stream & trigger (short)
-###################################################
- -->
-<block>
- <name>Burst Tagger</name>
- <key>blocks_burst_tagger</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.burst_tagger($type.size)
-self.$(id).set_true_tag($true_key,$true_value)
-self.$(id).set_false_tag($false_key,$false_value)
- </make>
- <callback>set_true_tag($true_key,$true_value)</callback>
- <callback>set_false_tag($false_key,$false_value)</callback>
- <param>
- <name>Stream Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>True KeyID</name>
- <key>true_key</key>
- <value>burst</value>
- <type>string</type>
- </param>
- <param>
- <name>True Value</name>
- <key>true_value</key>
- <value>True</value>
- <type>bool</type>
- </param>
- <param>
- <name>False KeyID</name>
- <key>false_key</key>
- <value>burst</value>
- <type>string</type>
- </param>
- <param>
- <name>False Value</name>
- <key>false_value</key>
- <value>False</value>
- <type>bool</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>1</vlen>
- </sink>
- <sink>
- <name>trigger</name>
- <type>short</type>
- <vlen>1</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>1</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_char_to_float.block.yml b/gr-blocks/grc/blocks_char_to_float.block.yml
new file mode 100644
index 0000000000..c0858b5c1d
--- /dev/null
+++ b/gr-blocks/grc/blocks_char_to_float.block.yml
@@ -0,0 +1,31 @@
+id: blocks_char_to_float
+label: Char To Float
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.char_to_float(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_char_to_float.xml b/gr-blocks/grc/blocks_char_to_float.xml
deleted file mode 100644
index 5d367d719d..0000000000
--- a/gr-blocks/grc/blocks_char_to_float.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Char to Float:
-###################################################
- -->
-<block>
- <name>Char To Float</name>
- <key>blocks_char_to_float</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.char_to_float($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_char_to_short.block.yml b/gr-blocks/grc/blocks_char_to_short.block.yml
new file mode 100644
index 0000000000..f378e87e72
--- /dev/null
+++ b/gr-blocks/grc/blocks_char_to_short.block.yml
@@ -0,0 +1,25 @@
+id: blocks_char_to_short
+label: Char To Short
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.char_to_short(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_char_to_short.xml b/gr-blocks/grc/blocks_char_to_short.xml
deleted file mode 100644
index b19fdb46ae..0000000000
--- a/gr-blocks/grc/blocks_char_to_short.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Char to Short:
-###################################################
- -->
-<block>
- <name>Char To Short</name>
- <key>blocks_char_to_short</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.char_to_short($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_arg.block.yml b/gr-blocks/grc/blocks_complex_to_arg.block.yml
new file mode 100644
index 0000000000..4f44e4ae2c
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_arg.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_arg
+label: Complex to Arg
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_arg(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_arg.xml b/gr-blocks/grc/blocks_complex_to_arg.xml
deleted file mode 100644
index 83140501d2..0000000000
--- a/gr-blocks/grc/blocks_complex_to_arg.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Arg
-###################################################
- -->
-<block>
- <name>Complex to Arg</name>
- <key>blocks_complex_to_arg</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_arg($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_float.block.yml b/gr-blocks/grc/blocks_complex_to_float.block.yml
new file mode 100644
index 0000000000..f7b35936c3
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_float.block.yml
@@ -0,0 +1,34 @@
+id: blocks_complex_to_float
+label: Complex To Float
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- label: re
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+- label: im
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+ optional: true
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_float(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_float.xml b/gr-blocks/grc/blocks_complex_to_float.xml
deleted file mode 100644
index 7acf3fccb1..0000000000
--- a/gr-blocks/grc/blocks_complex_to_float.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Float:
-## one or two output streams
-###################################################
- -->
-<block>
- <name>Complex To Float</name>
- <key>blocks_complex_to_float</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_float($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>re</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
- <source>
- <name>im</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_imag.block.yml b/gr-blocks/grc/blocks_complex_to_imag.block.yml
new file mode 100644
index 0000000000..29e14046aa
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_imag.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_imag
+label: Complex to Imag
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_imag(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_imag.xml b/gr-blocks/grc/blocks_complex_to_imag.xml
deleted file mode 100644
index cb2c2019ff..0000000000
--- a/gr-blocks/grc/blocks_complex_to_imag.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Imaginary
-###################################################
- -->
-<block>
- <name>Complex to Imag</name>
- <key>blocks_complex_to_imag</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_imag($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_interleaved_char.block.yml b/gr-blocks/grc/blocks_complex_to_interleaved_char.block.yml
new file mode 100644
index 0000000000..06a75fc8d9
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_interleaved_char.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_interleaved_char
+label: Complex To IChar
+
+parameters:
+- id: vector_output
+ label: Vector Output
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ option_attributes:
+ vlen: ['1', '2']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vector_output.vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_interleaved_char(${vector_output})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_interleaved_char.xml b/gr-blocks/grc/blocks_complex_to_interleaved_char.xml
deleted file mode 100644
index 5631f242ca..0000000000
--- a/gr-blocks/grc/blocks_complex_to_interleaved_char.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Interleaved Char:
-###################################################
- -->
-<block>
- <name>Complex To IChar</name>
- <key>blocks_complex_to_interleaved_char</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_interleaved_char($vector_output)</make>
- <param>
- <name>Vector Output</name>
- <key>vector_output</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>vlen:1</opt>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>vlen:2</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$vector_output.vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_interleaved_short.block.yml b/gr-blocks/grc/blocks_complex_to_interleaved_short.block.yml
new file mode 100644
index 0000000000..0b8aa53621
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_interleaved_short.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_interleaved_short
+label: Complex To IShort
+
+parameters:
+- id: vector_output
+ label: Vector Output
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ option_attributes:
+ vlen: ['1', '2']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vector_output.vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_interleaved_short(${vector_output})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_interleaved_short.xml b/gr-blocks/grc/blocks_complex_to_interleaved_short.xml
deleted file mode 100644
index 7f69d6b036..0000000000
--- a/gr-blocks/grc/blocks_complex_to_interleaved_short.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Interleaved Short:
-###################################################
- -->
-<block>
- <name>Complex To IShort</name>
- <key>blocks_complex_to_interleaved_short</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_interleaved_short($vector_output)</make>
- <param>
- <name>Vector Output</name>
- <key>vector_output</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>vlen:1</opt>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>vlen:2</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- <vlen>$vector_output.vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_mag.block.yml b/gr-blocks/grc/blocks_complex_to_mag.block.yml
new file mode 100644
index 0000000000..d9582d1722
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_mag.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_mag
+label: Complex to Mag
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_mag(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_mag.xml b/gr-blocks/grc/blocks_complex_to_mag.xml
deleted file mode 100644
index 2aa4faee71..0000000000
--- a/gr-blocks/grc/blocks_complex_to_mag.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Magnitude
-###################################################
- -->
-<block>
- <name>Complex to Mag</name>
- <key>blocks_complex_to_mag</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_mag($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_mag_squared.block.yml b/gr-blocks/grc/blocks_complex_to_mag_squared.block.yml
new file mode 100644
index 0000000000..815636d654
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_mag_squared.block.yml
@@ -0,0 +1,28 @@
+id: blocks_complex_to_mag_squared
+label: Complex to Mag^2
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_mag_squared(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_mag_squared.xml b/gr-blocks/grc/blocks_complex_to_mag_squared.xml
deleted file mode 100644
index ee2270fecd..0000000000
--- a/gr-blocks/grc/blocks_complex_to_mag_squared.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Magnitude Squared
-###################################################
- -->
-<block>
- <name>Complex to Mag^2</name>
- <key>blocks_complex_to_mag_squared</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_mag_squared($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_magphase.block.yml b/gr-blocks/grc/blocks_complex_to_magphase.block.yml
new file mode 100644
index 0000000000..80420ac2a0
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_magphase.block.yml
@@ -0,0 +1,34 @@
+id: blocks_complex_to_magphase
+label: Complex To Mag Phase
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- label: mag
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+- label: phase
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+ optional: true
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_magphase(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_magphase.xml b/gr-blocks/grc/blocks_complex_to_magphase.xml
deleted file mode 100644
index cad310b2fb..0000000000
--- a/gr-blocks/grc/blocks_complex_to_magphase.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Magnitude and Phase (floats):
-## two output streams
-###################################################
- -->
-<block>
- <name>Complex To Mag Phase</name>
- <key>blocks_complex_to_magphase</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_magphase($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>mag</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
- <source>
- <name>phase</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_complex_to_real.block.yml b/gr-blocks/grc/blocks_complex_to_real.block.yml
new file mode 100644
index 0000000000..41fbbb33cc
--- /dev/null
+++ b/gr-blocks/grc/blocks_complex_to_real.block.yml
@@ -0,0 +1,29 @@
+id: blocks_complex_to_real
+label: Complex To Real
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- label: re
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.complex_to_real(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_complex_to_real.xml b/gr-blocks/grc/blocks_complex_to_real.xml
deleted file mode 100644
index 6737f1da36..0000000000
--- a/gr-blocks/grc/blocks_complex_to_real.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex to Real:
-## one or two output streams
-###################################################
- -->
-<block>
- <name>Complex To Real</name>
- <key>blocks_complex_to_real</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.complex_to_real($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>re</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_conjugate_cc.block.yml b/gr-blocks/grc/blocks_conjugate_cc.block.yml
new file mode 100644
index 0000000000..a0d8b1a64c
--- /dev/null
+++ b/gr-blocks/grc/blocks_conjugate_cc.block.yml
@@ -0,0 +1,16 @@
+id: blocks_conjugate_cc
+label: Complex Conjugate
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.conjugate_cc()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_conjugate_cc.xml b/gr-blocks/grc/blocks_conjugate_cc.xml
deleted file mode 100644
index 152f797b20..0000000000
--- a/gr-blocks/grc/blocks_conjugate_cc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Complex Conjugate
-###################################################
- -->
-<block>
- <name>Complex Conjugate</name>
- <key>blocks_conjugate_cc</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.conjugate_cc()</make>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_copy.block.yml b/gr-blocks/grc/blocks_copy.block.yml
new file mode 100644
index 0000000000..0de4bcadf5
--- /dev/null
+++ b/gr-blocks/grc/blocks_copy.block.yml
@@ -0,0 +1,57 @@
+id: blocks_copy
+label: Copy
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: enabled
+ label: Enabled
+ dtype: bool
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: [Enabled, Disabled]
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: showports
+ label: Show Msg Ports
+ dtype: enum
+ default: 'True'
+ options: ['False', 'True']
+ option_labels: ['Yes', 'No']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+- domain: message
+ id: en
+ optional: true
+ hide: ${ showports }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: |-
+ blocks.copy(${type.size}*${vlen})
+ self.${id}.set_enabled(${enabled})
+ callbacks:
+ - set_enabled(${enabled})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_copy.xml b/gr-blocks/grc/blocks_copy.xml
deleted file mode 100644
index 6192937cd8..0000000000
--- a/gr-blocks/grc/blocks_copy.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Copy
-###################################################
- -->
-<block>
- <name>Copy</name>
- <key>blocks_copy</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.copy($type.size*$vlen)
-self.$(id).set_enabled($enabled)</make>
- <callback>set_enabled($enabled)</callback>
-
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Enabled</name>
- <key>enabled</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Enabled</name>
- <key>True</key>
- </option>
- <option>
- <name>Disabled</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Show Msg Ports</name>
- <key>showports</key>
- <value>True</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>False</key>
- </option>
- <option>
- <name>No</name>
- <key>True</key>
- </option>
- </param>
-
- <check>$vlen &gt; 0</check>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-
- <sink>
- <name>en</name>
- <type>message</type>
- <optional>1</optional>
- <hide>$showports</hide>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_ctrlport_performance.block.yml b/gr-blocks/grc/blocks_ctrlport_performance.block.yml
new file mode 100644
index 0000000000..80f541a41b
--- /dev/null
+++ b/gr-blocks/grc/blocks_ctrlport_performance.block.yml
@@ -0,0 +1,17 @@
+id: blocks_ctrlport_monitor_performance
+label: CtrlPort Performance Monitor
+
+parameters:
+- id: en
+ label: Enabled
+ dtype: enum
+ options: ['True', 'False']
+
+templates:
+ imports: from gnuradio.ctrlport.monitor import *
+ make: not ${en} or monitor("gr-perf-monitorx")
+
+documentation: |-
+ Place this in a graph to launch a QtPy GR CtrlPort Performance Monitor app.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_ctrlport_performance.xml b/gr-blocks/grc/blocks_ctrlport_performance.xml
deleted file mode 100644
index ab17c9e263..0000000000
--- a/gr-blocks/grc/blocks_ctrlport_performance.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>CtrlPort Performance Monitor</name>
- <key>blocks_ctrlport_monitor_performance</key>
- <import>from gnuradio.ctrlport.monitor import *</import>
- <make>not $en or monitor("gr-perf-monitorx")</make>
- <param>
- <name>Enabled</name>
- <key>en</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
-
- <doc>
- Place this in a graph to launch a QtPy GR CtrlPort Performance Monitor app.
- </doc>
-
-</block>
diff --git a/gr-blocks/grc/blocks_ctrlport_probe2_c.block.yml b/gr-blocks/grc/blocks_ctrlport_probe2_c.block.yml
new file mode 100644
index 0000000000..2b757718a6
--- /dev/null
+++ b/gr-blocks/grc/blocks_ctrlport_probe2_c.block.yml
@@ -0,0 +1,41 @@
+id: blocks_ctrlport_probe2_c
+label: Ctrlport Probe
+
+parameters:
+- id: name
+ label: Name
+ dtype: string
+ default: samples
+- id: desc
+ label: Description
+ dtype: string
+ default: Sample Points
+- id: len
+ label: Length
+ dtype: int
+ default: '1024'
+- id: disp_mask
+ label: Display Mask
+ dtype: int
+ default: gr.DISPTIME
+ options: [gr.DISPXY | gr.DISPOPTSCATTER, gr.DISPTIME, gr.DISPPSD, gr.DISPSPEC,
+ gr.DISPRAST]
+ option_labels: [Constellation, Time, PSD, Spectrogram, Raster]
+
+inputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.ctrlport_probe2_c(${name}, ${desc}, ${len}, ${disp_mask})
+ callbacks:
+ - set_length(${len})
+
+documentation: |-
+ Place this in a graph to export vectors of samples to a GRCP port probe.
+
+ * Specify the number of samples to transmit at once and the type
+ of default display to use.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_ctrlport_probe2_c.xml b/gr-blocks/grc/blocks_ctrlport_probe2_c.xml
deleted file mode 100644
index 708a8fdf9b..0000000000
--- a/gr-blocks/grc/blocks_ctrlport_probe2_c.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012-2013 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>Ctrlport Probe</name>
- <key>blocks_ctrlport_probe2_c</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.ctrlport_probe2_c($name, $desc, $len, $disp_mask)</make>
- <callback>set_length($len)</callback>
-
- <param>
- <name>Name</name>
- <key>name</key>
- <value>samples</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Description</name>
- <key>desc</key>
- <value>Sample Points</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Length</name>
- <key>len</key>
- <value>1024</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Display Mask</name>
- <key>disp_mask</key>
- <value>gr.DISPTIME</value>
- <type>int</type>
- <option>
- <name>Constellation</name>
- <key>gr.DISPXY | gr.DISPOPTSCATTER</key>
- </option>
- <option>
- <name>Time</name>
- <key>gr.DISPTIME</key>
- </option>
- <option>
- <name>PSD</name>
- <key>gr.DISPPSD</key>
- </option>
- <option>
- <name>Spectrogram</name>
- <key>gr.DISPSPEC</key>
- </option>
- <option>
- <name>Raster</name>
- <key>gr.DISPRAST</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <doc>
- Place this in a graph to export vectors of samples to a GRCP port probe.
-
- * Specify the number of samples to transmit at once and the type
- of default display to use.
- </doc>
-
-</block>
-
diff --git a/gr-blocks/grc/blocks_ctrlport_probe2_x.block.yml b/gr-blocks/grc/blocks_ctrlport_probe2_x.block.yml
new file mode 100644
index 0000000000..f2b8e0a781
--- /dev/null
+++ b/gr-blocks/grc/blocks_ctrlport_probe2_x.block.yml
@@ -0,0 +1,48 @@
+id: blocks_ctrlport_probe2_x
+label: Ctrlport Probe
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ hide: part
+- id: name
+ label: Name
+ dtype: string
+ default: samples
+- id: desc
+ label: Description
+ dtype: string
+ default: Sample Points
+- id: len
+ label: Length
+ dtype: int
+ default: '1024'
+- id: disp_mask
+ label: Display Mask
+ dtype: int
+ default: gr.DISPTIME
+ options: [gr.DISPXY | gr.DISPOPTSCATTER, gr.DISPTIME, gr.DISPPSD, gr.DISPSPEC,
+ gr.DISPRAST]
+ option_labels: [Constellation, Time, PSD, Spectrogram, Raster]
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.ctrlport_probe2_${type.fcn}(${name}, ${desc}, ${len}, ${disp_mask})
+ callbacks:
+ - set_length(${len})
+
+documentation: |-
+ Place this in a graph to export vectors of samples to a GRCP port probe.
+
+ * Specify the number of samples to transmit at once and the type
+ of default display to use.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_ctrlport_probe2_x.xml b/gr-blocks/grc/blocks_ctrlport_probe2_x.xml
deleted file mode 100644
index 47d1b81d3d..0000000000
--- a/gr-blocks/grc/blocks_ctrlport_probe2_x.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2013 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>Ctrlport Probe</name>
- <key>blocks_ctrlport_probe2_x</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.ctrlport_probe2_$(type.fcn)($name, $desc, $len, $disp_mask)</make>
- <callback>set_length($len)</callback>
-
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
-
- <param>
- <name>Name</name>
- <key>name</key>
- <value>samples</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Description</name>
- <key>desc</key>
- <value>Sample Points</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Length</name>
- <key>len</key>
- <value>1024</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Display Mask</name>
- <key>disp_mask</key>
- <value>gr.DISPTIME</value>
- <type>int</type>
- <option>
- <name>Constellation</name>
- <key>gr.DISPXY | gr.DISPOPTSCATTER</key>
- </option>
- <option>
- <name>Time</name>
- <key>gr.DISPTIME</key>
- </option>
- <option>
- <name>PSD</name>
- <key>gr.DISPPSD</key>
- </option>
- <option>
- <name>Spectrogram</name>
- <key>gr.DISPSPEC</key>
- </option>
- <option>
- <name>Raster</name>
- <key>gr.DISPRAST</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
-
- <doc>
- Place this in a graph to export vectors of samples to a GRCP port probe.
-
- * Specify the number of samples to transmit at once and the type
- of default display to use.
- </doc>
-
-</block>
-
diff --git a/gr-blocks/grc/blocks_ctrlport_probe_c.block.yml b/gr-blocks/grc/blocks_ctrlport_probe_c.block.yml
new file mode 100644
index 0000000000..6f59f3e695
--- /dev/null
+++ b/gr-blocks/grc/blocks_ctrlport_probe_c.block.yml
@@ -0,0 +1,25 @@
+id: blocks_ctrlport_probe_c
+label: Ctrlport Complex Probe
+
+parameters:
+- id: name
+ label: Name
+ dtype: string
+ default: constellation
+- id: desc
+ label: Description
+ dtype: string
+ default: Constellation Points
+
+inputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.ctrlport_probe_c(${name}, ${desc})
+
+documentation: |-
+ Place this in a graph to export complex values to a GRCP port probe.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_ctrlport_probe_c.xml b/gr-blocks/grc/blocks_ctrlport_probe_c.xml
deleted file mode 100644
index 64174204f1..0000000000
--- a/gr-blocks/grc/blocks_ctrlport_probe_c.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>Ctrlport Complex Probe</name>
- <key>blocks_ctrlport_probe_c</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.ctrlport_probe_c($name, $desc)</make>
-
- <param>
- <name>Name</name>
- <key>name</key>
- <value>constellation</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Description</name>
- <key>desc</key>
- <value>Constellation Points</value>
- <type>string</type>
- </param>
-
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <doc>
- Place this in a graph to export complex values to a GRCP port probe.
- </doc>
-
-</block>
-
diff --git a/gr-blocks/grc/blocks_ctrlport_viewer.block.yml b/gr-blocks/grc/blocks_ctrlport_viewer.block.yml
new file mode 100644
index 0000000000..dc718aa975
--- /dev/null
+++ b/gr-blocks/grc/blocks_ctrlport_viewer.block.yml
@@ -0,0 +1,17 @@
+id: blocks_ctrlport_monitor
+label: CtrlPort Monitor
+
+parameters:
+- id: en
+ label: Enabled
+ dtype: enum
+ options: ['True', 'False']
+
+templates:
+ imports: from gnuradio.ctrlport.monitor import *
+ make: not ${en} or monitor()
+
+documentation: |-
+ Place this in a graph to launch a QtPy GR CtrlPort Monitor app.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_ctrlport_viewer.xml b/gr-blocks/grc/blocks_ctrlport_viewer.xml
deleted file mode 100644
index 1d5a2e5931..0000000000
--- a/gr-blocks/grc/blocks_ctrlport_viewer.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>CtrlPort Monitor</name>
- <key>blocks_ctrlport_monitor</key>
- <import>from gnuradio.ctrlport.monitor import *</import>
- <make>not $en or monitor()</make>
- <param>
- <name>Enabled</name>
- <key>en</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
-
- <doc>
- Place this in a graph to launch a QtPy GR CtrlPort Monitor app.
- </doc>
-
-</block>
diff --git a/gr-blocks/grc/blocks_deinterleave.block.yml b/gr-blocks/grc/blocks_deinterleave.block.yml
new file mode 100644
index 0000000000..98761c4cc0
--- /dev/null
+++ b/gr-blocks/grc/blocks_deinterleave.block.yml
@@ -0,0 +1,48 @@
+id: blocks_deinterleave
+label: Deinterleave
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: blocksize
+ label: Block Size
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.deinterleave(${type.size}*${vlen}, ${blocksize})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_deinterleave.xml b/gr-blocks/grc/blocks_deinterleave.xml
deleted file mode 100644
index 4ada49dc38..0000000000
--- a/gr-blocks/grc/blocks_deinterleave.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Deinterleave
-###################################################
- -->
-<block>
- <name>Deinterleave</name>
- <key>blocks_deinterleave</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.deinterleave($type.size*$vlen, $blocksize)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>blocksize</key>
- <value>1</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_delay.block.yml b/gr-blocks/grc/blocks_delay.block.yml
new file mode 100644
index 0000000000..b9d63df586
--- /dev/null
+++ b/gr-blocks/grc/blocks_delay.block.yml
@@ -0,0 +1,50 @@
+id: blocks_delay
+label: Delay
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: delay
+ label: Delay
+ dtype: int
+ default: '0'
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.delay(${type.size}*${vlen}, ${delay})
+ callbacks:
+ - set_dly(${delay})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_delay.xml b/gr-blocks/grc/blocks_delay.xml
deleted file mode 100644
index a7c48c4dce..0000000000
--- a/gr-blocks/grc/blocks_delay.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Delay
-###################################################
- -->
-<block>
- <name>Delay</name>
- <key>blocks_delay</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.delay($type.size*$vlen, $delay)</make>
- <callback>set_dly($delay)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Delay</name>
- <key>delay</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_ports &gt; 0</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_divide_XX.block.yml b/gr-blocks/grc/blocks_divide_XX.block.yml
new file mode 100644
index 0000000000..a98dfde5c7
--- /dev/null
+++ b/gr-blocks/grc/blocks_divide_XX.block.yml
@@ -0,0 +1,42 @@
+id: blocks_divide_xx
+label: Divide
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+- ${ num_inputs >= 2 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.divide_${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_divide_XX.xml b/gr-blocks/grc/blocks_divide_XX.xml
deleted file mode 100644
index d784d305d9..0000000000
--- a/gr-blocks/grc/blocks_divide_XX.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Divide Block:
-## all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Divide</name>
- <key>blocks_divide_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.divide_$(type.fcn)($vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <check>$num_inputs &gt;= 2</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_endian_swap.block.yml b/gr-blocks/grc/blocks_endian_swap.block.yml
new file mode 100644
index 0000000000..da2ef0c379
--- /dev/null
+++ b/gr-blocks/grc/blocks_endian_swap.block.yml
@@ -0,0 +1,26 @@
+id: blocks_endian_swap
+label: Endian Swap
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, s32, s16]
+ option_labels: [Complex, Int, Short]
+ option_attributes:
+ size: ['8', '4', '2']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.endian_swap(${type.size})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_endian_swap.xml b/gr-blocks/grc/blocks_endian_swap.xml
deleted file mode 100644
index 5fea420664..0000000000
--- a/gr-blocks/grc/blocks_endian_swap.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Add Block:
-## all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Endian Swap</name>
- <key>blocks_endian_swap</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.endian_swap($type.size)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:8</opt>
- </option>
- <option>
- <name>Int</name>
- <key>s32</key>
- <opt>size:4</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s16</key>
- <opt>size:2</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_exponentiate_const_cci.block.yml b/gr-blocks/grc/blocks_exponentiate_const_cci.block.yml
new file mode 100644
index 0000000000..10bef0d3cd
--- /dev/null
+++ b/gr-blocks/grc/blocks_exponentiate_const_cci.block.yml
@@ -0,0 +1,43 @@
+id: blocks_exponentiate_const_cci
+label: Exponentiate Const Int
+
+parameters:
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: exponent
+ label: Exponent
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+- ${ vlen > 0 }
+- ${ exponent > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.exponentiate_const_cci(${exponent}, ${vlen})
+ callbacks:
+ - set_exponent(${exponent})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_exponentiate_const_cci.xml b/gr-blocks/grc/blocks_exponentiate_const_cci.xml
deleted file mode 100644
index 3c9e9b9625..0000000000
--- a/gr-blocks/grc/blocks_exponentiate_const_cci.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Exponentiate Const Int</name>
- <key>blocks_exponentiate_const_cci</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.exponentiate_const_cci($exponent, $vlen)</make>
- <callback>set_exponent($exponent)</callback>
-
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Exponent</name>
- <key>exponent</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <check>$num_ports &gt; 0</check>
- <check>$vlen &gt; 0</check>
- <check>$exponent &gt; 0</check>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_file_descriptor_sink.block.yml b/gr-blocks/grc/blocks_file_descriptor_sink.block.yml
new file mode 100644
index 0000000000..24d88f67f9
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_descriptor_sink.block.yml
@@ -0,0 +1,34 @@
+id: blocks_file_descriptor_sink
+label: File Descriptor Sink
+
+parameters:
+- id: fd
+ label: File Descriptor
+ dtype: int
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.file_descriptor_sink(${type.size}*${vlen}, ${fd})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_descriptor_sink.xml b/gr-blocks/grc/blocks_file_descriptor_sink.xml
deleted file mode 100644
index 211d86dfd3..0000000000
--- a/gr-blocks/grc/blocks_file_descriptor_sink.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Sink
-###################################################
- -->
-<block>
- <name>File Descriptor Sink</name>
- <key>blocks_file_descriptor_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.file_descriptor_sink($type.size*$vlen, $fd)</make>
- <param>
- <name>File Descriptor</name>
- <key>fd</key>
- <type>int</type>
- </param>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_file_descriptor_source.block.yml b/gr-blocks/grc/blocks_file_descriptor_source.block.yml
new file mode 100644
index 0000000000..84926661e4
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_descriptor_source.block.yml
@@ -0,0 +1,37 @@
+id: blocks_file_descriptor_source
+label: File Descriptor Source
+
+parameters:
+- id: fd
+ label: File Descriptor
+ dtype: int
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.file_descriptor_source(${type.size}*${vlen}, ${fd}, ${repeat})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_descriptor_source.xml b/gr-blocks/grc/blocks_file_descriptor_source.xml
deleted file mode 100644
index b29335c3af..0000000000
--- a/gr-blocks/grc/blocks_file_descriptor_source.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Source
-###################################################
- -->
-<block>
- <name>File Descriptor Source</name>
- <key>blocks_file_descriptor_source</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.file_descriptor_source($type.size*$vlen, $fd, $repeat)</make>
- <param>
- <name>File Descriptor</name>
- <key>fd</key>
- <type>int</type>
- </param>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_file_meta_sink.block.yml b/gr-blocks/grc/blocks_file_meta_sink.block.yml
new file mode 100644
index 0000000000..7512f23aae
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_meta_sink.block.yml
@@ -0,0 +1,70 @@
+id: blocks_file_meta_sink
+label: File Meta Sink
+
+parameters:
+- id: file
+ label: File
+ dtype: file_save
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ cplx: ['True', 'False', 'False', 'False', 'False']
+ dtype: [blocks.GR_FILE_FLOAT, blocks.GR_FILE_FLOAT, blocks.GR_FILE_INT, blocks.GR_FILE_SHORT,
+ blocks.GR_FILE_BYTE]
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: rel_rate
+ label: Relative Rate Change
+ dtype: real
+ default: '1'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: max_seg_size
+ label: Max Seg. Size
+ dtype: int
+ default: '1000000'
+- id: extra_dict
+ label: Extra Dict.
+ dtype: string
+ default: '""'
+- id: detached
+ label: Detached
+ dtype: bool
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['Off', 'On']
+- id: unbuffered
+ label: Unbuffered
+ dtype: bool
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['Off', 'On']
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import gr, blocks
+ make: |-
+ blocks.file_meta_sink(${type.size}*${vlen}, ${file}, ${samp_rate}, ${rel_rate}, ${type.dtype}, ${type.cplx}, ${max_seg_size}, ${extra_dict}, ${detached})
+ self.${id}.set_unbuffered(${unbuffered})
+ callbacks:
+ - set_unbuffered(${unbuffered})
+ - open(${file})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_meta_sink.xml b/gr-blocks/grc/blocks_file_meta_sink.xml
deleted file mode 100644
index f6490d507d..0000000000
--- a/gr-blocks/grc/blocks_file_meta_sink.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Meta Sink
-###################################################
- -->
-<block>
- <name>File Meta Sink</name>
- <key>blocks_file_meta_sink</key>
- <import>from gnuradio import gr, blocks</import>
- <make>blocks.file_meta_sink($type.size*$vlen, $file, $samp_rate, $rel_rate, $type.dtype, $type.cplx, $max_seg_size, $extra_dict, $detached)
-self.$(id).set_unbuffered($unbuffered)</make>
- <callback>set_unbuffered($unbuffered)</callback>
- <callback>open($file)</callback>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_save</type>
- </param>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- <opt>dtype:blocks.GR_FILE_FLOAT</opt>
- <opt>cplx:True</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- <opt>dtype:blocks.GR_FILE_FLOAT</opt>
- <opt>cplx:False</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- <opt>dtype:blocks.GR_FILE_INT</opt>
- <opt>cplx:False</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- <opt>dtype:blocks.GR_FILE_SHORT</opt>
- <opt>cplx:False</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- <opt>dtype:blocks.GR_FILE_BYTE</opt>
- <opt>cplx:False</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Relative Rate Change</name>
- <key>rel_rate</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Max Seg. Size</name>
- <key>max_seg_size</key>
- <value>1000000</value>
- <type>int</type>
- </param>
- <param>
- <name>Extra Dict.</name>
- <key>extra_dict</key>
- <value>""</value>
- <type>string</type>
- </param>
- <param>
- <name>Detached</name>
- <key>detached</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- </param> <param>
- <name>Unbuffered</name>
- <key>unbuffered</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_file_meta_source.block.yml b/gr-blocks/grc/blocks_file_meta_source.block.yml
new file mode 100644
index 0000000000..016c2f62a5
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_meta_source.block.yml
@@ -0,0 +1,48 @@
+id: blocks_file_meta_source
+label: File Meta Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: file
+ label: File
+ dtype: file_open
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: detached
+ label: Detached Header
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hdr_file
+ label: Header File
+ dtype: file_open
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import gr, blocks
+ make: blocks.file_meta_source(${file}, ${repeat}, ${detached}, ${hdr_file})
+ callbacks:
+ - open(${file}, ${repeat})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_meta_source.xml b/gr-blocks/grc/blocks_file_meta_source.xml
deleted file mode 100644
index aa7e349551..0000000000
--- a/gr-blocks/grc/blocks_file_meta_source.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Source
-###################################################
- -->
-<block>
- <name>File Meta Source</name>
- <key>blocks_file_meta_source</key>
- <import>from gnuradio import gr, blocks</import>
- <make>blocks.file_meta_source($file, $repeat, $detached, $hdr_file)</make>
- <callback>open($file, $repeat)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_open</type>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Detached Header</name>
- <key>detached</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Header File</name>
- <key>hdr_file</key>
- <value></value>
- <type>file_open</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_file_sink.block.yml b/gr-blocks/grc/blocks_file_sink.block.yml
new file mode 100644
index 0000000000..cf9782340f
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_sink.block.yml
@@ -0,0 +1,51 @@
+id: blocks_file_sink
+label: File Sink
+
+parameters:
+- id: file
+ label: File
+ dtype: file_save
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: unbuffered
+ label: Unbuffered
+ dtype: bool
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['Off', 'On']
+- id: append
+ label: Append file
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Append, Overwrite]
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: |-
+ blocks.file_sink(${type.size}*${vlen}, ${file}, ${append})
+ self.${id}.set_unbuffered(${unbuffered})
+ callbacks:
+ - set_unbuffered(${unbuffered})
+ - open(${file})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_sink.xml b/gr-blocks/grc/blocks_file_sink.xml
deleted file mode 100644
index ece21fd2ae..0000000000
--- a/gr-blocks/grc/blocks_file_sink.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Sink
-###################################################
- -->
-<block>
- <name>File Sink</name>
- <key>blocks_file_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.file_sink($type.size*$vlen, $file, $append)
-self.$(id).set_unbuffered($unbuffered)</make>
- <callback>set_unbuffered($unbuffered)</callback>
- <callback>open($file)</callback>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_save</type>
- </param>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Unbuffered</name>
- <key>unbuffered</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>Append file</name>
- <key>append</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>Append</name>
- <key>True</key>
- </option>
- <option>
- <name>Overwrite</name>
- <key>False</key>
- </option>
- </param>
-
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_file_source.block.yml b/gr-blocks/grc/blocks_file_source.block.yml
new file mode 100644
index 0000000000..717ed387be
--- /dev/null
+++ b/gr-blocks/grc/blocks_file_source.block.yml
@@ -0,0 +1,51 @@
+id: blocks_file_source
+label: File Source
+
+parameters:
+- id: file
+ label: File
+ dtype: file_open
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: begin_tag
+ label: Add begin tag
+ dtype: raw
+ default: pmt.PMT_NIL
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: |-
+ blocks.file_source(${type.size}*${vlen}, ${file}, ${repeat})
+ self.${id}.set_begin_tag(${begin_tag})
+ callbacks:
+ - open(${file}, ${repeat})
+ - self.${id}.set_begin_tag(${begin_tag})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_file_source.xml b/gr-blocks/grc/blocks_file_source.xml
deleted file mode 100644
index 1f09e95168..0000000000
--- a/gr-blocks/grc/blocks_file_source.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##File Source
-###################################################
- -->
-<block>
- <name>File Source</name>
- <key>blocks_file_source</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.file_source($type.size*$vlen, $file, $repeat)
-self.$(id).set_begin_tag($begin_tag)</make>
- <callback>open($file, $repeat)</callback>
- <callback>self.$(id).set_begin_tag($begin_tag)</callback>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_open</type>
- </param>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Add begin tag</name>
- <key>begin_tag</key>
- <value>pmt.PMT_NIL</value>
- <type>raw</type>
- </param>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_float_to_char.block.yml b/gr-blocks/grc/blocks_float_to_char.block.yml
new file mode 100644
index 0000000000..4f6eeb7286
--- /dev/null
+++ b/gr-blocks/grc/blocks_float_to_char.block.yml
@@ -0,0 +1,31 @@
+id: blocks_float_to_char
+label: Float To Char
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.float_to_char(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_float_to_char.xml b/gr-blocks/grc/blocks_float_to_char.xml
deleted file mode 100644
index e3854fc4ec..0000000000
--- a/gr-blocks/grc/blocks_float_to_char.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Float to Char:
-###################################################
- -->
-<block>
- <name>Float To Char</name>
- <key>blocks_float_to_char</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.float_to_char($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_float_to_complex.block.yml b/gr-blocks/grc/blocks_float_to_complex.block.yml
new file mode 100644
index 0000000000..d592c4e461
--- /dev/null
+++ b/gr-blocks/grc/blocks_float_to_complex.block.yml
@@ -0,0 +1,34 @@
+id: blocks_float_to_complex
+label: Float To Complex
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- label: re
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+- label: im
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.float_to_complex(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_float_to_complex.xml b/gr-blocks/grc/blocks_float_to_complex.xml
deleted file mode 100644
index 6120d58871..0000000000
--- a/gr-blocks/grc/blocks_float_to_complex.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Float to Complex:
-## one or two input streams
-###################################################
- -->
-<block>
- <name>Float To Complex</name>
- <key>blocks_float_to_complex</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.float_to_complex($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>re</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <sink>
- <name>im</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_float_to_int.block.yml b/gr-blocks/grc/blocks_float_to_int.block.yml
new file mode 100644
index 0000000000..4ed0e08718
--- /dev/null
+++ b/gr-blocks/grc/blocks_float_to_int.block.yml
@@ -0,0 +1,31 @@
+id: blocks_float_to_int
+label: Float To Int
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: int
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.float_to_int(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_float_to_int.xml b/gr-blocks/grc/blocks_float_to_int.xml
deleted file mode 100644
index 0ff5d9cdf1..0000000000
--- a/gr-blocks/grc/blocks_float_to_int.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Float to Int:
-###################################################
- -->
-<block>
- <name>Float To Int</name>
- <key>blocks_float_to_int</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.float_to_int($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>int</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_float_to_short.block.yml b/gr-blocks/grc/blocks_float_to_short.block.yml
new file mode 100644
index 0000000000..8b1c4e58b5
--- /dev/null
+++ b/gr-blocks/grc/blocks_float_to_short.block.yml
@@ -0,0 +1,31 @@
+id: blocks_float_to_short
+label: Float To Short
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.float_to_short(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_float_to_short.xml b/gr-blocks/grc/blocks_float_to_short.xml
deleted file mode 100644
index 986e68ec41..0000000000
--- a/gr-blocks/grc/blocks_float_to_short.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Float to Short:
-###################################################
- -->
-<block>
- <name>Float To Short</name>
- <key>blocks_float_to_short</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.float_to_short($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_float_uchar.block.yml b/gr-blocks/grc/blocks_float_uchar.block.yml
new file mode 100644
index 0000000000..33687978c2
--- /dev/null
+++ b/gr-blocks/grc/blocks_float_uchar.block.yml
@@ -0,0 +1,16 @@
+id: blocks_float_to_uchar
+label: Float To UChar
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.float_to_uchar()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_float_uchar.xml b/gr-blocks/grc/blocks_float_uchar.xml
deleted file mode 100644
index d190eafcf7..0000000000
--- a/gr-blocks/grc/blocks_float_uchar.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Float to Unsigned Char:
-###################################################
- -->
-<block>
- <name>Float To UChar</name>
- <key>blocks_float_to_uchar</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.float_to_uchar()</make>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_head.block.yml b/gr-blocks/grc/blocks_head.block.yml
new file mode 100644
index 0000000000..c342e40067
--- /dev/null
+++ b/gr-blocks/grc/blocks_head.block.yml
@@ -0,0 +1,42 @@
+id: blocks_head
+label: Head
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_items
+ label: Num Items
+ dtype: int
+ default: '1024'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.head(${type.size}*${vlen}, ${num_items})
+ callbacks:
+ - set_length(${num_items})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_head.xml b/gr-blocks/grc/blocks_head.xml
deleted file mode 100644
index dc8e826d54..0000000000
--- a/gr-blocks/grc/blocks_head.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Head
-###################################################
- -->
-<block>
- <name>Head</name>
- <key>blocks_head</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.head($type.size*$vlen, $num_items)</make>
- <callback>set_length($num_items)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Items</name>
- <key>num_items</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_int_to_float.block.yml b/gr-blocks/grc/blocks_int_to_float.block.yml
new file mode 100644
index 0000000000..a6f3b3b92c
--- /dev/null
+++ b/gr-blocks/grc/blocks_int_to_float.block.yml
@@ -0,0 +1,31 @@
+id: blocks_int_to_float
+label: Int To Float
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: int
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.int_to_float(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_int_to_float.xml b/gr-blocks/grc/blocks_int_to_float.xml
deleted file mode 100644
index 2bb25d8bec..0000000000
--- a/gr-blocks/grc/blocks_int_to_float.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Int to Float:
-###################################################
- -->
-<block>
- <name>Int To Float</name>
- <key>blocks_int_to_float</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.int_to_float($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>int</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_integrate_xx.block.yml b/gr-blocks/grc/blocks_integrate_xx.block.yml
new file mode 100644
index 0000000000..e8d3dd08cd
--- /dev/null
+++ b/gr-blocks/grc/blocks_integrate_xx.block.yml
@@ -0,0 +1,35 @@
+id: blocks_integrate_xx
+label: Integrate
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.integrate_${type.fcn}(${decim}, ${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_integrate_xx.xml b/gr-blocks/grc/blocks_integrate_xx.xml
deleted file mode 100644
index 8f47b94997..0000000000
--- a/gr-blocks/grc/blocks_integrate_xx.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Integrate
-###################################################
- -->
-<block>
- <name>Integrate</name>
- <key>blocks_integrate_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.integrate_$(type.fcn)($decim, $vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_interleave.block.yml b/gr-blocks/grc/blocks_interleave.block.yml
new file mode 100644
index 0000000000..e814e675b9
--- /dev/null
+++ b/gr-blocks/grc/blocks_interleave.block.yml
@@ -0,0 +1,48 @@
+id: blocks_interleave
+label: Interleave
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: blocksize
+ label: Block Size
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.interleave(${type.size}*${vlen}, ${blocksize})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_interleave.xml b/gr-blocks/grc/blocks_interleave.xml
deleted file mode 100644
index 69fb15e2cf..0000000000
--- a/gr-blocks/grc/blocks_interleave.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Interleave
-###################################################
- -->
-<block>
- <name>Interleave</name>
- <key>blocks_interleave</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.interleave($type.size*$vlen, $blocksize)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>blocksize</key>
- <value>1</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_interleaved_char_to_complex.block.yml b/gr-blocks/grc/blocks_interleaved_char_to_complex.block.yml
new file mode 100644
index 0000000000..049f67b246
--- /dev/null
+++ b/gr-blocks/grc/blocks_interleaved_char_to_complex.block.yml
@@ -0,0 +1,28 @@
+id: blocks_interleaved_char_to_complex
+label: IChar To Complex
+
+parameters:
+- id: vector_input
+ label: Vector Input
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ option_attributes:
+ vlen: ['1', '2']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vector_input.vlen }
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.interleaved_char_to_complex(${vector_input})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_interleaved_char_to_complex.xml b/gr-blocks/grc/blocks_interleaved_char_to_complex.xml
deleted file mode 100644
index 9c0cdef6f8..0000000000
--- a/gr-blocks/grc/blocks_interleaved_char_to_complex.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Interleaved Char to Complex:
-###################################################
- -->
-<block>
- <name>IChar To Complex</name>
- <key>blocks_interleaved_char_to_complex</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.interleaved_char_to_complex($vector_input)</make>
- <param>
- <name>Vector Input</name>
- <key>vector_input</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>vlen:1</opt>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>vlen:2</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$vector_input.vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_interleaved_short_to_complex.block.yml b/gr-blocks/grc/blocks_interleaved_short_to_complex.block.yml
new file mode 100644
index 0000000000..5c3ab76d4d
--- /dev/null
+++ b/gr-blocks/grc/blocks_interleaved_short_to_complex.block.yml
@@ -0,0 +1,37 @@
+id: blocks_interleaved_short_to_complex
+label: IShort To Complex
+
+parameters:
+- id: vector_input
+ label: Vector Input
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ option_attributes:
+ vlen: ['1', '2']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: swap
+ label: Swap
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vector_input.vlen }
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.interleaved_short_to_complex(${vector_input}, ${swap})
+ callbacks:
+ - set_swap(${swap})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_interleaved_short_to_complex.xml b/gr-blocks/grc/blocks_interleaved_short_to_complex.xml
deleted file mode 100644
index 2c4e153854..0000000000
--- a/gr-blocks/grc/blocks_interleaved_short_to_complex.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Interleaved Short to Complex:
-###################################################
- -->
-<block>
- <name>IShort To Complex</name>
- <key>blocks_interleaved_short_to_complex</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.interleaved_short_to_complex($vector_input, $swap)</make>
- <callback>set_swap($swap)</callback>
- <param>
- <name>Vector Input</name>
- <key>vector_input</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>vlen:1</opt>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>vlen:2</opt>
- </option>
- </param>
- <param>
- <name>Swap</name>
- <key>swap</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- <vlen>$vector_input.vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_keep_m_in_n.block.yml b/gr-blocks/grc/blocks_keep_m_in_n.block.yml
new file mode 100644
index 0000000000..451899eae0
--- /dev/null
+++ b/gr-blocks/grc/blocks_keep_m_in_n.block.yml
@@ -0,0 +1,49 @@
+id: blocks_keep_m_in_n
+label: Keep M in N
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: m
+ label: M
+ dtype: int
+ default: '1'
+- id: n
+ label: N
+ dtype: int
+ default: '2'
+- id: offset
+ label: initial offset
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: 1
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: 1
+
+asserts:
+- ${ n > 0 }
+- ${ m > 0 }
+- ${ m <= n }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.keep_m_in_n(${type.size}, ${m}, ${n}, ${offset})
+ callbacks:
+ - set_offset(${offset})
+ - set_m(${m})
+ - set_n(${n})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_keep_m_in_n.xml b/gr-blocks/grc/blocks_keep_m_in_n.xml
deleted file mode 100644
index 824955c412..0000000000
--- a/gr-blocks/grc/blocks_keep_m_in_n.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Keep M in N
-###################################################
- -->
-<block>
- <name>Keep M in N</name>
- <key>blocks_keep_m_in_n</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.keep_m_in_n($type.size, $m, $n, $offset)</make>
- <callback>set_offset($offset)</callback>
- <callback>set_m($m)</callback>
- <callback>set_n($n)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>M</name>
- <key>m</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>N</name>
- <key>n</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>initial offset</name>
- <key>offset</key>
- <value>0</value>
- <type>int</type>
- </param>
- <check>$n &gt; 0</check>
- <check>$m &gt; 0</check>
- <check>$m &lt;= $n</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>1</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>1</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_keep_one_in_n.block.yml b/gr-blocks/grc/blocks_keep_one_in_n.block.yml
new file mode 100644
index 0000000000..d790557834
--- /dev/null
+++ b/gr-blocks/grc/blocks_keep_one_in_n.block.yml
@@ -0,0 +1,44 @@
+id: blocks_keep_one_in_n
+label: Keep 1 in N
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: n
+ label: N
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ n > 0 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.keep_one_in_n(${type.size}*${vlen}, ${n})
+ callbacks:
+ - set_n(${n})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_keep_one_in_n.xml b/gr-blocks/grc/blocks_keep_one_in_n.xml
deleted file mode 100644
index 4289a984f4..0000000000
--- a/gr-blocks/grc/blocks_keep_one_in_n.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Keep 1 in N
-###################################################
- -->
-<block>
- <name>Keep 1 in N</name>
- <key>blocks_keep_one_in_n</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.keep_one_in_n($type.size*$vlen, $n)</make>
- <callback>set_n($n)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>N</name>
- <key>n</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$n &gt; 0</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_magphase_to_complex.block.yml b/gr-blocks/grc/blocks_magphase_to_complex.block.yml
new file mode 100644
index 0000000000..56f939d816
--- /dev/null
+++ b/gr-blocks/grc/blocks_magphase_to_complex.block.yml
@@ -0,0 +1,34 @@
+id: blocks_magphase_to_complex
+label: Magnitude and Phase To Complex
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- label: mag
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+- label: phase
+ domain: stream
+ dtype: float
+ vlen: ${ vlen }
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.magphase_to_complex(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_magphase_to_complex.xml b/gr-blocks/grc/blocks_magphase_to_complex.xml
deleted file mode 100644
index 1292c7d8c7..0000000000
--- a/gr-blocks/grc/blocks_magphase_to_complex.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Magnitue and Phase to Complex:
-## Two input streams
-###################################################
- -->
-<block>
- <name>Magnitude and Phase To Complex</name>
- <key>blocks_magphase_to_complex</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.magphase_to_complex($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>mag</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <sink>
- <name>phase</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_max_xx.block.yml b/gr-blocks/grc/blocks_max_xx.block.yml
new file mode 100644
index 0000000000..8b7516de8e
--- /dev/null
+++ b/gr-blocks/grc/blocks_max_xx.block.yml
@@ -0,0 +1,47 @@
+id: blocks_max_xx
+label: Max
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [float, int, short]
+ option_attributes:
+ fcn: [ff, ii, ss]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Input Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: vlen_out
+ label: Output Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen_out }
+
+asserts:
+- ${ num_inputs >= 1 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.max_${type.fcn}(${vlen},${vlen_out})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_max_xx.xml b/gr-blocks/grc/blocks_max_xx.xml
deleted file mode 100644
index 65c536a3d9..0000000000
--- a/gr-blocks/grc/blocks_max_xx.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Max:
-## 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Max</name>
- <key>blocks_max_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.max_$(type.fcn)($vlen,$vlen_out)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Input Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Output Vec Length</name>
- <key>vlen_out</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 1</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen_out</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_message_debug.block.yml b/gr-blocks/grc/blocks_message_debug.block.yml
new file mode 100644
index 0000000000..301320e884
--- /dev/null
+++ b/gr-blocks/grc/blocks_message_debug.block.yml
@@ -0,0 +1,19 @@
+id: blocks_message_debug
+label: Message Debug
+
+inputs:
+- domain: message
+ id: print
+ optional: true
+- domain: message
+ id: store
+ optional: true
+- domain: message
+ id: print_pdu
+ optional: true
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.message_debug()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_message_debug.xml b/gr-blocks/grc/blocks_message_debug.xml
deleted file mode 100644
index c547c7542d..0000000000
--- a/gr-blocks/grc/blocks_message_debug.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Message Debug
-###################################################
- -->
-<block>
- <name>Message Debug</name>
- <key>blocks_message_debug</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.message_debug()</make>
- <sink>
- <name>print</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <sink>
- <name>store</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <sink>
- <name>print_pdu</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_message_strobe.block.yml b/gr-blocks/grc/blocks_message_strobe.block.yml
new file mode 100644
index 0000000000..6adb2948ed
--- /dev/null
+++ b/gr-blocks/grc/blocks_message_strobe.block.yml
@@ -0,0 +1,33 @@
+id: blocks_message_strobe
+label: Message Strobe
+
+parameters:
+- id: msg
+ label: Message PMT
+ dtype: raw
+ default: pmt.intern("TEST")
+- id: period
+ label: Period (ms)
+ dtype: real
+ default: '1000'
+
+inputs:
+- domain: message
+ id: set_msg
+ optional: true
+
+outputs:
+- domain: message
+ id: strobe
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.message_strobe(${msg}, ${period})
+ callbacks:
+ - set_msg(${msg})
+ - set_period(${period})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_message_strobe.xml b/gr-blocks/grc/blocks_message_strobe.xml
deleted file mode 100644
index 4a6091d8e0..0000000000
--- a/gr-blocks/grc/blocks_message_strobe.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Message Strobe
-###################################################
- -->
-<block>
- <name>Message Strobe</name>
- <key>blocks_message_strobe</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.message_strobe($msg, $period)</make>
- <callback>set_msg($msg)</callback>
- <callback>set_period($period)</callback>
- <param>
- <name>Message PMT</name>
- <key>msg</key>
- <value>pmt.intern("TEST")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Period (ms)</name>
- <key>period</key>
- <value>1000</value>
- <type>real</type>
- </param>
- <sink>
- <name>set_msg</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>strobe</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_message_strobe_random.block.yml b/gr-blocks/grc/blocks_message_strobe_random.block.yml
new file mode 100644
index 0000000000..c0d6075892
--- /dev/null
+++ b/gr-blocks/grc/blocks_message_strobe_random.block.yml
@@ -0,0 +1,50 @@
+id: blocks_message_strobe_random
+label: Message Strobe Random-Delay
+
+parameters:
+- id: msg
+ label: Message PMT
+ dtype: raw
+ default: pmt.intern("TEST")
+- id: dist
+ label: Distribution
+ dtype: enum
+ options: [blocks.STROBE_POISSON, blocks.STROBE_UNIFORM, blocks.STROBE_GAUSSIAN]
+ option_labels: [Poisson, Uniform, Gaussian]
+- id: mean
+ label: Mean (ms)
+ dtype: real
+ default: '1000'
+- id: std
+ label: Std (ms)
+ dtype: real
+ default: '100'
+
+inputs:
+- domain: message
+ id: set_msg
+ optional: true
+
+outputs:
+- domain: message
+ id: strobe
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.message_strobe_random(${msg}, ${dist}, ${mean}, ${std})
+ callbacks:
+ - set_msg(${msg})
+ - set_dist(${dist})
+ - set_mean(${mean})
+ - set_std(${std})
+
+documentation: |-
+ Please note some peculiarities below:
+ - poisson does not care about your std
+ - gaussian operates as expected
+ - uniform is actually of the range (mean-std, mean+std) - thus we are lieing and it is not actually an std here
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_message_strobe_random.xml b/gr-blocks/grc/blocks_message_strobe_random.xml
deleted file mode 100644
index 573db58aef..0000000000
--- a/gr-blocks/grc/blocks_message_strobe_random.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Message Strobe
-###################################################
- -->
-<block>
- <name>Message Strobe Random-Delay</name>
- <key>blocks_message_strobe_random</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.message_strobe_random($msg, $dist, $mean, $std)</make>
- <callback>set_msg($msg)</callback>
- <callback>set_dist($dist)</callback>
- <callback>set_mean($mean)</callback>
- <callback>set_std($std)</callback>
- <param>
- <name>Message PMT</name>
- <key>msg</key>
- <value>pmt.intern("TEST")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Distribution</name>
- <key>dist</key>
- <type>enum</type>
- <option>
- <name>Poisson</name>
- <key>blocks.STROBE_POISSON</key>
- </option>
- <option>
- <name>Uniform</name>
- <key>blocks.STROBE_UNIFORM</key>
- </option>
- <option>
- <name>Gaussian</name>
- <key>blocks.STROBE_GAUSSIAN</key>
- </option>
- </param>
- <param>
- <name>Mean (ms)</name>
- <key>mean</key>
- <value>1000</value>
- <type>real</type>
- </param>
- <param>
- <name>Std (ms)</name>
- <key>std</key>
- <value>100</value>
- <type>real</type>
- </param>
- <sink>
- <name>set_msg</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>strobe</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
- <doc>
- Please note some peculiarities below:
- - poisson does not care about your std
- - gaussian operates as expected
- - uniform is actually of the range (mean-std, mean+std) - thus we are lieing and it is not actually an std here
- </doc>
-</block>
diff --git a/gr-blocks/grc/blocks_min_xx.block.yml b/gr-blocks/grc/blocks_min_xx.block.yml
new file mode 100644
index 0000000000..511d67c145
--- /dev/null
+++ b/gr-blocks/grc/blocks_min_xx.block.yml
@@ -0,0 +1,47 @@
+id: blocks_min_xx
+label: Min
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [float, int, short]
+ option_attributes:
+ fcn: [ff, ii, ss]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Input Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: vlen_out
+ label: Output Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen_out }
+
+asserts:
+- ${ num_inputs >= 1 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.min_${type.fcn}(${vlen},${vlen_out})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_min_xx.xml b/gr-blocks/grc/blocks_min_xx.xml
deleted file mode 100644
index 406f7a11e1..0000000000
--- a/gr-blocks/grc/blocks_min_xx.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Min:
-## 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Min</name>
- <key>blocks_min_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.min_$(type.fcn)($vlen,$vlen_out)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Input Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Output Vec Length</name>
- <key>vlen_out</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 1</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen_out</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_moving_average_xx.block.yml b/gr-blocks/grc/blocks_moving_average_xx.block.yml
new file mode 100644
index 0000000000..6b12355894
--- /dev/null
+++ b/gr-blocks/grc/blocks_moving_average_xx.block.yml
@@ -0,0 +1,49 @@
+id: blocks_moving_average_xx
+label: Moving Average
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ scale: [complex, real, int, int]
+ hide: part
+- id: length
+ label: Length
+ dtype: int
+ default: '1000'
+- id: scale
+ label: Scale
+ dtype: ${ type.scale }
+ default: '1'
+- id: max_iter
+ label: Max Iter
+ dtype: int
+ default: '4000'
+- id: vlen
+ label: Length of Vectors
+ dtype: int
+ default: 1
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.moving_average_${type.fcn}(${length}, ${scale}, ${max_iter}, ${vlen})
+ callbacks:
+ - set_length_and_scale(${length}, ${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_moving_average_xx.xml b/gr-blocks/grc/blocks_moving_average_xx.xml
deleted file mode 100644
index 00c5e1d486..0000000000
--- a/gr-blocks/grc/blocks_moving_average_xx.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Moving Average
-###################################################
- -->
-<block>
- <name>Moving Average</name>
- <key>blocks_moving_average_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.moving_average_$(type.fcn)($length, $scale, $max_iter, $vlen)</make>
- <callback>set_length_and_scale($length, $scale)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- <opt>scale:complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- <opt>scale:real</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- <opt>scale:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- <opt>scale:int</opt>
- </option>
- </param>
- <param>
- <name>Length</name>
- <key>length</key>
- <value>1000</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>$type.scale</type>
- </param>
- <param>
- <name>Max Iter</name>
- <key>max_iter</key>
- <value>4000</value>
- <type>int</type>
- </param>
- <param>
- <name>Length of Vectors</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_by_tag_value_cc.block.yml b/gr-blocks/grc/blocks_multiply_by_tag_value_cc.block.yml
new file mode 100644
index 0000000000..f6b72edf36
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_by_tag_value_cc.block.yml
@@ -0,0 +1,25 @@
+id: blocks_multiply_by_tag_value_cc
+label: Multiply by Tag Value
+
+parameters:
+- id: tagname
+ label: Tag Name
+ dtype: string
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_by_tag_value_cc(${tagname}, ${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml b/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml
deleted file mode 100644
index cedca12bd1..0000000000
--- a/gr-blocks/grc/blocks_multiply_by_tag_value_cc.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-
-<block>
- <name>Multiply by Tag Value</name>
- <key>blocks_multiply_by_tag_value_cc</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_by_tag_value_cc($tagname, $vlen)</make>
-
- <param>
- <name>Tag Name</name>
- <key>tagname</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_conjugate_cc.block.yml b/gr-blocks/grc/blocks_multiply_conjugate_cc.block.yml
new file mode 100644
index 0000000000..aceabc643e
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_conjugate_cc.block.yml
@@ -0,0 +1,33 @@
+id: blocks_multiply_conjugate_cc
+label: Multiply Conjugate
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- label: in0
+ domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+- label: in1
+ domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_conjugate_cc(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_conjugate_cc.xml b/gr-blocks/grc/blocks_multiply_conjugate_cc.xml
deleted file mode 100644
index cf0acf4d81..0000000000
--- a/gr-blocks/grc/blocks_multiply_conjugate_cc.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Multiply Conjugate Block:
-## 2 complex inputs, 1 complex output
-###################################################
- -->
-<block>
- <name>Multiply Conjugate</name>
- <key>blocks_multiply_conjugate_cc</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_conjugate_cc($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in0</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <sink>
- <name>in1</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_const_vxx.block.yml b/gr-blocks/grc/blocks_multiply_const_vxx.block.yml
new file mode 100644
index 0000000000..fe7efa4647
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_const_vxx.block.yml
@@ -0,0 +1,43 @@
+id: blocks_multiply_const_vxx
+label: Multiply Const
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ const_type: [complex_vector, real_vector, int_vector, int_vector]
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: const
+ label: Constant
+ dtype: ${ type.const_type }
+ default: '0'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ len(const) == vlen }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_const_v${type.fcn}(${const})
+ callbacks:
+ - set_k(${const})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_const_vxx.xml b/gr-blocks/grc/blocks_multiply_const_vxx.xml
deleted file mode 100644
index 6162621d33..0000000000
--- a/gr-blocks/grc/blocks_multiply_const_vxx.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Multiply Const Block:
-## all types, 1 output, 1 input & const
-###################################################
- -->
-<block>
- <name>Multiply Const</name>
- <key>blocks_multiply_const_vxx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_const_v$(type.fcn)($const)</make>
- <callback>set_k($const)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>const_type:complex_vector</opt>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>const_type:real_vector</opt>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>const_type:int_vector</opt>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>const_type:int_vector</opt>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Constant</name>
- <key>const</key>
- <value>0</value>
- <type>$type.const_type</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>len($const) == $vlen</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_const_xx.block.yml b/gr-blocks/grc/blocks_multiply_const_xx.block.yml
new file mode 100644
index 0000000000..168de84809
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_const_xx.block.yml
@@ -0,0 +1,41 @@
+id: blocks_multiply_const_xx
+label: Fast Multiply Const
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: const
+ label: Constant
+ dtype: ${ type }
+ default: '0'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_const_${type.fcn}(${const})
+ callbacks:
+ - set_k(${const})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_const_xx.xml b/gr-blocks/grc/blocks_multiply_const_xx.xml
deleted file mode 100644
index db8b5211e6..0000000000
--- a/gr-blocks/grc/blocks_multiply_const_xx.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Fast Multiply Const Block:
-## all types, 1 output, 1 input & const
-###################################################
- -->
-<block>
- <name>Fast Multiply Const</name>
- <key>blocks_multiply_const_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_const_$(type.fcn)($const)</make>
- <callback>set_k($const)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Constant</name>
- <key>const</key>
- <value>0</value>
- <type>$type</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_matrix_xx.block.yml b/gr-blocks/grc/blocks_multiply_matrix_xx.block.yml
new file mode 100644
index 0000000000..21a66b4f8e
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_matrix_xx.block.yml
@@ -0,0 +1,47 @@
+id: blocks_multiply_matrix_xx
+label: Multiply by Matrix
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [float, complex]
+ option_attributes:
+ fcn: [ff, cc]
+ hide: part
+- id: A
+ label: Matrix A
+ dtype: raw
+ default: ((1, 0), (0, 1))
+ hide: part
+- id: tag_propagation_policy
+ label: TPP
+ dtype: enum
+ options: [gr.TPP_ALL_TO_ALL, gr.TPP_ONE_TO_ONE, gr.TPP_DONT, gr.TPP_CUSTOM]
+ option_labels: [All to All, One to One, No Propagation, Matrix-Defined]
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ len(A[0]) }
+- domain: message
+ id: set_A
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ len(A) }
+
+asserts:
+- ${ len(A) > 0 }
+- ${ len(A[0]) > 0 }
+- ${ tag_propagation_policy != gr.TPP_ONE_TO_ONE or (len(A) == len(A[0])) }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_matrix_${type.fcn}(${A}, ${tag_propagation_policy})
+ callbacks:
+ - set_A(${A})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_matrix_xx.xml b/gr-blocks/grc/blocks_multiply_matrix_xx.xml
deleted file mode 100644
index bb1d77c0ba..0000000000
--- a/gr-blocks/grc/blocks_multiply_matrix_xx.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Multiply by Matrix</name>
- <key>blocks_multiply_matrix_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_matrix_$(type.fcn)($A, $tag_propagation_policy)</make>
- <callback>set_A($A)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- </param>
- <param>
- <name>Matrix A</name>
- <key>A</key>
- <value>((1, 0), (0, 1))</value>
- <type>raw</type>
- </param>
- <param>
- <name>TPP</name>
- <key>tag_propagation_policy</key>
- <type>enum</type>
- <option>
- <name>All to All</name>
- <key>gr.TPP_ALL_TO_ALL</key>
- </option>
- <option>
- <name>One to One</name>
- <key>gr.TPP_ONE_TO_ONE</key>
- </option>
- <option>
- <name>No Propagation</name>
- <key>gr.TPP_DONT</key>
- </option>
- <option>
- <name>Matrix-Defined</name>
- <key>gr.TPP_CUSTOM</key>
- </option>
- </param>
- <check>len($A) > 0</check>
- <check>len(${A}[0]) > 0</check>
- <check>$tag_propagation_policy != gr.TPP_ONE_TO_ONE or (len($A) == len(${A}[0]))</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>len(${A}[0])</nports>
- </sink>
- <sink>
- <name>set_A</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <nports>len($A)</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_multiply_xx.block.yml b/gr-blocks/grc/blocks_multiply_xx.block.yml
new file mode 100644
index 0000000000..41c28458a8
--- /dev/null
+++ b/gr-blocks/grc/blocks_multiply_xx.block.yml
@@ -0,0 +1,42 @@
+id: blocks_multiply_xx
+label: Multiply
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_inputs > 1 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.multiply_v${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_multiply_xx.xml b/gr-blocks/grc/blocks_multiply_xx.xml
deleted file mode 100644
index 15f0241427..0000000000
--- a/gr-blocks/grc/blocks_multiply_xx.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Multiply Block:
-## all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Multiply</name>
- <key>blocks_multiply_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.multiply_v$(type.fcn)($vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt; 1</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_mute_xx.block.yml b/gr-blocks/grc/blocks_mute_xx.block.yml
new file mode 100644
index 0000000000..8e36c568d1
--- /dev/null
+++ b/gr-blocks/grc/blocks_mute_xx.block.yml
@@ -0,0 +1,35 @@
+id: blocks_mute_xx
+label: Mute
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: mute
+ label: Mute
+ dtype: raw
+ default: 'False'
+ options: ['True', 'False']
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+- domain: message
+ id: set_mute
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.mute_${type.fcn}(bool(${mute}))
+ callbacks:
+ - set_mute(bool(${mute}))
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_mute_xx.xml b/gr-blocks/grc/blocks_mute_xx.xml
deleted file mode 100644
index 74c22ec83a..0000000000
--- a/gr-blocks/grc/blocks_mute_xx.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Mute Block:
-## Cast input to bool.
-###################################################
- -->
-<block>
- <name>Mute</name>
- <key>blocks_mute_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.mute_$(type.fcn)(bool($mute))</make>
- <callback>set_mute(bool($mute))</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Mute</name>
- <key>mute</key>
- <value>False</value>
- <type>raw</type>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <sink>
- <name>set_mute</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_nlog10_ff.block.yml b/gr-blocks/grc/blocks_nlog10_ff.block.yml
new file mode 100644
index 0000000000..004e72b4ec
--- /dev/null
+++ b/gr-blocks/grc/blocks_nlog10_ff.block.yml
@@ -0,0 +1,37 @@
+id: blocks_nlog10_ff
+label: Log10
+
+parameters:
+- id: n
+ label: n
+ dtype: real
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: k
+ label: k
+ dtype: real
+ default: '0'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.nlog10_ff(${n}, ${vlen}, ${k})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_nlog10_ff.xml b/gr-blocks/grc/blocks_nlog10_ff.xml
deleted file mode 100644
index 884f4a444e..0000000000
--- a/gr-blocks/grc/blocks_nlog10_ff.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Log10 Block:
-## float in/ float out
-###################################################
- -->
-<block>
- <name>Log10</name>
- <key>blocks_nlog10_ff</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.nlog10_ff($n, $vlen, $k)</make>
- <param>
- <name>n</name>
- <key>n</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>k</name>
- <key>k</key>
- <value>0</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen >= 1</check>
- <sink>
- <name>in</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_nop.block.yml b/gr-blocks/grc/blocks_nop.block.yml
new file mode 100644
index 0000000000..5e47e813ad
--- /dev/null
+++ b/gr-blocks/grc/blocks_nop.block.yml
@@ -0,0 +1,44 @@
+id: blocks_nop
+label: Nop
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.nop(${type.size}*${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_nop.xml b/gr-blocks/grc/blocks_nop.xml
deleted file mode 100644
index d38c23839d..0000000000
--- a/gr-blocks/grc/blocks_nop.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Nop
-###################################################
- -->
-<block>
- <name>Nop</name>
- <key>blocks_nop</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.nop($type.size*$vlen)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_ports &gt; 0</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_not_xx.block.yml b/gr-blocks/grc/blocks_not_xx.block.yml
new file mode 100644
index 0000000000..63ec98a42a
--- /dev/null
+++ b/gr-blocks/grc/blocks_not_xx.block.yml
@@ -0,0 +1,25 @@
+id: blocks_not_xx
+label: Not
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.not_${type.fcn}()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_not_xx.xml b/gr-blocks/grc/blocks_not_xx.xml
deleted file mode 100644
index fe8916d8b3..0000000000
--- a/gr-blocks/grc/blocks_not_xx.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Logical Not Block
-###################################################
- -->
-<block>
- <name>Not</name>
- <key>blocks_not_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.not_$(type.fcn)()</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_null_sink.block.yml b/gr-blocks/grc/blocks_null_sink.block.yml
new file mode 100644
index 0000000000..c9530f99de
--- /dev/null
+++ b/gr-blocks/grc/blocks_null_sink.block.yml
@@ -0,0 +1,43 @@
+id: blocks_null_sink
+label: Null Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '1'
+ hide: part
+- id: bus_conns
+ label: Bus Connections
+ dtype: raw
+ default: '[[0,],]'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+asserts:
+- ${ num_inputs >= 1 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.null_sink(${type.size}*${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_null_sink.xml b/gr-blocks/grc/blocks_null_sink.xml
deleted file mode 100644
index f2907d20bd..0000000000
--- a/gr-blocks/grc/blocks_null_sink.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Null Sink
-###################################################
- -->
-<block>
- <name>Null Sink</name>
- <key>blocks_null_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.null_sink($type.size*$vlen)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Bus Connections</name>
- <key>bus_conns</key>
- <value>[[0,],]</value>
- <type>raw</type>
- <hide>part</hide>
- </param>
- <check>$num_inputs &gt;= 1</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <bus_structure_sink>$bus_conns</bus_structure_sink>
-</block>
-
diff --git a/gr-blocks/grc/blocks_null_source.block.yml b/gr-blocks/grc/blocks_null_source.block.yml
new file mode 100644
index 0000000000..0678687a8d
--- /dev/null
+++ b/gr-blocks/grc/blocks_null_source.block.yml
@@ -0,0 +1,39 @@
+id: blocks_null_source
+label: Null Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: num_outputs
+ label: Num Outputs
+ dtype: int
+ default: '1'
+ hide: part
+- id: bus_conns
+ label: Bus Connections
+ dtype: raw
+ default: '[[0,],]'
+ hide: part
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_outputs }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.null_source(${type.size}*${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_null_source.xml b/gr-blocks/grc/blocks_null_source.xml
deleted file mode 100644
index 9c109e651f..0000000000
--- a/gr-blocks/grc/blocks_null_source.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Null Source
-###################################################
- -->
-<block>
- <name>Null Source</name>
- <key>blocks_null_source</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.null_source($type.size*$vlen)</make>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Outputs</name>
- <key>num_outputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Bus Connections</name>
- <key>bus_conns</key>
- <value>[[0,],]</value>
- <type>raw</type>
- <hide>part</hide>
- </param>
- <check>$num_outputs &gt;= 1</check>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_outputs</nports>
- </source>
- <bus_structure_source>$bus_conns</bus_structure_source>
-</block>
diff --git a/gr-blocks/grc/blocks_or_xx.block.yml b/gr-blocks/grc/blocks_or_xx.block.yml
new file mode 100644
index 0000000000..a28a951712
--- /dev/null
+++ b/gr-blocks/grc/blocks_or_xx.block.yml
@@ -0,0 +1,34 @@
+id: blocks_or_xx
+label: Or
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+asserts:
+- ${ num_inputs >= 2 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.or_${type.fcn}()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_or_xx.xml b/gr-blocks/grc/blocks_or_xx.xml
deleted file mode 100644
index 400c093892..0000000000
--- a/gr-blocks/grc/blocks_or_xx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Logical Or Block
-###################################################
- -->
-<block>
- <name>Or</name>
- <key>blocks_or_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.or_$(type.fcn)()</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 2</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_pack_k_bits_bb.block.yml b/gr-blocks/grc/blocks_pack_k_bits_bb.block.yml
new file mode 100644
index 0000000000..904f382f0f
--- /dev/null
+++ b/gr-blocks/grc/blocks_pack_k_bits_bb.block.yml
@@ -0,0 +1,24 @@
+id: blocks_pack_k_bits_bb
+label: Pack K Bits
+
+parameters:
+- id: k
+ label: K
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.pack_k_bits_bb(${k})
+
+documentation: |-
+ Pack K unpacked bits (one bit per byte) into a single packed byte containing k bits and 8 - k zeros.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_pack_k_bits_bb.xml b/gr-blocks/grc/blocks_pack_k_bits_bb.xml
deleted file mode 100644
index 5400eb4af9..0000000000
--- a/gr-blocks/grc/blocks_pack_k_bits_bb.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Pack K Bits
-###################################################
- -->
-<block>
- <name>Pack K Bits</name>
- <key>blocks_pack_k_bits_bb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.pack_k_bits_bb($k)</make>
- <param>
- <name>K</name>
- <key>k</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
- <doc>
- Pack K unpacked bits (one bit per byte) into a single packed byte containing k bits and 8 - k zeros.
- </doc>
-
-</block>
diff --git a/gr-blocks/grc/blocks_packed_to_unpacked_xx.block.yml b/gr-blocks/grc/blocks_packed_to_unpacked_xx.block.yml
new file mode 100644
index 0000000000..5d49d1851c
--- /dev/null
+++ b/gr-blocks/grc/blocks_packed_to_unpacked_xx.block.yml
@@ -0,0 +1,44 @@
+id: blocks_packed_to_unpacked_xx
+label: Packed to Unpacked
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: bits_per_chunk
+ label: Bits per Chunk
+ dtype: int
+ default: '2'
+- id: endianness
+ label: Endianness
+ dtype: int
+ options: [gr.GR_MSB_FIRST, gr.GR_LSB_FIRST]
+ option_labels: [MSB, LSB]
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.packed_to_unpacked_${type.fcn}(${bits_per_chunk}, ${endianness})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_packed_to_unpacked_xx.xml b/gr-blocks/grc/blocks_packed_to_unpacked_xx.xml
deleted file mode 100644
index b236a38dbc..0000000000
--- a/gr-blocks/grc/blocks_packed_to_unpacked_xx.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Packed to Unpacked
-###################################################
- -->
-<block>
- <name>Packed to Unpacked</name>
- <key>blocks_packed_to_unpacked_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.packed_to_unpacked_$(type.fcn)($bits_per_chunk, $endianness)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Bits per Chunk</name>
- <key>bits_per_chunk</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Endianness</name>
- <key>endianness</key>
- <type>int</type>
- <option>
- <name>MSB</name>
- <key>gr.GR_MSB_FIRST</key>
- </option>
- <option>
- <name>LSB</name>
- <key>gr.GR_LSB_FIRST</key>
- </option>
- </param>
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_ports &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>$num_ports</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_patterned_interleaver.block.yml b/gr-blocks/grc/blocks_patterned_interleaver.block.yml
new file mode 100644
index 0000000000..97f170f97e
--- /dev/null
+++ b/gr-blocks/grc/blocks_patterned_interleaver.block.yml
@@ -0,0 +1,42 @@
+id: blocks_patterned_interleaver
+label: Patterned Interleaver
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: pattern
+ label: Pattern
+ dtype: int_vector
+ default: '[0,0,1,2]'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ 1+max(pattern) }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.patterned_interleaver(${type.size}*${vlen}, ${pattern})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_patterned_interleaver.xml b/gr-blocks/grc/blocks_patterned_interleaver.xml
deleted file mode 100644
index 8dd0fac41d..0000000000
--- a/gr-blocks/grc/blocks_patterned_interleaver.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector to Stream
-###################################################
- -->
-<block>
- <name>Patterned Interleaver</name>
- <key>blocks_patterned_interleaver</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.patterned_interleaver($type.size*$vlen, $pattern)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Pattern</name>
- <key>pattern</key>
- <value>[0,0,1,2]</value>
- <type>int_vector</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>1+max($pattern)</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_pdu_filter.block.yml b/gr-blocks/grc/blocks_pdu_filter.block.yml
new file mode 100644
index 0000000000..43d72b7480
--- /dev/null
+++ b/gr-blocks/grc/blocks_pdu_filter.block.yml
@@ -0,0 +1,40 @@
+id: blocks_pdu_filter
+label: PDU Filter
+
+parameters:
+- id: k
+ label: Key
+ dtype: raw
+ default: pmt.intern("key")
+- id: v
+ label: Value
+ dtype: raw
+ default: pmt.intern("value")
+- id: invert
+ label: Invert Filter
+ dtype: bool
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+
+inputs:
+- domain: message
+ id: pdus
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.pdu_filter(${k}, ${v}, ${invert})
+ callbacks:
+ - set_key(${k})
+ - set_val(${v})
+ - set_inversion(${invert})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_pdu_filter.xml b/gr-blocks/grc/blocks_pdu_filter.xml
deleted file mode 100644
index 0e848963de..0000000000
--- a/gr-blocks/grc/blocks_pdu_filter.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PDU Filter
-###################################################
- -->
-<block>
- <name>PDU Filter</name>
- <key>blocks_pdu_filter</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.pdu_filter($k, $v, $invert)</make>
- <callback>set_key($k)</callback>
- <callback>set_val($v)</callback>
- <callback>set_inversion($invert)</callback>
- <param>
- <name>Key</name>
- <key>k</key>
- <value>pmt.intern("key")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Value</name>
- <key>v</key>
- <value>pmt.intern("value")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Invert Filter</name>
- <key>invert</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_pdu_remove.block.yml b/gr-blocks/grc/blocks_pdu_remove.block.yml
new file mode 100644
index 0000000000..4750ff22c4
--- /dev/null
+++ b/gr-blocks/grc/blocks_pdu_remove.block.yml
@@ -0,0 +1,28 @@
+id: blocks_pdu_remove
+label: PDU Remove
+
+parameters:
+- id: k
+ label: Key
+ dtype: raw
+ default: pmt.intern("key")
+
+inputs:
+- domain: message
+ id: pdus
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.pdu_remove(${k})
+ callbacks:
+ - set_key(${k})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_pdu_remove.xml b/gr-blocks/grc/blocks_pdu_remove.xml
deleted file mode 100644
index c71da32fce..0000000000
--- a/gr-blocks/grc/blocks_pdu_remove.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PDU Remove
-###################################################
- -->
-<block>
- <name>PDU Remove</name>
- <key>blocks_pdu_remove</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.pdu_remove($k)</make>
- <callback>set_key($k)</callback>
- <param>
- <name>Key</name>
- <key>k</key>
- <value>pmt.intern("key")</value>
- <type>raw</type>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_pdu_set.block.yml b/gr-blocks/grc/blocks_pdu_set.block.yml
new file mode 100644
index 0000000000..44a06a2e09
--- /dev/null
+++ b/gr-blocks/grc/blocks_pdu_set.block.yml
@@ -0,0 +1,33 @@
+id: blocks_pdu_set
+label: PDU Set
+
+parameters:
+- id: k
+ label: Key
+ dtype: raw
+ default: pmt.intern("key")
+- id: v
+ label: Value
+ dtype: raw
+ default: pmt.intern("value")
+
+inputs:
+- domain: message
+ id: pdus
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.pdu_set(${k}, ${v})
+ callbacks:
+ - set_key(${k})
+ - set_val(${v})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_pdu_set.xml b/gr-blocks/grc/blocks_pdu_set.xml
deleted file mode 100644
index b7a9030622..0000000000
--- a/gr-blocks/grc/blocks_pdu_set.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PDU Set
-###################################################
- -->
-<block>
- <name>PDU Set</name>
- <key>blocks_pdu_set</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.pdu_set($k, $v)</make>
- <callback>set_key($k)</callback>
- <callback>set_val($v)</callback>
- <param>
- <name>Key</name>
- <key>k</key>
- <value>pmt.intern("key")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Value</name>
- <key>v</key>
- <value>pmt.intern("value")</value>
- <type>raw</type>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_pdu_to_tagged_stream.block.yml b/gr-blocks/grc/blocks_pdu_to_tagged_stream.block.yml
new file mode 100644
index 0000000000..3b44badd4b
--- /dev/null
+++ b/gr-blocks/grc/blocks_pdu_to_tagged_stream.block.yml
@@ -0,0 +1,29 @@
+id: blocks_pdu_to_tagged_stream
+label: PDU to Tagged Stream
+
+parameters:
+- id: type
+ label: Item Type
+ dtype: enum
+ options: [byte, complex, float]
+ option_attributes:
+ tv: [blocks.byte_t, blocks.complex_t, blocks.float_t]
+ hide: part
+- id: tag
+ label: Length tag name
+ dtype: string
+ default: packet_len
+
+inputs:
+- domain: message
+ id: pdus
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.pdu_to_tagged_stream(${type.tv}, ${tag})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_pdu_to_tagged_stream.xml b/gr-blocks/grc/blocks_pdu_to_tagged_stream.xml
deleted file mode 100644
index 0835a2adee..0000000000
--- a/gr-blocks/grc/blocks_pdu_to_tagged_stream.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PDU Message to Tagged Stream
-###################################################
- -->
-<block>
- <name>PDU to Tagged Stream</name>
- <key>blocks_pdu_to_tagged_stream</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.pdu_to_tagged_stream($type.tv, $tag)</make>
- <param>
- <name>Item Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>tv:blocks.byte_t</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>tv:blocks.complex_t</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>tv:blocks.float_t</opt>
- </option>
- </param>
- <param>
- <name>Length tag name</name>
- <key>tag</key>
- <value>packet_len</value>
- <type>string</type>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_peak_detector2_fb.block.yml b/gr-blocks/grc/blocks_peak_detector2_fb.block.yml
new file mode 100644
index 0000000000..0950640ae2
--- /dev/null
+++ b/gr-blocks/grc/blocks_peak_detector2_fb.block.yml
@@ -0,0 +1,38 @@
+id: blocks_peak_detector2_fb
+label: Peak Detector2
+
+parameters:
+- id: threshold_factor_rise
+ label: TH Factor Rise
+ dtype: real
+ default: '7'
+- id: look_ahead
+ label: Look Ahead
+ dtype: int
+ default: '1000'
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '0.001'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+- label: debug
+ domain: stream
+ dtype: float
+ optional: true
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.peak_detector2_fb(${threshold_factor_rise}, ${look_ahead}, ${alpha})
+ callbacks:
+ - set_threshold_factor_rise(${threshold_factor_rise})
+ - set_look_ahead(${look_ahead})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_peak_detector2_fb.xml b/gr-blocks/grc/blocks_peak_detector2_fb.xml
deleted file mode 100644
index 0b25e01680..0000000000
--- a/gr-blocks/grc/blocks_peak_detector2_fb.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Peak Detector2
-###################################################
- -->
-<block>
- <name>Peak Detector2</name>
- <key>blocks_peak_detector2_fb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.peak_detector2_fb($threshold_factor_rise, $look_ahead, $alpha)</make>
- <callback>set_threshold_factor_rise($threshold_factor_rise)</callback>
- <callback>set_look_ahead($look_ahead)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>TH Factor Rise</name>
- <key>threshold_factor_rise</key>
- <value>7</value>
- <type>real</type>
- </param>
- <param>
- <name>Look Ahead</name>
- <key>look_ahead</key>
- <value>1000</value>
- <type>int</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0.001</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
- <source>
- <name>debug</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_peak_detector_xb.block.yml b/gr-blocks/grc/blocks_peak_detector_xb.block.yml
new file mode 100644
index 0000000000..be0f238391
--- /dev/null
+++ b/gr-blocks/grc/blocks_peak_detector_xb.block.yml
@@ -0,0 +1,47 @@
+id: blocks_peak_detector_xb
+label: Peak Detector
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [float, int, short]
+ option_attributes:
+ fcn: [f, i, s]
+ hide: part
+- id: threshold_factor_rise
+ label: TH Factor Rise
+ dtype: real
+ default: '0.25'
+- id: threshold_factor_fall
+ label: TH Factor Fall
+ dtype: real
+ default: '0.40'
+- id: look_ahead
+ label: Look Ahead
+ dtype: int
+ default: '10'
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '0.001'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.peak_detector_${type.fcn}b(${threshold_factor_rise}, ${threshold_factor_fall},
+ ${look_ahead}, ${alpha})
+ callbacks:
+ - set_threshold_factor_rise(${threshold_factor_rise})
+ - set_threshold_factor_fall(${threshold_factor_fall})
+ - set_look_ahead(${look_ahead})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_peak_detector_xb.xml b/gr-blocks/grc/blocks_peak_detector_xb.xml
deleted file mode 100644
index 1aabf89474..0000000000
--- a/gr-blocks/grc/blocks_peak_detector_xb.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Peak Detector
-###################################################
- -->
-<block>
- <name>Peak Detector</name>
- <key>blocks_peak_detector_xb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.peak_detector_$(type.fcn)b($threshold_factor_rise, $threshold_factor_fall, $look_ahead, $alpha)</make>
- <callback>set_threshold_factor_rise($threshold_factor_rise)</callback>
- <callback>set_threshold_factor_fall($threshold_factor_fall)</callback>
- <callback>set_look_ahead($look_ahead)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- </param>
- <param>
- <name>TH Factor Rise</name>
- <key>threshold_factor_rise</key>
- <value>0.25</value>
- <type>real</type>
- </param>
- <param>
- <name>TH Factor Fall</name>
- <key>threshold_factor_fall</key>
- <value>0.40</value>
- <type>real</type>
- </param>
- <param>
- <name>Look Ahead</name>
- <key>look_ahead</key>
- <value>10</value>
- <type>int</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0.001</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_plateau_detector_fb.block.yml b/gr-blocks/grc/blocks_plateau_detector_fb.block.yml
new file mode 100644
index 0000000000..9af55a67f9
--- /dev/null
+++ b/gr-blocks/grc/blocks_plateau_detector_fb.block.yml
@@ -0,0 +1,25 @@
+id: blocks_plateau_detector_fb
+label: Plateau Detector
+
+parameters:
+- id: max_len
+ label: Max. plateau length
+ dtype: int
+- id: threshold
+ label: Threshold
+ dtype: real
+ default: '0.9'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.plateau_detector_fb(${max_len}, ${threshold})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_plateau_detector_fb.xml b/gr-blocks/grc/blocks_plateau_detector_fb.xml
deleted file mode 100644
index 90f67a4cf5..0000000000
--- a/gr-blocks/grc/blocks_plateau_detector_fb.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Plateau Detector</name>
- <key>blocks_plateau_detector_fb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.plateau_detector_fb($max_len, $threshold)</make>
- <param>
- <name>Max. plateau length</name>
- <key>max_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <value>0.9</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_probe_rate.block.yml b/gr-blocks/grc/blocks_probe_rate.block.yml
new file mode 100644
index 0000000000..1f9ed65b2b
--- /dev/null
+++ b/gr-blocks/grc/blocks_probe_rate.block.yml
@@ -0,0 +1,44 @@
+id: blocks_probe_rate
+label: Probe Rate
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: mintime
+ label: Min Update Time (ms)
+ dtype: real
+ default: '500.0'
+- id: alpha
+ label: Update Alpha
+ dtype: real
+ default: '0.15'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: message
+ id: rate
+ optional: true
+
+asserts:
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.probe_rate(${type.size}*${vlen}, ${mintime}, ${alpha})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_probe_rate.xml b/gr-blocks/grc/blocks_probe_rate.xml
deleted file mode 100644
index f79444c137..0000000000
--- a/gr-blocks/grc/blocks_probe_rate.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Probe Rate
-###################################################
- -->
-<block>
- <name>Probe Rate</name>
- <key>blocks_probe_rate</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.probe_rate($type.size*$vlen, $mintime, $alpha)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Min Update Time (ms)</name>
- <key>mintime</key>
- <value>500.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Update Alpha</name>
- <key>alpha</key>
- <value>0.15</value>
- <type>real</type>
- </param>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>rate</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_probe_signal_vx.block.yml b/gr-blocks/grc/blocks_probe_signal_vx.block.yml
new file mode 100644
index 0000000000..2b486a55b2
--- /dev/null
+++ b/gr-blocks/grc/blocks_probe_signal_vx.block.yml
@@ -0,0 +1,35 @@
+id: blocks_probe_signal_vx
+label: Probe Signal Vector
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.probe_signal_v${type.fcn}(${vlen})
+
+documentation: |-
+ Available functions to probe: level()
+
+ Use with the function probe block.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_probe_signal_vx.xml b/gr-blocks/grc/blocks_probe_signal_vx.xml
deleted file mode 100644
index 930a49643c..0000000000
--- a/gr-blocks/grc/blocks_probe_signal_vx.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Probe Signal
-###################################################
- -->
-<block>
- <name>Probe Signal Vector</name>
- <key>blocks_probe_signal_vx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.probe_signal_v$(type.fcn)($vlen)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <doc>
-Available functions to probe: level()
-
-Use with the function probe block.
- </doc>
-</block>
diff --git a/gr-blocks/grc/blocks_probe_signal_x.block.yml b/gr-blocks/grc/blocks_probe_signal_x.block.yml
new file mode 100644
index 0000000000..0991bde99f
--- /dev/null
+++ b/gr-blocks/grc/blocks_probe_signal_x.block.yml
@@ -0,0 +1,26 @@
+id: blocks_probe_signal_x
+label: Probe Signal
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.probe_signal_${type.fcn}()
+
+documentation: |-
+ Available functions to probe: level()
+
+ Use with the function probe block.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_probe_signal_x.xml b/gr-blocks/grc/blocks_probe_signal_x.xml
deleted file mode 100644
index 726f0fa747..0000000000
--- a/gr-blocks/grc/blocks_probe_signal_x.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Probe Signal
-###################################################
- -->
-<block>
- <name>Probe Signal</name>
- <key>blocks_probe_signal_x</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.probe_signal_$(type.fcn)()</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <doc>
-Available functions to probe: level()
-
-Use with the function probe block.
- </doc>
-</block>
diff --git a/gr-blocks/grc/blocks_random_pdu.block.yml b/gr-blocks/grc/blocks_random_pdu.block.yml
new file mode 100644
index 0000000000..831b7eb4c2
--- /dev/null
+++ b/gr-blocks/grc/blocks_random_pdu.block.yml
@@ -0,0 +1,38 @@
+id: blocks_random_pdu
+label: Random PDU Generator
+
+parameters:
+- id: minsize
+ label: Min Bytes
+ dtype: int
+ default: '50'
+- id: maxsize
+ label: Max Bytes
+ dtype: int
+ default: '2000'
+- id: mask
+ label: Byte Mask
+ dtype: int
+ default: '0xFF'
+- id: length_modulo
+ label: Length Modulo
+ dtype: int
+ default: '2'
+
+inputs:
+- domain: message
+ id: generate
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.random_pdu(${minsize}, ${maxsize}, chr(${mask}), ${length_modulo})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_random_pdu.xml b/gr-blocks/grc/blocks_random_pdu.xml
deleted file mode 100644
index a70fa7fbf7..0000000000
--- a/gr-blocks/grc/blocks_random_pdu.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Random PDU
-###################################################
- -->
-<block>
- <name>Random PDU Generator</name>
- <key>blocks_random_pdu</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.random_pdu($minsize, $maxsize, chr($mask), $length_modulo)</make>
- <param>
- <name>Min Bytes</name>
- <key>minsize</key>
- <value>50</value>
- <type>int</type>
- </param>
- <param>
- <name>Max Bytes</name>
- <key>maxsize</key>
- <value>2000</value>
- <type>int</type>
- </param>
- <param>
- <name>Byte Mask</name>
- <key>mask</key>
- <value>0xFF</value>
- <type>int</type>
- </param>
- <param>
- <name>Length Modulo</name>
- <key>length_modulo</key>
- <value>2</value>
- <type>int</type>
- </param>
- <sink>
- <name>generate</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_regenerate_bb.block.yml b/gr-blocks/grc/blocks_regenerate_bb.block.yml
new file mode 100644
index 0000000000..843e680a41
--- /dev/null
+++ b/gr-blocks/grc/blocks_regenerate_bb.block.yml
@@ -0,0 +1,25 @@
+id: blocks_regenerate_bb
+label: Regenerate
+
+parameters:
+- id: period
+ label: Period
+ dtype: int
+- id: max_regen
+ label: Max Regen Count
+ dtype: int
+ default: '500'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.regenerate_bb(${period}, ${max_regen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_regenerate_bb.xml b/gr-blocks/grc/blocks_regenerate_bb.xml
deleted file mode 100644
index bbee53387f..0000000000
--- a/gr-blocks/grc/blocks_regenerate_bb.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Regenerate Block:
-## char in/ char out
-###################################################
- -->
-<block>
- <name>Regenerate</name>
- <key>blocks_regenerate_bb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.regenerate_bb($period, $max_regen)</make>
- <param>
- <name>Period</name>
- <key>period</key>
- <type>int</type>
- </param>
- <param>
- <name>Max Regen Count</name>
- <key>max_regen</key>
- <value>500</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_repack_bits_bb.block.yml b/gr-blocks/grc/blocks_repack_bits_bb.block.yml
new file mode 100644
index 0000000000..9d5a3ba9ca
--- /dev/null
+++ b/gr-blocks/grc/blocks_repack_bits_bb.block.yml
@@ -0,0 +1,47 @@
+id: blocks_repack_bits_bb
+label: Repack Bits
+
+parameters:
+- id: k
+ label: Bits per input byte
+ dtype: int
+ default: '1'
+- id: l
+ label: Bits per output byte
+ dtype: int
+ default: '8'
+- id: len_tag_key
+ label: Length Tag Key
+ dtype: string
+ default: '""'
+ hide: part
+- id: align_output
+ label: Packet Alignment
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Output, Input]
+ hide: part
+- id: endianness
+ label: Endianness
+ dtype: int
+ default: gr.GR_LSB_FIRST
+ options: [gr.GR_MSB_FIRST, gr.GR_LSB_FIRST]
+ option_labels: [MSB, LSB]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.repack_bits_bb(${k}, ${l}, ${len_tag_key}, ${align_output}, ${endianness})
+ callbacks:
+ - set_k_and_l(${k},${l})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_repack_bits_bb.xml b/gr-blocks/grc/blocks_repack_bits_bb.xml
deleted file mode 100644
index 0c107d8439..0000000000
--- a/gr-blocks/grc/blocks_repack_bits_bb.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<block>
- <name>Repack Bits</name>
- <key>blocks_repack_bits_bb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.repack_bits_bb($k, $l, $len_tag_key, $align_output, $endianness)</make>
- <callback>set_k_and_l($k,$l)</callback>
- <param>
- <name>Bits per input byte</name>
- <key>k</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Bits per output byte</name>
- <key>l</key>
- <value>8</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Length Tag Key</name>
- <key>len_tag_key</key>
- <value>""</value>
- <type>string</type>
- <hide>part</hide>
- </param>
-
- <param>
- <name>Packet Alignment</name>
- <key>align_output</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Output</name>
- <key>True</key>
- </option>
- <option>
- <name>Input</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>Endianness</name>
- <key>endianness</key>
- <value>gr.GR_LSB_FIRST</value>
- <type>int</type>
- <hide>part</hide>
- <option>
- <name>MSB</name>
- <key>gr.GR_MSB_FIRST</key>
- </option>
- <option>
- <name>LSB</name>
- <key>gr.GR_LSB_FIRST</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_repeat.block.yml b/gr-blocks/grc/blocks_repeat.block.yml
new file mode 100644
index 0000000000..809231d293
--- /dev/null
+++ b/gr-blocks/grc/blocks_repeat.block.yml
@@ -0,0 +1,41 @@
+id: blocks_repeat
+label: Repeat
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: interp
+ label: Interpolation
+ dtype: int
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.repeat(${type.size}*${vlen}, ${interp})
+ callbacks:
+ - set_interpolation(${interp})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_repeat.xml b/gr-blocks/grc/blocks_repeat.xml
deleted file mode 100644
index 793d0148b2..0000000000
--- a/gr-blocks/grc/blocks_repeat.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Repeat
-###################################################
- -->
-<block>
- <name>Repeat</name>
- <key>blocks_repeat</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.repeat($type.size*$vlen, $interp)</make>
- <callback>set_interpolation($interp)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_rms_xx.block.yml b/gr-blocks/grc/blocks_rms_xx.block.yml
new file mode 100644
index 0000000000..ca5e8df124
--- /dev/null
+++ b/gr-blocks/grc/blocks_rms_xx.block.yml
@@ -0,0 +1,31 @@
+id: blocks_rms_xx
+label: RMS
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [c, f]
+ hide: part
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '0.0001'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.rms_${type.fcn}f(${alpha})
+ callbacks:
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_rms_xx.xml b/gr-blocks/grc/blocks_rms_xx.xml
deleted file mode 100644
index 0ae09139a6..0000000000
--- a/gr-blocks/grc/blocks_rms_xx.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##RMS
-###################################################
- -->
-<block>
- <name>RMS</name>
- <key>blocks_rms_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.rms_$(type.fcn)f($alpha)</make>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0.0001</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_rotator_cc.block.yml b/gr-blocks/grc/blocks_rotator_cc.block.yml
new file mode 100644
index 0000000000..d65fbd5997
--- /dev/null
+++ b/gr-blocks/grc/blocks_rotator_cc.block.yml
@@ -0,0 +1,24 @@
+id: blocks_rotator_cc
+label: Rotator
+
+parameters:
+- id: phase_inc
+ label: Phase Increment
+ dtype: real
+ default: '0.0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.rotator_cc(${phase_inc})
+ callbacks:
+ - set_phase_inc(${phase_inc})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_rotator_cc.xml b/gr-blocks/grc/blocks_rotator_cc.xml
deleted file mode 100644
index aa011b80e0..0000000000
--- a/gr-blocks/grc/blocks_rotator_cc.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Complex rotator
-###################################################
- -->
-<block>
- <name>Rotator</name>
- <key>blocks_rotator_cc</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.rotator_cc($phase_inc)</make>
- <callback>set_phase_inc($phase_inc)</callback>
- <param>
- <name>Phase Increment</name>
- <key>phase_inc</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_sample_and_hold_xx.block.yml b/gr-blocks/grc/blocks_sample_and_hold_xx.block.yml
new file mode 100644
index 0000000000..893e7862b2
--- /dev/null
+++ b/gr-blocks/grc/blocks_sample_and_hold_xx.block.yml
@@ -0,0 +1,28 @@
+id: blocks_sample_and_hold_xx
+label: Sample and Hold
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [float, int, short, byte]
+ option_attributes:
+ fcn: [ff, ii, ss, bb]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+- label: ctrl
+ domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.sample_and_hold_${type.fcn}()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_sample_and_hold_xx.xml b/gr-blocks/grc/blocks_sample_and_hold_xx.xml
deleted file mode 100644
index 1583204c02..0000000000
--- a/gr-blocks/grc/blocks_sample_and_hold_xx.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Sample and Hold
-###################################################
- -->
-<block>
- <name>Sample and Hold</name>
- <key>blocks_sample_and_hold_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.sample_and_hold_$(type.fcn)()</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <sink>
- <name>ctrl</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_short_to_char.block.yml b/gr-blocks/grc/blocks_short_to_char.block.yml
new file mode 100644
index 0000000000..d24df725da
--- /dev/null
+++ b/gr-blocks/grc/blocks_short_to_char.block.yml
@@ -0,0 +1,25 @@
+id: blocks_short_to_char
+label: Short To Char
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.short_to_char(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_short_to_char.xml b/gr-blocks/grc/blocks_short_to_char.xml
deleted file mode 100644
index 1951333d1a..0000000000
--- a/gr-blocks/grc/blocks_short_to_char.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Short to char:
-###################################################
- -->
-<block>
- <name>Short To Char</name>
- <key>blocks_short_to_char</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.short_to_char($vlen)</make>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_short_to_float.block.yml b/gr-blocks/grc/blocks_short_to_float.block.yml
new file mode 100644
index 0000000000..8ad5f7ed13
--- /dev/null
+++ b/gr-blocks/grc/blocks_short_to_float.block.yml
@@ -0,0 +1,31 @@
+id: blocks_short_to_float
+label: Short To Float
+
+parameters:
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: scale
+ label: Scale
+ dtype: real
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: short
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.short_to_float(${vlen}, ${scale})
+ callbacks:
+ - set_scale(${scale})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_short_to_float.xml b/gr-blocks/grc/blocks_short_to_float.xml
deleted file mode 100644
index 23ea019bc2..0000000000
--- a/gr-blocks/grc/blocks_short_to_float.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Short to Float:
-###################################################
- -->
-<block>
- <name>Short To Float</name>
- <key>blocks_short_to_float</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.short_to_float($vlen, $scale)</make>
- <callback>set_scale($scale)</callback>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Scale</name>
- <key>scale</key>
- <value>1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_skiphead.block.yml b/gr-blocks/grc/blocks_skiphead.block.yml
new file mode 100644
index 0000000000..c0f10eb2d1
--- /dev/null
+++ b/gr-blocks/grc/blocks_skiphead.block.yml
@@ -0,0 +1,40 @@
+id: blocks_skiphead
+label: Skip Head
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_items
+ label: Num Items
+ dtype: int
+ default: '1024'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.skiphead(${type.size}*${vlen}, ${num_items})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_skiphead.xml b/gr-blocks/grc/blocks_skiphead.xml
deleted file mode 100644
index 7d90862830..0000000000
--- a/gr-blocks/grc/blocks_skiphead.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Skip Head
-###################################################
- -->
-<block>
- <name>Skip Head</name>
- <key>blocks_skiphead</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.skiphead($type.size*$vlen, $num_items)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Items</name>
- <key>num_items</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_socket_pdu.block.yml b/gr-blocks/grc/blocks_socket_pdu.block.yml
new file mode 100644
index 0000000000..9869219047
--- /dev/null
+++ b/gr-blocks/grc/blocks_socket_pdu.block.yml
@@ -0,0 +1,63 @@
+id: blocks_socket_pdu
+label: Socket PDU
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ default: TCP_SERVER
+ options: ['"TCP_SERVER"', '"TCP_CLIENT"', '"UDP_SERVER"', '"UDP_CLIENT"']
+ option_labels: [TCP Server, TCP Client, UDP Server, UDP Client]
+- id: host
+ label: Host
+ dtype: string
+- id: port
+ label: Port
+ dtype: string
+ default: '52001'
+- id: mtu
+ label: MTU
+ dtype: int
+ default: '10000'
+- id: tcp_no_delay
+ label: TCP No Delay
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [Enabled, Disabled]
+ hide: '${ #if ((type == ''"TCP_CLIENT"'') or (type == ''"TCP_SERVER"''))
+
+ #if (str(tcp_no_delay) == ''False'')
+
+ part
+
+ #else
+
+ none
+
+ #end if
+
+ #else
+
+ all
+
+ #end if }'
+
+inputs:
+- domain: message
+ id: pdus
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.socket_pdu(${type}, ${host}, ${port}, ${mtu}, ${tcp_no_delay})
+
+documentation: |-
+ For server modes, leave Host blank to bind to all interfaces (equivalent to 0.0.0.0).
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_socket_pdu.xml b/gr-blocks/grc/blocks_socket_pdu.xml
deleted file mode 100644
index 72dc38134c..0000000000
--- a/gr-blocks/grc/blocks_socket_pdu.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Socket PDU Message source/sink
-###################################################
- -->
-<block>
- <name>Socket PDU</name>
- <key>blocks_socket_pdu</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.socket_pdu($type, $host, $port, $mtu, $tcp_no_delay)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <value>TCP_SERVER</value>
- <type>enum</type>
- <option>
- <name>TCP Server</name>
- <key>"TCP_SERVER"</key>
- </option>
- <option>
- <name>TCP Client</name>
- <key>"TCP_CLIENT"</key>
- </option>
- <option>
- <name>UDP Server</name>
- <key>"UDP_SERVER"</key>
- </option>
- <option>
- <name>UDP Client</name>
- <key>"UDP_CLIENT"</key>
- </option>
- </param>
- <param>
- <name>Host</name>
- <key>host</key>
- <value></value>
- <type>string</type>
- </param>
- <param>
- <name>Port</name>
- <key>port</key>
- <value>52001</value>
- <type>string</type>
- </param>
- <param>
- <name>MTU</name>
- <key>mtu</key>
- <value>10000</value>
- <type>int</type>
- </param>
- <param>
- <name>TCP No Delay</name>
- <key>tcp_no_delay</key>
- <value>False</value>
- <type>enum</type>
- <hide>
-#if (($type() == '"TCP_CLIENT"') or ($type() == '"TCP_SERVER"'))
-#if (str($tcp_no_delay()) == 'False')
-part
-#else
-none
-#end if
-#else
-all
-#end if
-</hide>
- <option>
- <name>Enabled</name>
- <key>True</key>
- </option>
- <option>
- <name>Disabled</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
- <doc>For server modes, leave Host blank to bind to all interfaces (equivalent to 0.0.0.0).</doc>
-</block>
diff --git a/gr-blocks/grc/blocks_stream_mux.block.yml b/gr-blocks/grc/blocks_stream_mux.block.yml
new file mode 100644
index 0000000000..27d3baf89f
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_mux.block.yml
@@ -0,0 +1,48 @@
+id: blocks_stream_mux
+label: Stream Mux
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: lengths
+ label: Lengths
+ dtype: int_vector
+ default: 1, 1
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_inputs > 0 }
+- ${ num_inputs == len(lengths) }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.stream_mux(${type.size}*${vlen}, ${lengths})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stream_mux.xml b/gr-blocks/grc/blocks_stream_mux.xml
deleted file mode 100644
index 5e56a65d91..0000000000
--- a/gr-blocks/grc/blocks_stream_mux.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Stream Mux:
-## all types, many inputs, only one output
-###################################################
- -->
-<block>
- <name>Stream Mux</name>
- <key>blocks_stream_mux</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stream_mux($type.size*$vlen, $lengths)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Lengths</name>
- <key>lengths</key>
- <value>1, 1</value>
- <type>int_vector</type>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt; 0</check>
- <check>$num_inputs == len($lengths)</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_stream_to_streams.block.yml b/gr-blocks/grc/blocks_stream_to_streams.block.yml
new file mode 100644
index 0000000000..16adb159a3
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_to_streams.block.yml
@@ -0,0 +1,43 @@
+id: blocks_stream_to_streams
+label: Stream to Streams
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.stream_to_streams(${type.size}*${vlen}, ${num_streams})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stream_to_streams.xml b/gr-blocks/grc/blocks_stream_to_streams.xml
deleted file mode 100644
index c164e477b7..0000000000
--- a/gr-blocks/grc/blocks_stream_to_streams.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Stream to Streams
-###################################################
- -->
-<block>
- <name>Stream to Streams</name>
- <key>blocks_stream_to_streams</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stream_to_streams($type.size*$vlen, $num_streams)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_stream_to_tagged_stream.block.yml b/gr-blocks/grc/blocks_stream_to_tagged_stream.block.yml
new file mode 100644
index 0000000000..db75c20dd7
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_to_tagged_stream.block.yml
@@ -0,0 +1,43 @@
+id: blocks_stream_to_tagged_stream
+label: Stream to Tagged Stream
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vector Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: packet_len
+ label: Packet Length
+ dtype: int
+- id: len_tag_key
+ label: Length Tag Key
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.stream_to_tagged_stream(${type.size}, ${vlen}, ${packet_len}, ${len_tag_key})
+ callbacks:
+ - set_packet_len(${packet_len})
+ - set_packet_len_pmt(${packet_len})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stream_to_tagged_stream.xml b/gr-blocks/grc/blocks_stream_to_tagged_stream.xml
deleted file mode 100644
index c2af70c2af..0000000000
--- a/gr-blocks/grc/blocks_stream_to_tagged_stream.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Stream to Tagged Stream</name>
- <key>blocks_stream_to_tagged_stream</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stream_to_tagged_stream($type.size, $vlen, $packet_len, $len_tag_key)</make>
- <callback>set_packet_len($packet_len)</callback>
- <callback>set_packet_len_pmt($packet_len)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vector Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Packet Length</name>
- <key>packet_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Length Tag Key</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_stream_to_vector.block.yml b/gr-blocks/grc/blocks_stream_to_vector.block.yml
new file mode 100644
index 0000000000..73e177d0c7
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_to_vector.block.yml
@@ -0,0 +1,42 @@
+id: blocks_stream_to_vector
+label: Stream to Vector
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_items
+ label: Num Items
+ dtype: int
+ default: '2'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen*num_items }
+
+asserts:
+- ${ num_items > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.stream_to_vector(${type.size}*${vlen}, ${num_items})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stream_to_vector.xml b/gr-blocks/grc/blocks_stream_to_vector.xml
deleted file mode 100644
index 8965dfbfe8..0000000000
--- a/gr-blocks/grc/blocks_stream_to_vector.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Stream to Vector
-###################################################
- -->
-<block>
- <name>Stream to Vector</name>
- <key>blocks_stream_to_vector</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stream_to_vector($type.size*$vlen, $num_items)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Items</name>
- <key>num_items</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_items &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen*$num_items</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_stream_to_vector_decimator.block.yml b/gr-blocks/grc/blocks_stream_to_vector_decimator.block.yml
new file mode 100644
index 0000000000..7c48016de3
--- /dev/null
+++ b/gr-blocks/grc/blocks_stream_to_vector_decimator.block.yml
@@ -0,0 +1,47 @@
+id: blocks_stream_to_vector_decimator
+label: Stream to Vec Decim
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: sample_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: vec_rate
+ label: Vec Rate
+ dtype: real
+ default: '30'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1024'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: "blocks.stream_to_vector_decimator(\n\titem_size=${type.size},\n\tsample_rate=${sample_rate},\n\
+ \tvec_rate=${vec_rate},\n\tvec_len=${vlen},\n)"
+ callbacks:
+ - set_sample_rate(${sample_rate})
+ - set_vec_rate(${vec_rate})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stream_to_vector_decimator.xml b/gr-blocks/grc/blocks_stream_to_vector_decimator.xml
deleted file mode 100644
index ca71cf17ff..0000000000
--- a/gr-blocks/grc/blocks_stream_to_vector_decimator.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Stream to Vector Decimator
-###################################################
- -->
-<block>
- <name>Stream to Vec Decim</name>
- <key>blocks_stream_to_vector_decimator</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stream_to_vector_decimator(
- item_size=$type.size,
- sample_rate=$sample_rate,
- vec_rate=$vec_rate,
- vec_len=$vlen,
-)</make>
- <callback>set_sample_rate($sample_rate)</callback>
- <callback>set_vec_rate($vec_rate)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>sample_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Rate</name>
- <key>vec_rate</key>
- <value>30</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_streams_to_stream.block.yml b/gr-blocks/grc/blocks_streams_to_stream.block.yml
new file mode 100644
index 0000000000..404fcb0125
--- /dev/null
+++ b/gr-blocks/grc/blocks_streams_to_stream.block.yml
@@ -0,0 +1,43 @@
+id: blocks_streams_to_stream
+label: Streams to Stream
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.streams_to_stream(${type.size}*${vlen}, ${num_streams})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_streams_to_stream.xml b/gr-blocks/grc/blocks_streams_to_stream.xml
deleted file mode 100644
index 2aa17dbe23..0000000000
--- a/gr-blocks/grc/blocks_streams_to_stream.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Streams to Stream
-###################################################
- -->
-<block>
- <name>Streams to Stream</name>
- <key>blocks_streams_to_stream</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.streams_to_stream($type.size*$vlen, $num_streams)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_streams_to_vector.block.yml b/gr-blocks/grc/blocks_streams_to_vector.block.yml
new file mode 100644
index 0000000000..d16d1e9384
--- /dev/null
+++ b/gr-blocks/grc/blocks_streams_to_vector.block.yml
@@ -0,0 +1,43 @@
+id: blocks_streams_to_vector
+label: Streams to Vector
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen*num_streams }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.streams_to_vector(${type.size}*${vlen}, ${num_streams})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_streams_to_vector.xml b/gr-blocks/grc/blocks_streams_to_vector.xml
deleted file mode 100644
index dc371f0215..0000000000
--- a/gr-blocks/grc/blocks_streams_to_vector.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Streams to Vector
-###################################################
- -->
-<block>
- <name>Streams to Vector</name>
- <key>blocks_streams_to_vector</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.streams_to_vector($type.size*$vlen, $num_streams)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen*$num_streams</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_stretch_ff.block.yml b/gr-blocks/grc/blocks_stretch_ff.block.yml
new file mode 100644
index 0000000000..95921538c0
--- /dev/null
+++ b/gr-blocks/grc/blocks_stretch_ff.block.yml
@@ -0,0 +1,28 @@
+id: blocks_stretch_ff
+label: Stretch
+
+parameters:
+- id: lo
+ label: Low
+ dtype: real
+- id: vlen
+ label: Vec. Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.stretch_ff(${lo}, ${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_stretch_ff.xml b/gr-blocks/grc/blocks_stretch_ff.xml
deleted file mode 100644
index 00a67602b2..0000000000
--- a/gr-blocks/grc/blocks_stretch_ff.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Stretch Block:
-## float in / float out
-###################################################
- -->
-<block>
- <name>Stretch</name>
- <key>blocks_stretch_ff</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.stretch_ff($lo, $vlen)</make>
- <param>
- <name>Low</name>
- <key>lo</key>
- <type>real</type>
- </param>
- <param>
- <name>Vec. Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_sub_xx.block.yml b/gr-blocks/grc/blocks_sub_xx.block.yml
new file mode 100644
index 0000000000..0cfab09407
--- /dev/null
+++ b/gr-blocks/grc/blocks_sub_xx.block.yml
@@ -0,0 +1,42 @@
+id: blocks_sub_xx
+label: Subtract
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short]
+ option_attributes:
+ fcn: [cc, ff, ii, ss]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+- ${ num_inputs >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.sub_${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_sub_xx.xml b/gr-blocks/grc/blocks_sub_xx.xml
deleted file mode 100644
index 88b5ccbb57..0000000000
--- a/gr-blocks/grc/blocks_sub_xx.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Subtract Block:
-## all types, 1 output, 2 to inf inputs
-###################################################
- -->
-<block>
- <name>Subtract</name>
- <key>blocks_sub_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.sub_$(type.fcn)($vlen)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <check>$num_inputs &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tag_debug.block.yml b/gr-blocks/grc/blocks_tag_debug.block.yml
new file mode 100644
index 0000000000..f6fe4eff66
--- /dev/null
+++ b/gr-blocks/grc/blocks_tag_debug.block.yml
@@ -0,0 +1,53 @@
+id: blocks_tag_debug
+label: Tag Debug
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: name
+ label: Name
+ dtype: string
+- id: filter
+ label: Key Filter
+ dtype: string
+ default: '""'
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '1'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: display
+ label: Display
+ dtype: bool
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['On', 'Off']
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_inputs }
+
+asserts:
+- ${ num_inputs >= 1 }
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tag_debug(${type.size}*${vlen}, ${name}, ${filter}); self.${id}.set_display(${display})
+ callbacks:
+ - set_display(${display})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tag_debug.xml b/gr-blocks/grc/blocks_tag_debug.xml
deleted file mode 100644
index 03dd147cbe..0000000000
--- a/gr-blocks/grc/blocks_tag_debug.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Tag Debug
-###################################################
- -->
-<block>
- <name>Tag Debug</name>
- <key>blocks_tag_debug</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tag_debug($type.size*$vlen, $name, $filter); self.$(id).set_display($display)</make>
- <callback>set_display($display)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Name</name>
- <key>name</key>
- <type>string</type>
- </param>
- <param>
- <name>Key Filter</name>
- <key>filter</key>
- <value>""</value>
- <type>string</type>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Display</name>
- <key>display</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <check>$num_inputs &gt;= 1</check>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_inputs</nports>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_tag_gate.block.yml b/gr-blocks/grc/blocks_tag_gate.block.yml
new file mode 100644
index 0000000000..a05ee3c276
--- /dev/null
+++ b/gr-blocks/grc/blocks_tag_gate.block.yml
@@ -0,0 +1,50 @@
+id: blocks_tag_gate
+label: Tag Gate
+
+parameters:
+- id: type
+ label: Item Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: propagate_tags
+ label: Propagate Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: single_key
+ label: Single Key
+ dtype: string
+ default: '""'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: |-
+ blocks.tag_gate(${type.size} * ${vlen}, ${propagate_tags})
+ self.${id}.set_single_key(${single_key})
+ callbacks:
+ - self.${id}.set_single_key(${single_key})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tag_gate.xml b/gr-blocks/grc/blocks_tag_gate.xml
deleted file mode 100644
index 0cf6dc42ed..0000000000
--- a/gr-blocks/grc/blocks_tag_gate.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Tag Gate</name>
- <key>blocks_tag_gate</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tag_gate($type.size * $vlen, $propagate_tags)
-self.$(id).set_single_key($single_key)</make>
- <callback>self.$(id).set_single_key($single_key)</callback>
-
- <param>
- <name>Item Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Propagate Tags</name>
- <key>propagate_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>Single Key</name>
- <key>single_key</key>
- <value>""</value>
- <type>string</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tag_object.block.yml b/gr-blocks/grc/blocks_tag_object.block.yml
new file mode 100644
index 0000000000..cf0f996470
--- /dev/null
+++ b/gr-blocks/grc/blocks_tag_object.block.yml
@@ -0,0 +1,44 @@
+id: variable_tag_object
+label: Tag Object
+
+parameters:
+- id: offset
+ label: Offset
+ dtype: int
+ default: '0'
+- id: key
+ label: Key
+ dtype: raw
+ default: pmt.intern("key")
+- id: value
+ label: Value
+ dtype: raw
+ default: pmt.intern("value")
+- id: src
+ label: Source ID
+ dtype: raw
+ default: pmt.intern("src")
+value: ${ value }
+
+templates:
+ imports: import pmt
+ var_make: self.${id} = ${id} = gr.tag_utils.python_to_tag((${offset}, ${key},
+ ${value}, ${src}))
+ callbacks:
+ - self.set_${id}(gr.tag_utils.python_to_tag((${offset}, ${key}, ${value}, ${src})))
+
+documentation: |-
+ This block creates a tag object. While tags are based on an
+ absolute offset, this is based on a relative offset that must be
+ appropriately translated by the block using it. For example, this
+ is used by the vector_source blocks, which will treat a 0 offset
+ in the tag as the first item in the stream when the vector starts
+ or repeats.
+
+ The tag objects are created using the python_to_tag Python
+ function to make it easy to generate a tag_t in Python. The call
+ looks like:
+
+ gr.tag_utils.python_to_tag(($offset, $key, $value, $src))
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tag_object.xml b/gr-blocks/grc/blocks_tag_object.xml
deleted file mode 100644
index 7352d801a0..0000000000
--- a/gr-blocks/grc/blocks_tag_object.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Tag Object: creates a tag
-###################################################
- -->
-<block>
- <name>Tag Object</name>
- <key>variable_tag_object</key>
- <import>import pmt</import>
- <var_make>self.$(id) = $(id) = gr.tag_utils.python_to_tag(($offset, $key, $value, $src))</var_make>
- <make></make>
- <callback>self.set_$(id)(gr.tag_utils.python_to_tag(($offset, $key, $value, $src)))</callback>
- <param>
- <name>Offset</name>
- <key>offset</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Key</name>
- <key>key</key>
- <value>pmt.intern("key")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Value</name>
- <key>value</key>
- <value>pmt.intern("value")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Source ID</name>
- <key>src</key>
- <value>pmt.intern("src")</value>
- <type>raw</type>
- </param>
- <doc>
- This block creates a tag object. While tags are based on an
- absolute offset, this is based on a relative offset that must be
- appropriately translated by the block using it. For example, this
- is used by the vector_source blocks, which will treat a 0 offset
- in the tag as the first item in the stream when the vector starts
- or repeats.
-
- The tag objects are created using the python_to_tag Python
- function to make it easy to generate a tag_t in Python. The call
- looks like:
-
- gr.tag_utils.python_to_tag(($offset, $key, $value, $src))
- </doc>
-</block>
diff --git a/gr-blocks/grc/blocks_tag_share.block.yml b/gr-blocks/grc/blocks_tag_share.block.yml
new file mode 100644
index 0000000000..96096ef58c
--- /dev/null
+++ b/gr-blocks/grc/blocks_tag_share.block.yml
@@ -0,0 +1,48 @@
+id: blocks_tag_share
+label: Tag Share
+
+parameters:
+- id: io_type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: share_type
+ label: Share Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ io_type }
+ vlen: ${ vlen }
+- label: share
+ domain: stream
+ dtype: ${ share_type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ io_type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tag_share(${io_type.size}, ${share_type.size}, ${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tag_share.xml b/gr-blocks/grc/blocks_tag_share.xml
deleted file mode 100644
index 21827d0591..0000000000
--- a/gr-blocks/grc/blocks_tag_share.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Tag Share</name>
- <key>blocks_tag_share</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tag_share($io_type.size, $share_type.size, $vlen)</make>
-
- <param>
- <name>IO Type</name>
- <key>io_type</key>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Share Type</name>
- <key>share_type</key>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- <hide>part</hide>
- </param>
-
- <check>$vlen &gt; 0</check>
-
- <sink>
- <name>in</name>
- <type>$io_type</type>
- <vlen>$vlen</vlen>
- </sink>
- <sink>
- <name>share</name>
- <type>$share_type</type>
- <vlen>$vlen</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>$io_type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tagged_file_sink.block.yml b/gr-blocks/grc/blocks_tagged_file_sink.block.yml
new file mode 100644
index 0000000000..f70c78154b
--- /dev/null
+++ b/gr-blocks/grc/blocks_tagged_file_sink.block.yml
@@ -0,0 +1,35 @@
+id: blocks_tagged_file_sink
+label: Tagged File Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: samp_rate
+ label: Sample Rate
+ dtype: int
+ default: samp_rate
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tagged_file_sink(${type.size}*${vlen}, ${samp_rate})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tagged_file_sink.xml b/gr-blocks/grc/blocks_tagged_file_sink.xml
deleted file mode 100644
index a849c48c9a..0000000000
--- a/gr-blocks/grc/blocks_tagged_file_sink.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Tagged File Sink
-###################################################
- -->
-<block>
- <name>Tagged File Sink</name>
- <key>blocks_tagged_file_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tagged_file_sink($type.size*$vlen, $samp_rate)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_tagged_stream_align.block.yml b/gr-blocks/grc/blocks_tagged_stream_align.block.yml
new file mode 100644
index 0000000000..cfc5a7717a
--- /dev/null
+++ b/gr-blocks/grc/blocks_tagged_stream_align.block.yml
@@ -0,0 +1,37 @@
+id: blocks_tagged_stream_align
+label: Tagged Stream Align
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: lengthtagname
+ label: Length tag names
+ dtype: string
+ default: packet_len
+- id: vlen
+ label: Vector Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tagged_stream_align(${type.size}*${vlen}, ${lengthtagname})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tagged_stream_align.xml b/gr-blocks/grc/blocks_tagged_stream_align.xml
deleted file mode 100644
index be0238d52b..0000000000
--- a/gr-blocks/grc/blocks_tagged_stream_align.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<block>
- <name>Tagged Stream Align</name>
- <key>blocks_tagged_stream_align</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tagged_stream_align($type.size*$vlen, $lengthtagname)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Length tag names</name>
- <key>lengthtagname</key>
- <value>packet_len</value>
- <type>string</type>
- </param>
- <param>
- <name>Vector Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
-
diff --git a/gr-blocks/grc/blocks_tagged_stream_multiply_length.block.yml b/gr-blocks/grc/blocks_tagged_stream_multiply_length.block.yml
new file mode 100644
index 0000000000..90fbcf0c21
--- /dev/null
+++ b/gr-blocks/grc/blocks_tagged_stream_multiply_length.block.yml
@@ -0,0 +1,46 @@
+id: blocks_tagged_stream_multiply_length
+label: Tagged Stream Multiply Length Tag
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: lengthtagname
+ label: Length tag names
+ dtype: string
+- id: vlen
+ label: Vector Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: c
+ label: Length Scalar
+ dtype: real
+ default: '1.0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+- domain: message
+ id: set_scalar
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tagged_stream_multiply_length(${type.size}*${vlen}, ${lengthtagname},
+ ${c})
+ callbacks:
+ - set_scalar(${c})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tagged_stream_multiply_length.xml b/gr-blocks/grc/blocks_tagged_stream_multiply_length.xml
deleted file mode 100644
index f4abb92903..0000000000
--- a/gr-blocks/grc/blocks_tagged_stream_multiply_length.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<block>
- <name>Tagged Stream Multiply Length Tag</name>
- <key>blocks_tagged_stream_multiply_length</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tagged_stream_multiply_length($type.size*$vlen, $lengthtagname, $c)</make>
- <callback>set_scalar($c)</callback>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Length tag names</name>
- <key>lengthtagname</key>
- <type>string</type>
- </param>
- <param>
- <name>Vector Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Length Scalar</name>
- <key>c</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <sink>
- <name>set_scalar</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
-
diff --git a/gr-blocks/grc/blocks_tagged_stream_mux.block.yml b/gr-blocks/grc/blocks_tagged_stream_mux.block.yml
new file mode 100644
index 0000000000..4807e95d2b
--- /dev/null
+++ b/gr-blocks/grc/blocks_tagged_stream_mux.block.yml
@@ -0,0 +1,46 @@
+id: blocks_tagged_stream_mux
+label: Tagged Stream Mux
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: ninputs
+ label: Number of inputs
+ dtype: int
+ hide: part
+- id: lengthtagname
+ label: Length tag names
+ dtype: string
+- id: vlen
+ label: Vector Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: tag_preserve_head_pos
+ label: 'Tags: Preserve head position on input'
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ ninputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tagged_stream_mux(${type.size}*${vlen}, ${lengthtagname}, ${tag_preserve_head_pos})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tagged_stream_mux.xml b/gr-blocks/grc/blocks_tagged_stream_mux.xml
deleted file mode 100644
index 221a2ed7f9..0000000000
--- a/gr-blocks/grc/blocks_tagged_stream_mux.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<block>
- <name>Tagged Stream Mux</name>
- <key>blocks_tagged_stream_mux</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tagged_stream_mux($type.size*$vlen, $lengthtagname, $tag_preserve_head_pos)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Number of inputs</name>
- <key>ninputs</key>
- <type>int</type>
- </param>
- <param>
- <name>Length tag names</name>
- <key>lengthtagname</key>
- <type>string</type>
- </param>
- <param>
- <name>Vector Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Tags: Preserve head position on input</name>
- <key>tag_preserve_head_pos</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$ninputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
-
diff --git a/gr-blocks/grc/blocks_tagged_stream_to_pdu.block.yml b/gr-blocks/grc/blocks_tagged_stream_to_pdu.block.yml
new file mode 100644
index 0000000000..e2292adb25
--- /dev/null
+++ b/gr-blocks/grc/blocks_tagged_stream_to_pdu.block.yml
@@ -0,0 +1,30 @@
+id: blocks_tagged_stream_to_pdu
+label: Tagged Stream to PDU
+
+parameters:
+- id: type
+ label: Item Type
+ dtype: enum
+ options: [byte, complex, float]
+ option_attributes:
+ tv: [blocks.byte_t, blocks.complex_t, blocks.float_t]
+ hide: part
+- id: tag
+ label: Length tag name
+ dtype: string
+ default: packet_len
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tagged_stream_to_pdu(${type.tv}, ${tag})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tagged_stream_to_pdu.xml b/gr-blocks/grc/blocks_tagged_stream_to_pdu.xml
deleted file mode 100644
index ae8ad3b6c5..0000000000
--- a/gr-blocks/grc/blocks_tagged_stream_to_pdu.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Tagged Stream to PDU Message
-###################################################
- -->
-<block>
- <name>Tagged Stream to PDU</name>
- <key>blocks_tagged_stream_to_pdu</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tagged_stream_to_pdu($type.tv, $tag)</make>
- <param>
- <name>Item Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>tv:blocks.byte_t</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>tv:blocks.complex_t</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>tv:blocks.float_t</opt>
- </option>
- </param>
- <param>
- <name>Length tag name</name>
- <key>tag</key>
- <value>packet_len</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tags_strobe.block.yml b/gr-blocks/grc/blocks_tags_strobe.block.yml
new file mode 100644
index 0000000000..344fb9bde8
--- /dev/null
+++ b/gr-blocks/grc/blocks_tags_strobe.block.yml
@@ -0,0 +1,49 @@
+id: blocks_tags_strobe
+label: Tags Strobe
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: value
+ label: Value (PMT)
+ dtype: raw
+ default: pmt.intern("TEST")
+- id: key
+ label: Key (PMT)
+ dtype: raw
+ default: pmt.intern("strobe")
+- id: nsamps
+ label: Num. Samples
+ dtype: int
+ default: '1000'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: |-
+ from gnuradio import blocks
+ import pmt
+ make: blocks.tags_strobe(${type.size}*${vlen}, ${value}, ${nsamps}, ${key})
+ callbacks:
+ - set_value(${value})
+ - set_key(${key})
+ - set_nsamps(${nsamps})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tags_strobe.xml b/gr-blocks/grc/blocks_tags_strobe.xml
deleted file mode 100644
index ed14929329..0000000000
--- a/gr-blocks/grc/blocks_tags_strobe.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Tags Strobe
-###################################################
- -->
-<block>
- <name>Tags Strobe</name>
- <key>blocks_tags_strobe</key>
- <import>from gnuradio import blocks</import>
- <import>import pmt</import>
- <make>blocks.tags_strobe($type.size*$vlen, $value, $nsamps, $key)</make>
- <callback>set_value($value)</callback>
- <callback>set_key($key)</callback>
- <callback>set_nsamps($nsamps)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Value (PMT)</name>
- <key>value</key>
- <value>pmt.intern("TEST")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Key (PMT)</name>
- <key>key</key>
- <value>pmt.intern("strobe")</value>
- <type>raw</type>
- </param>
- <param>
- <name>Num. Samples</name>
- <key>nsamps</key>
- <value>1000</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tcp_server_sink.block.yml b/gr-blocks/grc/blocks_tcp_server_sink.block.yml
new file mode 100644
index 0000000000..fc8eae056b
--- /dev/null
+++ b/gr-blocks/grc/blocks_tcp_server_sink.block.yml
@@ -0,0 +1,42 @@
+id: blocks_tcp_server_sink
+label: TCP Server Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: ipaddr
+ label: Destination IP Address
+ dtype: string
+- id: port
+ label: Destination Port
+ dtype: int
+- id: noblock
+ label: Nonblocking Mode
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['On', 'Off']
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tcp_server_sink(${type.size}*${vlen}, ${ipaddr}, ${port}, ${noblock})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tcp_server_sink.xml b/gr-blocks/grc/blocks_tcp_server_sink.xml
deleted file mode 100644
index 644027da65..0000000000
--- a/gr-blocks/grc/blocks_tcp_server_sink.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##TCP Server Sink
-###################################################
- -->
-<block>
- <name>TCP Server Sink</name>
- <key>blocks_tcp_server_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tcp_server_sink($type.size*$vlen, $ipaddr, $port, $noblock)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Destination IP Address</name>
- <key>ipaddr</key>
- <type>string</type>
- </param>
- <param>
- <name>Destination Port</name>
- <key>port</key>
- <type>int</type>
- </param>
- <param>
- <name>Nonblocking Mode</name>
- <key>noblock</key>
- <type>enum</type>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_test_tag_variable_rate_ff.block.yml b/gr-blocks/grc/blocks_test_tag_variable_rate_ff.block.yml
new file mode 100644
index 0000000000..1a873cc19c
--- /dev/null
+++ b/gr-blocks/grc/blocks_test_tag_variable_rate_ff.block.yml
@@ -0,0 +1,29 @@
+id: blocks_test_tag_variable_rate_ff
+label: Test Tag Variable Rate
+
+parameters:
+- id: once
+ label: Update Once
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+- id: step
+ label: Update Step
+ dtype: float
+ default: '0.001'
+
+inputs:
+- domain: stream
+ dtype: float
+ multiplicity: '1'
+
+outputs:
+- domain: stream
+ dtype: float
+ multiplicity: '1'
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.test_tag_variable_rate_ff(${once}, ${step})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml b/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml
deleted file mode 100644
index 2a6c4b52e8..0000000000
--- a/gr-blocks/grc/blocks_test_tag_variable_rate_ff.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Test tag variable rate
-###################################################
--->
-
-<block>
- <name>Test Tag Variable Rate</name>
- <key>blocks_test_tag_variable_rate_ff</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.test_tag_variable_rate_ff($once, $step)</make>
-
- <param>
- <name>Update Once</name>
- <key>once</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>Update Step</name>
- <key>step</key>
- <value>0.001</value>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>float</type>
- <nports>1</nports>
- </sink>
-
- <source>
- <name>out</name>
- <type>float</type>
- <nports>1</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_threshold_ff.block.yml b/gr-blocks/grc/blocks_threshold_ff.block.yml
new file mode 100644
index 0000000000..52a6f10059
--- /dev/null
+++ b/gr-blocks/grc/blocks_threshold_ff.block.yml
@@ -0,0 +1,33 @@
+id: blocks_threshold_ff
+label: Threshold
+
+parameters:
+- id: low
+ label: Low
+ dtype: real
+ default: '-100'
+- id: high
+ label: High
+ dtype: real
+ default: '100'
+- id: init
+ label: Initial State
+ dtype: real
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.threshold_ff(${low}, ${high}, ${init})
+ callbacks:
+ - set_hi(${high})
+ - set_lo(${low})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_threshold_ff.xml b/gr-blocks/grc/blocks_threshold_ff.xml
deleted file mode 100644
index 0da4157fc8..0000000000
--- a/gr-blocks/grc/blocks_threshold_ff.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Threshold
-###################################################
- -->
-<block>
- <name>Threshold</name>
- <key>blocks_threshold_ff</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.threshold_ff($low, $high, $init)</make>
- <callback>set_hi($high)</callback>
- <callback>set_lo($low)</callback>
- <param>
- <name>Low</name>
- <key>low</key>
- <value>-100</value>
- <type>real</type>
- </param>
- <param>
- <name>High</name>
- <key>high</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init</key>
- <value>0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_throttle.block.yml b/gr-blocks/grc/blocks_throttle.block.yml
new file mode 100644
index 0000000000..8b497b60c4
--- /dev/null
+++ b/gr-blocks/grc/blocks_throttle.block.yml
@@ -0,0 +1,48 @@
+id: blocks_throttle
+label: Throttle
+flags: throttle
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: samples_per_second
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: ignoretag
+ label: Ignore rx_rate tag
+ dtype: bool
+ default: 'True'
+ hide: ${ ('part' if str(ignoretag) == 'True' else 'none') }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.throttle(${type.size}*${vlen}, ${samples_per_second},${ignoretag})
+ callbacks:
+ - set_sample_rate(${samples_per_second})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_throttle.xml b/gr-blocks/grc/blocks_throttle.xml
deleted file mode 100644
index 26f4aa768b..0000000000
--- a/gr-blocks/grc/blocks_throttle.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Throttle
-###################################################
- -->
-<block>
- <name>Throttle</name>
- <key>blocks_throttle</key>
- <flags>throttle</flags>
- <import>from gnuradio import blocks</import>
- <make>blocks.throttle($type.size*$vlen, $samples_per_second,$ignoretag)</make>
- <callback>set_sample_rate($samples_per_second)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samples_per_second</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Ignore rx_rate tag</name>
- <key>ignoretag</key>
- <value>True</value>
- <type>bool</type>
- <hide>#if str($ignoretag()) == 'True' then 'part' else 'none'#</hide>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_transcendental.block.yml b/gr-blocks/grc/blocks_transcendental.block.yml
new file mode 100644
index 0000000000..768bc73018
--- /dev/null
+++ b/gr-blocks/grc/blocks_transcendental.block.yml
@@ -0,0 +1,30 @@
+id: blocks_transcendental
+label: Transcendental
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex_double, float]
+ option_labels: [Complex, Float]
+ option_attributes:
+ type: [complex, float]
+ hide: part
+- id: name
+ label: Function Name
+ dtype: string
+ default: cos
+
+inputs:
+- domain: stream
+ dtype: ${ type.type }
+
+outputs:
+- domain: stream
+ dtype: ${ type.type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.transcendental(${name}, "$type")
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_transcendental.xml b/gr-blocks/grc/blocks_transcendental.xml
deleted file mode 100644
index a883a2eefc..0000000000
--- a/gr-blocks/grc/blocks_transcendental.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##transcendental functions
-###################################################
- -->
-<block>
- <name>Transcendental</name>
- <key>blocks_transcendental</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.transcendental($name, "$type")</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex_double</key>
- <opt>type:complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>type:float</opt>
- </option>
- </param>
- <param>
- <name>Function Name</name>
- <key>name</key>
- <value>cos</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_tuntap_pdu.block.yml b/gr-blocks/grc/blocks_tuntap_pdu.block.yml
new file mode 100644
index 0000000000..0fd183cbfe
--- /dev/null
+++ b/gr-blocks/grc/blocks_tuntap_pdu.block.yml
@@ -0,0 +1,34 @@
+id: blocks_tuntap_pdu
+label: TUNTAP PDU
+
+parameters:
+- id: ifn
+ label: Interface Name
+ dtype: string
+ default: tap0
+- id: mtu
+ label: MTU
+ dtype: int
+ default: '10000'
+- id: istunflag
+ label: Flag
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: [TUN(IP Packet), TAP(Ethernet Frame)]
+
+inputs:
+- domain: message
+ id: pdus
+ optional: true
+
+outputs:
+- domain: message
+ id: pdus
+ optional: true
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.tuntap_pdu(${ifn}, ${mtu}, ${istunflag})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_tuntap_pdu.xml b/gr-blocks/grc/blocks_tuntap_pdu.xml
deleted file mode 100644
index 16e5871b93..0000000000
--- a/gr-blocks/grc/blocks_tuntap_pdu.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## TUNTAP PDU async message source/sink
-###################################################
- -->
-<block>
- <name>TUNTAP PDU</name>
- <key>blocks_tuntap_pdu</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.tuntap_pdu($ifn, $mtu, $istunflag)</make>
- <param>
- <name>Interface Name</name>
- <key>ifn</key>
- <value>tap0</value>
- <type>string</type>
- </param>
- <param>
- <name>MTU</name>
- <key>mtu</key>
- <value>10000</value>
- <type>int</type>
- </param>
- <param>
- <name>Flag</name>
- <key>istunflag</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>TUN(IP Packet)</name>
- <key>True</key>
- </option>
- <option>
- <name>TAP(Ethernet Frame)</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>pdus</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_uchar_to_float.block.yml b/gr-blocks/grc/blocks_uchar_to_float.block.yml
new file mode 100644
index 0000000000..984cbd3928
--- /dev/null
+++ b/gr-blocks/grc/blocks_uchar_to_float.block.yml
@@ -0,0 +1,16 @@
+id: blocks_uchar_to_float
+label: UChar To Float
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.uchar_to_float()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_uchar_to_float.xml b/gr-blocks/grc/blocks_uchar_to_float.xml
deleted file mode 100644
index eb2b5505ef..0000000000
--- a/gr-blocks/grc/blocks_uchar_to_float.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Unsigned Char to Float:
-###################################################
- -->
-<block>
- <name>UChar To Float</name>
- <key>blocks_uchar_to_float</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.uchar_to_float()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_udp_sink.block.yml b/gr-blocks/grc/blocks_udp_sink.block.yml
new file mode 100644
index 0000000000..1ffa83c033
--- /dev/null
+++ b/gr-blocks/grc/blocks_udp_sink.block.yml
@@ -0,0 +1,45 @@
+id: blocks_udp_sink
+label: UDP Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: ipaddr
+ label: Destination IP Address
+ dtype: string
+- id: port
+ label: Destination Port
+ dtype: int
+- id: psize
+ label: Payload Size
+ dtype: int
+ default: '1472'
+- id: eof
+ label: Send Null Pkt as EOF
+ dtype: bool
+ default: 'True'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.udp_sink(${type.size}*${vlen}, ${ipaddr}, ${port}, ${psize}, ${eof})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_udp_sink.xml b/gr-blocks/grc/blocks_udp_sink.xml
deleted file mode 100644
index 0b67532c72..0000000000
--- a/gr-blocks/grc/blocks_udp_sink.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##UDP Sink
-###################################################
- -->
-<block>
- <name>UDP Sink</name>
- <key>blocks_udp_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.udp_sink($type.size*$vlen, $ipaddr, $port, $psize, $eof)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Destination IP Address</name>
- <key>ipaddr</key>
- <type>string</type>
- </param>
- <param>
- <name>Destination Port</name>
- <key>port</key>
- <type>int</type>
- </param>
- <param>
- <name>Payload Size</name>
- <key>psize</key>
- <value>1472</value>
- <type>int</type>
- </param>
- <param>
- <name>Send Null Pkt as EOF</name>
- <key>eof</key>
- <value>True</value>
- <type>bool</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_udp_source.block.yml b/gr-blocks/grc/blocks_udp_source.block.yml
new file mode 100644
index 0000000000..1e15678158
--- /dev/null
+++ b/gr-blocks/grc/blocks_udp_source.block.yml
@@ -0,0 +1,48 @@
+id: blocks_udp_source
+label: UDP Source
+flags: throttle
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: ipaddr
+ label: IP Address
+ dtype: string
+ default: 127.0.0.1
+- id: port
+ label: Port
+ dtype: int
+ default: '1234'
+- id: psize
+ label: Payload Size
+ dtype: int
+ default: '1472'
+- id: eof
+ label: Null Pkt is EOF
+ dtype: bool
+ default: 'True'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.udp_source(${type.size}*${vlen}, ${ipaddr}, ${port}, ${psize}, ${eof})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_udp_source.xml b/gr-blocks/grc/blocks_udp_source.xml
deleted file mode 100644
index c84816f785..0000000000
--- a/gr-blocks/grc/blocks_udp_source.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##UDP Source
-###################################################
- -->
-<block>
- <name>UDP Source</name>
- <key>blocks_udp_source</key>
- <flags>throttle</flags>
- <import>from gnuradio import blocks</import>
- <make>blocks.udp_source($type.size*$vlen, $ipaddr, $port, $psize, $eof)</make>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>IP Address</name>
- <key>ipaddr</key>
- <value>127.0.0.1</value>
- <type>string</type>
- </param>
- <param>
- <name>Port</name>
- <key>port</key>
- <value>1234</value>
- <type>int</type>
- </param>
- <param>
- <name>Payload Size</name>
- <key>psize</key>
- <value>1472</value>
- <type>int</type>
- </param>
- <param>
- <name>Null Pkt is EOF</name>
- <key>eof</key>
- <value>True</value>
- <type>bool</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_unpack_k_bits_bb.block.yml b/gr-blocks/grc/blocks_unpack_k_bits_bb.block.yml
new file mode 100644
index 0000000000..065fc45ebf
--- /dev/null
+++ b/gr-blocks/grc/blocks_unpack_k_bits_bb.block.yml
@@ -0,0 +1,21 @@
+id: blocks_unpack_k_bits_bb
+label: Unpack K Bits
+
+parameters:
+- id: k
+ label: K
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.unpack_k_bits_bb(${k})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_unpack_k_bits_bb.xml b/gr-blocks/grc/blocks_unpack_k_bits_bb.xml
deleted file mode 100644
index 90d7493af0..0000000000
--- a/gr-blocks/grc/blocks_unpack_k_bits_bb.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Unpack K Bits
-###################################################
- -->
-<block>
- <name>Unpack K Bits</name>
- <key>blocks_unpack_k_bits_bb</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.unpack_k_bits_bb($k)</make>
- <param>
- <name>K</name>
- <key>k</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_unpacked_to_packed_xx.block.yml b/gr-blocks/grc/blocks_unpacked_to_packed_xx.block.yml
new file mode 100644
index 0000000000..97c7af9e28
--- /dev/null
+++ b/gr-blocks/grc/blocks_unpacked_to_packed_xx.block.yml
@@ -0,0 +1,44 @@
+id: blocks_unpacked_to_packed_xx
+label: Unpacked to Packed
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: bits_per_chunk
+ label: Bits per Chunk
+ dtype: int
+ default: '2'
+- id: endianness
+ label: Endianness
+ dtype: int
+ options: [gr.GR_MSB_FIRST, gr.GR_LSB_FIRST]
+ option_labels: [MSB, LSB]
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.unpacked_to_packed_${type.fcn}(${bits_per_chunk}, ${endianness})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_unpacked_to_packed_xx.xml b/gr-blocks/grc/blocks_unpacked_to_packed_xx.xml
deleted file mode 100644
index d27dc9bfc4..0000000000
--- a/gr-blocks/grc/blocks_unpacked_to_packed_xx.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Unpacked to Packed
-###################################################
- -->
-<block>
- <name>Unpacked to Packed</name>
- <key>blocks_unpacked_to_packed_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.unpacked_to_packed_$(type.fcn)($bits_per_chunk, $endianness)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Bits per Chunk</name>
- <key>bits_per_chunk</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Endianness</name>
- <key>endianness</key>
- <type>int</type>
- <option>
- <name>MSB</name>
- <key>gr.GR_MSB_FIRST</key>
- </option>
- <option>
- <name>LSB</name>
- <key>gr.GR_LSB_FIRST</key>
- </option>
- </param>
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_ports &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>$num_ports</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_vco_c.block.yml b/gr-blocks/grc/blocks_vco_c.block.yml
new file mode 100644
index 0000000000..b14b96bc54
--- /dev/null
+++ b/gr-blocks/grc/blocks_vco_c.block.yml
@@ -0,0 +1,27 @@
+id: blocks_vco_c
+label: VCO (complex)
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+- id: amplitude
+ label: Amplitude
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vco_c(${samp_rate}, ${sensitivity}, ${amplitude})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vco_c.xml b/gr-blocks/grc/blocks_vco_c.xml
deleted file mode 100644
index f6246441b9..0000000000
--- a/gr-blocks/grc/blocks_vco_c.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##VCO
-###################################################
- -->
-<block>
- <name>VCO (complex)</name>
- <key>blocks_vco_c</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vco_c($samp_rate, $sensitivity, $amplitude)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <type>real</type>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amplitude</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_vco_f.block.yml b/gr-blocks/grc/blocks_vco_f.block.yml
new file mode 100644
index 0000000000..79ade4d0af
--- /dev/null
+++ b/gr-blocks/grc/blocks_vco_f.block.yml
@@ -0,0 +1,27 @@
+id: blocks_vco_f
+label: VCO
+
+parameters:
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+- id: amplitude
+ label: Amplitude
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vco_f(${samp_rate}, ${sensitivity}, ${amplitude})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vco_f.xml b/gr-blocks/grc/blocks_vco_f.xml
deleted file mode 100644
index 77a3ba0bd4..0000000000
--- a/gr-blocks/grc/blocks_vco_f.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##VCO
-###################################################
- -->
-<block>
- <name>VCO</name>
- <key>blocks_vco_f</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vco_f($samp_rate, $sensitivity, $amplitude)</make>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <type>real</type>
- </param>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <type>real</type>
- </param>
- <param>
- <name>Amplitude</name>
- <key>amplitude</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_vector_insert_x.block.yml b/gr-blocks/grc/blocks_vector_insert_x.block.yml
new file mode 100644
index 0000000000..d3b833865d
--- /dev/null
+++ b/gr-blocks/grc/blocks_vector_insert_x.block.yml
@@ -0,0 +1,44 @@
+id: blocks_vector_insert_x
+label: Vector Insert
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [byte, complex, float, int, short]
+ option_attributes:
+ fcn: [b, c, f, i, s]
+ vec_type: [int_vector, complex_vector, real_vector, int_vector, int_vector]
+ hide: part
+- id: vector
+ label: Vector
+ dtype: ${ type.vec_type }
+ default: 0, 0, 0
+- id: period
+ label: Periodicity
+ dtype: int
+ default: '100'
+- id: offset
+ label: Offset
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vector_insert_${type.fcn}(${vector}, ${period}, ${offset})
+
+documentation: |-
+ Periodicity, the length of the periodicity at which the vector should be inserted at the output.
+ (i.e. one vector for every N output items)
+
+ Offset sepcifies where in the cycle period we should begin at.
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vector_insert_x.xml b/gr-blocks/grc/blocks_vector_insert_x.xml
deleted file mode 100644
index 2bc7ada2e6..0000000000
--- a/gr-blocks/grc/blocks_vector_insert_x.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector Source
-###################################################
- -->
-<block>
- <name>Vector Insert</name>
- <key>blocks_vector_insert_x</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vector_insert_$(type.fcn)($vector, $period, $offset)</make>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- <opt>vec_type:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- <opt>vec_type:real_vector</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- </param>
- <param>
- <name>Vector</name>
- <key>vector</key>
- <value>0, 0, 0</value>
- <type>$type.vec_type</type>
- </param>
- <param>
- <name>Periodicity</name>
- <key>period</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>Offset</name>
- <key>offset</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-
- <doc>
- Periodicity, the length of the periodicity at which the vector should be inserted at the output.
- (i.e. one vector for every N output items)
-
- Offset sepcifies where in the cycle period we should begin at.
- </doc>
-</block>
diff --git a/gr-blocks/grc/blocks_vector_sink_x.block.yml b/gr-blocks/grc/blocks_vector_sink_x.block.yml
new file mode 100644
index 0000000000..9be64eae2d
--- /dev/null
+++ b/gr-blocks/grc/blocks_vector_sink_x.block.yml
@@ -0,0 +1,30 @@
+id: blocks_vector_sink_x
+label: Vector Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vector_sink_${type.fcn}(${vlen})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vector_sink_x.xml b/gr-blocks/grc/blocks_vector_sink_x.xml
deleted file mode 100644
index 7f51731975..0000000000
--- a/gr-blocks/grc/blocks_vector_sink_x.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector sink
-###################################################
- -->
-<block>
- <name>Vector Sink</name>
- <key>blocks_vector_sink_x</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vector_sink_$(type.fcn)($vlen)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_vector_source_x.block.yml b/gr-blocks/grc/blocks_vector_source_x.block.yml
new file mode 100644
index 0000000000..5cdb6d6d51
--- /dev/null
+++ b/gr-blocks/grc/blocks_vector_source_x.block.yml
@@ -0,0 +1,47 @@
+id: blocks_vector_source_x
+label: Vector Source
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ vec_type: [complex_vector, real_vector, int_vector, int_vector, int_vector]
+ hide: part
+- id: vector
+ label: Vector
+ dtype: raw
+ default: (0, 0, 0)
+- id: tags
+ label: Tags
+ dtype: raw
+ default: '[]'
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vector_source_${type.fcn}(${vector}, ${repeat}, ${vlen}, ${tags})
+ callbacks:
+ - set_data(${vector}, ${tags})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vector_source_x.xml b/gr-blocks/grc/blocks_vector_source_x.xml
deleted file mode 100644
index 0417baa34a..0000000000
--- a/gr-blocks/grc/blocks_vector_source_x.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector Source
-###################################################
- -->
-<block>
- <name>Vector Source</name>
- <key>blocks_vector_source_x</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vector_source_$(type.fcn)($vector, $repeat, $vlen, $tags)</make>
- <callback>set_data($vector, $tags)</callback>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- <opt>vec_type:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- <opt>vec_type:real_vector</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- <opt>vec_type:int_vector</opt>
- </option>
- </param>
- <param>
- <name>Vector</name>
- <key>vector</key>
- <value>(0, 0, 0)</value>
- <type>raw</type>
- </param>
- <param>
- <name>Tags</name>
- <key>tags</key>
- <value>[]</value>
- <type>raw</type>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_vector_to_stream.block.yml b/gr-blocks/grc/blocks_vector_to_stream.block.yml
new file mode 100644
index 0000000000..77b42ab68d
--- /dev/null
+++ b/gr-blocks/grc/blocks_vector_to_stream.block.yml
@@ -0,0 +1,42 @@
+id: blocks_vector_to_stream
+label: Vector to Stream
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_items
+ label: Num Items
+ dtype: int
+ default: '2'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen*num_items }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ num_items > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vector_to_stream(${type.size}*${vlen}, ${num_items})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vector_to_stream.xml b/gr-blocks/grc/blocks_vector_to_stream.xml
deleted file mode 100644
index a4a77bef88..0000000000
--- a/gr-blocks/grc/blocks_vector_to_stream.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector to Stream
-###################################################
- -->
-<block>
- <name>Vector to Stream</name>
- <key>blocks_vector_to_stream</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vector_to_stream($type.size*$vlen, $num_items)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Items</name>
- <key>num_items</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_items &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen*$num_items</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_vector_to_streams.block.yml b/gr-blocks/grc/blocks_vector_to_streams.block.yml
new file mode 100644
index 0000000000..e64df38534
--- /dev/null
+++ b/gr-blocks/grc/blocks_vector_to_streams.block.yml
@@ -0,0 +1,43 @@
+id: blocks_vector_to_streams
+label: Vector to Streams
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: num_streams
+ label: Num Streams
+ dtype: int
+ default: '2'
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen*num_streams }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+ multiplicity: ${ num_streams }
+
+asserts:
+- ${ num_streams > 0 }
+- ${ vlen >= 1 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.vector_to_streams(${type.size}*${vlen}, ${num_streams})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_vector_to_streams.xml b/gr-blocks/grc/blocks_vector_to_streams.xml
deleted file mode 100644
index 6a246b98df..0000000000
--- a/gr-blocks/grc/blocks_vector_to_streams.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Vector to Streams
-###################################################
- -->
-<block>
- <name>Vector to Streams</name>
- <key>blocks_vector_to_streams</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.vector_to_streams($type.size*$vlen, $num_streams)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Num Streams</name>
- <key>num_streams</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_streams &gt; 0</check>
- <check>$vlen &gt;= 1</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen*$num_streams</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- <nports>$num_streams</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_wavfile_sink.block.yml b/gr-blocks/grc/blocks_wavfile_sink.block.yml
new file mode 100644
index 0000000000..6bce90d0ec
--- /dev/null
+++ b/gr-blocks/grc/blocks_wavfile_sink.block.yml
@@ -0,0 +1,36 @@
+id: blocks_wavfile_sink
+label: Wav File Sink
+
+parameters:
+- id: file
+ label: File
+ dtype: file_save
+- id: nchan
+ label: N Channels
+ dtype: int
+ default: '1'
+ hide: part
+- id: samp_rate
+ label: Sample Rate
+ dtype: int
+ default: samp_rate
+- id: bits_per_sample
+ label: Bits per Sample
+ dtype: int
+ default: '8'
+
+inputs:
+- domain: stream
+ dtype: float
+ multiplicity: ${ nchan }
+
+asserts:
+- ${ 1 <= nchan }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.wavfile_sink(${file}, ${nchan}, ${samp_rate}, ${bits_per_sample})
+ callbacks:
+ - open(${file})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_wavfile_sink.xml b/gr-blocks/grc/blocks_wavfile_sink.xml
deleted file mode 100644
index 8e81d8d202..0000000000
--- a/gr-blocks/grc/blocks_wavfile_sink.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Wav File Sink
-###################################################
- -->
-<block>
- <name>Wav File Sink</name>
- <key>blocks_wavfile_sink</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.wavfile_sink($file, $nchan, $samp_rate, $bits_per_sample)</make>
- <callback>open($file)</callback>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_save</type>
- </param>
- <param>
- <name>N Channels</name>
- <key>nchan</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>int</type>
- </param>
- <param>
- <name>Bits per Sample</name>
- <key>bits_per_sample</key>
- <value>8</value>
- <type>int</type>
- </param>
- <check>1 &lt;= $nchan</check>
- <sink>
- <name>in</name>
- <type>float</type>
- <nports>$nchan</nports>
- </sink>
-</block>
diff --git a/gr-blocks/grc/blocks_wavfile_source.block.yml b/gr-blocks/grc/blocks_wavfile_source.block.yml
new file mode 100644
index 0000000000..6a84ebbb83
--- /dev/null
+++ b/gr-blocks/grc/blocks_wavfile_source.block.yml
@@ -0,0 +1,32 @@
+id: blocks_wavfile_source
+label: Wav File Source
+
+parameters:
+- id: file
+ label: File
+ dtype: file_open
+- id: repeat
+ label: Repeat
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: nchan
+ label: N Channels
+ dtype: int
+ default: '1'
+ hide: part
+
+outputs:
+- domain: stream
+ dtype: float
+ multiplicity: ${ nchan }
+
+asserts:
+- ${ 1 <= nchan }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.wavfile_source(${file}, ${repeat})
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_wavfile_source.xml b/gr-blocks/grc/blocks_wavfile_source.xml
deleted file mode 100644
index deb48472a4..0000000000
--- a/gr-blocks/grc/blocks_wavfile_source.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Wav File Source
-###################################################
- -->
-<block>
- <name>Wav File Source</name>
- <key>blocks_wavfile_source</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.wavfile_source($file, $repeat)</make>
- <param>
- <name>File</name>
- <key>file</key>
- <value></value>
- <type>file_open</type>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <value>True</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>N Channels</name>
- <key>nchan</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>1 &lt;= $nchan</check>
- <source>
- <name>out</name>
- <type>float</type>
- <nports>$nchan</nports>
- </source>
-</block>
diff --git a/gr-blocks/grc/blocks_xor_xx.block.yml b/gr-blocks/grc/blocks_xor_xx.block.yml
new file mode 100644
index 0000000000..493afef0c2
--- /dev/null
+++ b/gr-blocks/grc/blocks_xor_xx.block.yml
@@ -0,0 +1,34 @@
+id: blocks_xor_xx
+label: Xor
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [ii, ss, bb]
+ hide: part
+- id: num_inputs
+ label: Num Inputs
+ dtype: int
+ default: '2'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ multiplicity: ${ num_inputs }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+asserts:
+- ${ num_inputs >= 2 }
+
+templates:
+ imports: from gnuradio import blocks
+ make: blocks.xor_${type.fcn}()
+
+file_format: 1
diff --git a/gr-blocks/grc/blocks_xor_xx.xml b/gr-blocks/grc/blocks_xor_xx.xml
deleted file mode 100644
index 87cb8864ca..0000000000
--- a/gr-blocks/grc/blocks_xor_xx.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Logical Xor Block
-###################################################
- -->
-<block>
- <name>Xor</name>
- <key>blocks_xor_xx</key>
- <import>from gnuradio import blocks</import>
- <make>blocks.xor_$(type.fcn)()</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:ii</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:ss</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
- <param>
- <name>Num Inputs</name>
- <key>num_inputs</key>
- <value>2</value>
- <type>int</type>
- </param>
- <check>$num_inputs &gt;= 2</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <nports>$num_inputs</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-blocks/grc/xmlrpc_client.block.yml b/gr-blocks/grc/xmlrpc_client.block.yml
new file mode 100644
index 0000000000..fd9057b1b8
--- /dev/null
+++ b/gr-blocks/grc/xmlrpc_client.block.yml
@@ -0,0 +1,30 @@
+id: xmlrpc_client
+label: XMLRPC Client
+
+parameters:
+- id: addr
+ label: Address
+ dtype: string
+ default: localhost
+- id: port
+ label: Port
+ dtype: int
+ default: '8080'
+- id: callback
+ label: Callback
+ dtype: string
+ default: set_
+- id: variable
+ label: Variable
+ dtype: raw
+
+templates:
+ imports: import xmlrpclib
+ make: xmlrpclib.Server('http://$(addr):$(port)')
+ callbacks:
+ - ${callback}(${variable})
+
+documentation: |-
+ This block will create an XMLRPC client. The client will execute the callback on the server when the variable is changed. The callback should be a the name of a function registered on the server. The variable should be an expression containing a the name of a variable in flow graph.
+
+file_format: 1
diff --git a/gr-blocks/grc/xmlrpc_client.xml b/gr-blocks/grc/xmlrpc_client.xml
deleted file mode 100644
index dc4d154d14..0000000000
--- a/gr-blocks/grc/xmlrpc_client.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Simple XMLRPC Client
-###################################################
- -->
-<block>
- <name>XMLRPC Client</name>
- <key>xmlrpc_client</key>
- <import>import xmlrpclib</import>
- <make>xmlrpclib.Server('http://$(addr()):$(port)')</make>
- <callback>$(callback())($variable)</callback>
- <param>
- <name>Address</name>
- <key>addr</key>
- <value>localhost</value>
- <type>string</type>
- </param>
- <param>
- <name>Port</name>
- <key>port</key>
- <value>8080</value>
- <type>int</type>
- </param>
- <param>
- <name>Callback</name>
- <key>callback</key>
- <value>set_</value>
- <type>string</type>
- </param>
- <param>
- <name>Variable</name>
- <key>variable</key>
- <type>raw</type>
- </param>
- <doc>
-This block will create an XMLRPC client. \
-The client will execute the callback on the server when the variable is changed. \
-The callback should be a the name of a function registered on the server. \
-The variable should be an expression containing a the name of a variable in flow graph.
- </doc>
-</block>
diff --git a/gr-blocks/grc/xmlrpc_server.block.yml b/gr-blocks/grc/xmlrpc_server.block.yml
new file mode 100644
index 0000000000..fb33fa79a8
--- /dev/null
+++ b/gr-blocks/grc/xmlrpc_server.block.yml
@@ -0,0 +1,34 @@
+id: xmlrpc_server
+label: XMLRPC Server
+
+parameters:
+- id: addr
+ label: Address
+ dtype: string
+ default: localhost
+- id: port
+ label: Port
+ dtype: int
+ default: '8080'
+
+templates:
+ imports: |-
+ import SimpleXMLRPCServer
+ import threading
+ make: |-
+ SimpleXMLRPCServer.SimpleXMLRPCServer((${addr}, ${port}), allow_none=True)
+ self.${id}.register_instance(self)
+ self.${id}_thread = threading.Thread(target=self.${id}.serve_forever)
+ self.${id}_thread.daemon = True
+ self.${id}_thread.start()
+
+documentation: |-
+ This block will start an XMLRPC server. The server provides access to the run, start, stop, wait functions of the flow graph. The server also provides access to the variable callbacks in the flow graph. Ex: If the variable is called freq, the function provided by the server will be called set_freq(new_freq).
+
+ Example client in python:
+
+ import xmlrpclib
+ s = xmlrpclib.Server('http://localhost:8080')
+ s.set_freq(5000)
+
+file_format: 1
diff --git a/gr-blocks/grc/xmlrpc_server.xml b/gr-blocks/grc/xmlrpc_server.xml
deleted file mode 100644
index 602d444161..0000000000
--- a/gr-blocks/grc/xmlrpc_server.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Simple XMLRPC Server
-###################################################
- -->
-<block>
- <name>XMLRPC Server</name>
- <key>xmlrpc_server</key>
- <import>import SimpleXMLRPCServer</import>
- <import>import threading</import>
- <make>SimpleXMLRPCServer.SimpleXMLRPCServer(($addr, $port), allow_none=True)
-self.$(id).register_instance(self)
-self.$(id)_thread = threading.Thread(target=self.$(id).serve_forever)
-self.$(id)_thread.daemon = True
-self.$(id)_thread.start()</make>
- <param>
- <name>Address</name>
- <key>addr</key>
- <value>localhost</value>
- <type>string</type>
- </param>
- <param>
- <name>Port</name>
- <key>port</key>
- <value>8080</value>
- <type>int</type>
- </param>
- <doc>
-This block will start an XMLRPC server. \
-The server provides access to the run, start, stop, wait functions of the flow graph. \
-The server also provides access to the variable callbacks in the flow graph. \
-Ex: If the variable is called freq, the function provided by the server will be called set_freq(new_freq).
-
-Example client in python:
-
-import xmlrpclib
-s = xmlrpclib.Server('http://localhost:8080')
-s.set_freq(5000)
- </doc>
-</block>
diff --git a/gr-channels/grc/CMakeLists.txt b/gr-channels/grc/CMakeLists.txt
index c85170b4ea..a268d69380 100644
--- a/gr-channels/grc/CMakeLists.txt
+++ b/gr-channels/grc/CMakeLists.txt
@@ -17,7 +17,7 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
-file(GLOB xml_files "*.xml")
-install(FILES ${xml_files}
+file(GLOB yml_files "*.yml")
+install(FILES ${yml_files}
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-channels/grc/channels.tree.yml b/gr-channels/grc/channels.tree.yml
new file mode 100644
index 0000000000..588246defc
--- /dev/null
+++ b/gr-channels/grc/channels.tree.yml
@@ -0,0 +1,20 @@
+'[Core]':
+- Channel Models:
+ - channels_channel_model
+ - channels_channel_model2
+ - channels_conj_fs_iqcorr
+ - channels_fading_model
+ - channels_dynamic_channel_model
+ - channels_selective_fading_model
+ - channels_selective_fading_model2
+- Impairment Models:
+ - channels_impairments
+ - channels_quantizer
+ - channels_phase_noise_gen
+ - channels_iqbal_gen
+ - channels_distortion_2_gen
+ - channels_distortion_3_gen
+ - channels_amp_bal
+ - channels_phase_bal
+ - channels_cfo_model
+ - channels_sro_model
diff --git a/gr-channels/grc/channels_amp_bal.block.yml b/gr-channels/grc/channels_amp_bal.block.yml
new file mode 100644
index 0000000000..6cefa2b581
--- /dev/null
+++ b/gr-channels/grc/channels_amp_bal.block.yml
@@ -0,0 +1,24 @@
+id: channels_amp_bal
+label: Amplitude Balance
+
+parameters:
+- id: alpha
+ label: Alpha
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.amp_bal(${alpha})
+ callbacks:
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_amp_bal.xml b/gr-channels/grc/channels_amp_bal.xml
deleted file mode 100644
index 7e0738ec98..0000000000
--- a/gr-channels/grc/channels_amp_bal.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Amplitude balance
-###################################################
- -->
-<block>
- <name>Amplitude Balance</name>
- <key>channels_amp_bal</key>
- <import>from gnuradio import channels</import>
- <make>channels.amp_bal($alpha)</make>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_block_tree.xml b/gr-channels/grc/channels_block_tree.xml
deleted file mode 100644
index 80aabaf478..0000000000
--- a/gr-channels/grc/channels_block_tree.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR Channel Model blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Channel Models</name>
- <block>channels_channel_model</block>
- <block>channels_channel_model2</block>
- <block>channels_conj_fs_iqcorr</block>
- <block>channels_fading_model</block>
- <block>channels_dynamic_channel_model</block>
- <block>channels_selective_fading_model</block>
- <block>channels_selective_fading_model2</block>
- </cat>
- <cat>
- <name>Impairment Models</name>
- <block>channels_impairments</block>
- <block>channels_quantizer</block>
- <block>channels_phase_noise_gen</block>
- <block>channels_iqbal_gen</block>
- <block>channels_distortion_2_gen</block>
- <block>channels_distortion_3_gen</block>
- <block>channels_amp_bal</block>
- <block>channels_phase_bal</block>
- <block>channels_cfo_model</block>
- <block>channels_sro_model</block>
- </cat>
-</cat>
-
diff --git a/gr-channels/grc/channels_cfo_model.block.yml b/gr-channels/grc/channels_cfo_model.block.yml
new file mode 100644
index 0000000000..daa4eb7032
--- /dev/null
+++ b/gr-channels/grc/channels_cfo_model.block.yml
@@ -0,0 +1,44 @@
+id: channels_cfo_model
+label: CFO Model
+
+parameters:
+- id: srate
+ label: Sample Rate Hz
+ dtype: real
+ default: samp_rate
+- id: stdev
+ label: CFO Standard Deviation Hz per sample
+ dtype: real
+ default: '0.01'
+- id: maxdev
+ label: Max CFO Bound Hz
+ dtype: real
+ default: 1e3
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: |-
+ channels.cfo_model(
+ ${srate},
+ ${stdev},
+ ${maxdev},
+ ${seed}
+ )
+ callbacks:
+ - set_std_dev(${stdev})
+ - set_max_dev(${maxdev})
+ - set_samp_rate(${srate})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_cfo_model.xml b/gr-channels/grc/channels_cfo_model.xml
deleted file mode 100644
index 7d44f7fe87..0000000000
--- a/gr-channels/grc/channels_cfo_model.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##CFO Model
-###################################################
- -->
-<block>
- <name>CFO Model</name>
- <key>channels_cfo_model</key>
- <import>from gnuradio import channels</import>
- <make>channels.cfo_model(
- $srate,
- $stdev,
- $maxdev,
- $seed
-)</make>
- <callback>set_std_dev($stdev)</callback>
- <callback>set_max_dev($maxdev)</callback>
- <callback>set_samp_rate($srate)</callback>
- <param>
- <name>Sample Rate Hz</name>
- <key>srate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>CFO Standard Deviation Hz per sample</name>
- <key>stdev</key>
- <value>0.01</value>
- <type>real</type>
- </param>
- <param>
- <name>Max CFO Bound Hz</name>
- <key>maxdev</key>
- <value>1e3</value>
- <type>real</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_channel_model.block.yml b/gr-channels/grc/channels_channel_model.block.yml
new file mode 100644
index 0000000000..d2e166924e
--- /dev/null
+++ b/gr-channels/grc/channels_channel_model.block.yml
@@ -0,0 +1,56 @@
+id: channels_channel_model
+label: Channel Model
+
+parameters:
+- id: noise_voltage
+ label: Noise Voltage
+ dtype: real
+ default: '0.0'
+- id: freq_offset
+ label: Frequency Offset
+ dtype: real
+ default: '0.0'
+- id: epsilon
+ label: Epsilon
+ dtype: real
+ default: '1.0'
+- id: taps
+ label: Taps
+ dtype: complex_vector
+ default: 1.0 + 1.0j
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: block_tags
+ label: Block Tag Propagation
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ option_attributes:
+ hide_block: ['', part]
+ hide: ${ block_tags.hide_block }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio import channels
+ from gnuradio.filter import firdes
+ make: "channels.channel_model(\n\tnoise_voltage=${noise_voltage},\n\tfrequency_offset=${freq_offset},\n\
+ \tepsilon=${epsilon},\n\ttaps=${taps},\n\tnoise_seed=${seed},\n\tblock_tags=${block_tags}\n\
+ )"
+ callbacks:
+ - set_noise_voltage(${noise_voltage})
+ - set_frequency_offset(${freq_offset})
+ - set_taps(${taps})
+ - set_timing_offset(${epsilon})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_channel_model.xml b/gr-channels/grc/channels_channel_model.xml
deleted file mode 100644
index 909301de94..0000000000
--- a/gr-channels/grc/channels_channel_model.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Channel Model
-###################################################
- -->
-<block>
- <name>Channel Model</name>
- <key>channels_channel_model</key>
- <import>from gnuradio import channels</import>
- <import>from gnuradio.filter import firdes</import>
- <make>channels.channel_model(
- noise_voltage=$noise_voltage,
- frequency_offset=$freq_offset,
- epsilon=$epsilon,
- taps=$taps,
- noise_seed=$seed,
- block_tags=$block_tags
-)</make>
- <callback>set_noise_voltage($noise_voltage)</callback>
- <callback>set_frequency_offset($freq_offset)</callback>
- <callback>set_taps($taps)</callback>
- <callback>set_timing_offset($epsilon)</callback>
- <param>
- <name>Noise Voltage</name>
- <key>noise_voltage</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Frequency Offset</name>
- <key>freq_offset</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Epsilon</name>
- <key>epsilon</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value>1.0 + 1.0j</value>
- <type>complex_vector</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Block Tag Propagation</name>
- <key>block_tags</key>
- <value>False</value>
- <type>enum</type>
- <hide>$block_tags.hide_block</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>hide_block:</opt>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>hide_block:part</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_channel_model2.block.yml b/gr-channels/grc/channels_channel_model2.block.yml
new file mode 100644
index 0000000000..f42a77c8dd
--- /dev/null
+++ b/gr-channels/grc/channels_channel_model2.block.yml
@@ -0,0 +1,56 @@
+id: channels_channel_model2
+label: Channel Model 2
+
+parameters:
+- id: noise_voltage
+ label: Noise Voltage
+ dtype: real
+ default: '0.0'
+- id: epsilon
+ label: Time Offset
+ dtype: real
+ default: '1.0'
+- id: taps
+ label: Taps
+ dtype: complex_vector
+ default: 1.0 + 1.0j
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: block_tags
+ label: Block Tag Propagation
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ option_attributes:
+ hide_block: ['', part]
+ hide: ${ block_tags.hide_block }
+
+inputs:
+- domain: stream
+ dtype: complex
+- label: freq
+ domain: stream
+ dtype: float
+- label: time
+ domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio import channels
+ from gnuradio.filter import firdes
+ make: "channels.channel_model2(\n\tnoise_voltage=${noise_voltage},\n\tepsilon=${epsilon},\n\
+ \ttaps=${taps},\n\tnoise_seed=${seed},\n\tblock_tags=${block_tags}\n)"
+ callbacks:
+ - set_noise_voltage(${noise_voltage})
+ - set_taps(${taps})
+ - set_timing_offset(${epsilon})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_channel_model2.xml b/gr-channels/grc/channels_channel_model2.xml
deleted file mode 100644
index 85355a1029..0000000000
--- a/gr-channels/grc/channels_channel_model2.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Channel Model
-###################################################
- -->
-<block>
- <name>Channel Model 2</name>
- <key>channels_channel_model2</key>
- <import>from gnuradio import channels</import>
- <import>from gnuradio.filter import firdes</import>
- <make>channels.channel_model2(
- noise_voltage=$noise_voltage,
- epsilon=$epsilon,
- taps=$taps,
- noise_seed=$seed,
- block_tags=$block_tags
-)</make>
- <callback>set_noise_voltage($noise_voltage)</callback>
- <callback>set_taps($taps)</callback>
- <callback>set_timing_offset($epsilon)</callback>
- <param>
- <name>Noise Voltage</name>
- <key>noise_voltage</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Time Offset</name>
- <key>epsilon</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value>1.0 + 1.0j</value>
- <type>complex_vector</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Block Tag Propagation</name>
- <key>block_tags</key>
- <value>False</value>
- <type>enum</type>
- <hide>$block_tags.hide_block</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- <opt>hide_block:</opt>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- <opt>hide_block:part</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <sink>
- <name>freq</name>
- <type>float</type>
- </sink>
- <sink>
- <name>time</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_conj_fs_iqcorr.block.yml b/gr-channels/grc/channels_conj_fs_iqcorr.block.yml
new file mode 100644
index 0000000000..66f9e1d3a5
--- /dev/null
+++ b/gr-channels/grc/channels_conj_fs_iqcorr.block.yml
@@ -0,0 +1,29 @@
+id: channels_conj_fs_iqcorr
+label: Freq. Selective IQ Correction
+
+parameters:
+- id: delay
+ label: Delay
+ dtype: int
+ default: '0'
+- id: taps
+ label: Taps
+ dtype: complex_vector
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.conj_fs_iqcorr(${delay}, ${taps})
+ callbacks:
+ - set_delay(${delay})
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_conj_fs_iqcorr.xml b/gr-channels/grc/channels_conj_fs_iqcorr.xml
deleted file mode 100644
index 354f1a2030..0000000000
--- a/gr-channels/grc/channels_conj_fs_iqcorr.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Freq. Selective IQ Correction
-###################################################
- -->
-<block>
- <name>Freq. Selective IQ Correction</name>
- <key>channels_conj_fs_iqcorr</key>
- <import>from gnuradio import channels</import>
- <make>channels.conj_fs_iqcorr($delay, $taps)</make>
- <callback>set_delay($delay)</callback>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Delay</name>
- <key>delay</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value>0</value>
- <type>complex_vector</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_distortion_2_gen.block.yml b/gr-channels/grc/channels_distortion_2_gen.block.yml
new file mode 100644
index 0000000000..f45bd06e7d
--- /dev/null
+++ b/gr-channels/grc/channels_distortion_2_gen.block.yml
@@ -0,0 +1,24 @@
+id: channels_distortion_2_gen
+label: Second Order Distortion
+
+parameters:
+- id: beta
+ label: Distortion
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.distortion_2_gen(${beta})
+ callbacks:
+ - set_beta(${beta})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_distortion_2_gen.xml b/gr-channels/grc/channels_distortion_2_gen.xml
deleted file mode 100644
index 5b117a9d00..0000000000
--- a/gr-channels/grc/channels_distortion_2_gen.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Second Order Distortion Generator
-###################################################
- -->
-<block>
- <name>Second Order Distortion</name>
- <key>channels_distortion_2_gen</key>
- <import>from gnuradio import channels</import>
- <make>channels.distortion_2_gen($beta)</make>
- <callback>set_beta($beta)</callback>
- <param>
- <name>Distortion</name>
- <key>beta</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_distortion_3_gen.block.yml b/gr-channels/grc/channels_distortion_3_gen.block.yml
new file mode 100644
index 0000000000..f92677757d
--- /dev/null
+++ b/gr-channels/grc/channels_distortion_3_gen.block.yml
@@ -0,0 +1,24 @@
+id: channels_distortion_3_gen
+label: Third Order Distortion
+
+parameters:
+- id: beta
+ label: Distortion
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.distortion_3_gen(${beta})
+ callbacks:
+ - set_beta(${beta})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_distortion_3_gen.xml b/gr-channels/grc/channels_distortion_3_gen.xml
deleted file mode 100644
index 7bf145c27e..0000000000
--- a/gr-channels/grc/channels_distortion_3_gen.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Third Order Distortion Generator
-###################################################
- -->
-<block>
- <name>Third Order Distortion</name>
- <key>channels_distortion_3_gen</key>
- <import>from gnuradio import channels</import>
- <make>channels.distortion_3_gen($beta)</make>
- <callback>set_beta($beta)</callback>
- <param>
- <name>Distortion</name>
- <key>beta</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_dynamic_channel_model.block.yml b/gr-channels/grc/channels_dynamic_channel_model.block.yml
new file mode 100644
index 0000000000..a18adf8780
--- /dev/null
+++ b/gr-channels/grc/channels_dynamic_channel_model.block.yml
@@ -0,0 +1,98 @@
+id: channels_dynamic_channel_model
+label: Dynamic Channel Model
+
+parameters:
+- id: samp_rate
+ label: Sample Rate Hz
+ dtype: real
+ default: samp_rate
+- id: cfo_stdev
+ label: CFO Standard Deviation Hz per sample
+ dtype: real
+ default: '0.01'
+- id: cfo_maxdev
+ label: Max CFO Bound Hz
+ dtype: real
+ default: 1e3
+- id: sro_stdev
+ label: SRO Standard Deviation Hz per sample
+ dtype: real
+ default: '0.01'
+- id: sro_maxdev
+ label: Max SRO Bound Hz
+ dtype: real
+ default: 1e3
+- id: noise_amp
+ label: White Noise Amplitude
+ dtype: real
+ default: '1.0'
+- id: N
+ label: Num Sinusoids (SoS model)
+ dtype: int
+ default: '8'
+- id: fD
+ label: Max Doppler Freq (Hz)
+ dtype: real
+ default: '2.0'
+- id: LOS
+ label: LOS Model
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Rayleigh/NLOS, Rician/LOS]
+ option_attributes:
+ hide_K: [all, '']
+- id: K
+ label: Rician factor (K)
+ dtype: real
+ default: '4.0'
+ hide: ${ LOS.hide_K }
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: delays
+ label: PDP Delays (samp)
+ dtype: real_vector
+ default: 0.0,0.1,1.3
+- id: mags
+ label: PDP Magnitudes
+ dtype: real_vector
+ default: 1,0.99,0.97
+- id: ntaps
+ label: Num Taps
+ dtype: int
+ default: '8'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.dynamic_channel_model( ${samp_rate}, ${sro_stdev}, ${sro_maxdev},
+ ${cfo_stdev}, ${cfo_maxdev}, ${N}, ${fD}, ${LOS}, ${K}, ${delays}, ${mags},
+ ${ntaps}, ${noise_amp}, ${seed} )
+ callbacks:
+ - set_samp_rate(${samp_rate})
+ - set_sro_dev_std(${sro_stdev})
+ - set_sro_dev_max(${sro_maxdev})
+ - set_cfo_dev_std(${cfo_stdev})
+ - set_cfo_dev_max(${cfo_maxdev})
+ - set_noise_amp(${noise_amp})
+ - set_doppler_freq(${fD})
+ - set_K(${K})
+
+documentation: |-
+ The dynamic channel model is a hier block consisting of the following effects:
+ - Dynamic Frequency Selective Fading Channel
+ - Dynamic Center Frequency Offset Model
+ - Dynamic Sample Rate Offset Model
+ - Additive White Gaussian Noise
+
+ The desired power delay profile and max doppler frequency may be provided to achieve the desired Ricean or Rayleigh fading scenario. For center frequency and sample rate offset models, a gaussian random walk process is conducted for each. The single sample step variance and maximum deviation for these two processes is specified and may be modified to simulate various desired stability effects. Lastly AWGN is added to simulate a typical receiver/thermal noise floor after propagation, and the variance may be modified here as desired.
+
+file_format: 1
diff --git a/gr-channels/grc/channels_dynamic_channel_model.xml b/gr-channels/grc/channels_dynamic_channel_model.xml
deleted file mode 100644
index d9022c5792..0000000000
--- a/gr-channels/grc/channels_dynamic_channel_model.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# Dynamic Channel Model
-###################################################
- -->
-<block>
- <name>Dynamic Channel Model</name>
- <key>channels_dynamic_channel_model</key>
- <import>from gnuradio import channels</import>
- <make>channels.dynamic_channel_model( $samp_rate, $sro_stdev, $sro_maxdev, $cfo_stdev, $cfo_maxdev, $N, $fD, $LOS, $K, $delays, $mags, $ntaps, $noise_amp, $seed )</make>
-
- <callback>set_samp_rate($samp_rate)</callback>
- <callback>set_sro_dev_std($sro_stdev)</callback>
- <callback>set_sro_dev_max($sro_maxdev)</callback>
- <callback>set_cfo_dev_std($cfo_stdev)</callback>
- <callback>set_cfo_dev_max($cfo_maxdev)</callback>
- <callback>set_noise_amp($noise_amp)</callback>
- <callback>set_doppler_freq($fD)</callback>
- <callback>set_K($K)</callback>
-
- <param>
- <name>Sample Rate Hz</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>CFO Standard Deviation Hz per sample</name>
- <key>cfo_stdev</key>
- <value>0.01</value>
- <type>real</type>
- </param>
- <param>
- <name>Max CFO Bound Hz</name>
- <key>cfo_maxdev</key>
- <value>1e3</value>
- <type>real</type>
- </param>
-
- <param>
- <name>SRO Standard Deviation Hz per sample</name>
- <key>sro_stdev</key>
- <value>0.01</value>
- <type>real</type>
- </param>
- <param>
- <name>Max SRO Bound Hz</name>
- <key>sro_maxdev</key>
- <value>1e3</value>
- <type>real</type>
- </param>
-
- <param>
- <name>White Noise Amplitude</name>
- <key>noise_amp</key>
- <value>1.0</value>
- <type>real</type>
- </param>
-
- <param>
- <name>Num Sinusoids (SoS model)</name>
- <key>N</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Max Doppler Freq (Hz)</name>
- <key>fD</key>
- <value>2.0</value>
- <type>real</type>
- </param>
- <param>
- <name>LOS Model</name>
- <key>LOS</key>
- <type>enum</type>
- <option>
- <name>Rayleigh/NLOS</name>
- <key>False</key>
- <opt>hide_K:all</opt>
- </option>
- <option>
- <name>Rician/LOS</name>
- <key>True</key>
- <opt>hide_K:</opt>
- </option>
- </param>
- <param>
- <name>Rician factor (K)</name>
- <key>K</key>
- <value>4.0</value>
- <type>real</type>
- <hide>$LOS.hide_K</hide>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>PDP Delays (samp)</name>
- <key>delays</key>
- <value>0.0,0.1,1.3</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>PDP Magnitudes</name>
- <key>mags</key>
- <value>1,0.99,0.97</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Num Taps</name>
- <key>ntaps</key>
- <value>8</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <doc>
- The dynamic channel model is a hier block consisting of the following effects:
- - Dynamic Frequency Selective Fading Channel
- - Dynamic Center Frequency Offset Model
- - Dynamic Sample Rate Offset Model
- - Additive White Gaussian Noise
-
- The desired power delay profile and max doppler frequency may be provided to achieve the desired Ricean or Rayleigh fading scenario. For center frequency and sample rate offset models, a gaussian random walk process is conducted for each. The single sample step variance and maximum deviation for these two processes is specified and may be modified to simulate various desired stability effects. Lastly AWGN is added to simulate a typical receiver/thermal noise floor after propagation, and the variance may be modified here as desired.
- </doc>
-</block>
diff --git a/gr-channels/grc/channels_fading_model.block.yml b/gr-channels/grc/channels_fading_model.block.yml
new file mode 100644
index 0000000000..7e1587feb6
--- /dev/null
+++ b/gr-channels/grc/channels_fading_model.block.yml
@@ -0,0 +1,57 @@
+id: channels_fading_model
+label: Fading Model
+
+parameters:
+- id: N
+ label: Num Sinusoids (SoS model)
+ dtype: int
+ default: '8'
+- id: fDTs
+ label: Normalized Max Doppler (fD*Ts)
+ dtype: real
+ default: 10.0/samp_rate
+- id: LOS
+ label: LOS Model
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Rayleigh/NLOS, Rician/LOS]
+ option_attributes:
+ hide_K: [all, '']
+- id: K
+ label: Rician factor (K)
+ dtype: real
+ default: '4.0'
+ hide: ${ LOS.hide_K }
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.fading_model( ${N}, ${fDTs}, ${LOS}, ${K}, ${seed} )
+ callbacks:
+ - set_fDTs(${fDTs})
+ - set_K(${K})
+
+documentation: |-
+ This algorithm implements the method described in
+ Compact Rayleigh and Rician fading simulator based on random walk processes
+ A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
+ 26th November 2008
+
+ int d_N=8; // number of sinusoids
+ float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
+ float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
+ bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
+ int seed=0; // noise seed
+
+file_format: 1
diff --git a/gr-channels/grc/channels_fading_model.xml b/gr-channels/grc/channels_fading_model.xml
deleted file mode 100644
index d47f0624f1..0000000000
--- a/gr-channels/grc/channels_fading_model.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Fading Model
-###################################################
- -->
-<block>
- <name>Fading Model</name>
- <key>channels_fading_model</key>
- <import>from gnuradio import channels</import>
- <make>channels.fading_model( $N, $fDTs, $LOS, $K, $seed )</make>
- <callback>set_fDTs($fDTs)</callback>
- <callback>set_K($K)</callback>
- <param>
- <name>Num Sinusoids (SoS model)</name>
- <key>N</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Normalized Max Doppler (fD*Ts)</name>
- <key>fDTs</key>
- <value>10.0/samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>LOS Model</name>
- <key>LOS</key>
- <type>enum</type>
- <option>
- <name>Rayleigh/NLOS</name>
- <key>False</key>
- <opt>hide_K:all</opt>
- </option>
- <option>
- <name>Rician/LOS</name>
- <key>True</key>
- <opt>hide_K:</opt>
- </option>
- </param>
- <param>
- <name>Rician factor (K)</name>
- <key>K</key>
- <value>4.0</value>
- <type>real</type>
- <hide>$LOS.hide_K</hide>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <doc>
- This algorithm implements the method described in
- Compact Rayleigh and Rician fading simulator based on random walk processes
- A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
- 26th November 2008
-
- int d_N=8; // number of sinusoids
- float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
- float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
- bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
- int seed=0; // noise seed
- </doc>
-</block>
diff --git a/gr-channels/grc/channels_impairments.block.yml b/gr-channels/grc/channels_impairments.block.yml
new file mode 100644
index 0000000000..ccbdff9f45
--- /dev/null
+++ b/gr-channels/grc/channels_impairments.block.yml
@@ -0,0 +1,60 @@
+id: channels_impairments
+label: HW Impairments
+
+parameters:
+- id: phase_noise_mag
+ label: Phase Noise Mag.
+ dtype: float
+ default: '0'
+- id: magbal
+ label: IQ Mag. Imbalance
+ dtype: float
+ default: '0'
+- id: phasebal
+ label: IQ Phase. Imbalance
+ dtype: float
+ default: '0'
+- id: q_ofs
+ label: Quadrature Offset
+ dtype: float
+ default: '0'
+- id: i_ofs
+ label: Inphase Offset
+ dtype: float
+ default: '0'
+- id: freq_offset
+ label: Frequency Offset
+ dtype: float
+ default: '0'
+- id: gamma
+ label: Second Order Distortion
+ dtype: float
+ default: '0'
+- id: beta
+ label: Third Order Distortion
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.impairments(${phase_noise_mag}, ${magbal}, ${phasebal}, ${q_ofs},
+ ${i_ofs}, ${freq_offset}, ${gamma}, ${beta})
+ callbacks:
+ - set_phase_noise_mag(${phase_noise_mag})
+ - set_magbal(${magbal})
+ - set_phasebal(${phasebal})
+ - set_q_ofs(${q_ofs})
+ - set_i_ofs(${i_ofs})
+ - set_freq_offset(${freq_offset})
+ - set_gamma(${gamma})
+ - set_beta(${beta})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_impairments.xml b/gr-channels/grc/channels_impairments.xml
deleted file mode 100644
index 12ee65c740..0000000000
--- a/gr-channels/grc/channels_impairments.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Impairments Model
-###################################################
- -->
-<block>
- <name>HW Impairments</name>
- <key>channels_impairments</key>
- <import>from gnuradio import channels</import>
- <make>channels.impairments($phase_noise_mag, $magbal, $phasebal, $q_ofs, $i_ofs, $freq_offset, $gamma, $beta)</make>
- <callback>set_phase_noise_mag($phase_noise_mag)</callback>
- <callback>set_magbal($magbal)</callback>
- <callback>set_phasebal($phasebal)</callback>
- <callback>set_q_ofs($q_ofs)</callback>
- <callback>set_i_ofs($i_ofs)</callback>
- <callback>set_freq_offset($freq_offset)</callback>
- <callback>set_gamma($gamma)</callback>
- <callback>set_beta($beta)</callback>
- <param>
- <name>Phase Noise Mag.</name>
- <key>phase_noise_mag</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>IQ Mag. Imbalance</name>
- <key>magbal</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>IQ Phase. Imbalance</name>
- <key>phasebal</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Quadrature Offset</name>
- <key>q_ofs</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Inphase Offset</name>
- <key>i_ofs</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Frequency Offset</name>
- <key>freq_offset</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Second Order Distortion</name>
- <key>gamma</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Third Order Distortion</name>
- <key>beta</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_iqbal_gen.block.yml b/gr-channels/grc/channels_iqbal_gen.block.yml
new file mode 100644
index 0000000000..5b424761c1
--- /dev/null
+++ b/gr-channels/grc/channels_iqbal_gen.block.yml
@@ -0,0 +1,29 @@
+id: channels_iqbal_gen
+label: IQ Imbalance Generator
+
+parameters:
+- id: mag
+ label: Magnitude
+ dtype: float
+ default: '0'
+- id: phase
+ label: Phase
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.iqbal_gen(${mag}, ${phase})
+ callbacks:
+ - set_magnitude(${mag})
+ - set_phase(${phase})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_iqbal_gen.xml b/gr-channels/grc/channels_iqbal_gen.xml
deleted file mode 100644
index 9cb267adec..0000000000
--- a/gr-channels/grc/channels_iqbal_gen.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##IQ Imbalance Generator
-###################################################
- -->
-<block>
- <name>IQ Imbalance Generator</name>
- <key>channels_iqbal_gen</key>
- <import>from gnuradio import channels</import>
- <make>channels.iqbal_gen($mag, $phase)</make>
- <callback>set_magnitude($mag)</callback>
- <callback>set_phase($phase)</callback>
- <param>
- <name>Magnitude</name>
- <key>mag</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Phase</name>
- <key>phase</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_phase_bal.block.yml b/gr-channels/grc/channels_phase_bal.block.yml
new file mode 100644
index 0000000000..70244cffeb
--- /dev/null
+++ b/gr-channels/grc/channels_phase_bal.block.yml
@@ -0,0 +1,24 @@
+id: channels_phase_bal
+label: Phase Balance
+
+parameters:
+- id: alpha
+ label: Alpha
+ dtype: float
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.phase_bal(${alpha})
+ callbacks:
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_phase_bal.xml b/gr-channels/grc/channels_phase_bal.xml
deleted file mode 100644
index ce17ab79ab..0000000000
--- a/gr-channels/grc/channels_phase_bal.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Phase balance
-###################################################
- -->
-<block>
- <name>Phase Balance</name>
- <key>channels_phase_bal</key>
- <import>from gnuradio import channels</import>
- <make>channels.phase_bal($alpha)</make>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_phase_noise_gen.block.yml b/gr-channels/grc/channels_phase_noise_gen.block.yml
new file mode 100644
index 0000000000..1310caad89
--- /dev/null
+++ b/gr-channels/grc/channels_phase_noise_gen.block.yml
@@ -0,0 +1,29 @@
+id: channels_phase_noise_gen
+label: Phase Noise Generator
+
+parameters:
+- id: noise_mag
+ label: Noise Magnitude
+ dtype: float
+ default: '0'
+- id: alpha
+ label: Alpha
+ dtype: float
+ default: '0.1'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.phase_noise_gen(${noise_mag}, ${alpha})
+ callbacks:
+ - set_noise_mag(${noise_mag})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_phase_noise_gen.xml b/gr-channels/grc/channels_phase_noise_gen.xml
deleted file mode 100644
index 852b4c9966..0000000000
--- a/gr-channels/grc/channels_phase_noise_gen.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Phase Noise Generator
-###################################################
- -->
-<block>
- <name>Phase Noise Generator</name>
- <key>channels_phase_noise_gen</key>
- <import>from gnuradio import channels</import>
- <make>channels.phase_noise_gen($noise_mag, $alpha)</make>
- <callback>set_noise_mag($noise_mag)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Noise Magnitude</name>
- <key>noise_mag</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0.1</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_quantizer.block.yml b/gr-channels/grc/channels_quantizer.block.yml
new file mode 100644
index 0000000000..68fcf50299
--- /dev/null
+++ b/gr-channels/grc/channels_quantizer.block.yml
@@ -0,0 +1,24 @@
+id: channels_quantizer
+label: Quantizer
+
+parameters:
+- id: bits
+ label: Bits
+ dtype: int
+ default: '16'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.quantizer(${bits})
+ callbacks:
+ - set_bits(${bits})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_quantizer.xml b/gr-channels/grc/channels_quantizer.xml
deleted file mode 100644
index 57bed74ee7..0000000000
--- a/gr-channels/grc/channels_quantizer.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Quantization
-###################################################
- -->
-<block>
- <name>Quantizer</name>
- <key>channels_quantizer</key>
- <import>from gnuradio import channels</import>
- <make>channels.quantizer($bits)</make>
- <callback>set_bits($bits)</callback>
- <param>
- <name>Bits</name>
- <key>bits</key>
- <value>16</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-channels/grc/channels_selective_fading_model.block.yml b/gr-channels/grc/channels_selective_fading_model.block.yml
new file mode 100644
index 0000000000..9898ee75ab
--- /dev/null
+++ b/gr-channels/grc/channels_selective_fading_model.block.yml
@@ -0,0 +1,87 @@
+id: channels_selective_fading_model
+label: Frequency Selective Fading Model
+
+parameters:
+- id: N
+ label: Num Sinusoids (SoS model)
+ dtype: int
+ default: '8'
+- id: fDTs
+ label: Normalized Max Doppler (fD*Ts)
+ dtype: real
+ default: 10.0/samp_rate
+- id: LOS
+ label: LOS Model
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Rayleigh/NLOS, Rician/LOS]
+ option_attributes:
+ hide_K: [all, '']
+- id: K
+ label: Rician factor (K)
+ dtype: real
+ default: '4.0'
+ hide: ${ LOS.hide_K }
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: delays
+ label: PDP Delays (samp)
+ dtype: real_vector
+ default: 0.0,0.1,1.3
+- id: mags
+ label: PDP Magnitudes
+ dtype: real_vector
+ default: 1,0.99,0.97
+- id: ntaps
+ label: Num Taps
+ dtype: int
+ default: '8'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.selective_fading_model( ${N}, ${fDTs}, ${LOS}, ${K}, ${seed}, ${delays},
+ ${mags}, ${ntaps} )
+ callbacks:
+ - set_fDTs(${fDTs})
+ - set_K(${K})
+
+documentation: |-
+ int d_N=8; // number of sinusoids used to simulate gain on each ray
+ float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
+ float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
+ bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
+ int seed=0; // noise seed
+ int ntaps; // Number of FIR taps to use in selective fading model
+
+ These two vectors comprise the Power Delay Profile of the signal
+ float_vector delays // Time delay in the fir filter (in samples) for each arriving WSSUS Ray
+ float_vector mags // Magnitude corresponding to each WSSUS Ray
+
+ If using a LOS model, the first delay and mag should correspond with the LOS component
+
+ References:
+
+ The flat-fading portion of the algorithm implements the following
+ Compact Rayleigh and Rician fading simulator based on random walk processes
+ A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
+ 26th November 2008
+
+ The frequency selective extension of the block roughly implements
+ A Low-Complexity Hardware Implementation of Discrete-Time
+ Frequency-Selective Rayleigh Fading Channels
+ F. Ren and Y. Zheng
+ 24-27 May 2009
+
+ Implementation by Tim O'Shea
+
+file_format: 1
diff --git a/gr-channels/grc/channels_selective_fading_model.xml b/gr-channels/grc/channels_selective_fading_model.xml
deleted file mode 100644
index c9b89a0da9..0000000000
--- a/gr-channels/grc/channels_selective_fading_model.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Frequency Selective Fading Model
-###################################################
- -->
-<block>
- <name>Frequency Selective Fading Model</name>
- <key>channels_selective_fading_model</key>
- <import>from gnuradio import channels</import>
- <make>channels.selective_fading_model( $N, $fDTs, $LOS, $K, $seed, $delays, $mags, $ntaps )</make>
- <callback>set_fDTs($fDTs)</callback>
- <callback>set_K($K)</callback>
- <param>
- <name>Num Sinusoids (SoS model)</name>
- <key>N</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Normalized Max Doppler (fD*Ts)</name>
- <key>fDTs</key>
- <value>10.0/samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>LOS Model</name>
- <key>LOS</key>
- <type>enum</type>
- <option>
- <name>Rayleigh/NLOS</name>
- <key>False</key>
- <opt>hide_K:all</opt>
- </option>
- <option>
- <name>Rician/LOS</name>
- <key>True</key>
- <opt>hide_K:</opt>
- </option>
- </param>
- <param>
- <name>Rician factor (K)</name>
- <key>K</key>
- <value>4.0</value>
- <type>real</type>
- <hide>$LOS.hide_K</hide>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>PDP Delays (samp)</name>
- <key>delays</key>
- <value>0.0,0.1,1.3</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>PDP Magnitudes</name>
- <key>mags</key>
- <value>1,0.99,0.97</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Num Taps</name>
- <key>ntaps</key>
- <value>8</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <doc>
- int d_N=8; // number of sinusoids used to simulate gain on each ray
- float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
- float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
- bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
- int seed=0; // noise seed
- int ntaps; // Number of FIR taps to use in selective fading model
-
- These two vectors comprise the Power Delay Profile of the signal
- float_vector delays // Time delay in the fir filter (in samples) for each arriving WSSUS Ray
- float_vector mags // Magnitude corresponding to each WSSUS Ray
-
- If using a LOS model, the first delay and mag should correspond with the LOS component
-
- References:
-
- The flat-fading portion of the algorithm implements the following
- Compact Rayleigh and Rician fading simulator based on random walk processes
- A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
- 26th November 2008
-
- The frequency selective extension of the block roughly implements
- A Low-Complexity Hardware Implementation of Discrete-Time
- Frequency-Selective Rayleigh Fading Channels
- F. Ren and Y. Zheng
- 24-27 May 2009
-
- Implementation by Tim O'Shea
- </doc>
-</block>
diff --git a/gr-channels/grc/channels_selective_fading_model2.block.yml b/gr-channels/grc/channels_selective_fading_model2.block.yml
new file mode 100644
index 0000000000..1506c03fbc
--- /dev/null
+++ b/gr-channels/grc/channels_selective_fading_model2.block.yml
@@ -0,0 +1,100 @@
+id: channels_selective_fading_model2
+label: Frequency Selective Fading Model2
+
+parameters:
+- id: N
+ label: Num Sinusoids (Stochastic SoS model + delay drift)
+ dtype: int
+ default: '8'
+- id: fDTs
+ label: Normalized Max Doppler (fD*Ts)
+ dtype: real
+ default: 0.2/samp_rate
+- id: LOS
+ label: LOS Model
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Rayleigh/NLOS, Rician/LOS]
+ option_attributes:
+ hide_K: [all, '']
+- id: K
+ label: Rician factor (K)
+ dtype: real
+ default: '4.0'
+ hide: ${ LOS.hide_K }
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+- id: delays
+ label: PDP Delays (in samps)
+ dtype: real_vector
+ default: 1.0,1.9,2.7
+- id: delay_std
+ label: PDP Delay StdDev (per samp)
+ dtype: real_vector
+ default: 1e-4,1e-4,1e-4
+- id: delay_maxdev
+ label: PDP Delay Max-Dev (per samp)
+ dtype: real_vector
+ default: 0.5,0.7,0.9
+- id: mags
+ label: PDP Magnitudes
+ dtype: real_vector
+ default: 1,0.95,0.8
+- id: ntaps
+ label: Num Taps
+ dtype: int
+ default: '8'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+- domain: message
+ id: taps
+ optional: true
+
+templates:
+ imports: from gnuradio import channels
+ make: channels.selective_fading_model2( ${N}, ${fDTs}, ${LOS}, ${K}, ${seed},
+ ${delays}, ${delay_std}, ${delay_maxdev}, ${mags}, ${ntaps} )
+ callbacks:
+ - set_fDTs(${fDTs})
+ - set_K(${K})
+
+documentation: |-
+ int d_N=8; // number of sinusoids used to simulate gain on each ray
+ float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
+ float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
+ bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
+ int seed=0; // noise seed
+ int ntaps; // Number of FIR taps to use in selective fading model
+
+ These two vectors comprise the Power Delay Profile of the signal
+ float_vector delays // Time delay in the fir filter (in samples) for each arriving WSSUS Ray
+ float_vector mags // Magnitude corresponding to each WSSUS Ray
+
+ If using a LOS model, the first delay and mag should correspond with the LOS component
+
+ References:
+
+ The flat-fading portion of the algorithm implements the following
+ Compact Rayleigh and Rician fading simulator based on random walk processes
+ A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
+ 26th November 2008
+ (Alogrithm III)
+ ( with a novel addition of time delay tap random walk )
+
+ The frequency selective extension of the block roughly implements
+ A Low-Complexity Hardware Implementation of Discrete-Time
+ Frequency-Selective Rayleigh Fading Channels
+ F. Ren and Y. Zheng
+ 24-27 May 2009
+
+ Implementation by Tim O'Shea
+
+file_format: 1
diff --git a/gr-channels/grc/channels_selective_fading_model2.xml b/gr-channels/grc/channels_selective_fading_model2.xml
deleted file mode 100644
index 1e1ea3a70c..0000000000
--- a/gr-channels/grc/channels_selective_fading_model2.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Frequency Selective Fading Model
-###################################################
- -->
-<block>
- <name>Frequency Selective Fading Model2</name>
- <key>channels_selective_fading_model2</key>
- <import>from gnuradio import channels</import>
- <make>channels.selective_fading_model2( $N, $fDTs, $LOS, $K, $seed, $delays, $delay_std, $delay_maxdev, $mags, $ntaps )</make>
- <callback>set_fDTs($fDTs)</callback>
- <callback>set_K($K)</callback>
- <param>
- <name>Num Sinusoids (Stochastic SoS model + delay drift)</name>
- <key>N</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Normalized Max Doppler (fD*Ts)</name>
- <key>fDTs</key>
- <value>0.2/samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>LOS Model</name>
- <key>LOS</key>
- <type>enum</type>
- <option>
- <name>Rayleigh/NLOS</name>
- <key>False</key>
- <opt>hide_K:all</opt>
- </option>
- <option>
- <name>Rician/LOS</name>
- <key>True</key>
- <opt>hide_K:</opt>
- </option>
- </param>
- <param>
- <name>Rician factor (K)</name>
- <key>K</key>
- <value>4.0</value>
- <type>real</type>
- <hide>$LOS.hide_K</hide>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>PDP Delays (in samps)</name>
- <key>delays</key>
- <value>1.0,1.9,2.7</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>PDP Delay StdDev (per samp)</name>
- <key>delay_std</key>
- <value>1e-4,1e-4,1e-4</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>PDP Delay Max-Dev (per samp)</name>
- <key>delay_maxdev</key>
- <value>0.5,0.7,0.9</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>PDP Magnitudes</name>
- <key>mags</key>
- <value>1,0.95,0.8</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Num Taps</name>
- <key>ntaps</key>
- <value>8</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <source>
- <name>taps</name>
- <type>message</type>
- <optional>1</optional>
- </source>
- <doc>
- int d_N=8; // number of sinusoids used to simulate gain on each ray
- float d_fDTs=0.01 // normalized maximum doppler frequency (f_doppler / f_samprate)
- float d_K=4; // Rician factor (ratio of the specular power to the scattered power)
- bool d_LOS=true; // LOS path exists? chooses Rician (LOS) vs Rayleigh (NLOS) model.
- int seed=0; // noise seed
- int ntaps; // Number of FIR taps to use in selective fading model
-
- These two vectors comprise the Power Delay Profile of the signal
- float_vector delays // Time delay in the fir filter (in samples) for each arriving WSSUS Ray
- float_vector mags // Magnitude corresponding to each WSSUS Ray
-
- If using a LOS model, the first delay and mag should correspond with the LOS component
-
- References:
-
- The flat-fading portion of the algorithm implements the following
- Compact Rayleigh and Rician fading simulator based on random walk processes
- A. Alimohammad S.F. Fard B.F. Cockburn C. Schlegel
- 26th November 2008
- (Alogrithm III)
- ( with a novel addition of time delay tap random walk )
-
- The frequency selective extension of the block roughly implements
- A Low-Complexity Hardware Implementation of Discrete-Time
- Frequency-Selective Rayleigh Fading Channels
- F. Ren and Y. Zheng
- 24-27 May 2009
-
- Implementation by Tim O'Shea
- </doc>
-</block>
diff --git a/gr-channels/grc/channels_sro_model.block.yml b/gr-channels/grc/channels_sro_model.block.yml
new file mode 100644
index 0000000000..8da9a5b25b
--- /dev/null
+++ b/gr-channels/grc/channels_sro_model.block.yml
@@ -0,0 +1,44 @@
+id: channels_sro_model
+label: SRO Model
+
+parameters:
+- id: srate
+ label: Sample Rate Hz
+ dtype: real
+ default: samp_rate
+- id: stdev
+ label: SRO Standard Deviation Hz per sample
+ dtype: real
+ default: '0.01'
+- id: maxdev
+ label: Max SRO Bound Hz
+ dtype: real
+ default: 1e3
+- id: seed
+ label: Seed
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import channels
+ make: |-
+ channels.sro_model(
+ ${srate},
+ ${stdev},
+ ${maxdev},
+ ${seed}
+ )
+ callbacks:
+ - set_std_dev(${stdev})
+ - set_max_dev(${maxdev})
+ - set_samp_rate(${srate})
+
+file_format: 1
diff --git a/gr-channels/grc/channels_sro_model.xml b/gr-channels/grc/channels_sro_model.xml
deleted file mode 100644
index 63752aaefd..0000000000
--- a/gr-channels/grc/channels_sro_model.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##SRO Model
-###################################################
- -->
-<block>
- <name>SRO Model</name>
- <key>channels_sro_model</key>
- <import>from gnuradio import channels</import>
- <make>channels.sro_model(
- $srate,
- $stdev,
- $maxdev,
- $seed
-)</make>
- <callback>set_std_dev($stdev)</callback>
- <callback>set_max_dev($maxdev)</callback>
- <callback>set_samp_rate($srate)</callback>
- <param>
- <name>Sample Rate Hz</name>
- <key>srate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>SRO Standard Deviation Hz per sample</name>
- <key>stdev</key>
- <value>0.01</value>
- <type>real</type>
- </param>
- <param>
- <name>Max SRO Bound Hz</name>
- <key>maxdev</key>
- <value>1e3</value>
- <type>real</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/CMakeLists.txt b/gr-digital/grc/CMakeLists.txt
index a3d0223290..78c8261525 100644
--- a/gr-digital/grc/CMakeLists.txt
+++ b/gr-digital/grc/CMakeLists.txt
@@ -17,7 +17,7 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
-file(GLOB xml_files "*.xml")
-install(FILES ${xml_files}
+file(GLOB yml_files "*.yml")
+install(FILES ${yml_files}
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-digital/grc/digital.tree.yml b/gr-digital/grc/digital.tree.yml
new file mode 100644
index 0000000000..0e4c2463e8
--- /dev/null
+++ b/gr-digital/grc/digital.tree.yml
@@ -0,0 +1,85 @@
+'[Core]':
+- Coding:
+ - digital_additive_scrambler_bb
+ - digital_descrambler_bb
+ - digital_scrambler_bb
+- Equalizers:
+ - digital_cma_equalizer_cc
+ - digital_lms_dd_equalizer_cc
+ - digital_kurtotic_equalizer_cc
+- Measurement Tools:
+ - digital_mpsk_snr_est_cc
+ - digital_probe_density_b
+ - digital_probe_mpsk_snr_est_c
+- Modulators:
+ - digital_cpmmod_bc
+ - digital_gfsk_mod
+ - digital_gfsk_demod
+ - digital_gmskmod_bc
+ - digital_gmsk_mod
+ - digital_gmsk_demod
+ - digital_constellation_modulator
+ - digital_constellation_receiver_cb
+ - variable_constellation
+ - variable_constellation_rect
+ - variable_modulate_vector
+- Packet Operators:
+ - digital_correlate_access_code_tag_bb
+ - digital_correlate_access_code_xx_ts
+ - digital_crc32_bb
+ - digital_crc32_async_bb
+ - digital_framer_sink_1
+ - variable_header_format_default
+ - digital_protocol_formatter_async
+ - digital_protocol_formatter_bb
+ - digital_protocol_parser_b
+ - digital_header_payload_demux
+ - digital_packet_headergenerator_bb
+ - digital_packet_headergenerator_bb_default
+ - digital_packet_headerparser_b
+ - digital_packet_headerparser_b_default
+ - digital_packet_sink
+ - digital_hdlc_framer_pb
+ - digital_hdlc_deframer_bp
+ - digital_simple_framer
+ - digital_simple_correlator
+- OFDM:
+ - digital_ofdm_mod
+ - digital_ofdm_demod
+ - digital_ofdm_carrier_allocator_cvc
+ - digital_ofdm_chanest_vcvc
+ - digital_ofdm_cyclic_prefixer
+ - digital_ofdm_frame_acquisition
+ - digital_ofdm_frame_equalizer_vcvc
+ - digital_ofdm_frame_sink
+ - digital_ofdm_insert_preamble
+ - digital_ofdm_rx
+ - digital_ofdm_sampler
+ - digital_ofdm_serializer_vcc
+ - digital_ofdm_sync_pn
+ - digital_ofdm_sync_sc_cfb
+ - digital_ofdm_tx
+- Symbol Coding:
+ - digital_binary_slicer_fb
+ - digital_chunks_to_symbols_xx
+ - digital_constellation_decoder_cb
+ - digital_constellation_receiver_cb
+ - digital_constellation_soft_decoder_cf
+ - digital_diff_decoder_bb
+ - digital_diff_encoder_bb
+ - digital_diff_phasor_cc
+ - digital_map_bb
+- Synchronizers:
+ - digital_clock_recovery_mm_xx
+ - digital_costas_loop_cc
+ - digital_fll_band_edge_cc
+ - digital_pfb_clock_sync_xxx
+ - digital_pn_correlator_cc
+ - digital_symbol_sync_xx
+ - digital_corr_est_cc
+- Waveform Generators:
+ - digital_glfsr_source_x
+- Deprecated:
+ - digital_correlate_access_code_bb
+ - digital_simple_framer
+ - digital_simple_correlator
diff --git a/gr-digital/grc/digital_additive_scrambler_bb.block.yml b/gr-digital/grc/digital_additive_scrambler_bb.block.yml
new file mode 100644
index 0000000000..d447a2822d
--- /dev/null
+++ b/gr-digital/grc/digital_additive_scrambler_bb.block.yml
@@ -0,0 +1,43 @@
+id: digital_additive_scrambler_bb
+label: Additive Scrambler
+
+parameters:
+- id: mask
+ label: Mask
+ dtype: hex
+ default: '0x8A'
+- id: seed
+ label: Seed
+ dtype: hex
+ default: '0x7F'
+- id: len
+ label: Length
+ dtype: int
+ default: '7'
+- id: count
+ label: Count
+ dtype: int
+ default: '0'
+- id: bits_per_byte
+ label: Bits per byte
+ dtype: int
+ default: '1'
+- id: reset_tag_key
+ label: Reset tag key
+ dtype: string
+ default: '""'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.additive_scrambler_bb(${mask}, ${seed}, ${len}, count=${count},
+ bits_per_byte=${bits_per_byte}, reset_tag_key=${reset_tag_key})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_additive_scrambler_bb.xml b/gr-digital/grc/digital_additive_scrambler_bb.xml
deleted file mode 100644
index 2bb06e48a3..0000000000
--- a/gr-digital/grc/digital_additive_scrambler_bb.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Additive Scrambler
-###################################################
- -->
-<block>
- <name>Additive Scrambler</name>
- <key>digital_additive_scrambler_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.additive_scrambler_bb($mask, $seed, $len, count=$count, bits_per_byte=$bits_per_byte, reset_tag_key=$reset_tag_key)</make>
- <param>
- <name>Mask</name>
- <key>mask</key>
- <value>0x8A</value>
- <type>hex</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0x7F</value>
- <type>hex</type>
- </param>
- <param>
- <name>Length</name>
- <key>len</key>
- <value>7</value>
- <type>int</type>
- </param>
- <param>
- <name>Count</name>
- <key>count</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Bits per byte</name>
- <key>bits_per_byte</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Reset tag key</name>
- <key>reset_tag_key</key>
- <value>""</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_binary_slicer_fb.block.yml b/gr-digital/grc/digital_binary_slicer_fb.block.yml
new file mode 100644
index 0000000000..143c97c0ed
--- /dev/null
+++ b/gr-digital/grc/digital_binary_slicer_fb.block.yml
@@ -0,0 +1,16 @@
+id: digital_binary_slicer_fb
+label: Binary Slicer
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.binary_slicer_fb()
+
+file_format: 1
diff --git a/gr-digital/grc/digital_binary_slicer_fb.xml b/gr-digital/grc/digital_binary_slicer_fb.xml
deleted file mode 100644
index 3187d13f92..0000000000
--- a/gr-digital/grc/digital_binary_slicer_fb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Binary Slicer
-###################################################
- -->
-<block>
- <name>Binary Slicer</name>
- <key>digital_binary_slicer_fb</key>
- <import>from gnuradio import digital</import>
- <make>digital.binary_slicer_fb()</make>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_block_tree.xml b/gr-digital/grc/digital_block_tree.xml
deleted file mode 100644
index 10346cbcd0..0000000000
--- a/gr-digital/grc/digital_block_tree.xml
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Copyright (C) 2011-2017 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR Digital blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Coding</name>
- <block>digital_additive_scrambler_bb</block>
- <block>digital_descrambler_bb</block>
- <block>digital_scrambler_bb</block>
- </cat>
- <cat>
- <name>Equalizers</name>
- <block>digital_cma_equalizer_cc</block>
- <block>digital_lms_dd_equalizer_cc</block>
- <block>digital_kurtotic_equalizer_cc</block>
- </cat>
- <cat>
- <name>Measurement Tools</name>
- <block>digital_mpsk_snr_est_cc</block>
- <block>digital_probe_density_b</block>
- <block>digital_probe_mpsk_snr_est_c</block>
- </cat>
- <cat>
- <name>Modulators</name>
- <block>digital_cpmmod_bc</block>
- <block>digital_gfsk_mod</block>
- <block>digital_gfsk_demod</block>
- <block>digital_gmskmod_bc</block>
- <block>digital_gmsk_mod</block>
- <block>digital_gmsk_demod</block>
- <block>digital_constellation_modulator</block>
- <block>digital_constellation_receiver_cb</block>
- <block>variable_constellation</block>
- <block>variable_constellation_rect</block>
- <block>variable_modulate_vector</block>
- </cat>
- <cat>
- <name>Packet Operators</name>
- <block>digital_correlate_access_code_tag_bb</block>
- <block>digital_correlate_access_code_xx_ts</block>
- <block>digital_crc32_bb</block>
- <block>digital_crc32_async_bb</block>
- <block>digital_framer_sink_1</block>
- <block>variable_header_format_default</block>
- <block>digital_protocol_formatter_async</block>
- <block>digital_protocol_formatter_bb</block>
- <block>digital_protocol_parser_b</block>
- <block>digital_header_payload_demux</block>
- <block>digital_packet_headergenerator_bb</block>
- <block>digital_packet_headergenerator_bb_default</block>
- <block>digital_packet_headerparser_b</block>
- <block>digital_packet_headerparser_b_default</block>
- <block>digital_packet_sink</block>
- <block>digital_hdlc_framer_pb</block>
- <block>digital_hdlc_deframer_bp</block>
- <block>digital_simple_framer</block>
- <block>digital_simple_correlator</block>
- </cat>
- <cat>
- <name>OFDM</name>
- <block>digital_ofdm_mod</block>
- <block>digital_ofdm_demod</block>
- <block>digital_ofdm_carrier_allocator_cvc</block>
- <block>digital_ofdm_chanest_vcvc</block>
- <block>digital_ofdm_cyclic_prefixer</block>
- <block>digital_ofdm_frame_acquisition</block>
- <block>digital_ofdm_frame_equalizer_vcvc</block>
- <block>digital_ofdm_frame_sink</block>
- <block>digital_ofdm_insert_preamble</block>
- <block>digital_ofdm_rx</block>
- <block>digital_ofdm_sampler</block>
- <block>digital_ofdm_serializer_vcc</block>
- <block>digital_ofdm_sync_pn</block>
- <block>digital_ofdm_sync_sc_cfb</block>
- <block>digital_ofdm_tx</block>
- </cat>
- <cat>
- <name>Symbol Coding</name>
- <block>digital_binary_slicer_fb</block>
- <block>digital_chunks_to_symbols_xx</block>
- <block>digital_constellation_decoder_cb</block>
- <block>digital_constellation_receiver_cb</block>
- <block>digital_constellation_soft_decoder_cf</block>
- <block>digital_diff_decoder_bb</block>
- <block>digital_diff_encoder_bb</block>
- <block>digital_diff_phasor_cc</block>
- <block>digital_map_bb</block>
- </cat>
- <cat>
- <name>Synchronizers</name>
- <block>digital_clock_recovery_mm_xx</block>
- <block>digital_costas_loop_cc</block>
- <block>digital_fll_band_edge_cc</block>
- <block>digital_pfb_clock_sync_xxx</block>
- <block>digital_pn_correlator_cc</block>
- <block>digital_symbol_sync_xx</block>
- <block>digital_corr_est_cc</block>
- </cat>
- <cat>
- <name>Waveform Generators</name>
- <block>digital_glfsr_source_x</block>
- </cat>
- <cat>
- <name>Deprecated</name>
- <block>digital_correlate_access_code_bb</block>
- <block>digital_simple_framer</block>
- <block>digital_simple_correlator</block>
- </cat>
-</cat>
diff --git a/gr-digital/grc/digital_burst_shaper.block.yml b/gr-digital/grc/digital_burst_shaper.block.yml
new file mode 100644
index 0000000000..a6d7defb4b
--- /dev/null
+++ b/gr-digital/grc/digital_burst_shaper.block.yml
@@ -0,0 +1,50 @@
+id: digital_burst_shaper_xx
+label: Burst Shaper
+category: '[Core]/Packet Operators'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [float, complex]
+ option_attributes:
+ fcn: [ff, cc]
+ taps: [float_vector, complex_vector]
+ hide: part
+- id: window
+ label: Window Taps
+ dtype: ${ type.taps }
+ default: ([])
+- id: pre_padding
+ label: Pre-padding Length
+ dtype: int
+ default: '0'
+- id: post_padding
+ label: Post-padding Length
+ dtype: int
+ default: '0'
+- id: insert_phasing
+ label: Insert phasing symbols
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+- id: length_tag_name
+ label: Length Tag Name
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.burst_shaper_${type.fcn}(${window}, ${pre_padding}, ${post_padding},
+ ${insert_phasing}, ${length_tag_name})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_burst_shaper.xml b/gr-digital/grc/digital_burst_shaper.xml
deleted file mode 100644
index 95e1bcbc77..0000000000
--- a/gr-digital/grc/digital_burst_shaper.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Burst Shaper</name>
- <key>digital_burst_shaper_xx</key>
- <category>[Core]/Packet Operators</category>
- <import>from gnuradio import digital</import>
- <make>digital.burst_shaper_$(type.fcn)($window, $pre_padding, $post_padding, $insert_phasing, $length_tag_name)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- <opt>taps:float_vector</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
- <param>
- <name>Window Taps</name>
- <key>window</key>
- <value>([])</value>
- <type>$(type.taps)</type>
- </param>
- <param>
- <name>Pre-padding Length</name>
- <key>pre_padding</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Post-padding Length</name>
- <key>post_padding</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Insert phasing symbols</name>
- <key>insert_phasing</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>Length Tag Name</name>
- <key>length_tag_name</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_chunks_to_symbols.block.yml b/gr-digital/grc/digital_chunks_to_symbols.block.yml
new file mode 100644
index 0000000000..35b5ee94c6
--- /dev/null
+++ b/gr-digital/grc/digital_chunks_to_symbols.block.yml
@@ -0,0 +1,53 @@
+id: digital_chunks_to_symbols_xx
+label: Chunks to Symbols
+
+parameters:
+- id: in_type
+ label: Input Type
+ dtype: enum
+ options: [int, short, byte]
+ option_attributes:
+ fcn: [i, s, b]
+ hide: part
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [c, f]
+ table: [complex_vector, real_vector]
+ hide: part
+- id: symbol_table
+ label: Symbol Table
+ dtype: ${ out_type.table }
+- id: dimension
+ label: Dimension
+ dtype: int
+ default: '2'
+- id: num_ports
+ label: Num Ports
+ dtype: int
+ default: '1'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ in_type }
+ multiplicity: ${ num_ports }
+
+outputs:
+- domain: stream
+ dtype: ${ out_type }
+ multiplicity: ${ num_ports }
+
+asserts:
+- ${ num_ports > 0 }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.chunks_to_symbols_${in_type.fcn}${out_type.fcn}(${symbol_table},
+ ${dimension})
+ callbacks:
+ - set_symbol_table(${symbol_table})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_chunks_to_symbols.xml b/gr-digital/grc/digital_chunks_to_symbols.xml
deleted file mode 100644
index 9c6f952ec0..0000000000
--- a/gr-digital/grc/digital_chunks_to_symbols.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Chunks to Symbols
-###################################################
- -->
-<block>
- <name>Chunks to Symbols</name>
- <key>digital_chunks_to_symbols_xx</key>
- <import>from gnuradio import digital</import>
- <make>digital.chunks_to_symbols_$(in_type.fcn)$(out_type.fcn)($symbol_table, $dimension)</make>
- <callback>set_symbol_table($symbol_table)</callback>
- <param>
- <name>Input Type</name>
- <key>in_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- <opt>table:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- <opt>table:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Symbol Table</name>
- <key>symbol_table</key>
- <type>$out_type.table</type>
- </param>
- <param>
- <name>Dimension</name>
- <key>dimension</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Num Ports</name>
- <key>num_ports</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$num_ports &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$in_type</type>
- <nports>$num_ports</nports>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type</type>
- <nports>$num_ports</nports>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_clock_recovery_mm_xx.block.yml b/gr-digital/grc/digital_clock_recovery_mm_xx.block.yml
new file mode 100644
index 0000000000..f4b8a9439d
--- /dev/null
+++ b/gr-digital/grc/digital_clock_recovery_mm_xx.block.yml
@@ -0,0 +1,51 @@
+id: digital_clock_recovery_mm_xx
+label: Clock Recovery MM
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: omega
+ label: Omega
+ dtype: real
+ default: samp_per_sym*(1+0.0)
+- id: gain_omega
+ label: Gain Omega
+ dtype: real
+ default: 0.25*0.175*0.175
+- id: mu
+ label: Mu
+ dtype: real
+ default: '0.5'
+- id: gain_mu
+ label: Gain Mu
+ dtype: real
+ default: '0.175'
+- id: omega_relative_limit
+ label: Omega Relative Limit
+ dtype: real
+ default: '0.005'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.clock_recovery_mm_${type.fcn}(${omega}, ${gain_omega}, ${mu}, ${gain_mu},
+ ${omega_relative_limit})
+ callbacks:
+ - set_omega(${omega})
+ - set_gain_omega(${gain_omega})
+ - set_mu(${mu})
+ - set_gain_mu(${gain_mu})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_clock_recovery_mm_xx.xml b/gr-digital/grc/digital_clock_recovery_mm_xx.xml
deleted file mode 100644
index a0857686be..0000000000
--- a/gr-digital/grc/digital_clock_recovery_mm_xx.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Clock Recovery MM
-###################################################
- -->
-<block>
- <name>Clock Recovery MM</name>
- <key>digital_clock_recovery_mm_xx</key>
- <import>from gnuradio import digital</import>
- <make>digital.clock_recovery_mm_$(type.fcn)($omega, $gain_omega, $mu, $gain_mu, $omega_relative_limit)</make>
- <callback>set_omega($omega)</callback>
- <callback>set_gain_omega($gain_omega)</callback>
- <callback>set_mu($mu)</callback>
- <callback>set_gain_mu($gain_mu)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Omega</name>
- <key>omega</key>
- <value>samp_per_sym*(1+0.0)</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain Omega</name>
- <key>gain_omega</key>
- <value>0.25*0.175*0.175</value>
- <type>real</type>
- </param>
- <param>
- <name>Mu</name>
- <key>mu</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain Mu</name>
- <key>gain_mu</key>
- <value>0.175</value>
- <type>real</type>
- </param>
- <param>
- <name>Omega Relative Limit</name>
- <key>omega_relative_limit</key>
- <value>0.005</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_cma_equalizer_cc.block.yml b/gr-digital/grc/digital_cma_equalizer_cc.block.yml
new file mode 100644
index 0000000000..64e83390d5
--- /dev/null
+++ b/gr-digital/grc/digital_cma_equalizer_cc.block.yml
@@ -0,0 +1,33 @@
+id: digital_cma_equalizer_cc
+label: CMA Equalizer
+
+parameters:
+- id: num_taps
+ label: Num. Taps
+ dtype: int
+- id: modulus
+ label: Modulus
+ dtype: real
+- id: mu
+ label: Gain
+ dtype: real
+- id: sps
+ label: Samples per Symbol
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.cma_equalizer_cc(${num_taps}, ${modulus}, ${mu}, ${sps})
+ callbacks:
+ - set_gain(${mu})
+ - set_modulus(${modulus})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_cma_equalizer_cc.xml b/gr-digital/grc/digital_cma_equalizer_cc.xml
deleted file mode 100644
index 118c18e294..0000000000
--- a/gr-digital/grc/digital_cma_equalizer_cc.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CMA Equalizer
-###################################################
- -->
-<block>
- <name>CMA Equalizer</name>
- <key>digital_cma_equalizer_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.cma_equalizer_cc($num_taps, $modulus, $mu, $sps)</make>
- <callback>set_gain($mu)</callback>
- <callback>set_modulus($modulus)</callback>
- <param>
- <name>Num. Taps</name>
- <key>num_taps</key>
- <type>int</type>
- </param>
- <param>
- <name>Modulus</name>
- <key>modulus</key>
- <type>real</type>
- </param>
- <param>
- <name>Gain</name>
- <key>mu</key>
- <type>real</type>
- </param>
- <param>
- <name>Samples per Symbol</name>
- <key>sps</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_constellation.block.yml b/gr-digital/grc/digital_constellation.block.yml
new file mode 100644
index 0000000000..b604140888
--- /dev/null
+++ b/gr-digital/grc/digital_constellation.block.yml
@@ -0,0 +1,72 @@
+id: variable_constellation
+label: Constellation Object
+category: Modulators
+
+parameters:
+- id: type
+ label: Constellation Type
+ dtype: enum
+ options: [calcdist, bpsk, qpsk, dqpsk, 8psk, 16qam]
+ option_labels: [Variable Constellation, BPSK, QPSK, DQPSK, 8PSK, 16QAM]
+- id: sym_map
+ label: Symbol Map
+ dtype: int_vector
+ default: '[0, 1, 3, 2]'
+ hide: ${ ( 'none' if str(type) == "calcdist" else 'all') }
+- id: const_points
+ label: Constellation Points
+ dtype: complex_vector
+ default: '[-1-1j, -1+1j, 1+1j, 1-1j]'
+ hide: ${ ( 'none' if str(type) == "calcdist" else 'all') }
+- id: rot_sym
+ label: Rotational Symmetry
+ dtype: int
+ default: '4'
+ hide: ${ ( 'none' if str(type) == "calcdist" else 'all') }
+- id: dims
+ label: Dimensionality
+ dtype: int
+ default: '1'
+ hide: ${ ( 'none' if str(type) == "calcdist" else 'all') }
+- id: precision
+ label: Soft Decisions Precision
+ dtype: int
+ default: '8'
+ hide: part
+- id: soft_dec_lut
+ label: Soft Decisions LUT
+ dtype: raw
+ default: None
+ hide: ${ ('part' if str(soft_dec_lut) == 'None' else 'none') }
+value: ${ digital.constellation_calcdist(const_points, sym_map, rot_sym, dims) if (str(type) == "calcdist") else digital.constellation_type}
+
+templates:
+ imports: from gnuradio import digital
+ var_make: '
+
+ % if str(type) == "calcdist":
+
+ self.${id} = ${id} = digital.constellation_calcdist(${const_points}, ${sym_map},
+ ${rot_sym}, ${dims}).base()
+
+ % else:
+
+ self.${id} = ${id} = digital.constellation_${type}().base()
+
+ % endif
+
+
+ % if str(soft_dec_lut).lower() == ''"auto"'' or str(soft_dec_lut).lower()
+ == "''auto''":
+
+ self.${id}.gen_soft_dec_lut(${precision})
+
+ % elif str(soft_dec_lut) != ''None'':
+
+ self.${id}.set_soft_dec_lut(${soft_dec_lut}, ${precision})
+
+ % endif
+
+ '
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation.xml b/gr-digital/grc/digital_constellation.xml
deleted file mode 100644
index ef5364d248..0000000000
--- a/gr-digital/grc/digital_constellation.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Create a Constellation Object
-###################################################
- -->
-<block>
- <name>Constellation Object</name>
- <key>variable_constellation</key>
- <category>Modulators</category>
- <import>from gnuradio import digital</import>
- <var_make>
-#if str($type) == "calcdist"
-self.$(id) = $(id) = digital.constellation_calcdist($const_points, $sym_map, $rot_sym, $dims).base()
-#else
-self.$(id) = $(id) = digital.constellation_$(type)().base()
-#end if
-
-#if str($soft_dec_lut).lower() == '"auto"' or str($soft_dec_lut).lower() == "'auto'"
-self.$(id).gen_soft_dec_lut($precision)
-#else if str($soft_dec_lut) != 'None'
-self.$(id).set_soft_dec_lut($soft_dec_lut, $precision)
-#end if
-</var_make>
-
-<var_value>
-#if str($type) == "calcdist"
-digital.constellation_calcdist($const_points, $sym_map, $rot_sym, $dims)
-#else
-digital.constellation_$(type)()
-#end if
-</var_value>
-
- <make></make>
- <!--<callback></callback>-->
-
- <param>
- <name>Constellation Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Variable Constellation</name>
- <key>calcdist</key>
- </option>
- <option>
- <name>BPSK</name>
- <key>bpsk</key>
- </option>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- </option>
- <option>
- <name>DQPSK</name>
- <key>dqpsk</key>
- </option>
- <option>
- <name>8PSK</name>
- <key>8psk</key>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- </option>
-
- </param>
- <param>
- <name>Symbol Map</name>
- <key>sym_map</key>
- <value>[0, 1, 3, 2]</value>
- <type>int_vector</type>
- <hide> #if str($type) == "calcdist" then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Constellation Points</name>
- <key>const_points</key>
- <value>[-1-1j, -1+1j, 1+1j, 1-1j]</value>
- <type>complex_vector</type>
- <hide> #if str($type) == "calcdist" then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Rotational Symmetry</name>
- <key>rot_sym</key>
- <value>4</value>
- <type>int</type>
- <hide> #if str($type) == "calcdist" then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimensionality</name>
- <key>dims</key>
- <value>1</value>
- <type>int</type>
- <hide> #if str($type) == "calcdist" then 'none' else 'all' #</hide>
- </param>
- <param>
- <name>Soft Decisions Precision</name>
- <key>precision</key>
- <value>8</value>
- <type>int</type>
- <hide>part</hide>
- </param>
-
- <param>
- <name>Soft Decisions LUT</name>
- <key>soft_dec_lut</key>
- <value>None</value>
- <type>raw</type>
- <hide>#if str($soft_dec_lut) == 'None' then 'part' else 'none'#</hide>
- </param>
-</block>
diff --git a/gr-digital/grc/digital_constellation_decoder_cb.block.yml b/gr-digital/grc/digital_constellation_decoder_cb.block.yml
new file mode 100644
index 0000000000..59d312d89a
--- /dev/null
+++ b/gr-digital/grc/digital_constellation_decoder_cb.block.yml
@@ -0,0 +1,21 @@
+id: digital_constellation_decoder_cb
+label: Constellation Decoder
+
+parameters:
+- id: constellation
+ label: Constellation Object
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.constellation_decoder_cb(${constellation})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation_decoder_cb.xml b/gr-digital/grc/digital_constellation_decoder_cb.xml
deleted file mode 100644
index c7353e2888..0000000000
--- a/gr-digital/grc/digital_constellation_decoder_cb.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Constellation Decoder
-###################################################
- -->
-<block>
- <name>Constellation Decoder</name>
- <key>digital_constellation_decoder_cb</key>
- <import>from gnuradio import digital</import>
- <make>digital.constellation_decoder_cb($constellation)</make>
- <param>
- <name>Constellation Object</name>
- <key>constellation</key>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_constellation_modulator.block.yml b/gr-digital/grc/digital_constellation_modulator.block.yml
new file mode 100644
index 0000000000..8be84449ad
--- /dev/null
+++ b/gr-digital/grc/digital_constellation_modulator.block.yml
@@ -0,0 +1,58 @@
+id: digital_constellation_modulator
+label: Constellation Modulator
+
+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') }
+
+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},
+ )
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation_modulator.xml b/gr-digital/grc/digital_constellation_modulator.xml
deleted file mode 100644
index 9905197f93..0000000000
--- a/gr-digital/grc/digital_constellation_modulator.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2013 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-## Modulates any given constellation object
-###################################################
- -->
-<block>
- <name>Constellation Modulator</name>
- <key>digital_constellation_modulator</key>
- <import>from gnuradio import digital</import>
- <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,
- )</make>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>raw</type>
- </param>
- <param>
- <name>Differential Encoding</name>
- <key>differential</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_constellation_receiver_cb.block.yml b/gr-digital/grc/digital_constellation_receiver_cb.block.yml
new file mode 100644
index 0000000000..6221348805
--- /dev/null
+++ b/gr-digital/grc/digital_constellation_receiver_cb.block.yml
@@ -0,0 +1,62 @@
+id: digital_constellation_receiver_cb
+label: Constellation Receiver
+
+parameters:
+- id: constellation
+ label: Constellation Object
+ dtype: raw
+- id: loop_bw
+ label: Loop Bandwidth
+ dtype: real
+- id: fmin
+ label: Minimum Freq Deviation
+ dtype: real
+- id: fmax
+ label: Maximum Freq Deviation
+ dtype: real
+- id: showports
+ label: Show Msg Ports
+ dtype: enum
+ default: 'True'
+ options: ['False', 'True']
+ option_labels: ['Yes', 'No']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+- domain: message
+ id: set_constellation
+ optional: true
+ hide: ${ showports }
+- domain: message
+ id: rotate_phase
+ optional: true
+ hide: ${ showports }
+
+outputs:
+- domain: stream
+ dtype: byte
+- label: error
+ domain: stream
+ dtype: float
+ optional: true
+- label: phase
+ domain: stream
+ dtype: float
+ optional: true
+- label: frequency
+ domain: stream
+ dtype: float
+ optional: true
+- label: symbol
+ domain: stream
+ dtype: complex
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.constellation_receiver_cb(${constellation}, ${loop_bw}, ${fmin},
+ ${fmax})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation_receiver_cb.xml b/gr-digital/grc/digital_constellation_receiver_cb.xml
deleted file mode 100644
index 06155ecae9..0000000000
--- a/gr-digital/grc/digital_constellation_receiver_cb.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Constellation Receiver
-###################################################
- -->
-<block>
- <name>Constellation Receiver</name>
- <key>digital_constellation_receiver_cb</key>
- <import>from gnuradio import digital</import>
- <make>digital.constellation_receiver_cb($constellation, $loop_bw, $fmin, $fmax)</make>
- <param>
- <name>Constellation Object</name>
- <key>constellation</key>
- <type>raw</type>
- </param>
- <param>
- <name>Loop Bandwidth</name>
- <key>loop_bw</key>
- <type>real</type>
- </param>
- <param>
- <name>Minimum Freq Deviation</name>
- <key>fmin</key>
- <type>real</type>
- </param>
- <param>
- <name>Maximum Freq Deviation</name>
- <key>fmax</key>
- <type>real</type>
- </param>
-
- <param>
- <name>Show Msg Ports</name>
- <key>showports</key>
- <value>True</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>False</key>
- </option>
- <option>
- <name>No</name>
- <key>True</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <sink>
- <name>set_constellation</name>
- <type>message</type>
- <optional>1</optional>
- <hide>$showports</hide>
- </sink>
-
- <sink>
- <name>rotate_phase</name>
- <type>message</type>
- <optional>1</optional>
- <hide>$showports</hide>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
- <source>
- <name>error</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>phase</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>frequency</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>symbol</name>
- <type>complex</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_constellation_rect.block.yml b/gr-digital/grc/digital_constellation_rect.block.yml
new file mode 100644
index 0000000000..e9e58001c2
--- /dev/null
+++ b/gr-digital/grc/digital_constellation_rect.block.yml
@@ -0,0 +1,65 @@
+id: variable_constellation_rect
+label: Constellation Rect. Object
+category: Modulators
+
+parameters:
+- id: sym_map
+ label: Symbol Map
+ dtype: int_vector
+ default: '[0, 1, 3, 2]'
+- id: const_points
+ label: Constellation Points
+ dtype: complex_vector
+ default: '[-1-1j, -1+1j, 1+1j, 1-1j]'
+- id: rot_sym
+ label: Rotational Symmetry
+ dtype: int
+ default: '4'
+- id: real_sect
+ label: Real Sectors
+ dtype: int
+ default: '2'
+- id: imag_sect
+ label: Imaginary Sectors
+ dtype: int
+ default: '2'
+- id: w_real_sect
+ label: Width Real Sectors
+ dtype: int
+ default: '1'
+- id: w_imag_sect
+ label: Width Imaginary Sectors
+ dtype: int
+ default: '1'
+- id: precision
+ label: Soft bits precision
+ dtype: int
+ default: '8'
+ hide: part
+- id: soft_dec_lut
+ label: Soft Decisions LUT
+ dtype: raw
+ default: None
+ hide: ${ ('part' if str(soft_dec_lut) == 'None' else 'none') }
+value: ${ digital.constellation_rect(const_points, sym_map, rot_sym, real_sect, imag_sect,
+ w_real_sect, w_imag_sect) }
+
+templates:
+ imports: from gnuradio import digital
+ var_make: 'self.${id} = ${id} = digital.constellation_rect(${const_points}, ${sym_map},
+ ${rot_sym}, ${real_sect}, ${imag_sect}, ${w_real_sect}, ${w_imag_sect}).base()
+
+ % if str(soft_dec_lut).lower() == ''"auto"'' or str(soft_dec_lut).lower()
+ == "''auto''":
+
+ self.${id}.gen_soft_dec_lut(${precision})
+
+ % elif str(soft_dec_lut) != ''None'':
+
+ self.${id}.set_soft_dec_lut(${soft_dec_lut}, ${precision})
+
+ % endif
+
+ '
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation_rect.xml b/gr-digital/grc/digital_constellation_rect.xml
deleted file mode 100644
index 9e50fe84b7..0000000000
--- a/gr-digital/grc/digital_constellation_rect.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Create a Rectangular Constellation Object
-###################################################
- -->
-<block>
- <name>Constellation Rect. Object</name>
- <key>variable_constellation_rect</key>
- <category>Modulators</category>
- <import>from gnuradio import digital</import>
- <var_make>self.$(id) = $(id) = digital.constellation_rect($const_points, $sym_map, $rot_sym, $real_sect, $imag_sect, $w_real_sect, $w_imag_sect).base()
-#if str($soft_dec_lut).lower() == '"auto"' or str($soft_dec_lut).lower() == "'auto'"
-self.$(id).gen_soft_dec_lut($precision)
-#else if str($soft_dec_lut) != 'None'
-self.$(id).set_soft_dec_lut($soft_dec_lut, $precision)
-#end if
-</var_make>
-
- <var_value>digital.constellation_rect($const_points, $sym_map, $rot_sym, $real_sect, $imag_sect, $w_real_sect, $w_imag_sect)</var_value>
-
- <make></make>
- <!--<callback>set_softbits($softbits_lut, $precision)</callback>-->
-
- <param>
- <name>Symbol Map</name>
- <key>sym_map</key>
- <value>[0, 1, 3, 2]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Constellation Points</name>
- <key>const_points</key>
- <value>[-1-1j, -1+1j, 1+1j, 1-1j]</value>
- <type>complex_vector</type>
- </param>
-
- <param>
- <name>Rotational Symmetry</name>
- <key>rot_sym</key>
- <value>4</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Real Sectors</name>
- <key>real_sect</key>
- <value>2</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Imaginary Sectors</name>
- <key>imag_sect</key>
- <value>2</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Width Real Sectors</name>
- <key>w_real_sect</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Width Imaginary Sectors</name>
- <key>w_imag_sect</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Soft bits precision</name>
- <key>precision</key>
- <value>8</value>
- <type>int</type>
- <hide>part</hide>
- </param>
-
- <param>
- <name>Soft Decisions LUT</name>
- <key>soft_dec_lut</key>
- <value>None</value>
- <type>raw</type>
- <hide>#if str($soft_dec_lut) == 'None' then 'part' else 'none'#</hide>
- </param>
-</block>
diff --git a/gr-digital/grc/digital_constellation_soft_decoder_cf.block.yml b/gr-digital/grc/digital_constellation_soft_decoder_cf.block.yml
new file mode 100644
index 0000000000..2b352a7f21
--- /dev/null
+++ b/gr-digital/grc/digital_constellation_soft_decoder_cf.block.yml
@@ -0,0 +1,21 @@
+id: digital_constellation_soft_decoder_cf
+label: Constellation Soft Decoder
+
+parameters:
+- id: constellation
+ label: Constellation Object
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.constellation_soft_decoder_cf(${constellation})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_constellation_soft_decoder_cf.xml b/gr-digital/grc/digital_constellation_soft_decoder_cf.xml
deleted file mode 100644
index 6b0995acc9..0000000000
--- a/gr-digital/grc/digital_constellation_soft_decoder_cf.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Constellation Decoder, soft bits out
-###################################################
- -->
-<block>
- <name>Constellation Soft Decoder</name>
- <key>digital_constellation_soft_decoder_cf</key>
- <import>from gnuradio import digital</import>
- <make>digital.constellation_soft_decoder_cf($constellation)</make>
- <param>
- <name>Constellation Object</name>
- <key>constellation</key>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_corr_est_cc.block.yml b/gr-digital/grc/digital_corr_est_cc.block.yml
new file mode 100644
index 0000000000..b3a9698d18
--- /dev/null
+++ b/gr-digital/grc/digital_corr_est_cc.block.yml
@@ -0,0 +1,38 @@
+id: digital_corr_est_cc
+label: Correlation Estimator
+
+parameters:
+- id: symbols
+ label: Symbols
+ dtype: complex_vector
+- id: sps
+ label: Samples per Symbol
+ dtype: float
+- id: mark_delay
+ label: Tag marking delay
+ dtype: int
+- id: threshold
+ label: Threshold
+ dtype: float
+ default: '0.9'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+- label: corr
+ domain: stream
+ dtype: complex
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.corr_est_cc(${symbols}, ${sps}, ${mark_delay}, ${threshold})
+ callbacks:
+ - set_mark_delay(${mark_delay})
+ - set_threshold(${threshold})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_corr_est_cc.xml b/gr-digital/grc/digital_corr_est_cc.xml
deleted file mode 100644
index 1a1c449efb..0000000000
--- a/gr-digital/grc/digital_corr_est_cc.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Correlation Estimator</name>
- <key>digital_corr_est_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.corr_est_cc($symbols, $sps, $mark_delay, $threshold)</make>
- <callback>set_mark_delay($mark_delay)</callback>
- <callback>set_threshold($threshold)</callback>
-
- <param>
- <name>Symbols</name>
- <key>symbols</key>
- <type>complex_vector</type>
- </param>
-
- <param>
- <name>Samples per Symbol</name>
- <key>sps</key>
- <type>float</type>
- </param>
-
- <param>
- <name>Tag marking delay</name>
- <key>mark_delay</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <value>0.9</value>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-
- <source>
- <name>corr</name>
- <type>complex</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_correlate_access_code_bb.block.yml b/gr-digital/grc/digital_correlate_access_code_bb.block.yml
new file mode 100644
index 0000000000..57394668b6
--- /dev/null
+++ b/gr-digital/grc/digital_correlate_access_code_bb.block.yml
@@ -0,0 +1,25 @@
+id: digital_correlate_access_code_bb
+label: Correlate Access Code
+
+parameters:
+- id: access_code
+ label: Access Code
+ dtype: string
+ default: '101010'
+- id: threshold
+ label: Threshold
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.correlate_access_code_bb(${access_code}, ${threshold})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_correlate_access_code_bb.xml b/gr-digital/grc/digital_correlate_access_code_bb.xml
deleted file mode 100644
index 3941834c40..0000000000
--- a/gr-digital/grc/digital_correlate_access_code_bb.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Correlate Access Code
-###################################################
- -->
-<block>
- <name>Correlate Access Code</name>
- <key>digital_correlate_access_code_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.correlate_access_code_bb($access_code, $threshold)</make>
- <param>
- <name>Access Code</name>
- <key>access_code</key>
- <value>101010</value>
- <type>string</type>
- </param>
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_correlate_access_code_tag_xx.block.yml b/gr-digital/grc/digital_correlate_access_code_tag_xx.block.yml
new file mode 100644
index 0000000000..6cf81129c2
--- /dev/null
+++ b/gr-digital/grc/digital_correlate_access_code_tag_xx.block.yml
@@ -0,0 +1,40 @@
+id: digital_correlate_access_code_tag_xx
+label: Correlate Access Code - Tag
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ fcn: [bb, ff]
+ hide: part
+- id: access_code
+ label: Access Code
+ dtype: string
+ default: '101010'
+- id: threshold
+ label: Threshold
+ dtype: int
+- id: tagname
+ label: Tag Name
+ dtype: string
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.correlate_access_code_tag_${type.fcn}(${access_code}, ${threshold},
+ ${tagname})
+ callbacks:
+ - set_access_code(${access_code})
+ - set_threshold(${threshold})
+ - set_tagname(${tagname})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_correlate_access_code_tag_xx.xml b/gr-digital/grc/digital_correlate_access_code_tag_xx.xml
deleted file mode 100644
index c7c137187f..0000000000
--- a/gr-digital/grc/digital_correlate_access_code_tag_xx.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Correlate Access Code
-###################################################
- -->
-<block>
- <name>Correlate Access Code - Tag</name>
- <key>digital_correlate_access_code_tag_xx</key>
- <import>from gnuradio import digital</import>
- <make>digital.correlate_access_code_tag_$(type.fcn)($access_code, $threshold, $tagname)</make>
- <callback>set_access_code($access_code)</callback>
- <callback>set_threshold($threshold)</callback>
- <callback>set_tagname($tagname)</callback>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Access Code</name>
- <key>access_code</key>
- <value>101010</value>
- <type>string</type>
- </param>
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <type>int</type>
- </param>
- <param>
- <name>Tag Name</name>
- <key>tagname</key>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_correlate_access_code_xx_ts.block.yml b/gr-digital/grc/digital_correlate_access_code_xx_ts.block.yml
new file mode 100644
index 0000000000..d51ba9833d
--- /dev/null
+++ b/gr-digital/grc/digital_correlate_access_code_xx_ts.block.yml
@@ -0,0 +1,37 @@
+id: digital_correlate_access_code_xx_ts
+label: Correlate Access Code - Tag Stream
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [float, byte]
+ option_attributes:
+ fcn: [ff, bb]
+ hide: part
+- id: access_code
+ label: Access Code
+ dtype: string
+ default: '101010'
+- id: threshold
+ label: Threshold
+ dtype: int
+- id: tagname
+ label: Tag Name
+ dtype: string
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import digital
+ make: |-
+ digital.correlate_access_code_${type.fcn}_ts(${access_code},
+ ${threshold}, ${tagname})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_correlate_access_code_xx_ts.xml b/gr-digital/grc/digital_correlate_access_code_xx_ts.xml
deleted file mode 100644
index 467c2c84d9..0000000000
--- a/gr-digital/grc/digital_correlate_access_code_xx_ts.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Correlate Access Code - to tag stream
-###################################################
- -->
-<block>
- <name>Correlate Access Code - Tag Stream</name>
- <key>digital_correlate_access_code_xx_ts</key>
- <import>from gnuradio import digital</import>
- <make>digital.correlate_access_code_$(type.fcn)_ts($access_code,
- $threshold, $tagname)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- </param>
-
- <param>
- <name>Access Code</name>
- <key>access_code</key>
- <value>101010</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Tag Name</name>
- <key>tagname</key>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_costas_loop_cc.block.yml b/gr-digital/grc/digital_costas_loop_cc.block.yml
new file mode 100644
index 0000000000..6134774f32
--- /dev/null
+++ b/gr-digital/grc/digital_costas_loop_cc.block.yml
@@ -0,0 +1,48 @@
+id: digital_costas_loop_cc
+label: Costas Loop
+
+parameters:
+- id: w
+ label: Loop Bandwidth
+ dtype: real
+- id: order
+ label: Order
+ dtype: int
+- id: use_snr
+ label: Use SNR
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+- domain: message
+ id: noise
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: complex
+- label: frequency
+ domain: stream
+ dtype: float
+ optional: true
+- label: phase
+ domain: stream
+ dtype: float
+ optional: true
+- label: error
+ domain: stream
+ dtype: float
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.costas_loop_cc(${w}, ${order}, ${use_snr})
+ callbacks:
+ - set_loop_bandwidth(${w})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_costas_loop_cc.xml b/gr-digital/grc/digital_costas_loop_cc.xml
deleted file mode 100644
index 23e3ca9037..0000000000
--- a/gr-digital/grc/digital_costas_loop_cc.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Costas Loop
-###################################################
- -->
-<block>
- <name>Costas Loop</name>
- <key>digital_costas_loop_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.costas_loop_cc($w, $order, $use_snr)</make>
- <callback>set_loop_bandwidth($w)</callback>
-
- <param>
- <name>Loop Bandwidth</name>
- <key>w</key>
- <type>real</type>
- </param>
-
- <param>
- <name>Order</name>
- <key>order</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Use SNR</name>
- <key>use_snr</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <sink>
- <name>noise</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-
- <!-- Optional Outputs -->
- <source>
- <name>frequency</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>phase</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>error</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_cpmmod_bc.block.yml b/gr-digital/grc/digital_cpmmod_bc.block.yml
new file mode 100644
index 0000000000..1a6435289b
--- /dev/null
+++ b/gr-digital/grc/digital_cpmmod_bc.block.yml
@@ -0,0 +1,40 @@
+id: digital_cpmmod_bc
+label: Continuous Phase Modulation
+
+parameters:
+- id: type
+ label: CPM Type
+ dtype: enum
+ options: [analog.cpm.LREC, analog.cpm.LRC, analog.cpm.LSRC, analog.cpm.TFM, analog.cpm.GAUSSIAN]
+ option_labels: [L-REC (Rectangular phase response), L-RC (Raised Cosine), L-SRC
+ (Spectral raised cosine), TFM (Tamed frequency modulation), Gaussian]
+- id: mod_index
+ label: Modulation Index
+ dtype: real
+ default: '0.5'
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '4'
+- id: L
+ label: Pulse Duration (Symbols)
+ dtype: int
+ default: '4'
+- id: beta
+ label: Phase Response Parameter (BT or Beta)
+ dtype: real
+ default: '0.3'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import gr, digital, analog
+ make: digital.cpmmod_bc(${type}, ${mod_index}, ${samples_per_symbol}, ${L}, ${beta})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_cpmmod_bc.xml b/gr-digital/grc/digital_cpmmod_bc.xml
deleted file mode 100644
index 94231775c9..0000000000
--- a/gr-digital/grc/digital_cpmmod_bc.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Continuous Phase Modulation
-###################################################
- -->
-<block>
- <name>Continuous Phase Modulation</name>
- <key>digital_cpmmod_bc</key>
- <import>from gnuradio import gr, digital, analog</import>
- <make>digital.cpmmod_bc($type, $mod_index, $samples_per_symbol, $L, $beta)</make>
- <param>
- <name>CPM Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>L-REC (Rectangular phase response)</name>
- <key>analog.cpm.LREC</key>
- </option>
- <option>
- <name>L-RC (Raised Cosine)</name>
- <key>analog.cpm.LRC</key>
- </option>
- <option>
- <name>L-SRC (Spectral raised cosine)</name>
- <key>analog.cpm.LSRC</key>
- </option>
- <option>
- <name>TFM (Tamed frequency modulation)</name>
- <key>analog.cpm.TFM</key>
- </option>
- <option>
- <name>Gaussian</name>
- <key>analog.cpm.GAUSSIAN</key>
- </option>
- </param>
- <param>
- <name>Modulation Index</name>
- <key>mod_index</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>4</value>
- <type>int</type>
- </param>
- <param>
- <name>Pulse Duration (Symbols)</name>
- <key>L</key>
- <value>4</value>
- <type>int</type>
- </param>
- <param>
- <name>Phase Response Parameter (BT or Beta)</name>
- <key>beta</key>
- <value>0.3</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_crc32_async_bb.block.yml b/gr-digital/grc/digital_crc32_async_bb.block.yml
new file mode 100644
index 0000000000..19b6732217
--- /dev/null
+++ b/gr-digital/grc/digital_crc32_async_bb.block.yml
@@ -0,0 +1,25 @@
+id: digital_crc32_async_bb
+label: Async CRC32
+
+parameters:
+- id: check
+ label: Mode
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Generate CRC, Check CRC]
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.crc32_async_bb(${check})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_crc32_async_bb.xml b/gr-digital/grc/digital_crc32_async_bb.xml
deleted file mode 100644
index 84c60e60ab..0000000000
--- a/gr-digital/grc/digital_crc32_async_bb.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<block>
- <name>Async CRC32</name>
- <key>digital_crc32_async_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.crc32_async_bb($check)</make>
-
- <param>
- <name>Mode</name>
- <key>check</key>
- <type>enum</type>
- <option>
- <name>Generate CRC</name>
- <key>False</key>
- </option>
- <option>
- <name>Check CRC</name>
- <key>True</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_crc32_bb.block.yml b/gr-digital/grc/digital_crc32_bb.block.yml
new file mode 100644
index 0000000000..9e88a63f74
--- /dev/null
+++ b/gr-digital/grc/digital_crc32_bb.block.yml
@@ -0,0 +1,33 @@
+id: digital_crc32_bb
+label: Stream CRC32
+
+parameters:
+- id: check
+ label: Mode
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Generate CRC, Check CRC]
+- id: lengthtagname
+ label: Length tag name
+ dtype: string
+ default: '"packet_len"'
+- id: packed
+ label: Packed
+ dtype: bool
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.crc32_bb(${check}, ${lengthtagname}, ${packed})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_crc32_bb.xml b/gr-digital/grc/digital_crc32_bb.xml
deleted file mode 100644
index 2fc6c248d3..0000000000
--- a/gr-digital/grc/digital_crc32_bb.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<block>
- <name>Stream CRC32</name>
- <key>digital_crc32_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.crc32_bb($check, $lengthtagname, $packed)</make>
- <param>
- <name>Mode</name>
- <key>check</key>
- <type>enum</type>
- <option>
- <name>Generate CRC</name>
- <key>False</key>
- </option>
- <option>
- <name>Check CRC</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>Length tag name</name>
- <key>lengthtagname</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <param>
- <name>Packed</name>
- <key>packed</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_descrambler_bb.block.yml b/gr-digital/grc/digital_descrambler_bb.block.yml
new file mode 100644
index 0000000000..fbb65c0ddc
--- /dev/null
+++ b/gr-digital/grc/digital_descrambler_bb.block.yml
@@ -0,0 +1,30 @@
+id: digital_descrambler_bb
+label: Descrambler
+
+parameters:
+- id: mask
+ label: Mask
+ dtype: hex
+ default: '0x8A'
+- id: seed
+ label: Seed
+ dtype: hex
+ default: '0x7F'
+- id: len
+ label: Length
+ dtype: int
+ default: '7'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.descrambler_bb(${mask}, ${seed}, ${len})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_descrambler_bb.xml b/gr-digital/grc/digital_descrambler_bb.xml
deleted file mode 100644
index 4f52c79645..0000000000
--- a/gr-digital/grc/digital_descrambler_bb.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Descrambler
-###################################################
- -->
-<block>
- <name>Descrambler</name>
- <key>digital_descrambler_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.descrambler_bb($mask, $seed, $len)</make>
- <param>
- <name>Mask</name>
- <key>mask</key>
- <value>0x8A</value>
- <type>hex</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0x7F</value>
- <type>hex</type>
- </param>
- <param>
- <name>Length</name>
- <key>len</key>
- <value>7</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_diff_decoder_bb.block.yml b/gr-digital/grc/digital_diff_decoder_bb.block.yml
new file mode 100644
index 0000000000..4b988007c2
--- /dev/null
+++ b/gr-digital/grc/digital_diff_decoder_bb.block.yml
@@ -0,0 +1,21 @@
+id: digital_diff_decoder_bb
+label: Differential Decoder
+
+parameters:
+- id: modulus
+ label: Modulus
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.diff_decoder_bb(${modulus})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_diff_decoder_bb.xml b/gr-digital/grc/digital_diff_decoder_bb.xml
deleted file mode 100644
index a7c94b834c..0000000000
--- a/gr-digital/grc/digital_diff_decoder_bb.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Differential Decoder
-###################################################
- -->
-<block>
- <name>Differential Decoder</name>
- <key>digital_diff_decoder_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.diff_decoder_bb($modulus)</make>
- <param>
- <name>Modulus</name>
- <key>modulus</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_diff_encoder_bb.block.yml b/gr-digital/grc/digital_diff_encoder_bb.block.yml
new file mode 100644
index 0000000000..45a5c71302
--- /dev/null
+++ b/gr-digital/grc/digital_diff_encoder_bb.block.yml
@@ -0,0 +1,21 @@
+id: digital_diff_encoder_bb
+label: Differential Encoder
+
+parameters:
+- id: modulus
+ label: Modulus
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.diff_encoder_bb(${modulus})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_diff_encoder_bb.xml b/gr-digital/grc/digital_diff_encoder_bb.xml
deleted file mode 100644
index 3885bed9aa..0000000000
--- a/gr-digital/grc/digital_diff_encoder_bb.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Differential Encoder
-###################################################
- -->
-<block>
- <name>Differential Encoder</name>
- <key>digital_diff_encoder_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.diff_encoder_bb($modulus)</make>
- <param>
- <name>Modulus</name>
- <key>modulus</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_diff_phasor_cc.block.yml b/gr-digital/grc/digital_diff_phasor_cc.block.yml
new file mode 100644
index 0000000000..e63c718277
--- /dev/null
+++ b/gr-digital/grc/digital_diff_phasor_cc.block.yml
@@ -0,0 +1,16 @@
+id: digital_diff_phasor_cc
+label: Differential Phasor
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.diff_phasor_cc()
+
+file_format: 1
diff --git a/gr-digital/grc/digital_diff_phasor_cc.xml b/gr-digital/grc/digital_diff_phasor_cc.xml
deleted file mode 100644
index 506bf400ba..0000000000
--- a/gr-digital/grc/digital_diff_phasor_cc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Differential Phasor
-###################################################
- -->
-<block>
- <name>Differential Phasor</name>
- <key>digital_diff_phasor_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.diff_phasor_cc()</make>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_dxpsk_demod.block.yml b/gr-digital/grc/digital_dxpsk_demod.block.yml
new file mode 100644
index 0000000000..99e7f40e6c
--- /dev/null
+++ b/gr-digital/grc/digital_dxpsk_demod.block.yml
@@ -0,0 +1,75 @@
+id: digital_dxpsk_demod
+label: DPSK Demod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [dbpsk, dqpsk]
+ option_labels: [DBPSK, DQPSK]
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: excess_bw
+ label: Excess BW
+ dtype: real
+ default: '0.35'
+- id: freq_bw
+ label: FLL Bandwidth
+ dtype: real
+ default: 6.28/100.0
+- id: phase_bw
+ label: Phase Loop Bandwidth
+ dtype: real
+ default: 6.28/100.0
+- id: timing_bw
+ label: Timing Bandwidth
+ dtype: real
+ default: 6.28/100.0
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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: sync_out
+ label: Sync Out
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['On', 'Off']
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.${type}_demod(\n\tsamples_per_symbol=${samples_per_symbol},\n\t\
+ excess_bw=${excess_bw},\n\tfreq_bw=${freq_bw},\n\tphase_bw=${phase_bw},\n\t\
+ timing_bw=${timing_bw},\n\tmod_code=${mod_code},\n\tverbose=${verbose},\n\t\
+ log=${log}\n)"
+ callbacks:
+ - clock_recov.set_loop_bandwidth(${phase_bw})
+ - time_recov.set_loop_bandwidth(${timing_bw})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_dxpsk_demod.xml b/gr-digital/grc/digital_dxpsk_demod.xml
deleted file mode 100644
index 12089ad771..0000000000
--- a/gr-digital/grc/digital_dxpsk_demod.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##DPSK2 Mod - 2, 4
-###################################################
- -->
-<block>
- <name>DPSK Demod</name>
- <key>digital_dxpsk_demod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.$(type)_demod(
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- freq_bw=$freq_bw,
- phase_bw=$phase_bw,
- timing_bw=$timing_bw,
- mod_code=$mod_code,
- verbose=$verbose,
- log=$log
-)</make>
- <callback>clock_recov.set_loop_bandwidth($phase_bw)</callback>
- <callback>time_recov.set_loop_bandwidth($timing_bw)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>DBPSK</name>
- <key>dbpsk</key>
- </option>
- <option>
- <name>DQPSK</name>
- <key>dqpsk</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>FLL Bandwidth</name>
- <key>freq_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Phase Loop Bandwidth</name>
- <key>phase_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Timing Bandwidth</name>
- <key>timing_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Sync Out</name>
- <key>sync_out</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_dxpsk_mod.block.yml b/gr-digital/grc/digital_dxpsk_mod.block.yml
new file mode 100644
index 0000000000..577baa4426
--- /dev/null
+++ b/gr-digital/grc/digital_dxpsk_mod.block.yml
@@ -0,0 +1,52 @@
+id: digital_dxpsk_mod
+label: DPSK Mod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [dbpsk, dqpsk]
+ option_labels: [DBPSK, DQPSK]
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: excess_bw
+ label: Excess BW
+ dtype: real
+ default: '0.35'
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.${type}_mod(\n\tsamples_per_symbol=${samples_per_symbol},\n\texcess_bw=${excess_bw},\n\
+ \tmod_code=${mod_code},\n\tverbose=${verbose},\n\tlog=${log})\n\t"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_dxpsk_mod.xml b/gr-digital/grc/digital_dxpsk_mod.xml
deleted file mode 100644
index 4198b8805c..0000000000
--- a/gr-digital/grc/digital_dxpsk_mod.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-## DPSK Mod - 2, 4
-###################################################
- -->
-<block>
- <name>DPSK Mod</name>
- <key>digital_dxpsk_mod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.$(type)_mod(
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- mod_code=$mod_code,
- verbose=$verbose,
- log=$log)
- </make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>DBPSK</name>
- <key>dbpsk</key>
- </option>
- <option>
- <name>DQPSK</name>
- <key>dqpsk</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_fll_band_edge_cc.block.yml b/gr-digital/grc/digital_fll_band_edge_cc.block.yml
new file mode 100644
index 0000000000..63b64912bb
--- /dev/null
+++ b/gr-digital/grc/digital_fll_band_edge_cc.block.yml
@@ -0,0 +1,53 @@
+id: digital_fll_band_edge_cc
+label: FLL Band-Edge
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [cc]
+ option_labels: [Complex->Complex]
+ option_attributes:
+ input: [complex]
+ output: [complex]
+ hide: part
+- id: samps_per_sym
+ label: Samples Per Symbol
+ dtype: real
+- id: rolloff
+ label: Filter Rolloff Factor
+ dtype: real
+- id: filter_size
+ label: Prototype Filter Size
+ dtype: int
+- id: w
+ label: Loop Bandwidth
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+- label: freq
+ domain: stream
+ dtype: float
+ optional: true
+- label: phase
+ domain: stream
+ dtype: float
+ optional: true
+- label: error
+ domain: stream
+ dtype: float
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.fll_band_edge_cc(${samps_per_sym}, ${rolloff}, ${filter_size}, ${w})
+ callbacks:
+ - set_loop_bandwidth(${w})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_fll_band_edge_cc.xml b/gr-digital/grc/digital_fll_band_edge_cc.xml
deleted file mode 100644
index e4da773db2..0000000000
--- a/gr-digital/grc/digital_fll_band_edge_cc.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FLL using Band-Edge Filters
-###################################################
- -->
-<block>
- <name>FLL Band-Edge</name>
- <key>digital_fll_band_edge_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.fll_band_edge_cc($samps_per_sym, $rolloff, $filter_size, $w)</make>
- <callback>set_loop_bandwidth($w)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex</name>
- <key>cc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- </param>
-
- <param>
- <name>Samples Per Symbol</name>
- <key>samps_per_sym</key>
- <type>real</type>
- </param>
- <param>
- <name>Filter Rolloff Factor</name>
- <key>rolloff</key>
- <type>real</type>
- </param>
- <param>
- <name>Prototype Filter Size</name>
- <key>filter_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Loop Bandwidth</name>
- <key>w</key>
- <type>real</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <source>
- <name>freq</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>phase</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>error</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_framer_sink_1.block.yml b/gr-digital/grc/digital_framer_sink_1.block.yml
new file mode 100644
index 0000000000..a05a1bf0e7
--- /dev/null
+++ b/gr-digital/grc/digital_framer_sink_1.block.yml
@@ -0,0 +1,17 @@
+id: digital_framer_sink_1
+label: Framer Sink 1
+
+parameters:
+- id: target_queue
+ label: Target Message Queue
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.framer_sink_1(${target_queue})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_framer_sink_1.xml b/gr-digital/grc/digital_framer_sink_1.xml
deleted file mode 100644
index 9124e6d0dc..0000000000
--- a/gr-digital/grc/digital_framer_sink_1.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Framer Sink 1
-###################################################
- -->
-<block>
- <name>Framer Sink 1</name>
- <key>digital_framer_sink_1</key>
- <import>from gnuradio import digital</import>
- <make>digital.framer_sink_1($target_queue)</make>
- <param>
- <name>Target Message Queue</name>
- <key>target_queue</key>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-</block>
diff --git a/gr-digital/grc/digital_gfsk_demod.block.yml b/gr-digital/grc/digital_gfsk_demod.block.yml
new file mode 100644
index 0000000000..9f6b33c6af
--- /dev/null
+++ b/gr-digital/grc/digital_gfsk_demod.block.yml
@@ -0,0 +1,58 @@
+id: digital_gfsk_demod
+label: GFSK Demod
+
+parameters:
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+ default: '1.0'
+- id: gain_mu
+ label: Gain Mu
+ dtype: real
+ default: '0.175'
+- id: mu
+ label: Mu
+ dtype: real
+ default: '0.5'
+- id: omega_relative_limit
+ label: Omega Relative Limit
+ dtype: real
+ default: '0.005'
+- id: freq_error
+ label: Freq Error
+ dtype: real
+ default: '0.0'
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.gfsk_demod(\n\tsamples_per_symbol=${samples_per_symbol},\n\tsensitivity=${sensitivity},\n\
+ \tgain_mu=${gain_mu},\n\tmu=${mu},\n\tomega_relative_limit=${omega_relative_limit},\n\
+ \tfreq_error=${freq_error},\n\tverbose=${verbose},\n\tlog=${log},\n)"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_gfsk_demod.xml b/gr-digital/grc/digital_gfsk_demod.xml
deleted file mode 100644
index cbea39e63e..0000000000
--- a/gr-digital/grc/digital_gfsk_demod.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##GFSK Demod
-###################################################
- -->
-<block>
- <name>GFSK Demod</name>
- <key>digital_gfsk_demod</key>
- <import>from gnuradio import digital</import>
- <make>digital.gfsk_demod(
- samples_per_symbol=$samples_per_symbol,
- sensitivity=$sensitivity,
- gain_mu=$gain_mu,
- mu=$mu,
- omega_relative_limit=$omega_relative_limit,
- freq_error=$freq_error,
- verbose=$verbose,
- log=$log,
-)</make>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gain Mu</name>
- <key>gain_mu</key>
- <value>0.175</value>
- <type>real</type>
- </param>
- <param>
- <name>Mu</name>
- <key>mu</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Omega Relative Limit</name>
- <key>omega_relative_limit</key>
- <value>0.005</value>
- <type>real</type>
- </param>
- <param>
- <name>Freq Error</name>
- <key>freq_error</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_gfsk_mod.block.yml b/gr-digital/grc/digital_gfsk_mod.block.yml
new file mode 100644
index 0000000000..3dda769a4c
--- /dev/null
+++ b/gr-digital/grc/digital_gfsk_mod.block.yml
@@ -0,0 +1,45 @@
+id: digital_gfsk_mod
+label: GFSK Mod
+
+parameters:
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: sensitivity
+ label: Sensitivity
+ dtype: real
+ default: '1.0'
+- id: bt
+ label: BT
+ 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') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.gfsk_mod(\n\tsamples_per_symbol=${samples_per_symbol},\n\tsensitivity=${sensitivity},\n\
+ \tbt=${bt},\n\tverbose=${verbose},\n\tlog=${log},\n)"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_gfsk_mod.xml b/gr-digital/grc/digital_gfsk_mod.xml
deleted file mode 100644
index 08e2c84790..0000000000
--- a/gr-digital/grc/digital_gfsk_mod.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##GFSK Mod
-###################################################
- -->
-<block>
- <name>GFSK Mod</name>
- <key>digital_gfsk_mod</key>
- <import>from gnuradio import digital</import>
- <make>digital.gfsk_mod(
- samples_per_symbol=$samples_per_symbol,
- sensitivity=$sensitivity,
- bt=$bt,
- verbose=$verbose,
- log=$log,
-)</make>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Sensitivity</name>
- <key>sensitivity</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>BT</name>
- <key>bt</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_glfsr_source_x.block.yml b/gr-digital/grc/digital_glfsr_source_x.block.yml
new file mode 100644
index 0000000000..716b77b02c
--- /dev/null
+++ b/gr-digital/grc/digital_glfsr_source_x.block.yml
@@ -0,0 +1,37 @@
+id: digital_glfsr_source_x
+label: GLFSR Source
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [float, byte]
+ option_attributes:
+ fcn: [f, b]
+ hide: part
+- id: degree
+ label: Degree
+ dtype: int
+- id: repeat
+ label: Repeat
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: mask
+ label: Mask
+ dtype: int
+ default: '0'
+- id: seed
+ label: Seed
+ dtype: int
+ default: '1'
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.glfsr_source_${type.fcn}(${degree}, ${repeat}, ${mask}, ${seed})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_glfsr_source_x.xml b/gr-digital/grc/digital_glfsr_source_x.xml
deleted file mode 100644
index 654dfa71c0..0000000000
--- a/gr-digital/grc/digital_glfsr_source_x.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##GLFSR Source
-###################################################
- -->
-<block>
- <name>GLFSR Source</name>
- <key>digital_glfsr_source_x</key>
- <import>from gnuradio import digital</import>
- <make>digital.glfsr_source_$(type.fcn)($degree, $repeat, $mask, $seed)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>Degree</name>
- <key>degree</key>
- <type>int</type>
- </param>
- <param>
- <name>Repeat</name>
- <key>repeat</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Mask</name>
- <key>mask</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>1</value>
- <type>int</type>
- </param>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_gmsk_demod.block.yml b/gr-digital/grc/digital_gmsk_demod.block.yml
new file mode 100644
index 0000000000..bbd3b4148a
--- /dev/null
+++ b/gr-digital/grc/digital_gmsk_demod.block.yml
@@ -0,0 +1,54 @@
+id: digital_gmsk_demod
+label: GMSK Demod
+
+parameters:
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: gain_mu
+ label: Gain Mu
+ dtype: real
+ default: '0.175'
+- id: mu
+ label: Mu
+ dtype: real
+ default: '0.5'
+- id: omega_relative_limit
+ label: Omega Relative Limit
+ dtype: real
+ default: '0.005'
+- id: freq_error
+ label: Freq Error
+ dtype: real
+ default: '0.0'
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.gmsk_demod(\n\tsamples_per_symbol=${samples_per_symbol},\n\tgain_mu=${gain_mu},\n\
+ \tmu=${mu},\n\tomega_relative_limit=${omega_relative_limit},\n\tfreq_error=${freq_error},\n\
+ \tverbose=${verbose},\n\tlog=${log},\n)"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_gmsk_demod.xml b/gr-digital/grc/digital_gmsk_demod.xml
deleted file mode 100644
index 4d57f1a17a..0000000000
--- a/gr-digital/grc/digital_gmsk_demod.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##GMSK Demod
-###################################################
- -->
-<block>
- <name>GMSK Demod</name>
- <key>digital_gmsk_demod</key>
- <import>from gnuradio import digital</import>
- <make>digital.gmsk_demod(
- samples_per_symbol=$samples_per_symbol,
- gain_mu=$gain_mu,
- mu=$mu,
- omega_relative_limit=$omega_relative_limit,
- freq_error=$freq_error,
- verbose=$verbose,
- log=$log,
-)</make>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Gain Mu</name>
- <key>gain_mu</key>
- <value>0.175</value>
- <type>real</type>
- </param>
- <param>
- <name>Mu</name>
- <key>mu</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Omega Relative Limit</name>
- <key>omega_relative_limit</key>
- <value>0.005</value>
- <type>real</type>
- </param>
- <param>
- <name>Freq Error</name>
- <key>freq_error</key>
- <value>0.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_gmsk_mod.block.yml b/gr-digital/grc/digital_gmsk_mod.block.yml
new file mode 100644
index 0000000000..0b0941bae0
--- /dev/null
+++ b/gr-digital/grc/digital_gmsk_mod.block.yml
@@ -0,0 +1,41 @@
+id: digital_gmsk_mod
+label: GMSK Mod
+
+parameters:
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: bt
+ label: BT
+ 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') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.gmsk_mod(\n\tsamples_per_symbol=${samples_per_symbol},\n\tbt=${bt},\n\
+ \tverbose=${verbose},\n\tlog=${log},\n)"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_gmsk_mod.xml b/gr-digital/grc/digital_gmsk_mod.xml
deleted file mode 100644
index 77f52ca2f2..0000000000
--- a/gr-digital/grc/digital_gmsk_mod.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##GMSK Mod
-###################################################
- -->
-<block>
- <name>GMSK Mod</name>
- <key>digital_gmsk_mod</key>
- <import>from gnuradio import digital</import>
- <make>digital.gmsk_mod(
- samples_per_symbol=$samples_per_symbol,
- bt=$bt,
- verbose=$verbose,
- log=$log,
-)</make>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>BT</name>
- <key>bt</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_gmskmod_bc.block.yml b/gr-digital/grc/digital_gmskmod_bc.block.yml
new file mode 100644
index 0000000000..4b9a511078
--- /dev/null
+++ b/gr-digital/grc/digital_gmskmod_bc.block.yml
@@ -0,0 +1,30 @@
+id: digital_gmskmod_bc
+label: GMSK Modulator
+
+parameters:
+- id: samples_per_symbol
+ label: Samples/Symbol
+ dtype: int
+ default: '2'
+- id: bt
+ label: 3 dB Time-Bandwith Product
+ dtype: real
+ default: '0.3'
+- id: L
+ label: Pulse Duration (Symbols)
+ dtype: int
+ default: '4'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.gmskmod_bc(${samples_per_symbol}, ${L}, ${bt})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_gmskmod_bc.xml b/gr-digital/grc/digital_gmskmod_bc.xml
deleted file mode 100644
index 6cda687f76..0000000000
--- a/gr-digital/grc/digital_gmskmod_bc.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## GMSK
-###################################################
- -->
-<block>
- <name>GMSK Modulator</name>
- <key>digital_gmskmod_bc</key>
- <import>from gnuradio import digital</import>
- <make>digital.gmskmod_bc($samples_per_symbol, $L, $bt)</make>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>3 dB Time-Bandwith Product</name>
- <key>bt</key>
- <value>0.3</value>
- <type>real</type>
- </param>
- <param>
- <name>Pulse Duration (Symbols)</name>
- <key>L</key>
- <value>4</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_hdlc_deframer_bp.block.yml b/gr-digital/grc/digital_hdlc_deframer_bp.block.yml
new file mode 100644
index 0000000000..38b31ca53f
--- /dev/null
+++ b/gr-digital/grc/digital_hdlc_deframer_bp.block.yml
@@ -0,0 +1,26 @@
+id: digital_hdlc_deframer_bp
+label: HDLC Deframer
+
+parameters:
+- id: min
+ label: Min length
+ dtype: int
+ default: '32'
+- id: max
+ label: Max length
+ dtype: int
+ default: '500'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: message
+ id: out
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.hdlc_deframer_bp(${min}, ${max})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_hdlc_deframer_bp.xml b/gr-digital/grc/digital_hdlc_deframer_bp.xml
deleted file mode 100644
index 3e78b891df..0000000000
--- a/gr-digital/grc/digital_hdlc_deframer_bp.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>HDLC Deframer</name>
- <key>digital_hdlc_deframer_bp</key>
- <import>from gnuradio import digital</import>
- <make>digital.hdlc_deframer_bp($min, $max)</make>
- <param>
- <name>Min length</name>
- <key>min</key>
- <value>32</value>
- <type>int</type>
- </param>
- <param>
- <name>Max length</name>
- <key>max</key>
- <value>500</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>message</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_hdlc_framer_pb.block.yml b/gr-digital/grc/digital_hdlc_framer_pb.block.yml
new file mode 100644
index 0000000000..f775a489ef
--- /dev/null
+++ b/gr-digital/grc/digital_hdlc_framer_pb.block.yml
@@ -0,0 +1,21 @@
+id: digital_hdlc_framer_pb
+label: HDLC Framer
+
+parameters:
+- id: frame_tag_name
+ label: Frame tag name
+ dtype: string
+
+inputs:
+- domain: message
+ id: in
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.hdlc_framer_pb(${frame_tag_name})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_hdlc_framer_pb.xml b/gr-digital/grc/digital_hdlc_framer_pb.xml
deleted file mode 100644
index 8dc122d581..0000000000
--- a/gr-digital/grc/digital_hdlc_framer_pb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>HDLC Framer</name>
- <key>digital_hdlc_framer_pb</key>
- <import>from gnuradio import digital</import>
- <make>digital.hdlc_framer_pb($frame_tag_name)</make>
- <param>
- <name>Frame tag name</name>
- <key>frame_tag_name</key>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>message</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_header_payload_demux.block.yml b/gr-digital/grc/digital_header_payload_demux.block.yml
new file mode 100644
index 0000000000..4f69a08f29
--- /dev/null
+++ b/gr-digital/grc/digital_header_payload_demux.block.yml
@@ -0,0 +1,85 @@
+id: digital_header_payload_demux
+label: Header/Payload Demux
+
+parameters:
+- id: header_len
+ label: Header Length (Symbols)
+ dtype: int
+- id: header_padding
+ label: Header Padding (Uncertainty / Symbols)
+ dtype: int
+ default: '0'
+- id: items_per_symbol
+ label: Items per symbol
+ dtype: int
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: guard_interval
+ label: Guard Interval (items)
+ dtype: int
+ default: '0'
+ hide: ${ ('none' if guard_interval else 'part') }
+- id: length_tag_key
+ label: Length tag key
+ dtype: string
+ default: '"frame_len"'
+- id: trigger_tag_key
+ label: Trigger tag key
+ dtype: string
+ default: '""'
+ hide: ${ ('none' if trigger_tag_key else 'part') }
+- id: output_symbols
+ label: Output Format
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: [Items, Symbols]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: timing_tag_key
+ label: Timing tag key
+ dtype: string
+ default: '"rx_time"'
+- id: samp_rate
+ label: Sampling Rate
+ dtype: int
+ default: samp_rate
+- id: special_tags
+ label: Special Tag Keys
+ dtype: raw
+ default: (,)
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+- label: trigger
+ domain: stream
+ dtype: byte
+ optional: true
+- domain: message
+ id: header_data
+
+outputs:
+- label: out_hdr
+ domain: stream
+ dtype: ${ type }
+ vlen: '${ {True: items_per_symbol, False: 1}[output_symbols] }'
+- label: out_payload
+ domain: stream
+ dtype: ${ type }
+ vlen: '${ {True: items_per_symbol, False: 1}[output_symbols] }'
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.header_payload_demux(\n\t ${header_len},\n\t ${items_per_symbol},\n\
+ \t ${guard_interval},\n\t ${length_tag_key},\n\t ${trigger_tag_key},\n\t\
+ \ ${output_symbols},\n\t ${type.itemsize},\n\t ${timing_tag_key},\n \
+ \ ${samp_rate},\n ${special_tags},\n ${header_padding},\n\
+ \ )"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_header_payload_demux.xml b/gr-digital/grc/digital_header_payload_demux.xml
deleted file mode 100644
index a2fe80e621..0000000000
--- a/gr-digital/grc/digital_header_payload_demux.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<block>
- <name>Header/Payload Demux</name>
- <key>digital_header_payload_demux</key>
- <import>from gnuradio import digital</import>
- <make>digital.header_payload_demux(
- $header_len,
- $items_per_symbol,
- $guard_interval,
- $length_tag_key,
- $trigger_tag_key,
- $output_symbols,
- $(type.itemsize),
- $timing_tag_key,
- $samp_rate,
- $special_tags,
- $header_padding,
- )</make>
- <param>
- <name>Header Length (Symbols)</name>
- <key>header_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Header Padding (Uncertainty / Symbols)</name>
- <key>header_padding</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Items per symbol</name>
- <key>items_per_symbol</key>
- <type>int</type>
- </param>
- <param>
- <name>Guard Interval (items)</name>
- <key>guard_interval</key>
- <value>0</value>
- <type>int</type>
- <hide>#if $guard_interval then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Length tag key</name>
- <key>length_tag_key</key>
- <value>"frame_len"</value>
- <type>string</type>
- </param>
- <param>
- <name>Trigger tag key</name>
- <key>trigger_tag_key</key>
- <value>""</value>
- <type>string</type>
- <hide>#if $trigger_tag_key then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Output Format</name>
- <key>output_symbols</key>
- <type>enum</type>
- <option>
- <name>Items</name>
- <key>False</key>
- </option>
- <option>
- <name>Symbols</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Timing tag key</name>
- <key>timing_tag_key</key>
- <value>"rx_time"</value>
- <type>string</type>
- </param>
- <param>
- <name>Sampling Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>int</type>
- </param>
- <param>
- <name>Special Tag Keys</name>
- <key>special_tags</key>
- <value>(,)</value>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <sink>
- <name>trigger</name>
- <type>byte</type>
- <optional>1</optional>
- </sink>
- <sink>
- <name>header_data</name>
- <type>message</type>
- </sink>
- <source>
- <name>out_hdr</name>
- <type>$type</type>
- <vlen>{True: $items_per_symbol, False: 1}[$output_symbols]</vlen>
- </source>
- <source>
- <name>out_payload</name>
- <type>$type</type>
- <vlen>{True: $items_per_symbol, False: 1}[$output_symbols]</vlen>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_kurtotic_equalizer_cc.block.yml b/gr-digital/grc/digital_kurtotic_equalizer_cc.block.yml
new file mode 100644
index 0000000000..d81aee7d4d
--- /dev/null
+++ b/gr-digital/grc/digital_kurtotic_equalizer_cc.block.yml
@@ -0,0 +1,26 @@
+id: digital_kurtotic_equalizer_cc
+label: Kurtotic Equalizer
+
+parameters:
+- id: num_taps
+ label: Num. Taps
+ dtype: int
+- id: mu
+ label: Mu
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.kurtotic_equalizer_cc(${num_taps}, ${mu})
+ callbacks:
+ - set_gain(${mu})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_kurtotic_equalizer_cc.xml b/gr-digital/grc/digital_kurtotic_equalizer_cc.xml
deleted file mode 100644
index 8c4a2012d2..0000000000
--- a/gr-digital/grc/digital_kurtotic_equalizer_cc.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Kurtotic Equalizer
-###################################################
- -->
-<block>
- <name>Kurtotic Equalizer</name>
- <key>digital_kurtotic_equalizer_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.kurtotic_equalizer_cc($num_taps, $mu)</make>
- <callback>set_gain($mu)</callback>
- <param>
- <name>Num. Taps</name>
- <key>num_taps</key>
- <type>int</type>
- </param>
- <param>
- <name>Mu</name>
- <key>mu</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_lms_dd_equalizer_cc.block.yml b/gr-digital/grc/digital_lms_dd_equalizer_cc.block.yml
new file mode 100644
index 0000000000..1c44ea2850
--- /dev/null
+++ b/gr-digital/grc/digital_lms_dd_equalizer_cc.block.yml
@@ -0,0 +1,32 @@
+id: digital_lms_dd_equalizer_cc
+label: LMS DD Equalizer
+
+parameters:
+- id: mu
+ label: Gain
+ dtype: real
+- id: num_taps
+ label: Num. Taps
+ dtype: int
+- id: sps
+ label: Samples per Symbol
+ dtype: int
+- id: cnst
+ label: Constellation Object
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.lms_dd_equalizer_cc(${num_taps}, ${mu}, ${sps}, ${cnst})
+ callbacks:
+ - set_gain(${mu})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_lms_dd_equalizer_cc.xml b/gr-digital/grc/digital_lms_dd_equalizer_cc.xml
deleted file mode 100644
index 0fd7d523b8..0000000000
--- a/gr-digital/grc/digital_lms_dd_equalizer_cc.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## LMS DD Equalizer
-###################################################
- -->
-<block>
- <name>LMS DD Equalizer</name>
- <key>digital_lms_dd_equalizer_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.lms_dd_equalizer_cc($num_taps, $mu, $sps, $cnst)</make>
- <callback>set_gain($mu)</callback>
- <param>
- <name>Gain</name>
- <key>mu</key>
- <type>real</type>
- </param>
- <param>
- <name>Num. Taps</name>
- <key>num_taps</key>
- <type>int</type>
- </param>
- <param>
- <name>Samples per Symbol</name>
- <key>sps</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation Object</name>
- <key>cnst</key>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_map_bb.block.yml b/gr-digital/grc/digital_map_bb.block.yml
new file mode 100644
index 0000000000..8f1a33fb0f
--- /dev/null
+++ b/gr-digital/grc/digital_map_bb.block.yml
@@ -0,0 +1,21 @@
+id: digital_map_bb
+label: Map
+
+parameters:
+- id: map
+ label: Map
+ dtype: int_vector
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.map_bb(${map})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_map_bb.xml b/gr-digital/grc/digital_map_bb.xml
deleted file mode 100644
index 1435c5ac78..0000000000
--- a/gr-digital/grc/digital_map_bb.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Map
-###################################################
- -->
-<block>
- <name>Map</name>
- <key>digital_map_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.map_bb($map)</make>
- <param>
- <name>Map</name>
- <key>map</key>
- <type>int_vector</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_modulate_vector.block.yml b/gr-digital/grc/digital_modulate_vector.block.yml
new file mode 100644
index 0000000000..a06cc211c8
--- /dev/null
+++ b/gr-digital/grc/digital_modulate_vector.block.yml
@@ -0,0 +1,22 @@
+id: variable_modulate_vector
+label: Modulate Vector
+category: Modulators
+
+parameters:
+- id: mod
+ label: Modulator
+ dtype: raw
+- id: data
+ label: Data vector
+ dtype: int_vector
+- id: taps
+ label: Filter taps
+ dtype: float_vector
+value: ${ digital.modulate_vector_bc(mod .to_basic_block(), data, taps) }
+
+templates:
+ imports: from gnuradio import digital
+ var_make: self.${id} = ${id} = digital.modulate_vector_bc(${mod} .to_basic_block(),
+ ${data}, ${taps})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_modulate_vector.xml b/gr-digital/grc/digital_modulate_vector.xml
deleted file mode 100644
index 91614dd3fd..0000000000
--- a/gr-digital/grc/digital_modulate_vector.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# modulate_vector_bc
-###################################################
- -->
-<block>
- <name>Modulate Vector</name>
- <key>variable_modulate_vector</key>
- <category>Modulators</category>
- <import>from gnuradio import digital</import>
- <var_make>self.$(id) = $(id) = digital.modulate_vector_bc($mod .to_basic_block(), $data, $taps)</var_make>
- <var_value>digital.modulate_vector_bc($mod .to_basic_block(), $data, $taps)</var_value>
- <make></make>
-
- <param>
- <name>Modulator</name>
- <key>mod</key>
- <value></value>
- <type>raw</type>
- </param>
- <param>
- <name>Data vector</name>
- <key>data</key>
- <value></value>
- <type>int_vector</type>
- </param>
- <param>
- <name>Filter taps</name>
- <key>taps</key>
- <value></value>
- <type>float_vector</type>
- </param>
-</block>
diff --git a/gr-digital/grc/digital_mpsk_snr_est_cc.block.yml b/gr-digital/grc/digital_mpsk_snr_est_cc.block.yml
new file mode 100644
index 0000000000..7c39a24927
--- /dev/null
+++ b/gr-digital/grc/digital_mpsk_snr_est_cc.block.yml
@@ -0,0 +1,35 @@
+id: digital_mpsk_snr_est_cc
+label: MPSK SNR Estimator
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: ['0', '1', '2', '3']
+ option_labels: [Simple, Skewness, 2nd and 4th Moment, SVR]
+- id: tag_nsamples
+ label: Samples between tags
+ dtype: int
+ default: '10000'
+- id: alpha
+ label: Filter Alpha
+ dtype: real
+ default: '0.001'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.mpsk_snr_est_cc(${type}, ${tag_nsamples}, ${alpha})
+ callbacks:
+ - set_type(${type})
+ - set_tag_nsamples(${tag_nsamples})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_mpsk_snr_est_cc.xml b/gr-digital/grc/digital_mpsk_snr_est_cc.xml
deleted file mode 100644
index 6039e5b13e..0000000000
--- a/gr-digital/grc/digital_mpsk_snr_est_cc.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##MPSK SNR Estimator
-###################################################
- -->
-<block>
- <name>MPSK SNR Estimator</name>
- <key>digital_mpsk_snr_est_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.mpsk_snr_est_cc($type, $tag_nsamples, $alpha)</make>
- <callback>set_type($type)</callback>
- <callback>set_tag_nsamples($tag_nsamples)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Simple</name>
- <key>0</key>
- </option>
- <option>
- <name>Skewness</name>
- <key>1</key>
- </option>
- <option>
- <name>2nd and 4th Moment</name>
- <key>2</key>
- </option>
- <option>
- <name>SVR</name>
- <key>3</key>
- </option>
- </param>
- <param>
- <name>Samples between tags</name>
- <key>tag_nsamples</key>
- <value>10000</value>
- <type>int</type>
- </param>
- <param>
- <name>Filter Alpha</name>
- <key>alpha</key>
- <value>0.001</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_msk_timing_recovery_cc.block.yml b/gr-digital/grc/digital_msk_timing_recovery_cc.block.yml
new file mode 100644
index 0000000000..3f5ae678c7
--- /dev/null
+++ b/gr-digital/grc/digital_msk_timing_recovery_cc.block.yml
@@ -0,0 +1,42 @@
+id: digital_msk_timing_recovery_cc
+label: MSK Timing Recovery
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: float
+- id: sps
+ label: Samples per symbol
+ dtype: float
+- id: limit
+ label: Error limit
+ dtype: float
+- id: osps
+ label: Output samples per symbol
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+- label: err
+ domain: stream
+ dtype: float
+ optional: true
+- label: omega
+ domain: stream
+ dtype: float
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.msk_timing_recovery_cc(${sps}, ${gain}, ${limit}, ${osps})
+ callbacks:
+ - set_gain(${gain})
+ - set_sps(${sps})
+ - set_limit(${limit})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_msk_timing_recovery_cc.xml b/gr-digital/grc/digital_msk_timing_recovery_cc.xml
deleted file mode 100644
index cda780d685..0000000000
--- a/gr-digital/grc/digital_msk_timing_recovery_cc.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>MSK Timing Recovery</name>
- <key>digital_msk_timing_recovery_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.msk_timing_recovery_cc($sps, $gain, $limit, $osps)</make>
- <callback>set_gain($gain)</callback>
- <callback>set_sps($sps)</callback>
- <callback>set_limit($limit)</callback>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <type>float</type>
- </param>
- <param>
- <name>Samples per symbol</name>
- <key>sps</key>
- <type>float</type>
- </param>
- <param>
- <name>Error limit</name>
- <key>limit</key>
- <type>float</type>
- </param>
- <param>
- <name>Output samples per symbol</name>
- <key>osps</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <source>
- <name>err</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>omega</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-
-</block>
diff --git a/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.block.yml b/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.block.yml
new file mode 100644
index 0000000000..ab260ab9d9
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.block.yml
@@ -0,0 +1,44 @@
+id: digital_ofdm_carrier_allocator_cvc
+label: OFDM Carrier Allocator
+
+parameters:
+- id: fft_len
+ label: FFT length
+ dtype: int
+ default: fft_len
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: occupied_carriers
+ label: Occupied Carriers
+ dtype: raw
+- id: pilot_carriers
+ label: Pilot Carriers
+ dtype: raw
+ default: ()
+- id: pilot_symbols
+ label: Pilot Symbols
+ dtype: raw
+ default: ()
+- id: sync_words
+ label: Sync Words
+ dtype: raw
+ default: ()
+- id: len_tag_key
+ label: Length tag key
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fft_len }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_carrier_allocator_cvc(${fft_len}, ${occupied_carriers}, ${pilot_carriers},
+ ${pilot_symbols}, ${sync_words}, ${len_tag_key})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.xml b/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.xml
deleted file mode 100644
index b9bdde543d..0000000000
--- a/gr-digital/grc/digital_ofdm_carrier_allocator_cvc.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>OFDM Carrier Allocator</name>
- <key>digital_ofdm_carrier_allocator_cvc</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_carrier_allocator_cvc($fft_len, $occupied_carriers, $pilot_carriers, $pilot_symbols, $sync_words, $len_tag_key)</make>
- <param>
- <name>FFT length</name>
- <key>fft_len</key>
- <value>fft_len</value>
- <type>int</type>
- </param>
- <param>
- <name>Occupied Carriers</name>
- <key>occupied_carriers</key>
- <type>raw</type>
- </param>
- <param>
- <name>Pilot Carriers</name>
- <key>pilot_carriers</key>
- <value>()</value>
- <type>raw</type>
- </param>
- <param>
- <name>Pilot Symbols</name>
- <key>pilot_symbols</key>
- <value>()</value>
- <type>raw</type>
- </param>
- <param>
- <name>Sync Words</name>
- <key>sync_words</key>
- <value>()</value>
- <type>raw</type>
- </param>
- <param>
- <name>Length tag key</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$fft_len</vlen>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_chanest_vcvc.block.yml b/gr-digital/grc/digital_ofdm_chanest_vcvc.block.yml
new file mode 100644
index 0000000000..352c6ab5a7
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_chanest_vcvc.block.yml
@@ -0,0 +1,53 @@
+id: digital_ofdm_chanest_vcvc
+label: OFDM Channel Estimation
+
+parameters:
+- id: sync_symbol1
+ label: Synch. symbol 1
+ dtype: complex_vector
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: sync_symbol2
+ label: Synch. symbol 2
+ dtype: complex_vector
+ default: ()
+- id: n_data_symbols
+ label: Number of data symbols
+ dtype: int
+ default: '1'
+- id: eq_noise_red_len
+ label: Channel taps noise reduction length
+ dtype: int
+ default: '0'
+ hide: all
+- id: max_carr_offset
+ label: Maximum carrier offset
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if max_carr_offset < 0 else 'none') }
+- id: force_one_symbol
+ label: Force One Synchronisation Symbol
+ dtype: enum
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: ${ ('part' if not force_one_symbol else 'none') }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ len(sync_symbol1) }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ len(sync_symbol1) }
+
+asserts:
+- ${ len(sync_symbol1) }
+- ${ len(sync_symbol2) == 0 or len(sync_symbol2) == len(sync_symbol1) }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_chanest_vcvc(${sync_symbol1}, ${sync_symbol2}, ${n_data_symbols},
+ ${eq_noise_red_len}, ${max_carr_offset}, ${force_one_symbol})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_chanest_vcvc.xml b/gr-digital/grc/digital_ofdm_chanest_vcvc.xml
deleted file mode 100644
index 5cc2145456..0000000000
--- a/gr-digital/grc/digital_ofdm_chanest_vcvc.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>OFDM Channel Estimation</name>
- <key>digital_ofdm_chanest_vcvc</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_chanest_vcvc($sync_symbol1, $sync_symbol2, $n_data_symbols, $eq_noise_red_len, $max_carr_offset, $force_one_symbol)</make>
- <param>
- <name>Synch. symbol 1</name>
- <key>sync_symbol1</key>
- <type>complex_vector</type>
- </param>
- <param>
- <name>Synch. symbol 2</name>
- <key>sync_symbol2</key>
- <value>()</value>
- <type>complex_vector</type>
- </param>
- <param>
- <name>Number of data symbols</name>
- <key>n_data_symbols</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Channel taps noise reduction length</name>
- <key>eq_noise_red_len</key>
- <value>0</value>
- <type>int</type>
- <hide>all</hide>
- </param>
- <param>
- <name>Maximum carrier offset</name>
- <key>max_carr_offset</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $max_carr_offset &lt; 0 then 'part' else 'none'#</hide>
- </param>
- <param>
- <name>Force One Synchronisation Symbol</name>
- <key>force_one_symbol</key>
- <type>enum</type>
- <hide>#if not $force_one_symbol then 'part' else 'none'#</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <check>len($sync_symbol1)</check>
- <check>len($sync_symbol2) == 0 or len($sync_symbol2) == len($sync_symbol1)</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>len($sync_symbol1)</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>len($sync_symbol1)</vlen>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_cyclic_prefixer.block.yml b/gr-digital/grc/digital_ofdm_cyclic_prefixer.block.yml
new file mode 100644
index 0000000000..cd475a0601
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_cyclic_prefixer.block.yml
@@ -0,0 +1,38 @@
+id: digital_ofdm_cyclic_prefixer
+label: OFDM Cyclic Prefixer
+
+parameters:
+- id: input_size
+ label: FFT Length
+ dtype: int
+ default: fft_len
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: cp_len
+ label: CP Length
+ dtype: int
+ default: fft_len/4
+- id: rolloff
+ label: Rolloff
+ dtype: int
+ default: '0'
+ hide: ${ ('none' if rolloff else 'part') }
+- id: tagname
+ label: Length Tag Key
+ dtype: string
+ default: '"frame_len"'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ input_size }
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_cyclic_prefixer(${input_size}, ${input_size+cp_len}, ${rolloff},
+ ${tagname})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_cyclic_prefixer.xml b/gr-digital/grc/digital_ofdm_cyclic_prefixer.xml
deleted file mode 100644
index ec5e027047..0000000000
--- a/gr-digital/grc/digital_ofdm_cyclic_prefixer.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Copyright 2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##OFDM Cyclic Prefixer
-###################################################
- -->
-<block>
- <name>OFDM Cyclic Prefixer</name>
- <key>digital_ofdm_cyclic_prefixer</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_cyclic_prefixer($input_size, $input_size+$cp_len, $rolloff, $tagname)</make>
- <param>
- <name>FFT Length</name>
- <key>input_size</key>
- <value>fft_len</value>
- <type>int</type>
- </param>
- <param>
- <name>CP Length</name>
- <key>cp_len</key>
- <value>fft_len/4</value>
- <type>int</type>
- </param>
- <param>
- <name>Rolloff</name>
- <key>rolloff</key>
- <value>0</value>
- <type>int</type>
- <hide>#if $rolloff then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Length Tag Key</name>
- <key>tagname</key>
- <value>"frame_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$input_size</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.block.yml b/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.block.yml
new file mode 100644
index 0000000000..b2eba18e64
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.block.yml
@@ -0,0 +1,46 @@
+id: digital_ofdm_frame_equalizer_vcvc
+label: OFDM Frame Equalizer
+
+parameters:
+- id: fft_len
+ label: FFT length
+ dtype: int
+ default: fft_len
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: cp_len
+ label: CP length
+ dtype: int
+ default: fft_len/4
+- id: equalizer
+ label: Equalizer
+ dtype: raw
+- id: len_tag_key
+ label: Length Tag Key
+ dtype: string
+- id: propagate_channel_state
+ label: Propagate Channel State
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: fixed_frame_len
+ label: Fixed frame length
+ dtype: int
+ default: '0'
+ hide: ${ ('none' if fixed_frame_len else 'part') }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fft_len }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fft_len }
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_frame_equalizer_vcvc(${equalizer}, ${cp_len}, ${len_tag_key},
+ ${propagate_channel_state}, ${fixed_frame_len})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.xml b/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.xml
deleted file mode 100644
index 2a0c24e528..0000000000
--- a/gr-digital/grc/digital_ofdm_frame_equalizer_vcvc.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<block>
- <name>OFDM Frame Equalizer</name>
- <key>digital_ofdm_frame_equalizer_vcvc</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_frame_equalizer_vcvc($equalizer, $cp_len, $len_tag_key, $propagate_channel_state, $fixed_frame_len)</make>
- <param>
- <name>FFT length</name>
- <key>fft_len</key>
- <value>fft_len</value>
- <type>int</type>
- </param>
- <param>
- <name>CP length</name>
- <key>cp_len</key>
- <value>fft_len/4</value>
- <type>int</type>
- </param>
- <param>
- <name>Equalizer</name>
- <key>equalizer</key>
- <type>raw</type>
- </param>
- <param>
- <name>Length Tag Key</name>
- <key>len_tag_key</key>
- <type>string</type>
- </param>
- <param>
- <name>Propagate Channel State</name>
- <key>propagate_channel_state</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Fixed frame length</name>
- <key>fixed_frame_len</key>
- <value>0</value>
- <type>int</type>
- <hide>#if $fixed_frame_len then 'none' else 'part'#</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$fft_len</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$fft_len</vlen>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_rx.block.yml b/gr-digital/grc/digital_ofdm_rx.block.yml
new file mode 100644
index 0000000000..ac6bc50b09
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_rx.block.yml
@@ -0,0 +1,95 @@
+id: digital_ofdm_rx
+label: OFDM Receiver
+
+parameters:
+- id: fft_len
+ label: FFT Length
+ dtype: int
+ default: '64'
+- id: cp_len
+ label: Cyclic Prefix Length
+ dtype: int
+ default: '16'
+- id: packet_len_key
+ label: Packet Length Tag Key
+ dtype: string
+ default: '"length"'
+- id: occupied_carriers
+ label: Occupied Carriers
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if occupied_carriers else 'part' }
+- id: pilot_carriers
+ label: Pilot Carriers
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if pilot_carriers else 'part' }
+- id: pilot_symbols
+ label: Pilot Symbols
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if pilot_symbols else 'part' }
+ - id: sync_word1
+ label: Sync Word 1
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if sync_word1 else 'part' }
+- id: sync_word2
+ label: Sync Word 2
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if sync_word2 else 'part' }
+- id: header_mod
+ label: Header Modulation
+ dtype: enum
+ options: ['"BPSK"', '"QPSK"']
+ option_labels: [BPSK, QPSK]
+ option_attributes:
+ bps: ['1', '2']
+- id: payload_mod
+ label: Payload Modulation
+ dtype: enum
+ options: ['"BPSK"', '"QPSK"', '"8-PSK"']
+ option_labels: [BPSK, QPSK, 8-PSK]
+ option_attributes:
+ bps: ['1', '2', '3']
+- id: scramble_bits
+ label: Scramble Bits
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: ${ ('part' if scramble_bits else 'none') }
+- id: log
+ label: Log Debug Info
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: ${ ('none' if log else 'part') }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+asserts:
+- ${ fft_len > 0 }
+- ${ cp_len > 0 }
+- ${ cp_len < fft_len }
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.ofdm_rx(\n\t fft_len=${fft_len}, cp_len=${cp_len},\n\t frame_length_tag_key='frame_'+${packet_len_key},\n\
+ \t packet_length_tag_key=${packet_len_key},\n\t % if occupied_carriers:\n\
+ \t occupied_carriers=${occupied_carriers},\n\t % endif\n\t % if pilot_carriers:\n\
+ \t pilot_carriers=${pilot_carriers},\n\t % endif\n\t % if pilot_symbols:\n\
+ \t pilot_symbols=${pilot_symbols},\n\t % endif\n\t % if sync_word1:\n\t\
+ \ sync_word1=${sync_word1},\n\t % endif\n\t % if sync_word2:\n\t sync_word2=${sync_word2},\n\
+ \t % endif\n\t bps_header=${header_mod.bps},\n\t bps_payload=${payload_mod.bps},\n\
+ \t debug_log=${log},\n\t scramble_bits=${scramble_bits}\n\t )"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_rx.xml b/gr-digital/grc/digital_ofdm_rx.xml
deleted file mode 100644
index 9c2bf65e9d..0000000000
--- a/gr-digital/grc/digital_ofdm_rx.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>OFDM Receiver</name>
- <key>digital_ofdm_rx</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_rx(
- fft_len=$fft_len, cp_len=$cp_len,
- frame_length_tag_key='frame_'+$packet_len_key,
- packet_length_tag_key=$packet_len_key,
- #if $occupied_carriers()
- occupied_carriers=$occupied_carriers,
- #end if
- #if $pilot_carriers()
- pilot_carriers=$pilot_carriers,
- #end if
- #if $pilot_symbols()
- pilot_symbols=$pilot_symbols,
- #end if
- #if $sync_word1()
- sync_word1=$sync_word1,
- #end if
- #if $sync_word2()
- sync_word2=$sync_word2,
- #end if
- bps_header=$header_mod.bps,
- bps_payload=$payload_mod.bps,
- debug_log=$log,
- scramble_bits=$scramble_bits
- )</make>
- <param>
- <name>FFT Length</name>
- <key>fft_len</key>
- <value>64</value>
- <type>int</type>
- </param>
- <param>
- <name>Cyclic Prefix Length</name>
- <key>cp_len</key>
- <value>16</value>
- <type>int</type>
- </param>
- <param>
- <name>Packet Length Tag Key</name>
- <key>packet_len_key</key>
- <value>"length"</value>
- <type>string</type>
- </param>
- <param>
- <name>Occupied Carriers</name>
- <key>occupied_carriers</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $occupied_carriers()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Pilot Carriers</name>
- <key>pilot_carriers</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $pilot_carriers()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Pilot Symbols</name>
- <key>pilot_symbols</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $pilot_symbols()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Sync Word 1</name>
- <key>sync_word1</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $sync_word1()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Sync Word 2</name>
- <key>sync_word2</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $sync_word2()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Header Modulation</name>
- <key>header_mod</key>
- <type>enum</type>
- <option>
- <name>BPSK</name>
- <key>"BPSK"</key>
- <opt>bps:1</opt>
- </option>
- <option>
- <name>QPSK</name>
- <key>"QPSK"</key>
- <opt>bps:2</opt>
- </option>
- </param>
- <param>
- <name>Payload Modulation</name>
- <key>payload_mod</key>
- <type>enum</type>
- <option>
- <name>BPSK</name>
- <key>"BPSK"</key>
- <opt>bps:1</opt>
- </option>
- <option>
- <name>QPSK</name>
- <key>"QPSK"</key>
- <opt>bps:2</opt>
- </option>
- <option>
- <name>8-PSK</name>
- <key>"8-PSK"</key>
- <opt>bps:3</opt>
- </option>
- </param>
- <param>
- <name>Scramble Bits</name>
- <key>scramble_bits</key>
- <value>False</value>
- <type>enum</type>
- <hide> #if $scramble_bits then 'part' else 'none'#</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>Log Debug Info</name>
- <key>log</key>
- <value>False</value>
- <type>enum</type>
- <hide> #if $log then 'none' else 'part'#</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <check>$fft_len &gt; 0</check>
- <check>$cp_len &gt; 0</check>
- <check>$cp_len &lt; $fft_len</check>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
diff --git a/gr-digital/grc/digital_ofdm_serializer_vcc.block.yml b/gr-digital/grc/digital_ofdm_serializer_vcc.block.yml
new file mode 100644
index 0000000000..d81dd569f7
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_serializer_vcc.block.yml
@@ -0,0 +1,51 @@
+id: digital_ofdm_serializer_vcc
+label: OFDM Serializer
+
+parameters:
+- id: fft_len
+ label: FFT length
+ dtype: int
+ default: fft_len
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: occupied_carriers
+ label: Occupied Carriers
+ dtype: raw
+- id: len_tag_key
+ label: Length Tag Key
+ dtype: string
+- id: packet_len_tag_key
+ label: Packet Length Tag Key
+ dtype: string
+ default: '""'
+ hide: ${ ('none' if packet_len_tag_key else 'part') }
+- id: symbols_skipped
+ label: Symbols skipped
+ dtype: int
+ default: '0'
+ hide: ${ ('none' if symbols_skipped else 'part') }
+- id: carr_offset_key
+ label: Carrier Offset Key
+ dtype: string
+ default: '""'
+ hide: ${ ('none' if carr_offset_key else 'part') }
+- id: input_is_shifted
+ label: Input is shifted
+ dtype: bool
+ default: 'True'
+ hide: ${ ('part' if input_is_shifted else 'none') }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fft_len }
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_serializer_vcc(${fft_len}, ${occupied_carriers}, ${len_tag_key},
+ ${packet_len_tag_key}, ${symbols_skipped}, ${carr_offset_key}, ${input_is_shifted})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_serializer_vcc.xml b/gr-digital/grc/digital_ofdm_serializer_vcc.xml
deleted file mode 100644
index 1c09cd94fc..0000000000
--- a/gr-digital/grc/digital_ofdm_serializer_vcc.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>OFDM Serializer</name>
- <key>digital_ofdm_serializer_vcc</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_serializer_vcc($fft_len, $occupied_carriers, $len_tag_key, $packet_len_tag_key, $symbols_skipped, $carr_offset_key, $input_is_shifted)</make>
- <param>
- <name>FFT length</name>
- <key>fft_len</key>
- <value>fft_len</value>
- <type>int</type>
- </param>
- <param>
- <name>Occupied Carriers</name>
- <key>occupied_carriers</key>
- <type>raw</type>
- </param>
- <param>
- <name>Length Tag Key</name>
- <key>len_tag_key</key>
- <type>string</type>
- </param>
- <param>
- <name>Packet Length Tag Key</name>
- <key>packet_len_tag_key</key>
- <value>""</value>
- <type>string</type>
- <hide>#if $packet_len_tag_key then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Symbols skipped</name>
- <key>symbols_skipped</key>
- <value>0</value>
- <type>int</type>
- <hide>#if $symbols_skipped then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Carrier Offset Key</name>
- <key>carr_offset_key</key>
- <value>""</value>
- <type>string</type>
- <hide>#if $carr_offset_key then 'none' else 'part'#</hide>
- </param>
- <param>
- <name>Input is shifted</name>
- <key>input_is_shifted</key>
- <value>True</value>
- <type>bool</type>
- <hide>#if $input_is_shifted then 'part' else 'none'#</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$fft_len</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_sync_sc_cfb.block.yml b/gr-digital/grc/digital_ofdm_sync_sc_cfb.block.yml
new file mode 100644
index 0000000000..f1e2f3b13b
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_sync_sc_cfb.block.yml
@@ -0,0 +1,35 @@
+id: digital_ofdm_sync_sc_cfb
+label: Schmidl & Cox OFDM synch.
+
+parameters:
+- id: fft_len
+ label: FFT length
+ dtype: int
+- id: cp_len
+ label: Cyclic Prefix length
+ dtype: int
+- id: use_even_carriers
+ label: Preamble Carriers
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: [Odd, Even]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- label: freq_offset
+ domain: stream
+ dtype: float
+- label: detect
+ domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.ofdm_sync_sc_cfb(${fft_len}, ${cp_len}, ${use_even_carriers})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_sync_sc_cfb.xml b/gr-digital/grc/digital_ofdm_sync_sc_cfb.xml
deleted file mode 100644
index 4238df761c..0000000000
--- a/gr-digital/grc/digital_ofdm_sync_sc_cfb.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Schmidl &amp; Cox OFDM synch.</name>
- <key>digital_ofdm_sync_sc_cfb</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_sync_sc_cfb($fft_len, $cp_len, $use_even_carriers)</make>
- <param>
- <name>FFT length</name>
- <key>fft_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Cyclic Prefix length</name>
- <key>cp_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Preamble Carriers</name>
- <key>use_even_carriers</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Odd</name>
- <key>False</key>
- </option>
- <option>
- <name>Even</name>
- <key>True</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>freq_offset</name>
- <type>float</type>
- </source>
- <source>
- <name>detect</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_ofdm_tx.block.yml b/gr-digital/grc/digital_ofdm_tx.block.yml
new file mode 100644
index 0000000000..c81da0d27f
--- /dev/null
+++ b/gr-digital/grc/digital_ofdm_tx.block.yml
@@ -0,0 +1,100 @@
+id: digital_ofdm_tx
+label: OFDM Transmitter
+
+parameters:
+- id: fft_len
+ label: FFT Length
+ dtype: int
+ default: '64'
+- id: cp_len
+ label: Cyclic Prefix Length
+ dtype: int
+ default: '16'
+- id: packet_len_key
+ label: Length Tag Name
+ dtype: string
+ default: length
+- id: occupied_carriers
+ label: Occupied Carriers
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if occupied_carriers else 'part' }
+- id: pilot_carriers
+ label: Pilot Carriers
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if pilot_carriers else 'part' }
+- id: pilot_symbols
+ label: Pilot Symbols
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if pilot_symbols else 'part' }
+- id: sync_word1
+ label: Sync Word 1
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if sync_word1 else 'part' }
+- id: sync_word2
+ label: Sync Word 2
+ dtype: raw
+ default: ()
+ hide: ${ 'none' if sync_word2 else 'part' }
+- id: header_mod
+ label: Header Modulation
+ dtype: enum
+ options: ['"BPSK"', '"QPSK"']
+ option_labels: [BPSK, QPSK]
+ option_attributes:
+ bps: ['1', '2']
+- id: payload_mod
+ label: Payload Modulation
+ dtype: enum
+ options: ['"BPSK"', '"QPSK"', '"8-PSK"']
+ option_labels: [BPSK, QPSK, 8-PSK]
+ option_attributes:
+ bps: ['1', '2', '3']
+- id: rolloff
+ label: Rolloff length (samples)
+ dtype: int
+ default: '0'
+- id: scramble_bits
+ label: Scramble Bits
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: ${ ('part' if scramble_bits else 'none') }
+- id: log
+ label: Log Debug Info
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: ${ ('none' if log else 'part') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+asserts:
+- ${ fft_len > 0 }
+- ${ cp_len > 0 }
+- ${ cp_len < fft_len }
+- ${ rolloff >= 0 }
+
+templates:
+ imports: from gnuradio import digital
+ make: "digital.ofdm_tx(\n\t fft_len=${fft_len}, cp_len=${cp_len},\n\t packet_length_tag_key=${packet_len_key},\n\
+ \t % if occupied_carriers:\n\t occupied_carriers=${occupied_carriers},\n\
+ \t % endif\n\t % if pilot_carriers:\n\t pilot_carriers=${pilot_carriers},\n\
+ \t % endif\n\t % if pilot_carriers:\n\t pilot_symbols=${pilot_symbols},\n\
+ \t % endif\n\t % if sync_word1:\n\t sync_word1=${sync_word1},\n\t % endif\n\
+ \t % if sync_word2:\n\t sync_word2=${sync_word2},\n\t % endif\n\t bps_header=${header_mod.bps},\n\
+ \t bps_payload=${payload_mod.bps},\n\t rolloff=${rolloff},\n\t debug_log=${log},\n\
+ \t scramble_bits=${scramble_bits}\n\t )"
+
+file_format: 1
diff --git a/gr-digital/grc/digital_ofdm_tx.xml b/gr-digital/grc/digital_ofdm_tx.xml
deleted file mode 100644
index bad0b2b13d..0000000000
--- a/gr-digital/grc/digital_ofdm_tx.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>OFDM Transmitter</name>
- <key>digital_ofdm_tx</key>
- <import>from gnuradio import digital</import>
- <make>digital.ofdm_tx(
- fft_len=$fft_len, cp_len=$cp_len,
- packet_length_tag_key=$packet_len_key,
- #if $occupied_carriers()
- occupied_carriers=$occupied_carriers,
- #end if
- #if $pilot_carriers()
- pilot_carriers=$pilot_carriers,
- #end if
- #if $pilot_carriers()
- pilot_symbols=$pilot_symbols,
- #end if
- #if $sync_word1()
- sync_word1=$sync_word1,
- #end if
- #if $sync_word2()
- sync_word2=$sync_word2,
- #end if
- bps_header=$header_mod.bps,
- bps_payload=$payload_mod.bps,
- rolloff=$rolloff,
- debug_log=$log,
- scramble_bits=$scramble_bits
- )</make>
- <param>
- <name>FFT Length</name>
- <key>fft_len</key>
- <value>64</value>
- <type>int</type>
- </param>
- <param>
- <name>Cyclic Prefix Length</name>
- <key>cp_len</key>
- <value>16</value>
- <type>int</type>
- </param>
- <param>
- <name>Length Tag Name</name>
- <key>packet_len_key</key>
- <value>length</value>
- <type>string</type>
- </param>
- <param>
- <name>Occupied Carriers</name>
- <key>occupied_carriers</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $occupied_carriers()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Pilot Carriers</name>
- <key>pilot_carriers</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $pilot_carriers()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Pilot Symbols</name>
- <key>pilot_symbols</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $pilot_symbols()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Sync Word 1</name>
- <key>sync_word1</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $sync_word1()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Sync Word 2</name>
- <key>sync_word2</key>
- <value>()</value>
- <type>raw</type>
- <hide>
- #if $sync_word2()
- none
- #else
- part
- #end if
- </hide>
- </param>
- <param>
- <name>Header Modulation</name>
- <key>header_mod</key>
- <type>enum</type>
- <option>
- <name>BPSK</name>
- <key>"BPSK"</key>
- <opt>bps:1</opt>
- </option>
- <option>
- <name>QPSK</name>
- <key>"QPSK"</key>
- <opt>bps:2</opt>
- </option>
- </param>
- <param>
- <name>Payload Modulation</name>
- <key>payload_mod</key>
- <type>enum</type>
- <option>
- <name>BPSK</name>
- <key>"BPSK"</key>
- <opt>bps:1</opt>
- </option>
- <option>
- <name>QPSK</name>
- <key>"QPSK"</key>
- <opt>bps:2</opt>
- </option>
- <option>
- <name>8-PSK</name>
- <key>"8-PSK"</key>
- <opt>bps:3</opt>
- </option>
- </param>
- <param>
- <name>Rolloff length (samples)</name>
- <key>rolloff</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Scramble Bits</name>
- <key>scramble_bits</key>
- <value>False</value>
- <type>enum</type>
- <hide> #if $scramble_bits then 'part' else 'none'#</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <param>
- <name>Log Debug Info</name>
- <key>log</key>
- <value>False</value>
- <type>enum</type>
- <hide> #if $log then 'none' else 'part'#</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
- <check>$fft_len &gt; 0</check>
- <check>$cp_len &gt; 0</check>
- <check>$cp_len &lt; $fft_len</check>
- <check>$rolloff &gt;= 0</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_packet_headergenerator_bb.block.yml b/gr-digital/grc/digital_packet_headergenerator_bb.block.yml
new file mode 100644
index 0000000000..d77530450f
--- /dev/null
+++ b/gr-digital/grc/digital_packet_headergenerator_bb.block.yml
@@ -0,0 +1,27 @@
+id: digital_packet_headergenerator_bb
+label: Packet Header Generator
+
+parameters:
+- id: header_formatter
+ label: Formatter Object
+ dtype: raw
+- id: len_tag_key
+ label: Length Tag Name
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.packet_headergenerator_bb(${header_formatter}, ${len_tag_key})
+ callbacks:
+ - set_header_formatter(${header_formatter})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_packet_headergenerator_bb.xml b/gr-digital/grc/digital_packet_headergenerator_bb.xml
deleted file mode 100644
index f069b52a01..0000000000
--- a/gr-digital/grc/digital_packet_headergenerator_bb.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<block>
- <name>Packet Header Generator</name>
- <key>digital_packet_headergenerator_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.packet_headergenerator_bb($header_formatter, $len_tag_key)</make>
- <callback>set_header_formatter($header_formatter)</callback>
- <param>
- <name>Formatter Object</name>
- <key>header_formatter</key>
- <type>raw</type>
- </param>
- <param>
- <name>Length Tag Name</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_packet_headergenerator_bb_default.block.yml b/gr-digital/grc/digital_packet_headergenerator_bb_default.block.yml
new file mode 100644
index 0000000000..f9af16acac
--- /dev/null
+++ b/gr-digital/grc/digital_packet_headergenerator_bb_default.block.yml
@@ -0,0 +1,25 @@
+id: digital_packet_headergenerator_bb_default
+label: Packet Header Generator (Default)
+
+parameters:
+- id: header_len
+ label: Header Length
+ dtype: int
+- id: len_tag_key
+ label: Length Tag Name
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.packet_headergenerator_bb(${header_len}, ${len_tag_key})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_packet_headergenerator_bb_default.xml b/gr-digital/grc/digital_packet_headergenerator_bb_default.xml
deleted file mode 100644
index e89c340bf1..0000000000
--- a/gr-digital/grc/digital_packet_headergenerator_bb_default.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<block>
- <name>Packet Header Generator (Default)</name>
- <key>digital_packet_headergenerator_bb_default</key>
- <import>from gnuradio import digital</import>
- <make>digital.packet_headergenerator_bb($header_len, $len_tag_key)</make>
- <param>
- <name>Header Length</name>
- <key>header_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Length Tag Name</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
diff --git a/gr-digital/grc/digital_packet_headerparser_b.block.yml b/gr-digital/grc/digital_packet_headerparser_b.block.yml
new file mode 100644
index 0000000000..f3a4741086
--- /dev/null
+++ b/gr-digital/grc/digital_packet_headerparser_b.block.yml
@@ -0,0 +1,21 @@
+id: digital_packet_headerparser_b
+label: Packet Header Parser
+
+parameters:
+- id: header_formatter
+ label: Formatter Object
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: message
+ id: header_data
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.packet_headerparser_b(${header_formatter})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_packet_headerparser_b.xml b/gr-digital/grc/digital_packet_headerparser_b.xml
deleted file mode 100644
index bab6bd22ed..0000000000
--- a/gr-digital/grc/digital_packet_headerparser_b.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<block>
- <name>Packet Header Parser</name>
- <key>digital_packet_headerparser_b</key>
- <import>from gnuradio import digital</import>
- <make>digital.packet_headerparser_b($header_formatter)</make>
- <param>
- <name>Formatter Object</name>
- <key>header_formatter</key>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>header_data</name>
- <type>message</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_packet_headerparser_b_default.block.yml b/gr-digital/grc/digital_packet_headerparser_b_default.block.yml
new file mode 100644
index 0000000000..903a23cf32
--- /dev/null
+++ b/gr-digital/grc/digital_packet_headerparser_b_default.block.yml
@@ -0,0 +1,25 @@
+id: digital_packet_headerparser_b_default
+label: Packet Header Parser (Default)
+
+parameters:
+- id: header_len
+ label: Header Length
+ dtype: int
+- id: len_tag_key
+ label: Length Tag Name
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: message
+ id: header_data
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.packet_headerparser_b(${header_len}, ${len_tag_key})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_packet_headerparser_b_default.xml b/gr-digital/grc/digital_packet_headerparser_b_default.xml
deleted file mode 100644
index 81a33ed774..0000000000
--- a/gr-digital/grc/digital_packet_headerparser_b_default.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<block>
- <name>Packet Header Parser (Default)</name>
- <key>digital_packet_headerparser_b_default</key>
- <import>from gnuradio import digital</import>
- <make>digital.packet_headerparser_b($header_len, $len_tag_key)</make>
- <param>
- <name>Header Length</name>
- <key>header_len</key>
- <type>int</type>
- </param>
- <param>
- <name>Length Tag Name</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>header_data</name>
- <type>message</type>
- </source>
-</block>
-
diff --git a/gr-digital/grc/digital_packet_sink.block.yml b/gr-digital/grc/digital_packet_sink.block.yml
new file mode 100644
index 0000000000..a603226afc
--- /dev/null
+++ b/gr-digital/grc/digital_packet_sink.block.yml
@@ -0,0 +1,24 @@
+id: digital_packet_sink
+label: Packet Sink
+
+parameters:
+- id: sync_vector
+ label: Sync Vector
+ dtype: int_vector
+- id: target_queue
+ label: Target Message Queue
+ dtype: raw
+- id: threshold
+ label: Threshold
+ dtype: int
+ default: '-1'
+
+inputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.packet_sink(${sync_vector}, ${target_queue}, ${threshold})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_packet_sink.xml b/gr-digital/grc/digital_packet_sink.xml
deleted file mode 100644
index 2c6653d7ec..0000000000
--- a/gr-digital/grc/digital_packet_sink.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Packet Sink
-###################################################
- -->
-<block>
- <name>Packet Sink</name>
- <key>digital_packet_sink</key>
- <import>from gnuradio import digital</import>
- <make>digital.packet_sink($sync_vector, $target_queue, $threshold)</make>
- <param>
- <name>Sync Vector</name>
- <key>sync_vector</key>
- <type>int_vector</type>
- </param>
- <param>
- <name>Target Message Queue</name>
- <key>target_queue</key>
- <type>raw</type>
- </param>
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
-</block>
diff --git a/gr-digital/grc/digital_pfb_clock_sync.block.yml b/gr-digital/grc/digital_pfb_clock_sync.block.yml
new file mode 100644
index 0000000000..d9fbca8441
--- /dev/null
+++ b/gr-digital/grc/digital_pfb_clock_sync.block.yml
@@ -0,0 +1,69 @@
+id: digital_pfb_clock_sync_xxx
+label: Polyphase Clock Sync
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccf, fff]
+ option_labels: [Complex->Complex (Real Taps), Float->Float (Real Taps)]
+ option_attributes:
+ input: [complex, float]
+ output: [complex, float]
+ taps: [real_vector, real_vector]
+ hide: part
+- id: sps
+ label: Samples/Symbol
+ dtype: real
+- id: loop_bw
+ label: Loop Bandwidth
+ dtype: real
+- id: taps
+ label: Taps
+ dtype: real_vector
+- id: filter_size
+ label: Filter Size
+ dtype: int
+ default: '32'
+- id: init_phase
+ label: Initial Phase
+ dtype: real
+ default: '16'
+- id: max_dev
+ label: Maximum Rate Deviation
+ dtype: real
+ default: '1.5'
+- id: osps
+ label: Output SPS
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+- label: err
+ domain: stream
+ dtype: float
+ optional: true
+- label: rate
+ domain: stream
+ dtype: float
+ optional: true
+- label: phase
+ domain: stream
+ dtype: float
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.pfb_clock_sync_${type}(${sps}, ${loop_bw}, ${taps}, ${filter_size},
+ ${init_phase}, ${max_dev}, ${osps})
+ callbacks:
+ - update_taps(${taps})
+ - set_loop_bandwidth(${loop_bw})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_pfb_clock_sync.xml b/gr-digital/grc/digital_pfb_clock_sync.xml
deleted file mode 100644
index c54417f2cb..0000000000
--- a/gr-digital/grc/digital_pfb_clock_sync.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Polyphase Filter based Clock Sync
-###################################################
- -->
-<block>
- <name>Polyphase Clock Sync</name>
- <key>digital_pfb_clock_sync_xxx</key>
- <import>from gnuradio import digital</import>
- <make>digital.pfb_clock_sync_$(type)($sps, $loop_bw, $taps, $filter_size, $init_phase, $max_dev, $osps)</make>
- <callback>update_taps($taps)</callback>
- <callback>set_loop_bandwidth($loop_bw)</callback>
-
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- </param>
-
- <param>
- <name>Samples/Symbol</name>
- <key>sps</key>
- <type>real</type>
- </param>
- <param>
- <name>Loop Bandwidth</name>
- <key>loop_bw</key>
- <type>real</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>real_vector</type>
- </param>
- <param>
- <name>Filter Size</name>
- <key>filter_size</key>
- <value>32</value>
- <type>int</type>
- </param>
- <param>
- <name>Initial Phase</name>
- <key>init_phase</key>
- <value>16</value>
- <type>real</type>
- </param>
- <param>
- <name>Maximum Rate Deviation</name>
- <key>max_dev</key>
- <value>1.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Output SPS</name>
- <key>osps</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <source>
- <name>err</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>rate</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>phase</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_pn_correlator_cc.block.yml b/gr-digital/grc/digital_pn_correlator_cc.block.yml
new file mode 100644
index 0000000000..e92415433d
--- /dev/null
+++ b/gr-digital/grc/digital_pn_correlator_cc.block.yml
@@ -0,0 +1,29 @@
+id: digital_pn_correlator_cc
+label: PN Correlator
+
+parameters:
+- id: degree
+ label: Degree
+ dtype: int
+- id: mask
+ label: Mask
+ dtype: int
+ default: '0'
+- id: seed
+ label: Seed
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.pn_correlator_cc(${degree}, ${mask}, ${seed})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_pn_correlator_cc.xml b/gr-digital/grc/digital_pn_correlator_cc.xml
deleted file mode 100644
index 999cea15d9..0000000000
--- a/gr-digital/grc/digital_pn_correlator_cc.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##PN Correlator
-###################################################
- -->
-<block>
- <name>PN Correlator</name>
- <key>digital_pn_correlator_cc</key>
- <import>from gnuradio import digital</import>
- <make>digital.pn_correlator_cc($degree, $mask, $seed)</make>
- <param>
- <name>Degree</name>
- <key>degree</key>
- <type>int</type>
- </param>
- <param>
- <name>Mask</name>
- <key>mask</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_probe_density_b.block.yml b/gr-digital/grc/digital_probe_density_b.block.yml
new file mode 100644
index 0000000000..e329c6568c
--- /dev/null
+++ b/gr-digital/grc/digital_probe_density_b.block.yml
@@ -0,0 +1,24 @@
+id: digital_probe_density_b
+label: Probe Density
+
+parameters:
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '1'
+- id: probe_rate
+ label: Probe Rate
+ dtype: real
+ default: '10'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.probe_density_b(${alpha})
+ callbacks:
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_probe_density_b.xml b/gr-digital/grc/digital_probe_density_b.xml
deleted file mode 100644
index 8cf5dd8943..0000000000
--- a/gr-digital/grc/digital_probe_density_b.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Probe Density
-###################################################
- -->
-<block>
- <name>Probe Density</name>
- <key>digital_probe_density_b</key>
- <import>from gnuradio import digital</import>
- <make>digital.probe_density_b($alpha)</make>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Probe Rate</name>
- <key>probe_rate</key>
- <value>10</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-</block>
diff --git a/gr-digital/grc/digital_probe_mpsk_snr_est_c.block.yml b/gr-digital/grc/digital_probe_mpsk_snr_est_c.block.yml
new file mode 100644
index 0000000000..68e29c1e76
--- /dev/null
+++ b/gr-digital/grc/digital_probe_mpsk_snr_est_c.block.yml
@@ -0,0 +1,42 @@
+id: digital_probe_mpsk_snr_est_c
+label: MPSK SNR Estimator Probe
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: ['0', '1', '2', '3']
+ option_labels: [Simple, Skewness, 2nd and 4th Moment, SVR]
+- id: msg_nsamples
+ label: Samples between SNR messages
+ dtype: int
+ default: '10000'
+- id: alpha
+ label: Filter Alpha
+ dtype: real
+ default: '0.001'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: message
+ id: snr
+ optional: true
+- domain: message
+ id: signal
+ optional: true
+- domain: message
+ id: noise
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.probe_mpsk_snr_est_c(${type}, ${msg_nsamples}, ${alpha})
+ callbacks:
+ - set_type(${type})
+ - set_msg_nsample(${msg_nsamples})
+ - set_alpha(${alpha})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_probe_mpsk_snr_est_c.xml b/gr-digital/grc/digital_probe_mpsk_snr_est_c.xml
deleted file mode 100644
index e49f7e7f56..0000000000
--- a/gr-digital/grc/digital_probe_mpsk_snr_est_c.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##MPSK SNR Estimator
-###################################################
- -->
-<block>
- <name>MPSK SNR Estimator Probe</name>
- <key>digital_probe_mpsk_snr_est_c</key>
- <import>from gnuradio import digital</import>
- <make>digital.probe_mpsk_snr_est_c($type, $msg_nsamples, $alpha)</make>
- <callback>set_type($type)</callback>
- <callback>set_msg_nsample($msg_nsamples)</callback>
- <callback>set_alpha($alpha)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Simple</name>
- <key>0</key>
- </option>
- <option>
- <name>Skewness</name>
- <key>1</key>
- </option>
- <option>
- <name>2nd and 4th Moment</name>
- <key>2</key>
- </option>
- <option>
- <name>SVR</name>
- <key>3</key>
- </option>
- </param>
- <param>
- <name>Samples between SNR messages</name>
- <key>msg_nsamples</key>
- <value>10000</value>
- <type>int</type>
- </param>
- <param>
- <name>Filter Alpha</name>
- <key>alpha</key>
- <value>0.001</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>snr</name>
- <type>message</type>
- <optional>1</optional>
- </source>
- <source>
- <name>signal</name>
- <type>message</type>
- <optional>1</optional>
- </source>
- <source>
- <name>noise</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_protocol_formatter_async.block.yml b/gr-digital/grc/digital_protocol_formatter_async.block.yml
new file mode 100644
index 0000000000..29975522ff
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_formatter_async.block.yml
@@ -0,0 +1,26 @@
+id: digital_protocol_formatter_async
+label: Protocol Formatter (Async)
+
+parameters:
+- id: format
+ label: Format Obj.
+ dtype: raw
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+outputs:
+- domain: message
+ id: header
+ optional: true
+- domain: message
+ id: payload
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.protocol_formatter_async(${format})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_protocol_formatter_async.xml b/gr-digital/grc/digital_protocol_formatter_async.xml
deleted file mode 100644
index 52a67eca36..0000000000
--- a/gr-digital/grc/digital_protocol_formatter_async.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0"?>
-
-<block>
- <name>Protocol Formatter (Async)</name>
- <key>digital_protocol_formatter_async</key>
- <import>from gnuradio import digital</import>
- <make>digital.protocol_formatter_async($format)</make>
-
- <param>
- <name>Format Obj.</name>
- <key>format</key>
- <type>raw</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>header</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
- <source>
- <name>payload</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
-</block>
diff --git a/gr-digital/grc/digital_protocol_formatter_bb.block.yml b/gr-digital/grc/digital_protocol_formatter_bb.block.yml
new file mode 100644
index 0000000000..9141b52085
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_formatter_bb.block.yml
@@ -0,0 +1,25 @@
+id: digital_protocol_formatter_bb
+label: Protocol Formatter
+
+parameters:
+- id: format
+ label: Format Obj.
+ dtype: raw
+- id: len_tag_key
+ label: Length Tag Name
+ dtype: string
+ default: '"packet_len"'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.protocol_formatter_bb(${format}, ${len_tag_key})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_protocol_formatter_bb.xml b/gr-digital/grc/digital_protocol_formatter_bb.xml
deleted file mode 100644
index b37a791fa8..0000000000
--- a/gr-digital/grc/digital_protocol_formatter_bb.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-
-<block>
- <name>Protocol Formatter</name>
- <key>digital_protocol_formatter_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.protocol_formatter_bb($format, $len_tag_key)</make>
-
- <param>
- <name>Format Obj.</name>
- <key>format</key>
- <type>raw</type>
- </param>
-
- <param>
- <name>Length Tag Name</name>
- <key>len_tag_key</key>
- <value>"packet_len"</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-digital/grc/digital_protocol_parser_b.block.yml b/gr-digital/grc/digital_protocol_parser_b.block.yml
new file mode 100644
index 0000000000..b09e480863
--- /dev/null
+++ b/gr-digital/grc/digital_protocol_parser_b.block.yml
@@ -0,0 +1,22 @@
+id: digital_protocol_parser_b
+label: Protocol Parser
+
+parameters:
+- id: format
+ label: Format Obj.
+ dtype: raw
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: message
+ id: info
+ optional: true
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.protocol_parser_b(${format})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_protocol_parser_b.xml b/gr-digital/grc/digital_protocol_parser_b.xml
deleted file mode 100644
index 27fb15e05b..0000000000
--- a/gr-digital/grc/digital_protocol_parser_b.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<block>
- <name>Protocol Parser</name>
- <key>digital_protocol_parser_b</key>
- <import>from gnuradio import digital</import>
- <make>digital.protocol_parser_b($format)</make>
-
- <param>
- <name>Format Obj.</name>
- <key>format</key>
- <type>raw</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>info</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_psk_demod.block.yml b/gr-digital/grc/digital_psk_demod.block.yml
new file mode 100644
index 0000000000..fbb5d60005
--- /dev/null
+++ b/gr-digital/grc/digital_psk_demod.block.yml
@@ -0,0 +1,79 @@
+id: digital_psk_demod
+label: PSK Demod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: constellation_points
+ label: Number of Constellation Points
+ dtype: int
+ default: '8'
+- 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: freq_bw
+ label: Frequency BW
+ dtype: real
+ default: 6.28/100.0
+- id: timing_bw
+ label: Timing BW
+ dtype: real
+ default: 6.28/100.0
+- id: phase_bw
+ label: Phase BW
+ dtype: real
+ default: 6.28/100.0
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: |-
+ digital.psk.psk_demod(
+ constellation_points=${constellation_points},
+ differential=${differential},
+ samples_per_symbol=${samples_per_symbol},
+ excess_bw=${excess_bw},
+ phase_bw=${phase_bw},
+ timing_bw=${timing_bw},
+ mod_code=${mod_code},
+ verbose=${verbose},
+ log=${log},
+ )
+
+file_format: 1
diff --git a/gr-digital/grc/digital_psk_demod.xml b/gr-digital/grc/digital_psk_demod.xml
deleted file mode 100644
index 02beed01ac..0000000000
--- a/gr-digital/grc/digital_psk_demod.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##PSK Demod
-###################################################
- -->
-<block>
- <name>PSK Demod</name>
- <key>digital_psk_demod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.psk.psk_demod(
- constellation_points=$constellation_points,
- differential=$differential,
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- phase_bw=$phase_bw,
- timing_bw=$timing_bw,
- mod_code=$mod_code,
- verbose=$verbose,
- log=$log,
- )</make>
- <param>
- <name>Number of Constellation Points</name>
- <key>constellation_points</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Differential Encoding</name>
- <key>differential</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Frequency BW</name>
- <key>freq_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Timing BW</name>
- <key>timing_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Phase BW</name>
- <key>phase_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_psk_mod.block.yml b/gr-digital/grc/digital_psk_mod.block.yml
new file mode 100644
index 0000000000..9145718fa7
--- /dev/null
+++ b/gr-digital/grc/digital_psk_mod.block.yml
@@ -0,0 +1,65 @@
+id: digital_psk_mod
+label: PSK Mod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: constellation_points
+ label: Number of Constellation Points
+ dtype: int
+ default: '8'
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: |-
+ digital.psk.psk_mod(
+ constellation_points=${constellation_points},
+ mod_code=${mod_code},
+ differential=${differential},
+ samples_per_symbol=${samples_per_symbol},
+ excess_bw=${excess_bw},
+ verbose=${verbose},
+ log=${log},
+ )
+
+file_format: 1
diff --git a/gr-digital/grc/digital_psk_mod.xml b/gr-digital/grc/digital_psk_mod.xml
deleted file mode 100644
index 43e60562ee..0000000000
--- a/gr-digital/grc/digital_psk_mod.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##PSK Mod
-###################################################
- -->
-<block>
- <name>PSK Mod</name>
- <key>digital_psk_mod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.psk.psk_mod(
- constellation_points=$constellation_points,
- mod_code=$mod_code,
- differential=$differential,
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- verbose=$verbose,
- log=$log,
- )</make>
- <param>
- <name>Number of Constellation Points</name>
- <key>constellation_points</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Differential Encoding</name>
- <key>differential</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_qam_demod.block.yml b/gr-digital/grc/digital_qam_demod.block.yml
new file mode 100644
index 0000000000..5ed8f4dd1d
--- /dev/null
+++ b/gr-digital/grc/digital_qam_demod.block.yml
@@ -0,0 +1,80 @@
+id: digital_qam_demod
+label: QAM Demod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: constellation_points
+ label: Number of Constellation Points
+ dtype: int
+ default: '16'
+- 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: freq_bw
+ label: Frequency BW
+ dtype: real
+ default: 6.28/100.0
+- id: timing_bw
+ label: Timing BW
+ dtype: real
+ default: 6.28/100.0
+- id: phase_bw
+ label: Phase BW
+ dtype: real
+ default: 6.28/100.0
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: |-
+ digital.qam.qam_demod(
+ constellation_points=${constellation_points},
+ differential=${differential},
+ samples_per_symbol=${samples_per_symbol},
+ excess_bw=${excess_bw},
+ freq_bw=${freq_bw},
+ timing_bw=${timing_bw},
+ phase_bw=${phase_bw},
+ mod_code=${mod_code},
+ verbose=${verbose},
+ log=${log},
+ )
+
+file_format: 1
diff --git a/gr-digital/grc/digital_qam_demod.xml b/gr-digital/grc/digital_qam_demod.xml
deleted file mode 100644
index c9a6c6aa4b..0000000000
--- a/gr-digital/grc/digital_qam_demod.xml
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##QAM Demod
-###################################################
- -->
-<block>
- <name>QAM Demod</name>
- <key>digital_qam_demod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.qam.qam_demod(
- constellation_points=$constellation_points,
- differential=$differential,
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- freq_bw=$freq_bw,
- timing_bw=$timing_bw,
- phase_bw=$phase_bw,
- mod_code=$mod_code,
- verbose=$verbose,
- log=$log,
- )</make>
- <param>
- <name>Number of Constellation Points</name>
- <key>constellation_points</key>
- <value>16</value>
- <type>int</type>
- </param>
- <param>
- <name>Differential Encoding</name>
- <key>differential</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Frequency BW</name>
- <key>freq_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Timing BW</name>
- <key>timing_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Phase BW</name>
- <key>phase_bw</key>
- <value>6.28/100.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_qam_mod.block.yml b/gr-digital/grc/digital_qam_mod.block.yml
new file mode 100644
index 0000000000..6cfcc2966e
--- /dev/null
+++ b/gr-digital/grc/digital_qam_mod.block.yml
@@ -0,0 +1,65 @@
+id: digital_qam_mod
+label: QAM Mod
+category: '[Core]/Deprecated'
+
+parameters:
+- id: constellation_points
+ label: Number of Constellation Points
+ dtype: int
+ default: '16'
+- id: mod_code
+ label: Gray Code
+ dtype: enum
+ options: ['"gray"', '"none"']
+ option_labels: ['Yes', 'No']
+- 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') }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import digital
+ make: |-
+ digital.qam.qam_mod(
+ constellation_points=${constellation_points},
+ mod_code=${mod_code},
+ differential=${differential},
+ samples_per_symbol=${samples_per_symbol},
+ excess_bw=${excess_bw},
+ verbose=${verbose},
+ log=${log},
+ )
+
+file_format: 1
diff --git a/gr-digital/grc/digital_qam_mod.xml b/gr-digital/grc/digital_qam_mod.xml
deleted file mode 100644
index 5c3d5139d2..0000000000
--- a/gr-digital/grc/digital_qam_mod.xml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2009,2010,2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##QAM Mod
-###################################################
- -->
-<block>
- <name>QAM Mod</name>
- <key>digital_qam_mod</key>
- <category>[Core]/Deprecated</category>
- <import>from gnuradio import digital</import>
- <make>digital.qam.qam_mod(
- constellation_points=$constellation_points,
- mod_code=$mod_code,
- differential=$differential,
- samples_per_symbol=$samples_per_symbol,
- excess_bw=$excess_bw,
- verbose=$verbose,
- log=$log,
- )</make>
- <param>
- <name>Number of Constellation Points</name>
- <key>constellation_points</key>
- <value>16</value>
- <type>int</type>
- </param>
- <param>
- <name>Gray Code</name>
- <key>mod_code</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>"gray"</key>
- </option>
- <option>
- <name>No</name>
- <key>"none"</key>
- </option>
- </param>
- <param>
- <name>Differential Encoding</name>
- <key>differential</key>
- <value>True</value>
- <type>bool</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Samples/Symbol</name>
- <key>samples_per_symbol</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>excess_bw</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Verbose</name>
- <key>verbose</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($verbose) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Log</name>
- <key>log</key>
- <value>False</value>
- <type>bool</type>
- <hide>#if str($log) == 'False' then 'part' else 'none'#</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_scrambler_bb.block.yml b/gr-digital/grc/digital_scrambler_bb.block.yml
new file mode 100644
index 0000000000..fb8b3cca1f
--- /dev/null
+++ b/gr-digital/grc/digital_scrambler_bb.block.yml
@@ -0,0 +1,30 @@
+id: digital_scrambler_bb
+label: Scrambler
+
+parameters:
+- id: mask
+ label: Mask
+ dtype: hex
+ default: '0x8A'
+- id: seed
+ label: Seed
+ dtype: hex
+ default: '0x7F'
+- id: len
+ label: Length
+ dtype: int
+ default: '7'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.scrambler_bb(${mask}, ${seed}, ${len})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_scrambler_bb.xml b/gr-digital/grc/digital_scrambler_bb.xml
deleted file mode 100644
index 9c40b49f64..0000000000
--- a/gr-digital/grc/digital_scrambler_bb.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Descrambler
-###################################################
- -->
-<block>
- <name>Scrambler</name>
- <key>digital_scrambler_bb</key>
- <import>from gnuradio import digital</import>
- <make>digital.scrambler_bb($mask, $seed, $len)</make>
- <param>
- <name>Mask</name>
- <key>mask</key>
- <value>0x8A</value>
- <type>hex</type>
- </param>
- <param>
- <name>Seed</name>
- <key>seed</key>
- <value>0x7F</value>
- <type>hex</type>
- </param>
- <param>
- <name>Length</name>
- <key>len</key>
- <value>7</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_simple_correlator.block.yml b/gr-digital/grc/digital_simple_correlator.block.yml
new file mode 100644
index 0000000000..aae6139525
--- /dev/null
+++ b/gr-digital/grc/digital_simple_correlator.block.yml
@@ -0,0 +1,21 @@
+id: digital_simple_correlator
+label: Simple Correlator
+
+parameters:
+- id: payload_bytesize
+ label: Payload Byte Size
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.simple_correlator(${payload_bytesize})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_simple_correlator.xml b/gr-digital/grc/digital_simple_correlator.xml
deleted file mode 100644
index 3b70e59b12..0000000000
--- a/gr-digital/grc/digital_simple_correlator.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Simple Correlator
-###################################################
- -->
-<block>
- <name>Simple Correlator</name>
- <key>digital_simple_correlator</key>
- <import>from gnuradio import digital</import>
- <make>digital.simple_correlator($payload_bytesize)</make>
- <param>
- <name>Payload Byte Size</name>
- <key>payload_bytesize</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_simple_framer.block.yml b/gr-digital/grc/digital_simple_framer.block.yml
new file mode 100644
index 0000000000..f711948981
--- /dev/null
+++ b/gr-digital/grc/digital_simple_framer.block.yml
@@ -0,0 +1,21 @@
+id: digital_simple_framer
+label: Simple Framer
+
+parameters:
+- id: payload_bytesize
+ label: Payload Byte Size
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import digital
+ make: digital.simple_framer(${payload_bytesize})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_simple_framer.xml b/gr-digital/grc/digital_simple_framer.xml
deleted file mode 100644
index 2d57222f3b..0000000000
--- a/gr-digital/grc/digital_simple_framer.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Simple Framer
-###################################################
- -->
-<block>
- <name>Simple Framer</name>
- <key>digital_simple_framer</key>
- <import>from gnuradio import digital</import>
- <make>digital.simple_framer($payload_bytesize)</make>
- <param>
- <name>Payload Byte Size</name>
- <key>payload_bytesize</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-digital/grc/digital_symbol_sync_xx.block.yml b/gr-digital/grc/digital_symbol_sync_xx.block.yml
new file mode 100644
index 0000000000..ec63825127
--- /dev/null
+++ b/gr-digital/grc/digital_symbol_sync_xx.block.yml
@@ -0,0 +1,108 @@
+id: digital_symbol_sync_xx
+label: Symbol Sync
+category: '[Core]/Synchronizers'
+
+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\xFCller", "Modified Mueller and M\xFCller", Zero
+ Crossing, Gardner, Early-Late, D'Andrea and Mengali Gen MSK, Mengali and
+ D'Andrea GMSK, 'y[n]y''[n] Maximum Likelyhood', 'sgn(y[n])y''[n] Maximum
+ Likelyhood']
+ 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, '', '']
+ hide_pfb_mf_taps: [all, all, '']
+- 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})
+
+file_format: 1
diff --git a/gr-digital/grc/digital_symbol_sync_xx.xml b/gr-digital/grc/digital_symbol_sync_xx.xml
deleted file mode 100644
index ffd2f5daff..0000000000
--- a/gr-digital/grc/digital_symbol_sync_xx.xml
+++ /dev/null
@@ -1,207 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Copyright (C) 2016-2017 Free Software Foundation, Inc.
-
- This file is part of GNU Radio.
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
- -->
-
-<block>
- <name>Symbol Sync</name>
- <key>digital_symbol_sync_xx</key>
- <category>[Core]/Synchronizers</category>
- <import>from gnuradio import digital</import>
- <import>from gnuradio import filter</import>
- <make>digital.symbol_sync_$(type)($ted_type, $sps, $loop_bw, $damping, $ted_gain, $max_dev, $osps, $constellation, $resamp_type, $nfilters, $pfb_mf_taps)</make>
-
- <callback>set_loop_bandwidth($loop_bw)</callback>
- <callback>set_damping_factor($damping)</callback>
- <callback>set_ted_gain($ted_gain)</callback>
-
- <param>
- <name>I/O Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>cc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>ff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Timing Error Detector</name>
- <key>ted_type</key>
- <type>enum</type>
- <option>
- <name>Mueller and Müller</name>
- <key>digital.TED_MUELLER_AND_MULLER</key>
- <opt>hide_constellation:part</opt>
- </option>
- <option>
- <name>Modified Mueller and Müller</name>
- <key>digital.TED_MOD_MUELLER_AND_MULLER</key>
- <opt>hide_constellation:part</opt>
- </option>
- <option>
- <name>Zero Crossing</name>
- <key>digital.TED_ZERO_CROSSING</key>
- <opt>hide_constellation:part</opt>
- </option>
- <option>
- <name>Gardner</name>
- <key>digital.TED_GARDNER</key>
- <opt>hide_constellation:all</opt>
- </option>
- <option>
- <name>Early-Late</name>
- <key>digital.TED_EARLY_LATE</key>
- <opt>hide_constellation:all</opt>
- </option>
- <option>
- <name>D'Andrea and Mengali Gen MSK</name>
- <key>digital.TED_DANDREA_AND_MENGALI_GEN_MSK</key>
- <opt>hide_constellation:all</opt>
- </option>
- <option>
- <name>Mengali and D'Andrea GMSK</name>
- <key>digital.TED_MENGALI_AND_DANDREA_GMSK</key>
- <opt>hide_constellation:all</opt>
- </option>
- <option>
- <name>y[n]y'[n] Maximum Likelyhood</name>
- <key>digital.TED_SIGNAL_TIMES_SLOPE_ML</key>
- <opt>hide_constellation:all</opt>
- </option>
- <option>
- <name>sgn(y[n])y'[n] Maximum Likelyhood</name>
- <key>digital.TED_SIGNUM_TIMES_SLOPE_ML</key>
- <opt>hide_constellation:all</opt>
- </option>
- </param>
- <param>
- <name>TED Slicer Constellation</name>
- <key>constellation</key>
- <value>digital.constellation_bpsk().base()</value>
- <type>raw</type>
- <hide>$ted_type.hide_constellation</hide>
- </param>
- <param>
- <name>Samples per Symbol</name>
- <key>sps</key>
- <value>sps</value>
- <type>real</type>
- </param>
- <param>
- <name>Expected TED Gain</name>
- <key>ted_gain</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Loop Bandwidth</name>
- <key>loop_bw</key>
- <value>0.045</value>
- <type>real</type>
- </param>
- <param>
- <name>Damping Factor</name>
- <key>damping</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Maximum Deviation</name>
- <key>max_dev</key>
- <value>1.5</value>
- <type>real</type>
- </param>
- <param>
- <name>Output Samples/Symbol</name>
- <key>osps</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Interpolating Resampler</name>
- <key>resamp_type</key>
- <type>enum</type>
- <option>
- <name>MMSE, 8 tap FIR</name>
- <key>digital.IR_MMSE_8TAP</key>
- <opt>hide_nfilters:all</opt>
- <opt>hide_pfb_mf_taps:all</opt>
- </option>
- <option>
- <name>Polyphase Filterbank, MMSE</name>
- <key>digital.IR_PFB_NO_MF</key>
- <opt>hide_nfilters:</opt>
- <opt>hide_pfb_mf_taps:all</opt>
- </option>
- <option>
- <name>Polyphase Filterbank, MF</name>
- <key>digital.IR_PFB_MF</key>
- <opt>hide_nfilters:</opt>
- <opt>hide_pfb_mf_taps:</opt>
- </option>
- </param>
- <param>
- <name>Filterbank Arms</name>
- <key>nfilters</key>
- <value>128</value>
- <type>int</type>
- <hide>$resamp_type.hide_nfilters</hide>
- </param>
- <param>
- <name>PFB MF Taps</name>
- <key>pfb_mf_taps</key>
- <value>[]</value>
- <type>real_vector</type>
- <hide>$resamp_type.hide_pfb_mf_taps</hide>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <source>
- <name>error</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>T_inst</name>
- <type>float</type>
- <optional>1</optional>
- </source>
- <source>
- <name>T_avg</name>
- <type>float</type>
- <optional>1</optional>
- </source>
-</block>
diff --git a/gr-digital/grc/variable_header_format_default.block.yml b/gr-digital/grc/variable_header_format_default.block.yml
new file mode 100644
index 0000000000..d326eb2e86
--- /dev/null
+++ b/gr-digital/grc/variable_header_format_default.block.yml
@@ -0,0 +1,25 @@
+id: variable_header_format_default
+label: Default Header Format Obj.
+
+parameters:
+- id: access_code
+ label: Access Code
+ dtype: string
+ default: '0'
+- id: threshold
+ label: Threshold
+ dtype: int
+ default: '0'
+- id: bps
+ label: Payload Bits per Symbol
+ dtype: int
+ default: '1'
+value: ${ digital.header_format_default(access_code, threshold, bps) }
+
+templates:
+ imports: from gnuradio import digital
+ var_make: "\n% if int(access_code)==0 #:\nself.${id} = ${id} = digital.header_format_default(digital.packet_utils.default_access_code,\
+ \ ${threshold}, ${bps})\n% else:\nself.${id} = ${id} = digital.header_format_default(${access_code},\
+ \ ${threshold}, ${bps})\n% endif\n "
+
+file_format: 1
diff --git a/gr-digital/grc/variable_header_format_default.xml b/gr-digital/grc/variable_header_format_default.xml
deleted file mode 100644
index 88727600ed..0000000000
--- a/gr-digital/grc/variable_header_format_default.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# header_format_default object
-###################################################
- -->
-<block>
- <name>Default Header Format Obj.</name>
- <key>variable_header_format_default</key>
- <import>from gnuradio import digital</import>
- <var_make>
-#if int($access_code())==0 #
-self.$(id) = $(id) = digital.header_format_default(digital.packet_utils.default_access_code, $threshold, $bps)
-#else
-self.$(id) = $(id) = digital.header_format_default($access_code, $threshold, $bps)
-#end if
- </var_make>
- <var_value>digital.header_format_default($access_code, $threshold, $bps)</var_value>
- <make></make>
-
- <param>
- <name>Access Code</name>
- <key>access_code</key>
- <value>0</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Threshold</name>
- <key>threshold</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Payload Bits per Symbol</name>
- <key>bps</key>
- <value>1</value>
- <type>int</type>
- </param>
-
-</block>
diff --git a/gr-dtv/grc/CMakeLists.txt b/gr-dtv/grc/CMakeLists.txt
index e226d09976..605e3d22e8 100644
--- a/gr-dtv/grc/CMakeLists.txt
+++ b/gr-dtv/grc/CMakeLists.txt
@@ -18,60 +18,60 @@
# Boston, MA 02110-1301, USA.
install(FILES
- dtv_atsc_deinterleaver.xml
- dtv_atsc_depad.xml
- dtv_atsc_derandomizer.xml
- dtv_atsc_equalizer.xml
- dtv_atsc_fpll.xml
- dtv_atsc_fs_checker.xml
- dtv_atsc_rs_decoder.xml
- dtv_atsc_rx.xml
- dtv_atsc_rx_filter.xml
- dtv_atsc_sync.xml
- dtv_atsc_viterbi_decoder.xml
- dtv_block_tree.xml
- dtv_atsc_pad.xml
- dtv_atsc_randomizer.xml
- dtv_atsc_rs_encoder.xml
- dtv_atsc_interleaver.xml
- dtv_atsc_trellis_encoder.xml
- dtv_atsc_field_sync_mux.xml
- dtv_dvb_bbheader_bb.xml
- dtv_dvb_bbscrambler_bb.xml
- dtv_dvb_bch_bb.xml
- dtv_dvb_ldpc_bb.xml
- dtv_dvbt2_interleaver_bb.xml
- dtv_dvbt2_modulator_bc.xml
- dtv_dvbt2_cellinterleaver_cc.xml
- dtv_dvbt2_framemapper_cc.xml
- dtv_dvbt2_freqinterleaver_cc.xml
- dtv_dvbt2_pilotgenerator_cc.xml
- dtv_dvbt2_paprtr_cc.xml
- dtv_dvbt2_p1insertion_cc.xml
- dtv_dvbt2_miso_cc.xml
- dtv_dvbs2_interleaver_bb.xml
- dtv_dvbs2_modulator_bc.xml
- dtv_dvbs2_physical_cc.xml
- dtv_dvbt_energy_dispersal.xml
- dtv_dvbt_reed_solomon_enc.xml
- dtv_dvbt_convolutional_interleaver.xml
- dtv_dvbt_inner_coder.xml
- dtv_dvbt_bit_inner_interleaver.xml
- dtv_dvbt_symbol_inner_interleaver.xml
- dtv_dvbt_map.xml
- dtv_dvbt_reference_signals.xml
- dtv_dvbt_ofdm_sym_acquisition.xml
- dtv_dvbt_demod_reference_signals.xml
- dtv_dvbt_demap.xml
- dtv_dvbt_bit_inner_deinterleaver.xml
- dtv_dvbt_viterbi_decoder.xml
- dtv_dvbt_convolutional_deinterleaver.xml
- dtv_dvbt_reed_solomon_dec.xml
- dtv_dvbt_energy_descramble.xml
- dtv_catv_transport_framing_enc_bb.xml
- dtv_catv_reed_solomon_enc_bb.xml
- dtv_catv_randomizer_bb.xml
- dtv_catv_frame_sync_enc_bb.xml
- dtv_catv_trellis_enc_bb.xml
+ dtv_atsc_deinterleaver.block.yml
+ dtv_atsc_depad.block.yml
+ dtv_atsc_derandomizer.block.yml
+ dtv_atsc_equalizer.block.yml
+ dtv_atsc_fpll.block.yml
+ dtv_atsc_fs_checker.block.yml
+ dtv_atsc_rs_decoder.block.yml
+ dtv_atsc_rx.block.yml
+ dtv_atsc_rx_filter.block.yml
+ dtv_atsc_sync.block.yml
+ dtv_atsc_viterbi_decoder.block.yml
+ dtv_block_tree.block.yml
+ dtv_atsc_pad.block.yml
+ dtv_atsc_randomizer.block.yml
+ dtv_atsc_rs_encoder.block.yml
+ dtv_atsc_interleaver.block.yml
+ dtv_atsc_trellis_encoder.block.yml
+ dtv_atsc_field_sync_mux.block.yml
+ dtv_dvb_bbheader_bb.block.yml
+ dtv_dvb_bbscrambler_bb.block.yml
+ dtv_dvb_bch_bb.block.yml
+ dtv_dvb_ldpc_bb.block.yml
+ dtv_dvbt2_interleaver_bb.block.yml
+ dtv_dvbt2_modulator_bc.block.yml
+ dtv_dvbt2_cellinterleaver_cc.block.yml
+ dtv_dvbt2_framemapper_cc.block.yml
+ dtv_dvbt2_freqinterleaver_cc.block.yml
+ dtv_dvbt2_pilotgenerator_cc.block.yml
+ dtv_dvbt2_paprtr_cc.block.yml
+ dtv_dvbt2_p1insertion_cc.block.yml
+ dtv_dvbt2_miso_cc.block.yml
+ dtv_dvbs2_interleaver_bb.block.yml
+ dtv_dvbs2_modulator_bc.block.yml
+ dtv_dvbs2_physical_cc.block.yml
+ dtv_dvbt_energy_dispersal.block.yml
+ dtv_dvbt_reed_solomon_enc.block.yml
+ dtv_dvbt_convolutional_interleaver.block.yml
+ dtv_dvbt_inner_coder.block.yml
+ dtv_dvbt_bit_inner_interleaver.block.yml
+ dtv_dvbt_symbol_inner_interleaver.block.yml
+ dtv_dvbt_map.block.yml
+ dtv_dvbt_reference_signals.block.yml
+ dtv_dvbt_ofdm_sym_acquisition.block.yml
+ dtv_dvbt_demod_reference_signals.block.yml
+ dtv_dvbt_demap.block.yml
+ dtv_dvbt_bit_inner_deinterleaver.block.yml
+ dtv_dvbt_viterbi_decoder.block.yml
+ dtv_dvbt_convolutional_deinterleaver.block.yml
+ dtv_dvbt_reed_solomon_dec.block.yml
+ dtv_dvbt_energy_descramble.block.yml
+ dtv_catv_transport_framing_enc_bb.block.yml
+ dtv_catv_reed_solomon_enc_bb.block.yml
+ dtv_catv_randomizer_bb.block.yml
+ dtv_catv_frame_sync_enc_bb.block.yml
+ dtv_catv_trellis_enc_bb.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-dtv/grc/dtv.tree.yml b/gr-dtv/grc/dtv.tree.yml
new file mode 100644
index 0000000000..ad0b0cafb8
--- /dev/null
+++ b/gr-dtv/grc/dtv.tree.yml
@@ -0,0 +1,62 @@
+'[Core]':
+- Digital Television:
+ - ATSC:
+ - dtv_atsc_deinterleaver
+ - dtv_atsc_depad
+ - dtv_atsc_derandomizer
+ - dtv_atsc_equalizer
+ - dtv_atsc_fpll
+ - dtv_atsc_fs_checker
+ - dtv_atsc_rs_decoder
+ - dtv_atsc_rx
+ - dtv_atsc_rx_filter
+ - dtv_atsc_sync
+ - dtv_atsc_viterbi_decoder
+ - dtv_atsc_pad
+ - dtv_atsc_randomizer
+ - dtv_atsc_rs_encoder
+ - dtv_atsc_interleaver
+ - dtv_atsc_trellis_encoder
+ - dtv_atsc_field_sync_mux
+ - DVB:
+ - dtv_dvb_bbheader_bb
+ - dtv_dvb_bbscrambler_bb
+ - dtv_dvb_bch_bb
+ - dtv_dvb_ldpc_bb
+ - DVB-T2:
+ - dtv_dvbt2_interleaver_bb
+ - dtv_dvbt2_modulator_bc
+ - dtv_dvbt2_cellinterleaver_cc
+ - dtv_dvbt2_framemapper_cc
+ - dtv_dvbt2_freqinterleaver_cc
+ - dtv_dvbt2_pilotgenerator_cc
+ - dtv_dvbt2_paprtr_cc
+ - dtv_dvbt2_p1insertion_cc
+ - dtv_dvbt2_miso_cc
+ - DVB-S2:
+ - dtv_dvbs2_interleaver_bb
+ - dtv_dvbs2_modulator_bc
+ - dtv_dvbs2_physical_cc
+ - DVB-T:
+ - dtv_dvbt_energy_dispersal
+ - dtv_dvbt_reed_solomon_enc
+ - dtv_dvbt_convolutional_interleaver
+ - dtv_dvbt_inner_coder
+ - dtv_dvbt_bit_inner_interleaver
+ - dtv_dvbt_symbol_inner_interleaver
+ - dtv_dvbt_map
+ - dtv_dvbt_reference_signals
+ - dtv_dvbt_ofdm_sym_acquisition
+ - dtv_dvbt_demod_reference_signals
+ - dtv_dvbt_demap
+ - dtv_dvbt_bit_inner_deinterleaver
+ - dtv_dvbt_viterbi_decoder
+ - dtv_dvbt_convolutional_deinterleaver
+ - dtv_dvbt_reed_solomon_dec
+ - dtv_dvbt_energy_descramble
+ - ITU-T J.83B:
+ - dtv_catv_transport_framing_enc_bb
+ - dtv_catv_reed_solomon_enc_bb
+ - dtv_catv_randomizer_bb
+ - dtv_catv_frame_sync_enc_bb
+ - dtv_catv_trellis_enc_bb
diff --git a/gr-dtv/grc/dtv_atsc_deinterleaver.block.yml b/gr-dtv/grc/dtv_atsc_deinterleaver.block.yml
new file mode 100644
index 0000000000..5384809778
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_deinterleaver.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_deinterleaver
+label: ATSC Deinterleaver
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_deinterleaver()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_deinterleaver.xml b/gr-dtv/grc/dtv_atsc_deinterleaver.xml
deleted file mode 100644
index 051ea77554..0000000000
--- a/gr-dtv/grc/dtv_atsc_deinterleaver.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Deinterleaver
-###################################################
- -->
-<block>
- <name>ATSC Deinterleaver</name>
- <key>dtv_atsc_deinterleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_deinterleaver()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_depad.block.yml b/gr-dtv/grc/dtv_atsc_depad.block.yml
new file mode 100644
index 0000000000..463de2018b
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_depad.block.yml
@@ -0,0 +1,17 @@
+id: dtv_atsc_depad
+label: ATSC Depad
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_depad()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_depad.xml b/gr-dtv/grc/dtv_atsc_depad.xml
deleted file mode 100644
index 95a1380914..0000000000
--- a/gr-dtv/grc/dtv_atsc_depad.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Depad
-###################################################
- -->
-<block>
- <name>ATSC Depad</name>
- <key>dtv_atsc_depad</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_depad()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_derandomizer.block.yml b/gr-dtv/grc/dtv_atsc_derandomizer.block.yml
new file mode 100644
index 0000000000..c64e7032fe
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_derandomizer.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_derandomizer
+label: ATSC Derandomizer
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_derandomizer()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_derandomizer.xml b/gr-dtv/grc/dtv_atsc_derandomizer.xml
deleted file mode 100644
index 5473f47e8c..0000000000
--- a/gr-dtv/grc/dtv_atsc_derandomizer.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Derandomizer
-###################################################
- -->
-<block>
- <name>ATSC Derandomizer</name>
- <key>dtv_atsc_derandomizer</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_derandomizer()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_equalizer.block.yml b/gr-dtv/grc/dtv_atsc_equalizer.block.yml
new file mode 100644
index 0000000000..e6b5b3c032
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_equalizer.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_equalizer
+label: ATSC Equalizer
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_equalizer()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_equalizer.xml b/gr-dtv/grc/dtv_atsc_equalizer.xml
deleted file mode 100644
index 7faf65fd22..0000000000
--- a/gr-dtv/grc/dtv_atsc_equalizer.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Equalizer
-###################################################
- -->
-<block>
- <name>ATSC Equalizer</name>
- <key>dtv_atsc_equalizer</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_equalizer()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_field_sync_mux.block.yml b/gr-dtv/grc/dtv_atsc_field_sync_mux.block.yml
new file mode 100644
index 0000000000..767d56d5d1
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_field_sync_mux.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_field_sync_mux
+label: ATSC Field Sync Mux
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 1024
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_field_sync_mux()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_field_sync_mux.xml b/gr-dtv/grc/dtv_atsc_field_sync_mux.xml
deleted file mode 100644
index 0037a9340e..0000000000
--- a/gr-dtv/grc/dtv_atsc_field_sync_mux.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Field Sync Mux
-###################################################
- -->
-<block>
- <name>ATSC Field Sync Mux</name>
- <key>dtv_atsc_field_sync_mux</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_field_sync_mux()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>1024</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_fpll.block.yml b/gr-dtv/grc/dtv_atsc_fpll.block.yml
new file mode 100644
index 0000000000..39568a8535
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_fpll.block.yml
@@ -0,0 +1,21 @@
+id: dtv_atsc_fpll
+label: ATSC Receiver FPLL
+
+parameters:
+- id: rate
+ label: Sample Rate
+ dtype: float
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_fpll(${rate})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_fpll.xml b/gr-dtv/grc/dtv_atsc_fpll.xml
deleted file mode 100644
index 00d28ce8b6..0000000000
--- a/gr-dtv/grc/dtv_atsc_fpll.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Receiver PLL
-###################################################
- -->
-<block>
- <name>ATSC Receiver FPLL</name>
- <key>dtv_atsc_fpll</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_fpll($rate)</make>
-
- <param>
- <name>Sample Rate</name>
- <key>rate</key>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_fs_checker.block.yml b/gr-dtv/grc/dtv_atsc_fs_checker.block.yml
new file mode 100644
index 0000000000..fbf97a9255
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_fs_checker.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_fs_checker
+label: ATSC Field Sync Checker
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_fs_checker()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_fs_checker.xml b/gr-dtv/grc/dtv_atsc_fs_checker.xml
deleted file mode 100644
index 4c733d53b9..0000000000
--- a/gr-dtv/grc/dtv_atsc_fs_checker.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Field Sync Checker
-###################################################
- -->
-<block>
- <name>ATSC Field Sync Checker</name>
- <key>dtv_atsc_fs_checker</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_fs_checker()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_interleaver.block.yml b/gr-dtv/grc/dtv_atsc_interleaver.block.yml
new file mode 100644
index 0000000000..65f769d0e6
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_interleaver.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_interleaver
+label: ATSC Interleaver
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_interleaver()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_interleaver.xml b/gr-dtv/grc/dtv_atsc_interleaver.xml
deleted file mode 100644
index 3b1045c580..0000000000
--- a/gr-dtv/grc/dtv_atsc_interleaver.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Interleaver
-###################################################
- -->
-<block>
- <name>ATSC Interleaver</name>
- <key>dtv_atsc_interleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_interleaver()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_pad.block.yml b/gr-dtv/grc/dtv_atsc_pad.block.yml
new file mode 100644
index 0000000000..a25d866f79
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_pad.block.yml
@@ -0,0 +1,17 @@
+id: dtv_atsc_pad
+label: ATSC Pad
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_pad()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_pad.xml b/gr-dtv/grc/dtv_atsc_pad.xml
deleted file mode 100644
index 87b8921e35..0000000000
--- a/gr-dtv/grc/dtv_atsc_pad.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Pad
-###################################################
- -->
-<block>
- <name>ATSC Pad</name>
- <key>dtv_atsc_pad</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_pad()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_randomizer.block.yml b/gr-dtv/grc/dtv_atsc_randomizer.block.yml
new file mode 100644
index 0000000000..909fad6ec3
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_randomizer.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_randomizer
+label: ATSC Randomizer
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_randomizer()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_randomizer.xml b/gr-dtv/grc/dtv_atsc_randomizer.xml
deleted file mode 100644
index 73c0991e1e..0000000000
--- a/gr-dtv/grc/dtv_atsc_randomizer.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Randomizer
-###################################################
- -->
-<block>
- <name>ATSC Randomizer</name>
- <key>dtv_atsc_randomizer</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_randomizer()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_rs_decoder.block.yml b/gr-dtv/grc/dtv_atsc_rs_decoder.block.yml
new file mode 100644
index 0000000000..b65eb33fca
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_rs_decoder.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_rs_decoder
+label: "ATSC Reed\u2013Solomon Decoder"
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_rs_decoder()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_rs_decoder.xml b/gr-dtv/grc/dtv_atsc_rs_decoder.xml
deleted file mode 100644
index 18a3053f00..0000000000
--- a/gr-dtv/grc/dtv_atsc_rs_decoder.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Reed–Solomon Decoder
-###################################################
- -->
-<block>
- <name>ATSC Reed–Solomon Decoder</name>
- <key>dtv_atsc_rs_decoder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_rs_decoder()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_rs_encoder.block.yml b/gr-dtv/grc/dtv_atsc_rs_encoder.block.yml
new file mode 100644
index 0000000000..04d1ff3683
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_rs_encoder.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_rs_encoder
+label: ATSC RS Encoder
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_rs_encoder()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_rs_encoder.xml b/gr-dtv/grc/dtv_atsc_rs_encoder.xml
deleted file mode 100644
index af35523e05..0000000000
--- a/gr-dtv/grc/dtv_atsc_rs_encoder.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Reed-Solomom Encoder
-###################################################
- -->
-<block>
- <name>ATSC RS Encoder</name>
- <key>dtv_atsc_rs_encoder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_rs_encoder()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_rx.block.yml b/gr-dtv/grc/dtv_atsc_rx.block.yml
new file mode 100644
index 0000000000..499c196e20
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_rx.block.yml
@@ -0,0 +1,24 @@
+id: dtv_atsc_rx
+label: ATSC Receive Pipeline
+
+parameters:
+- id: rate
+ label: Input Rate
+ dtype: float
+- id: sps
+ label: Oversampling Ratio
+ dtype: float
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_rx(${rate},${sps})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_rx.xml b/gr-dtv/grc/dtv_atsc_rx.xml
deleted file mode 100644
index 900769609f..0000000000
--- a/gr-dtv/grc/dtv_atsc_rx.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Receive Pipeline
-###################################################
- -->
-<block>
- <name>ATSC Receive Pipeline</name>
- <key>dtv_atsc_rx</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_rx($rate,$sps)</make>
-
- <param>
- <name>Input Rate</name>
- <key>rate</key>
- <type>float</type>
- </param>
-
- <param>
- <name>Oversampling Ratio</name>
- <key>sps</key>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_rx_filter.block.yml b/gr-dtv/grc/dtv_atsc_rx_filter.block.yml
new file mode 100644
index 0000000000..0a352727ce
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_rx_filter.block.yml
@@ -0,0 +1,24 @@
+id: dtv_atsc_rx_filter
+label: ATSC RX Filter
+
+parameters:
+- id: rate
+ label: Input Rate
+ dtype: float
+- id: sps
+ label: Oversampling Ratio
+ dtype: float
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_rx_filter(${rate},${sps})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_rx_filter.xml b/gr-dtv/grc/dtv_atsc_rx_filter.xml
deleted file mode 100644
index bc8bf0914a..0000000000
--- a/gr-dtv/grc/dtv_atsc_rx_filter.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC RX Filter
-###################################################
- -->
-<block>
- <name>ATSC RX Filter</name>
- <key>dtv_atsc_rx_filter</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_rx_filter($rate,$sps)</make>
-
- <param>
- <name>Input Rate</name>
- <key>rate</key>
- <type>float</type>
- </param>
-
- <param>
- <name>Oversampling Ratio</name>
- <key>sps</key>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_sync.block.yml b/gr-dtv/grc/dtv_atsc_sync.block.yml
new file mode 100644
index 0000000000..b4a3ac3d99
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_sync.block.yml
@@ -0,0 +1,22 @@
+id: dtv_atsc_sync
+label: ATSC Receiver SYNC
+
+parameters:
+- id: rate
+ label: Sample Rate
+ dtype: float
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_sync(${rate})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_sync.xml b/gr-dtv/grc/dtv_atsc_sync.xml
deleted file mode 100644
index a9528f84a0..0000000000
--- a/gr-dtv/grc/dtv_atsc_sync.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Receiver Sync
-###################################################
- -->
-<block>
- <name>ATSC Receiver SYNC</name>
- <key>dtv_atsc_sync</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_sync($rate)</make>
-
- <param>
- <name>Sample Rate</name>
- <key>rate</key>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_trellis_encoder.block.yml b/gr-dtv/grc/dtv_atsc_trellis_encoder.block.yml
new file mode 100644
index 0000000000..417e3f19d6
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_trellis_encoder.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_trellis_encoder
+label: ATSC Trellis Encoder
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_trellis_encoder()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_trellis_encoder.xml b/gr-dtv/grc/dtv_atsc_trellis_encoder.xml
deleted file mode 100644
index 2189075008..0000000000
--- a/gr-dtv/grc/dtv_atsc_trellis_encoder.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Trellis Encoder
-###################################################
- -->
-<block>
- <name>ATSC Trellis Encoder</name>
- <key>dtv_atsc_trellis_encoder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_trellis_encoder()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>256</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_atsc_viterbi_decoder.block.yml b/gr-dtv/grc/dtv_atsc_viterbi_decoder.block.yml
new file mode 100644
index 0000000000..bb77b072be
--- /dev/null
+++ b/gr-dtv/grc/dtv_atsc_viterbi_decoder.block.yml
@@ -0,0 +1,18 @@
+id: dtv_atsc_viterbi_decoder
+label: ATSC Viterbi Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 4096
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 256
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.atsc_viterbi_decoder()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_atsc_viterbi_decoder.xml b/gr-dtv/grc/dtv_atsc_viterbi_decoder.xml
deleted file mode 100644
index 23d58d08af..0000000000
--- a/gr-dtv/grc/dtv_atsc_viterbi_decoder.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ATSC Equalizer
-###################################################
- -->
-<block>
- <name>ATSC Viterbi Decoder</name>
- <key>dtv_atsc_viterbi_decoder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.atsc_viterbi_decoder()</make>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>4096</vlen>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>256</vlen>
- </source>
-
-</block>
diff --git a/gr-dtv/grc/dtv_block_tree.xml b/gr-dtv/grc/dtv_block_tree.xml
deleted file mode 100644
index 8dcbd18127..0000000000
--- a/gr-dtv/grc/dtv_block_tree.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2014,2015,2016 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR DTV blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Digital Television</name>
- <cat>
- <name>ATSC</name>
- <block>dtv_atsc_deinterleaver</block>
- <block>dtv_atsc_depad</block>
- <block>dtv_atsc_derandomizer</block>
- <block>dtv_atsc_equalizer</block>
- <block>dtv_atsc_fpll</block>
- <block>dtv_atsc_fs_checker</block>
- <block>dtv_atsc_rs_decoder</block>
- <block>dtv_atsc_rx</block>
- <block>dtv_atsc_rx_filter</block>
- <block>dtv_atsc_sync</block>
- <block>dtv_atsc_viterbi_decoder</block>
- <block>dtv_atsc_pad</block>
- <block>dtv_atsc_randomizer</block>
- <block>dtv_atsc_rs_encoder</block>
- <block>dtv_atsc_interleaver</block>
- <block>dtv_atsc_trellis_encoder</block>
- <block>dtv_atsc_field_sync_mux</block>
- </cat>
- <cat>
- <name>DVB</name>
- <block>dtv_dvb_bbheader_bb</block>
- <block>dtv_dvb_bbscrambler_bb</block>
- <block>dtv_dvb_bch_bb</block>
- <block>dtv_dvb_ldpc_bb</block>
- </cat>
- <cat>
- <name>DVB-T2</name>
- <block>dtv_dvbt2_interleaver_bb</block>
- <block>dtv_dvbt2_modulator_bc</block>
- <block>dtv_dvbt2_cellinterleaver_cc</block>
- <block>dtv_dvbt2_framemapper_cc</block>
- <block>dtv_dvbt2_freqinterleaver_cc</block>
- <block>dtv_dvbt2_pilotgenerator_cc</block>
- <block>dtv_dvbt2_paprtr_cc</block>
- <block>dtv_dvbt2_p1insertion_cc</block>
- <block>dtv_dvbt2_miso_cc</block>
- </cat>
- <cat>
- <name>DVB-S2</name>
- <block>dtv_dvbs2_interleaver_bb</block>
- <block>dtv_dvbs2_modulator_bc</block>
- <block>dtv_dvbs2_physical_cc</block>
- </cat>
- <cat>
- <name>DVB-T</name>
- <block>dtv_dvbt_energy_dispersal</block>
- <block>dtv_dvbt_reed_solomon_enc</block>
- <block>dtv_dvbt_convolutional_interleaver</block>
- <block>dtv_dvbt_inner_coder</block>
- <block>dtv_dvbt_bit_inner_interleaver</block>
- <block>dtv_dvbt_symbol_inner_interleaver</block>
- <block>dtv_dvbt_map</block>
- <block>dtv_dvbt_reference_signals</block>
- <block>dtv_dvbt_ofdm_sym_acquisition</block>
- <block>dtv_dvbt_demod_reference_signals</block>
- <block>dtv_dvbt_demap</block>
- <block>dtv_dvbt_bit_inner_deinterleaver</block>
- <block>dtv_dvbt_viterbi_decoder</block>
- <block>dtv_dvbt_convolutional_deinterleaver</block>
- <block>dtv_dvbt_reed_solomon_dec</block>
- <block>dtv_dvbt_energy_descramble</block>
- </cat>
- <cat>
- <name>ITU-T J.83B</name>
- <block>dtv_catv_transport_framing_enc_bb</block>
- <block>dtv_catv_reed_solomon_enc_bb</block>
- <block>dtv_catv_randomizer_bb</block>
- <block>dtv_catv_frame_sync_enc_bb</block>
- <block>dtv_catv_trellis_enc_bb</block>
- </cat>
- </cat>
-</cat>
diff --git a/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.block.yml b/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.block.yml
new file mode 100644
index 0000000000..d629a16694
--- /dev/null
+++ b/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.block.yml
@@ -0,0 +1,29 @@
+id: dtv_catv_frame_sync_enc_bb
+label: Frame Sync Encoder
+
+parameters:
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [CATV_MOD_64QAM, CATV_MOD_256QAM]
+ option_labels: [64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.CATV_MOD_64QAM, dtv.CATV_MOD_256QAM]
+- id: ctrlword
+ label: Control Word
+ dtype: int
+ default: '6'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.catv_frame_sync_enc_bb(${constellation.val}, ${ctrlword})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.xml b/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.xml
deleted file mode 100644
index 11f05164b3..0000000000
--- a/gr-dtv/grc/dtv_catv_frame_sync_enc_bb.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Frame Sync Encoder
-###################################################
- -->
-<block>
- <name>Frame Sync Encoder</name>
- <key>dtv_catv_frame_sync_enc_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.catv_frame_sync_enc_bb($constellation.val, $ctrlword)</make>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>64QAM</name>
- <key>CATV_MOD_64QAM</key>
- <opt>val:dtv.CATV_MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>CATV_MOD_256QAM</key>
- <opt>val:dtv.CATV_MOD_256QAM</opt>
- </option>
- </param>
- <param>
- <name>Control Word</name>
- <key>ctrlword</key>
- <value>6</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_catv_randomizer_bb.block.yml b/gr-dtv/grc/dtv_catv_randomizer_bb.block.yml
new file mode 100644
index 0000000000..1be423454d
--- /dev/null
+++ b/gr-dtv/grc/dtv_catv_randomizer_bb.block.yml
@@ -0,0 +1,25 @@
+id: dtv_catv_randomizer_bb
+label: Randomizer
+
+parameters:
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [CATV_MOD_64QAM, CATV_MOD_256QAM]
+ option_labels: [64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.CATV_MOD_64QAM, dtv.CATV_MOD_256QAM]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.catv_randomizer_bb(${constellation.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_catv_randomizer_bb.xml b/gr-dtv/grc/dtv_catv_randomizer_bb.xml
deleted file mode 100644
index d0da5a2516..0000000000
--- a/gr-dtv/grc/dtv_catv_randomizer_bb.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Randomizer
-###################################################
- -->
-<block>
- <name>Randomizer</name>
- <key>dtv_catv_randomizer_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.catv_randomizer_bb($constellation.val)</make>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>64QAM</name>
- <key>CATV_MOD_64QAM</key>
- <opt>val:dtv.CATV_MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>CATV_MOD_256QAM</key>
- <opt>val:dtv.CATV_MOD_256QAM</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.block.yml b/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.block.yml
new file mode 100644
index 0000000000..fa51b3bab8
--- /dev/null
+++ b/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.block.yml
@@ -0,0 +1,16 @@
+id: dtv_catv_reed_solomon_enc_bb
+label: Reed-Solomon Encoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.catv_reed_solomon_enc_bb()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.xml b/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.xml
deleted file mode 100644
index a5dfdc2a5a..0000000000
--- a/gr-dtv/grc/dtv_catv_reed_solomon_enc_bb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Reed Solomon Encoder
-###################################################
- -->
-<block>
- <name>Reed-Solomon Encoder</name>
- <key>dtv_catv_reed_solomon_enc_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.catv_reed_solomon_enc_bb()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.block.yml b/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.block.yml
new file mode 100644
index 0000000000..3f269d1704
--- /dev/null
+++ b/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.block.yml
@@ -0,0 +1,16 @@
+id: dtv_catv_transport_framing_enc_bb
+label: Transport Framing Encoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.catv_transport_framing_enc_bb()
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.xml b/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.xml
deleted file mode 100644
index d0b6bf382b..0000000000
--- a/gr-dtv/grc/dtv_catv_transport_framing_enc_bb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Transport Framing Encoder
-###################################################
- -->
-<block>
- <name>Transport Framing Encoder</name>
- <key>dtv_catv_transport_framing_enc_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.catv_transport_framing_enc_bb()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_catv_trellis_enc_bb.block.yml b/gr-dtv/grc/dtv_catv_trellis_enc_bb.block.yml
new file mode 100644
index 0000000000..aafba8ed2d
--- /dev/null
+++ b/gr-dtv/grc/dtv_catv_trellis_enc_bb.block.yml
@@ -0,0 +1,25 @@
+id: dtv_catv_trellis_enc_bb
+label: Trellis Encoder
+
+parameters:
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [CATV_MOD_64QAM, CATV_MOD_256QAM]
+ option_labels: [64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.CATV_MOD_64QAM, dtv.CATV_MOD_256QAM]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.catv_trellis_enc_bb(${constellation.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_catv_trellis_enc_bb.xml b/gr-dtv/grc/dtv_catv_trellis_enc_bb.xml
deleted file mode 100644
index a1d2d4619c..0000000000
--- a/gr-dtv/grc/dtv_catv_trellis_enc_bb.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Trellis Encoder
-###################################################
- -->
-<block>
- <name>Trellis Encoder</name>
- <key>dtv_catv_trellis_enc_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.catv_trellis_enc_bb($constellation.val)</make>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>64QAM</name>
- <key>CATV_MOD_64QAM</key>
- <opt>val:dtv.CATV_MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>CATV_MOD_256QAM</key>
- <opt>val:dtv.CATV_MOD_256QAM</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvb_bbheader_bb.block.yml b/gr-dtv/grc/dtv_dvb_bbheader_bb.block.yml
new file mode 100644
index 0000000000..7f51427af5
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvb_bbheader_bb.block.yml
@@ -0,0 +1,154 @@
+id: dtv_dvb_bbheader_bb
+label: BBheader
+
+parameters:
+- id: standard
+ label: Standard
+ dtype: enum
+ options: [STANDARD_DVBS2, STANDARD_DVBT2]
+ option_labels: [DVB-S2, DVB-T2]
+ option_attributes:
+ hide_dvbs2: ['', all]
+ hide_dvbt2: [all, '']
+ val: [dtv.STANDARD_DVBS2, dtv.STANDARD_DVBT2]
+- id: framesize1
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ hide_medium: [all, all]
+ hide_normal: ['', all]
+ hide_short: [all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbt2 }
+- id: framesize2
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbs2 }
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5, dtv.C5_6]
+ hide: ${ (framesize1.hide_normal if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+ hide: ${ (framesize1.hide_short if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ (framesize2.hide_normal if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate4
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ (framesize2.hide_medium if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate5
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ (framesize2.hide_short if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rolloff
+ label: Rolloff factor
+ dtype: enum
+ options: [RO_0_35, RO_0_25, RO_0_20, RO_0_15, RO_0_10, RO_0_05]
+ option_labels: ['0.35', '0.25', '0.20', '0.15', '0.10', '0.05']
+ option_attributes:
+ val: [dtv.RO_0_35, dtv.RO_0_25, dtv.RO_0_20, dtv.RO_0_15, dtv.RO_0_10, dtv.RO_0_05]
+ hide: ${ standard.hide_dvbs2 }
+- id: mode
+ label: Baseband Framing Mode
+ dtype: enum
+ options: [INPUTMODE_NORMAL, INPUTMODE_HIEFF]
+ option_labels: [Normal, High Efficiency]
+ option_attributes:
+ val: [dtv.INPUTMODE_NORMAL, dtv.INPUTMODE_HIEFF]
+ hide: ${ standard.hide_dvbt2 }
+- id: inband
+ label: In-band Signalling
+ dtype: enum
+ options: [INBAND_OFF, INBAND_ON]
+ option_labels: ['Off', Type B]
+ option_attributes:
+ hide_rate: [all, '']
+ val: [dtv.INBAND_OFF, dtv.INBAND_ON]
+ hide: ${ standard.hide_dvbt2 }
+- id: fecblocks
+ label: FEC blocks per frame
+ dtype: int
+ default: '168'
+ hide: ${ inband.hide_rate }
+- id: tsrate
+ label: Transport Stream Rate
+ dtype: int
+ default: '4000000'
+ hide: ${ inband.hide_rate }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvb_bbheader_bb(${standard.val}, \n% if str(standard) == 'STANDARD_DVBT2':\n\
+ ${framesize1.val}, \n% else:\n${framesize2.val}, \n% endif\n% if str(standard)\
+ \ == 'STANDARD_DVBT2':\n% if str(framesize1) == 'FECFRAME_NORMAL':\n${rate1.val},\
+ \ \n% else:\n${rate2.val}, \n% endif\n% else:\n% if str(framesize2) == 'FECFRAME_NORMAL':\n\
+ ${rate3.val}, \n% elif str(framesize2) == 'FECFRAME_MEDIUM':\n${rate4.val},\
+ \ \n% else:\n${rate5.val}, \n% endif\n% endif\n${rolloff.val}, ${mode.val},\
+ \ ${inband.val}, ${fecblocks}, ${tsrate})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvb_bbheader_bb.xml b/gr-dtv/grc/dtv_dvb_bbheader_bb.xml
deleted file mode 100644
index b18b87b604..0000000000
--- a/gr-dtv/grc/dtv_dvb_bbheader_bb.xml
+++ /dev/null
@@ -1,596 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB Baseband Header
-###################################################
- -->
-<block>
- <name>BBheader</name>
- <key>dtv_dvb_bbheader_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvb_bbheader_bb($standard.val, #slurp
-#if str($standard) == 'STANDARD_DVBT2'
-$framesize1.val, #slurp
-#else
-$framesize2.val, #slurp
-#end if
-#if str($standard) == 'STANDARD_DVBT2'
-#if str($framesize1) == 'FECFRAME_NORMAL'
-$rate1.val, #slurp
-#else
-$rate2.val, #slurp
-#end if
-#else
-#if str($framesize2) == 'FECFRAME_NORMAL'
-$rate3.val, #slurp
-#else if str($framesize2) == 'FECFRAME_MEDIUM'
-$rate4.val, #slurp
-#else
-$rate5.val, #slurp
-#end if
-#end if
-$rolloff.val, $mode.val, $inband.val, $fecblocks, $tsrate)</make>
- <param>
- <name>Standard</name>
- <key>standard</key>
- <type>enum</type>
- <option>
- <name>DVB-S2</name>
- <key>STANDARD_DVBS2</key>
- <opt>val:dtv.STANDARD_DVBS2</opt>
- <opt>hide_dvbs2:</opt>
- <opt>hide_dvbt2:all</opt>
- </option>
- <option>
- <name>DVB-T2</name>
- <key>STANDARD_DVBT2</key>
- <opt>val:dtv.STANDARD_DVBT2</opt>
- <opt>hide_dvbs2:all</opt>
- <opt>hide_dvbt2:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize1</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize2</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_normal else 'all'</hide>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_short else 'all'</hide>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_normal else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate4</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_medium else 'all'</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate5</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_short else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <param>
- <name>Rolloff factor</name>
- <key>rolloff</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>0.35</name>
- <key>RO_0_35</key>
- <opt>val:dtv.RO_0_35</opt>
- </option>
- <option>
- <name>0.25</name>
- <key>RO_0_25</key>
- <opt>val:dtv.RO_0_25</opt>
- </option>
- <option>
- <name>0.20</name>
- <key>RO_0_20</key>
- <opt>val:dtv.RO_0_20</opt>
- </option>
- <option>
- <name>0.15</name>
- <key>RO_0_15</key>
- <opt>val:dtv.RO_0_15</opt>
- </option>
- <option>
- <name>0.10</name>
- <key>RO_0_10</key>
- <opt>val:dtv.RO_0_10</opt>
- </option>
- <option>
- <name>0.05</name>
- <key>RO_0_05</key>
- <opt>val:dtv.RO_0_05</opt>
- </option>
- </param>
- <param>
- <name>Baseband Framing Mode</name>
- <key>mode</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Normal</name>
- <key>INPUTMODE_NORMAL</key>
- <opt>val:dtv.INPUTMODE_NORMAL</opt>
- </option>
- <option>
- <name>High Efficiency</name>
- <key>INPUTMODE_HIEFF</key>
- <opt>val:dtv.INPUTMODE_HIEFF</opt>
- </option>
- </param>
- <param>
- <name>In-band Signalling</name>
- <key>inband</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Off</name>
- <key>INBAND_OFF</key>
- <opt>val:dtv.INBAND_OFF</opt>
- <opt>hide_rate:all</opt>
- </option>
- <option>
- <name>Type B</name>
- <key>INBAND_ON</key>
- <opt>val:dtv.INBAND_ON</opt>
- <opt>hide_rate:</opt>
- </option>
- </param>
- <param>
- <name>FEC blocks per frame</name>
- <key>fecblocks</key>
- <value>168</value>
- <type>int</type>
- <hide>$inband.hide_rate</hide>
- </param>
- <param>
- <name>Transport Stream Rate</name>
- <key>tsrate</key>
- <value>4000000</value>
- <type>int</type>
- <hide>$inband.hide_rate</hide>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvb_bbscrambler_bb.block.yml b/gr-dtv/grc/dtv_dvb_bbscrambler_bb.block.yml
new file mode 100644
index 0000000000..c1e2a7685b
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvb_bbscrambler_bb.block.yml
@@ -0,0 +1,118 @@
+id: dtv_dvb_bbscrambler_bb
+label: BBscrambler
+
+parameters:
+- id: standard
+ label: Standard
+ dtype: enum
+ options: [STANDARD_DVBS2, STANDARD_DVBT2]
+ option_labels: [DVB-S2, DVB-T2]
+ option_attributes:
+ hide_dvbs2: ['', all]
+ hide_dvbt2: [all, '']
+ val: [dtv.STANDARD_DVBS2, dtv.STANDARD_DVBT2]
+- id: framesize1
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ hide_medium: [all, all]
+ hide_normal: ['', all]
+ hide_short: [all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbt2 }
+- id: framesize2
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbs2 }
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5, dtv.C5_6]
+ hide: ${ (framesize1.hide_normal if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+ hide: ${ (framesize1.hide_short if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ (framesize2.hide_normal if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate4
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ (framesize2.hide_medium if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate5
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ (framesize2.hide_short if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvb_bbscrambler_bb(${standard.val}, \n% if str(standard) == 'STANDARD_DVBT2':\n\
+ ${framesize1.val}, \n% else:\n${framesize2.val}, \n% endif\n% if str(standard)\
+ \ == 'STANDARD_DVBT2':\n% if str(framesize1) == 'FECFRAME_NORMAL':\n${rate1.val}\n\
+ % else:\n${rate2.val}\n% endif\n% else:\n% if str(framesize2) == 'FECFRAME_NORMAL':\n\
+ ${rate3.val}\n% elif str(framesize2) == 'FECFRAME_MEDIUM':\n${rate4.val}\n\
+ % else:\n${rate5.val}\n% endif\n% endif\n)"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvb_bbscrambler_bb.xml b/gr-dtv/grc/dtv_dvb_bbscrambler_bb.xml
deleted file mode 100644
index 2fba572d39..0000000000
--- a/gr-dtv/grc/dtv_dvb_bbscrambler_bb.xml
+++ /dev/null
@@ -1,512 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB Baseband Scrambler
-###################################################
- -->
-<block>
- <name>BBscrambler</name>
- <key>dtv_dvb_bbscrambler_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvb_bbscrambler_bb($standard.val, #slurp
-#if str($standard) == 'STANDARD_DVBT2'
-$framesize1.val, #slurp
-#else
-$framesize2.val, #slurp
-#end if
-#if str($standard) == 'STANDARD_DVBT2'
-#if str($framesize1) == 'FECFRAME_NORMAL'
-$rate1.val#slurp
-#else
-$rate2.val#slurp
-#end if
-#else
-#if str($framesize2) == 'FECFRAME_NORMAL'
-$rate3.val#slurp
-#else if str($framesize2) == 'FECFRAME_MEDIUM'
-$rate4.val#slurp
-#else
-$rate5.val#slurp
-#end if
-#end if
-)</make>
- <param>
- <name>Standard</name>
- <key>standard</key>
- <type>enum</type>
- <option>
- <name>DVB-S2</name>
- <key>STANDARD_DVBS2</key>
- <opt>val:dtv.STANDARD_DVBS2</opt>
- <opt>hide_dvbs2:</opt>
- <opt>hide_dvbt2:all</opt>
- </option>
- <option>
- <name>DVB-T2</name>
- <key>STANDARD_DVBT2</key>
- <opt>val:dtv.STANDARD_DVBT2</opt>
- <opt>hide_dvbs2:all</opt>
- <opt>hide_dvbt2:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize1</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize2</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_normal else 'all'</hide>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_short else 'all'</hide>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_normal else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate4</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_medium else 'all'</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate5</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_short else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvb_bch_bb.block.yml b/gr-dtv/grc/dtv_dvb_bch_bb.block.yml
new file mode 100644
index 0000000000..bfde8654fa
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvb_bch_bb.block.yml
@@ -0,0 +1,118 @@
+id: dtv_dvb_bch_bb
+label: BCH Encoder
+
+parameters:
+- id: standard
+ label: Standard
+ dtype: enum
+ options: [STANDARD_DVBS2, STANDARD_DVBT2]
+ option_labels: [DVB-S2, DVB-T2]
+ option_attributes:
+ hide_dvbs2: ['', all]
+ hide_dvbt2: [all, '']
+ val: [dtv.STANDARD_DVBS2, dtv.STANDARD_DVBT2]
+- id: framesize1
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ hide_medium: [all, all]
+ hide_normal: ['', all]
+ hide_short: [all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbt2 }
+- id: framesize2
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbs2 }
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5, dtv.C5_6]
+ hide: ${ (framesize1.hide_normal if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+ hide: ${ (framesize1.hide_short if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ (framesize2.hide_normal if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate4
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ (framesize2.hide_medium if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate5
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ (framesize2.hide_short if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvb_bch_bb(${standard.val}, \n% if str(standard) == 'STANDARD_DVBT2':\n\
+ ${framesize1.val}, \n% else:\n${framesize2.val}, \n% endif\n% if str(standard)\
+ \ == 'STANDARD_DVBT2':\n% if str(framesize1) == 'FECFRAME_NORMAL':\n${rate1.val}\n\
+ % else:\n${rate2.val}\n% endif\n% else:\n% if str(framesize2) == 'FECFRAME_NORMAL':\n\
+ ${rate3.val}\n% elif str(framesize2) == 'FECFRAME_MEDIUM':\n${rate4.val}\n\
+ % else:\n${rate5.val}\n% endif\n% endif\n)"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvb_bch_bb.xml b/gr-dtv/grc/dtv_dvb_bch_bb.xml
deleted file mode 100644
index 01b446b7ca..0000000000
--- a/gr-dtv/grc/dtv_dvb_bch_bb.xml
+++ /dev/null
@@ -1,512 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB BCH Encoder
-###################################################
- -->
-<block>
- <name>BCH Encoder</name>
- <key>dtv_dvb_bch_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvb_bch_bb($standard.val, #slurp
-#if str($standard) == 'STANDARD_DVBT2'
-$framesize1.val, #slurp
-#else
-$framesize2.val, #slurp
-#end if
-#if str($standard) == 'STANDARD_DVBT2'
-#if str($framesize1) == 'FECFRAME_NORMAL'
-$rate1.val#slurp
-#else
-$rate2.val#slurp
-#end if
-#else
-#if str($framesize2) == 'FECFRAME_NORMAL'
-$rate3.val#slurp
-#else if str($framesize2) == 'FECFRAME_MEDIUM'
-$rate4.val#slurp
-#else
-$rate5.val#slurp
-#end if
-#end if
-)</make>
- <param>
- <name>Standard</name>
- <key>standard</key>
- <type>enum</type>
- <option>
- <name>DVB-S2</name>
- <key>STANDARD_DVBS2</key>
- <opt>val:dtv.STANDARD_DVBS2</opt>
- <opt>hide_dvbs2:</opt>
- <opt>hide_dvbt2:all</opt>
- </option>
- <option>
- <name>DVB-T2</name>
- <key>STANDARD_DVBT2</key>
- <opt>val:dtv.STANDARD_DVBT2</opt>
- <opt>hide_dvbs2:all</opt>
- <opt>hide_dvbt2:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize1</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize2</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_normal else 'all'</hide>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_short else 'all'</hide>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_normal else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate4</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_medium else 'all'</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate5</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_short else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvb_ldpc_bb.block.yml b/gr-dtv/grc/dtv_dvb_ldpc_bb.block.yml
new file mode 100644
index 0000000000..435e039d51
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvb_ldpc_bb.block.yml
@@ -0,0 +1,126 @@
+id: dtv_dvb_ldpc_bb
+label: LDPC Encoder
+
+parameters:
+- id: standard
+ label: Standard
+ dtype: enum
+ options: [STANDARD_DVBS2, STANDARD_DVBT2]
+ option_labels: [DVB-S2, DVB-T2]
+ option_attributes:
+ hide_dvbs2: ['', all]
+ hide_dvbt2: [all, '']
+ val: [dtv.STANDARD_DVBS2, dtv.STANDARD_DVBT2]
+- id: framesize1
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ hide_medium: [all, all]
+ hide_normal: ['', all]
+ hide_short: [all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbt2 }
+- id: framesize2
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+ hide: ${ standard.hide_dvbs2 }
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5, dtv.C5_6]
+ hide: ${ (framesize1.hide_normal if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+ hide: ${ (framesize1.hide_short if str(standard) == 'STANDARD_DVBT2' else 'all')
+ }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ (framesize2.hide_normal if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate4
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ (framesize2.hide_medium if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: rate5
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ (framesize2.hide_short if str(standard) == 'STANDARD_DVBS2' else 'all')
+ }
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_OTHER, MOD_128APSK]
+ option_labels: [Other, 128APSK]
+ option_attributes:
+ val: [dtv.MOD_OTHER, dtv.MOD_128APSK]
+ hide: ${ standard.hide_dvbs2 }
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvb_ldpc_bb(${standard.val}, \n% if str(standard) == 'STANDARD_DVBT2':\n\
+ ${framesize1.val}, \n% else:\n${framesize2.val}, \n% endif\n% if str(standard)\
+ \ == 'STANDARD_DVBT2':\n% if str(framesize1) == 'FECFRAME_NORMAL':\n${rate1.val},\
+ \ \n% else:\n${rate2.val}, \n% endif\n% else:\n% if str(framesize2) == 'FECFRAME_NORMAL':\n\
+ ${rate3.val}, \n% elif str(framesize2) == 'FECFRAME_MEDIUM':\n${rate4.val},\
+ \ \n% else:\n${rate5.val}, \n% endif\n% endif\n${constellation.val})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvb_ldpc_bb.xml b/gr-dtv/grc/dtv_dvb_ldpc_bb.xml
deleted file mode 100644
index f1cff16091..0000000000
--- a/gr-dtv/grc/dtv_dvb_ldpc_bb.xml
+++ /dev/null
@@ -1,528 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB LDPC Encoder
-###################################################
- -->
-<block>
- <name>LDPC Encoder</name>
- <key>dtv_dvb_ldpc_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvb_ldpc_bb($standard.val, #slurp
-#if str($standard) == 'STANDARD_DVBT2'
-$framesize1.val, #slurp
-#else
-$framesize2.val, #slurp
-#end if
-#if str($standard) == 'STANDARD_DVBT2'
-#if str($framesize1) == 'FECFRAME_NORMAL'
-$rate1.val, #slurp
-#else
-$rate2.val, #slurp
-#end if
-#else
-#if str($framesize2) == 'FECFRAME_NORMAL'
-$rate3.val, #slurp
-#else if str($framesize2) == 'FECFRAME_MEDIUM'
-$rate4.val, #slurp
-#else
-$rate5.val, #slurp
-#end if
-#end if
-$constellation.val)</make>
- <param>
- <name>Standard</name>
- <key>standard</key>
- <type>enum</type>
- <option>
- <name>DVB-S2</name>
- <key>STANDARD_DVBS2</key>
- <opt>val:dtv.STANDARD_DVBS2</opt>
- <opt>hide_dvbs2:</opt>
- <opt>hide_dvbt2:all</opt>
- </option>
- <option>
- <name>DVB-T2</name>
- <key>STANDARD_DVBT2</key>
- <opt>val:dtv.STANDARD_DVBT2</opt>
- <opt>hide_dvbs2:all</opt>
- <opt>hide_dvbt2:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize1</key>
- <type>enum</type>
- <hide>$standard.hide_dvbt2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>FECFRAME size</name>
- <key>framesize2</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_normal else 'all'</hide>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_short else 'all'</hide>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_normal else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate4</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_medium else 'all'</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate5</key>
- <type>enum</type>
- <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_short else 'all'</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <hide>$standard.hide_dvbs2</hide>
- <option>
- <name>Other</name>
- <key>MOD_OTHER</key>
- <opt>val:dtv.MOD_OTHER</opt>
- </option>
- <option>
- <name>128APSK</name>
- <key>MOD_128APSK</key>
- <opt>val:dtv.MOD_128APSK</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbs2_interleaver_bb.block.yml b/gr-dtv/grc/dtv_dvbs2_interleaver_bb.block.yml
new file mode 100644
index 0000000000..ad9c79c1b8
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbs2_interleaver_bb.block.yml
@@ -0,0 +1,86 @@
+id: dtv_dvbs2_interleaver_bb
+label: Interleaver
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ framesize.hide_normal }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ framesize.hide_medium }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ framesize.hide_short }
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_8PSK, MOD_8APSK, MOD_16APSK, MOD_8_8APSK, MOD_32APSK,
+ MOD_4_12_16APSK, MOD_4_8_4_16APSK, MOD_64APSK, MOD_8_16_20_20APSK, MOD_4_12_20_28APSK,
+ MOD_128APSK, MOD_256APSK, MOD_BPSK, MOD_BPSK_SF2]
+ option_labels: [QPSK, 8PSK, 8APSK, 16APSK, 8+8APSK, 32APSK, 4+12+16rbAPSK, 4+8+4+16APSK,
+ 64APSK, 8+16+20+20APSK, 4+12+20+28APSK, 128APSK, 256APSK, PI/2 BPSK, PI/2
+ BPSK-SF2]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_8PSK, dtv.MOD_8APSK, dtv.MOD_16APSK, dtv.MOD_8_8APSK,
+ dtv.MOD_32APSK, dtv.MOD_4_12_16APSK, dtv.MOD_4_8_4_16APSK, dtv.MOD_64APSK,
+ dtv.MOD_8_16_20_20APSK, dtv.MOD_4_12_20_28APSK, dtv.MOD_128APSK, dtv.MOD_256APSK,
+ dtv.MOD_BPSK, dtv.MOD_BPSK_SF2]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbs2_interleaver_bb(${framesize.val}, \n% if str(framesize) == 'FECFRAME_NORMAL':\n\
+ ${rate1.val}, \n% elif str(framesize) == 'FECFRAME_MEDIUM':\n${rate2.val},\
+ \ \n% else:\n${rate3.val}, \n% endif\n${constellation.val})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbs2_interleaver_bb.xml b/gr-dtv/grc/dtv_dvbs2_interleaver_bb.xml
deleted file mode 100644
index 675f70d26a..0000000000
--- a/gr-dtv/grc/dtv_dvbs2_interleaver_bb.xml
+++ /dev/null
@@ -1,455 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-S2 Bit Interleaver
-###################################################
- -->
-<block>
- <name>Interleaver</name>
- <key>dtv_dvbs2_interleaver_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbs2_interleaver_bb($framesize.val, #slurp
-#if str($framesize) == 'FECFRAME_NORMAL'
-$rate1.val, #slurp
-#else if str($framesize) == 'FECFRAME_MEDIUM'
-$rate2.val, #slurp
-#else
-$rate3.val, #slurp
-#end if
-$constellation.val)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>$framesize.hide_normal</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>$framesize.hide_medium</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>$framesize.hide_short</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>8PSK</name>
- <key>MOD_8PSK</key>
- <opt>val:dtv.MOD_8PSK</opt>
- </option>
- <option>
- <name>8APSK</name>
- <key>MOD_8APSK</key>
- <opt>val:dtv.MOD_8APSK</opt>
- </option>
- <option>
- <name>16APSK</name>
- <key>MOD_16APSK</key>
- <opt>val:dtv.MOD_16APSK</opt>
- </option>
- <option>
- <name>8+8APSK</name>
- <key>MOD_8_8APSK</key>
- <opt>val:dtv.MOD_8_8APSK</opt>
- </option>
- <option>
- <name>32APSK</name>
- <key>MOD_32APSK</key>
- <opt>val:dtv.MOD_32APSK</opt>
- </option>
- <option>
- <name>4+12+16rbAPSK</name>
- <key>MOD_4_12_16APSK</key>
- <opt>val:dtv.MOD_4_12_16APSK</opt>
- </option>
- <option>
- <name>4+8+4+16APSK</name>
- <key>MOD_4_8_4_16APSK</key>
- <opt>val:dtv.MOD_4_8_4_16APSK</opt>
- </option>
- <option>
- <name>64APSK</name>
- <key>MOD_64APSK</key>
- <opt>val:dtv.MOD_64APSK</opt>
- </option>
- <option>
- <name>8+16+20+20APSK</name>
- <key>MOD_8_16_20_20APSK</key>
- <opt>val:dtv.MOD_8_16_20_20APSK</opt>
- </option>
- <option>
- <name>4+12+20+28APSK</name>
- <key>MOD_4_12_20_28APSK</key>
- <opt>val:dtv.MOD_4_12_20_28APSK</opt>
- </option>
- <option>
- <name>128APSK</name>
- <key>MOD_128APSK</key>
- <opt>val:dtv.MOD_128APSK</opt>
- </option>
- <option>
- <name>256APSK</name>
- <key>MOD_256APSK</key>
- <opt>val:dtv.MOD_256APSK</opt>
- </option>
- <option>
- <name>PI/2 BPSK</name>
- <key>MOD_BPSK</key>
- <opt>val:dtv.MOD_BPSK</opt>
- </option>
- <option>
- <name>PI/2 BPSK-SF2</name>
- <key>MOD_BPSK_SF2</key>
- <opt>val:dtv.MOD_BPSK_SF2</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbs2_modulator_bc.block.yml b/gr-dtv/grc/dtv_dvbs2_modulator_bc.block.yml
new file mode 100644
index 0000000000..07d6cd58ff
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbs2_modulator_bc.block.yml
@@ -0,0 +1,102 @@
+id: dtv_dvbs2_modulator_bc
+label: DVB-S2X Modulator
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+ hide: ${ constellation.hide_dvb }
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ (constellation.hide_dvb if str(constellation) == 'MOD_8VSB' or str(constellation)
+ == 'MOD_64QAM' or str(constellation) == 'MOD_256QAM' else framesize.hide_normal)
+ }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ (constellation.hide_dvb if str(constellation) == 'MOD_8VSB' or str(constellation)
+ == 'MOD_64QAM' or str(constellation) == 'MOD_256QAM' else framesize.hide_medium)
+ }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ (constellation.hide_dvb if str(constellation) == 'MOD_8VSB' or str(constellation)
+ == 'MOD_64QAM' or str(constellation) == 'MOD_256QAM' else framesize.hide_short)
+ }
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_8PSK, MOD_8APSK, MOD_16APSK, MOD_8_8APSK, MOD_32APSK,
+ MOD_4_12_16APSK, MOD_4_8_4_16APSK, MOD_64APSK, MOD_8_16_20_20APSK, MOD_4_12_20_28APSK,
+ MOD_128APSK, MOD_256APSK, MOD_64QAM, MOD_256QAM, MOD_BPSK, MOD_BPSK_SF2, MOD_8VSB]
+ option_labels: [QPSK, 8PSK, 8APSK, 16APSK, 8+8APSK, 32APSK, 4+12+16rbAPSK, 4+8+4+16APSK,
+ 64APSK, 8+16+20+20APSK, 4+12+20+28APSK, 128APSK, 256APSK, 64QAM (ITU-T J.83B),
+ 256QAM (ITU-T J.83B), PI/2 BPSK, PI/2 BPSK-SF2, 8VSB (ATSC)]
+ option_attributes:
+ hide_dvb: ['', '', '', '', '', '', '', '', '', '', '', '', '', all, all, '',
+ '', all]
+ val: [dtv.MOD_QPSK, dtv.MOD_8PSK, dtv.MOD_8APSK, dtv.MOD_16APSK, dtv.MOD_8_8APSK,
+ dtv.MOD_32APSK, dtv.MOD_4_12_16APSK, dtv.MOD_4_8_4_16APSK, dtv.MOD_64APSK,
+ dtv.MOD_8_16_20_20APSK, dtv.MOD_4_12_20_28APSK, dtv.MOD_128APSK, dtv.MOD_256APSK,
+ dtv.MOD_64QAM, dtv.MOD_256QAM, dtv.MOD_BPSK, dtv.MOD_BPSK_SF2, dtv.MOD_8VSB]
+- id: interpolation
+ label: 2X Interpolation
+ dtype: enum
+ options: [INTERPOLATION_OFF, INTERPOLATION_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.INTERPOLATION_OFF, dtv.INTERPOLATION_ON]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbs2_modulator_bc(${framesize.val},\n% if str(framesize) == 'FECFRAME_NORMAL':\n\
+ ${rate1.val}, \n% elif str(framesize) == 'FECFRAME_MEDIUM':\n${rate2.val},\
+ \ \n% else:\n${rate3.val}, \n% endif\n${constellation.val}, ${interpolation.val})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbs2_modulator_bc.xml b/gr-dtv/grc/dtv_dvbs2_modulator_bc.xml
deleted file mode 100644
index d6b9f10048..0000000000
--- a/gr-dtv/grc/dtv_dvbs2_modulator_bc.xml
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-S2X Modulator
-###################################################
- -->
-<block>
- <name>DVB-S2X Modulator</name>
- <key>dtv_dvbs2_modulator_bc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbs2_modulator_bc($framesize.val,
-#if str($framesize) == 'FECFRAME_NORMAL'
-$rate1.val, #slurp
-#else if str($framesize) == 'FECFRAME_MEDIUM'
-$rate2.val, #slurp
-#else
-$rate3.val, #slurp
-#end if
-$constellation.val, $interpolation.val)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <hide>$constellation.hide_dvb</hide>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>#if str($constellation) == 'MOD_8VSB' or str($constellation) == 'MOD_64QAM' or str($constellation) == 'MOD_256QAM' then $constellation.hide_dvb else $framesize.hide_normal</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>#if str($constellation) == 'MOD_8VSB' or str($constellation) == 'MOD_64QAM' or str($constellation) == 'MOD_256QAM' then $constellation.hide_dvb else $framesize.hide_medium</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>#if str($constellation) == 'MOD_8VSB' or str($constellation) == 'MOD_64QAM' or str($constellation) == 'MOD_256QAM' then $constellation.hide_dvb else $framesize.hide_short</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>8PSK</name>
- <key>MOD_8PSK</key>
- <opt>val:dtv.MOD_8PSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>8APSK</name>
- <key>MOD_8APSK</key>
- <opt>val:dtv.MOD_8APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>16APSK</name>
- <key>MOD_16APSK</key>
- <opt>val:dtv.MOD_16APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>8+8APSK</name>
- <key>MOD_8_8APSK</key>
- <opt>val:dtv.MOD_8_8APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>32APSK</name>
- <key>MOD_32APSK</key>
- <opt>val:dtv.MOD_32APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>4+12+16rbAPSK</name>
- <key>MOD_4_12_16APSK</key>
- <opt>val:dtv.MOD_4_12_16APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>4+8+4+16APSK</name>
- <key>MOD_4_8_4_16APSK</key>
- <opt>val:dtv.MOD_4_8_4_16APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>64APSK</name>
- <key>MOD_64APSK</key>
- <opt>val:dtv.MOD_64APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>8+16+20+20APSK</name>
- <key>MOD_8_16_20_20APSK</key>
- <opt>val:dtv.MOD_8_16_20_20APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>4+12+20+28APSK</name>
- <key>MOD_4_12_20_28APSK</key>
- <opt>val:dtv.MOD_4_12_20_28APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>128APSK</name>
- <key>MOD_128APSK</key>
- <opt>val:dtv.MOD_128APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>256APSK</name>
- <key>MOD_256APSK</key>
- <opt>val:dtv.MOD_256APSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>64QAM (ITU-T J.83B)</name>
- <key>MOD_64QAM</key>
- <opt>val:dtv.MOD_64QAM</opt>
- <opt>hide_dvb:all</opt>
- </option>
- <option>
- <name>256QAM (ITU-T J.83B)</name>
- <key>MOD_256QAM</key>
- <opt>val:dtv.MOD_256QAM</opt>
- <opt>hide_dvb:all</opt>
- </option>
- <option>
- <name>PI/2 BPSK</name>
- <key>MOD_BPSK</key>
- <opt>val:dtv.MOD_BPSK</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>PI/2 BPSK-SF2</name>
- <key>MOD_BPSK_SF2</key>
- <opt>val:dtv.MOD_BPSK_SF2</opt>
- <opt>hide_dvb:</opt>
- </option>
- <option>
- <name>8VSB (ATSC)</name>
- <key>MOD_8VSB</key>
- <opt>val:dtv.MOD_8VSB</opt>
- <opt>hide_dvb:all</opt>
- </option>
- </param>
- <param>
- <name>2X Interpolation</name>
- <key>interpolation</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>INTERPOLATION_OFF</key>
- <opt>val:dtv.INTERPOLATION_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>INTERPOLATION_ON</key>
- <opt>val:dtv.INTERPOLATION_ON</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbs2_physical_cc.block.yml b/gr-dtv/grc/dtv_dvbs2_physical_cc.block.yml
new file mode 100644
index 0000000000..261b2f6b06
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbs2_physical_cc.block.yml
@@ -0,0 +1,98 @@
+id: dtv_dvbs2_physical_cc
+label: Physical Layer Framer
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_MEDIUM, FECFRAME_SHORT]
+ option_labels: [Normal, Medium, Short]
+ option_attributes:
+ hide_medium: [all, '', all]
+ hide_normal: ['', all, all]
+ hide_short: [all, all, '']
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_MEDIUM, dtv.FECFRAME_SHORT]
+- id: rate1
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C9_10, C2_9_VLSNR,
+ C13_45, C9_20, C90_180, C96_180, C11_20, C100_180, C104_180, C26_45, C18_30,
+ C28_45, C23_36, C116_180, C20_30, C124_180, C25_36, C128_180, C13_18, C132_180,
+ C22_30, C135_180, C140_180, C7_9, C154_180]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10, 2/9 VL-SNR,
+ 13/45, 9/20, 90/180, 96/180, 11/20, 100/180, 104/180, 26/45, 18/30, 28/45,
+ 23/36, 116/180, 20/30, 124/180, 25/36, 128/180, 13/18, 132/180, 22/30, 135/180,
+ 140/180, 7/9, 154/180]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C9_10, dtv.C2_9_VLSNR, dtv.C13_45, dtv.C9_20,
+ dtv.C90_180, dtv.C96_180, dtv.C11_20, dtv.C100_180, dtv.C104_180, dtv.C26_45,
+ dtv.C18_30, dtv.C28_45, dtv.C23_36, dtv.C116_180, dtv.C20_30, dtv.C124_180,
+ dtv.C25_36, dtv.C128_180, dtv.C13_18, dtv.C132_180, dtv.C22_30, dtv.C135_180,
+ dtv.C140_180, dtv.C7_9, dtv.C154_180]
+ hide: ${ framesize.hide_normal }
+- id: rate2
+ label: Code rate
+ dtype: enum
+ options: [C1_5_MEDIUM, C11_45_MEDIUM, C1_3_MEDIUM]
+ option_labels: [1/5, 11/45, 1/3]
+ option_attributes:
+ val: [dtv.C1_5_MEDIUM, dtv.C11_45_MEDIUM, dtv.C1_3_MEDIUM]
+ hide: ${ framesize.hide_medium }
+- id: rate3
+ label: Code rate
+ dtype: enum
+ options: [C1_4, C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6, C8_9, C11_45,
+ C4_15, C14_45, C7_15, C8_15, C26_45, C32_45, C1_5_VLSNR_SF2, C11_45_VLSNR_SF2,
+ C1_5_VLSNR, C4_15_VLSNR, C1_3_VLSNR]
+ option_labels: [1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 11/45, 4/15,
+ 14/45, 7/15, 8/15, 26/45, 32/45, 1/5 VL-SNR SF2, 11/45 VL-SNR SF2, 1/5 VL-SNR,
+ 4/15 VL-SNR, 1/3 VL-SNR]
+ option_attributes:
+ val: [dtv.C1_4, dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4,
+ dtv.C4_5, dtv.C5_6, dtv.C8_9, dtv.C11_45, dtv.C4_15, dtv.C14_45, dtv.C7_15,
+ dtv.C8_15, dtv.C26_45, dtv.C32_45, dtv.C1_5_VLSNR_SF2, dtv.C11_45_VLSNR_SF2,
+ dtv.C1_5_VLSNR, dtv.C4_15_VLSNR, dtv.C1_3_VLSNR]
+ hide: ${ framesize.hide_short }
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_8PSK, MOD_8APSK, MOD_16APSK, MOD_8_8APSK, MOD_32APSK,
+ MOD_4_12_16APSK, MOD_4_8_4_16APSK, MOD_64APSK, MOD_8_16_20_20APSK, MOD_4_12_20_28APSK,
+ MOD_128APSK, MOD_256APSK, MOD_BPSK, MOD_BPSK_SF2]
+ option_labels: [QPSK, 8PSK, 8APSK, 16APSK, 8+8APSK, 32APSK, 4+12+16rbAPSK, 4+8+4+16APSK,
+ 64APSK, 8+16+20+20APSK, 4+12+20+28APSK, 128APSK, 256APSK, PI/2 BPSK, PI/2
+ BPSK-SF2]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_8PSK, dtv.MOD_8APSK, dtv.MOD_16APSK, dtv.MOD_8_8APSK,
+ dtv.MOD_32APSK, dtv.MOD_4_12_16APSK, dtv.MOD_4_8_4_16APSK, dtv.MOD_64APSK,
+ dtv.MOD_8_16_20_20APSK, dtv.MOD_4_12_20_28APSK, dtv.MOD_128APSK, dtv.MOD_256APSK,
+ dtv.MOD_BPSK, dtv.MOD_BPSK_SF2]
+- id: pilots
+ label: Pilots
+ dtype: enum
+ options: [PILOTS_OFF, PILOTS_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.PILOTS_OFF, dtv.PILOTS_ON]
+- id: goldcode
+ label: Gold Code
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbs2_physical_cc(${framesize.val}, \n% if str(framesize) == 'FECFRAME_NORMAL':\n\
+ ${rate1.val}, \n% elif str(framesize) == 'FECFRAME_MEDIUM':\n${rate2.val},\
+ \ \n% else:\n${rate3.val}, \n% endif\n${constellation.val}, ${pilots.val},\
+ \ ${goldcode})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbs2_physical_cc.xml b/gr-dtv/grc/dtv_dvbs2_physical_cc.xml
deleted file mode 100644
index 91d03ae9ab..0000000000
--- a/gr-dtv/grc/dtv_dvbs2_physical_cc.xml
+++ /dev/null
@@ -1,476 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-S2 Physical Layer Framer
-###################################################
- -->
-<block>
- <name>Physical Layer Framer</name>
- <key>dtv_dvbs2_physical_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbs2_physical_cc($framesize.val, #slurp
-#if str($framesize) == 'FECFRAME_NORMAL'
-$rate1.val, #slurp
-#else if str($framesize) == 'FECFRAME_MEDIUM'
-$rate2.val, #slurp
-#else
-$rate3.val, #slurp
-#end if
-$constellation.val, $pilots.val, $goldcode)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- <opt>hide_normal:</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Medium</name>
- <key>FECFRAME_MEDIUM</key>
- <opt>val:dtv.FECFRAME_MEDIUM</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:</opt>
- <opt>hide_short:all</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- <opt>hide_normal:all</opt>
- <opt>hide_medium:all</opt>
- <opt>hide_short:</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate1</key>
- <type>enum</type>
- <hide>$framesize.hide_normal</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>9/10</name>
- <key>C9_10</key>
- <opt>val:dtv.C9_10</opt>
- </option>
- <option>
- <name>2/9 VL-SNR</name>
- <key>C2_9_VLSNR</key>
- <opt>val:dtv.C2_9_VLSNR</opt>
- </option>
- <option>
- <name>13/45</name>
- <key>C13_45</key>
- <opt>val:dtv.C13_45</opt>
- </option>
- <option>
- <name>9/20</name>
- <key>C9_20</key>
- <opt>val:dtv.C9_20</opt>
- </option>
- <option>
- <name>90/180</name>
- <key>C90_180</key>
- <opt>val:dtv.C90_180</opt>
- </option>
- <option>
- <name>96/180</name>
- <key>C96_180</key>
- <opt>val:dtv.C96_180</opt>
- </option>
- <option>
- <name>11/20</name>
- <key>C11_20</key>
- <opt>val:dtv.C11_20</opt>
- </option>
- <option>
- <name>100/180</name>
- <key>C100_180</key>
- <opt>val:dtv.C100_180</opt>
- </option>
- <option>
- <name>104/180</name>
- <key>C104_180</key>
- <opt>val:dtv.C104_180</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>18/30</name>
- <key>C18_30</key>
- <opt>val:dtv.C18_30</opt>
- </option>
- <option>
- <name>28/45</name>
- <key>C28_45</key>
- <opt>val:dtv.C28_45</opt>
- </option>
- <option>
- <name>23/36</name>
- <key>C23_36</key>
- <opt>val:dtv.C23_36</opt>
- </option>
- <option>
- <name>116/180</name>
- <key>C116_180</key>
- <opt>val:dtv.C116_180</opt>
- </option>
- <option>
- <name>20/30</name>
- <key>C20_30</key>
- <opt>val:dtv.C20_30</opt>
- </option>
- <option>
- <name>124/180</name>
- <key>C124_180</key>
- <opt>val:dtv.C124_180</opt>
- </option>
- <option>
- <name>25/36</name>
- <key>C25_36</key>
- <opt>val:dtv.C25_36</opt>
- </option>
- <option>
- <name>128/180</name>
- <key>C128_180</key>
- <opt>val:dtv.C128_180</opt>
- </option>
- <option>
- <name>13/18</name>
- <key>C13_18</key>
- <opt>val:dtv.C13_18</opt>
- </option>
- <option>
- <name>132/180</name>
- <key>C132_180</key>
- <opt>val:dtv.C132_180</opt>
- </option>
- <option>
- <name>22/30</name>
- <key>C22_30</key>
- <opt>val:dtv.C22_30</opt>
- </option>
- <option>
- <name>135/180</name>
- <key>C135_180</key>
- <opt>val:dtv.C135_180</opt>
- </option>
- <option>
- <name>140/180</name>
- <key>C140_180</key>
- <opt>val:dtv.C140_180</opt>
- </option>
- <option>
- <name>7/9</name>
- <key>C7_9</key>
- <opt>val:dtv.C7_9</opt>
- </option>
- <option>
- <name>154/180</name>
- <key>C154_180</key>
- <opt>val:dtv.C154_180</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate2</key>
- <type>enum</type>
- <hide>$framesize.hide_medium</hide>
- <option>
- <name>1/5</name>
- <key>C1_5_MEDIUM</key>
- <opt>val:dtv.C1_5_MEDIUM</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45_MEDIUM</key>
- <opt>val:dtv.C11_45_MEDIUM</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3_MEDIUM</key>
- <opt>val:dtv.C1_3_MEDIUM</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate3</key>
- <type>enum</type>
- <hide>$framesize.hide_short</hide>
- <option>
- <name>1/4</name>
- <key>C1_4</key>
- <opt>val:dtv.C1_4</opt>
- </option>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>8/9</name>
- <key>C8_9</key>
- <opt>val:dtv.C8_9</opt>
- </option>
- <option>
- <name>11/45</name>
- <key>C11_45</key>
- <opt>val:dtv.C11_45</opt>
- </option>
- <option>
- <name>4/15</name>
- <key>C4_15</key>
- <opt>val:dtv.C4_15</opt>
- </option>
- <option>
- <name>14/45</name>
- <key>C14_45</key>
- <opt>val:dtv.C14_45</opt>
- </option>
- <option>
- <name>7/15</name>
- <key>C7_15</key>
- <opt>val:dtv.C7_15</opt>
- </option>
- <option>
- <name>8/15</name>
- <key>C8_15</key>
- <opt>val:dtv.C8_15</opt>
- </option>
- <option>
- <name>26/45</name>
- <key>C26_45</key>
- <opt>val:dtv.C26_45</opt>
- </option>
- <option>
- <name>32/45</name>
- <key>C32_45</key>
- <opt>val:dtv.C32_45</opt>
- </option>
- <option>
- <name>1/5 VL-SNR SF2</name>
- <key>C1_5_VLSNR_SF2</key>
- <opt>val:dtv.C1_5_VLSNR_SF2</opt>
- </option>
- <option>
- <name>11/45 VL-SNR SF2</name>
- <key>C11_45_VLSNR_SF2</key>
- <opt>val:dtv.C11_45_VLSNR_SF2</opt>
- </option>
- <option>
- <name>1/5 VL-SNR</name>
- <key>C1_5_VLSNR</key>
- <opt>val:dtv.C1_5_VLSNR</opt>
- </option>
- <option>
- <name>4/15 VL-SNR</name>
- <key>C4_15_VLSNR</key>
- <opt>val:dtv.C4_15_VLSNR</opt>
- </option>
- <option>
- <name>1/3 VL-SNR</name>
- <key>C1_3_VLSNR</key>
- <opt>val:dtv.C1_3_VLSNR</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>8PSK</name>
- <key>MOD_8PSK</key>
- <opt>val:dtv.MOD_8PSK</opt>
- </option>
- <option>
- <name>8APSK</name>
- <key>MOD_8APSK</key>
- <opt>val:dtv.MOD_8APSK</opt>
- </option>
- <option>
- <name>16APSK</name>
- <key>MOD_16APSK</key>
- <opt>val:dtv.MOD_16APSK</opt>
- </option>
- <option>
- <name>8+8APSK</name>
- <key>MOD_8_8APSK</key>
- <opt>val:dtv.MOD_8_8APSK</opt>
- </option>
- <option>
- <name>32APSK</name>
- <key>MOD_32APSK</key>
- <opt>val:dtv.MOD_32APSK</opt>
- </option>
- <option>
- <name>4+12+16rbAPSK</name>
- <key>MOD_4_12_16APSK</key>
- <opt>val:dtv.MOD_4_12_16APSK</opt>
- </option>
- <option>
- <name>4+8+4+16APSK</name>
- <key>MOD_4_8_4_16APSK</key>
- <opt>val:dtv.MOD_4_8_4_16APSK</opt>
- </option>
- <option>
- <name>64APSK</name>
- <key>MOD_64APSK</key>
- <opt>val:dtv.MOD_64APSK</opt>
- </option>
- <option>
- <name>8+16+20+20APSK</name>
- <key>MOD_8_16_20_20APSK</key>
- <opt>val:dtv.MOD_8_16_20_20APSK</opt>
- </option>
- <option>
- <name>4+12+20+28APSK</name>
- <key>MOD_4_12_20_28APSK</key>
- <opt>val:dtv.MOD_4_12_20_28APSK</opt>
- </option>
- <option>
- <name>128APSK</name>
- <key>MOD_128APSK</key>
- <opt>val:dtv.MOD_128APSK</opt>
- </option>
- <option>
- <name>256APSK</name>
- <key>MOD_256APSK</key>
- <opt>val:dtv.MOD_256APSK</opt>
- </option>
- <option>
- <name>PI/2 BPSK</name>
- <key>MOD_BPSK</key>
- <opt>val:dtv.MOD_BPSK</opt>
- </option>
- <option>
- <name>PI/2 BPSK-SF2</name>
- <key>MOD_BPSK_SF2</key>
- <opt>val:dtv.MOD_BPSK_SF2</opt>
- </option>
- </param>
- <param>
- <name>Pilots</name>
- <key>pilots</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>PILOTS_OFF</key>
- <opt>val:dtv.PILOTS_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>PILOTS_ON</key>
- <opt>val:dtv.PILOTS_ON</opt>
- </option>
- </param>
- <param>
- <name>Gold Code</name>
- <key>goldcode</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.block.yml
new file mode 100644
index 0000000000..4f292fca08
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.block.yml
@@ -0,0 +1,41 @@
+id: dtv_dvbt2_cellinterleaver_cc
+label: Cell/Time Interleaver
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_16QAM, MOD_64QAM, MOD_256QAM]
+ option_labels: [QPSK, 16QAM, 64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM, dtv.MOD_256QAM]
+- id: fecblocks
+ label: FEC blocks per frame
+ dtype: int
+ default: '168'
+- id: tiblocks
+ label: TI blocks per frame
+ dtype: int
+ default: '3'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt2_cellinterleaver_cc(${framesize.val}, ${constellation.val}, ${fecblocks},
+ ${tiblocks})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.xml b/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.xml
deleted file mode 100644
index 0f3aa76f5e..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_cellinterleaver_cc.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Cell and Time Interleaver
-###################################################
- -->
-<block>
- <name>Cell/Time Interleaver</name>
- <key>dtv_dvbt2_cellinterleaver_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_cellinterleaver_cc($framesize.val, $constellation.val, $fecblocks, $tiblocks)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>MOD_16QAM</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>MOD_64QAM</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>MOD_256QAM</key>
- <opt>val:dtv.MOD_256QAM</opt>
- </option>
- </param>
- <param>
- <name>FEC blocks per frame</name>
- <key>fecblocks</key>
- <value>168</value>
- <type>int</type>
- </param>
- <param>
- <name>TI blocks per frame</name>
- <key>tiblocks</key>
- <value>3</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_framemapper_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_framemapper_cc.block.yml
new file mode 100644
index 0000000000..3459c13afb
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_framemapper_cc.block.yml
@@ -0,0 +1,203 @@
+id: dtv_dvbt2_framemapper_cc
+label: Frame Mapper
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+- id: rate
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_16QAM, MOD_64QAM, MOD_256QAM]
+ option_labels: [QPSK, 16QAM, 64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM, dtv.MOD_256QAM]
+- id: rotation
+ label: Constellation rotation
+ dtype: enum
+ options: [ROTATION_OFF, ROTATION_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.ROTATION_OFF, dtv.ROTATION_ON]
+- id: fecblocks
+ label: FEC blocks per frame
+ dtype: int
+ default: '168'
+- id: tiblocks
+ label: TI blocks per frame
+ dtype: int
+ default: '3'
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize1
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 32K, 32K DVB-T2 GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+ hide: ${ (preamble1.hide_base if str(version) == 'VERSION_111' else preamble2.hide_base)
+ }
+- id: fftsize2
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K, FFTSIZE_16K_T2GI]
+ option_labels: [2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI]
+ hide: ${ (preamble1.hide_lite if str(version) == 'VERSION_111' else preamble2.hide_lite)
+ }
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: l1constellation
+ label: L1 Constellation
+ dtype: enum
+ options: [L1_MOD_BPSK, L1_MOD_QPSK, L1_MOD_16QAM, L1_MOD_64QAM]
+ option_labels: [BPSK, QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.L1_MOD_BPSK, dtv.L1_MOD_QPSK, dtv.L1_MOD_16QAM, dtv.L1_MOD_64QAM]
+- id: pilotpattern
+ label: Pilot Pattern
+ dtype: enum
+ options: [PILOT_PP1, PILOT_PP2, PILOT_PP3, PILOT_PP4, PILOT_PP5, PILOT_PP6, PILOT_PP7,
+ PILOT_PP8]
+ option_labels: [PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8]
+ option_attributes:
+ val: [dtv.PILOT_PP1, dtv.PILOT_PP2, dtv.PILOT_PP3, dtv.PILOT_PP4, dtv.PILOT_PP5,
+ dtv.PILOT_PP6, dtv.PILOT_PP7, dtv.PILOT_PP8]
+- id: t2frames
+ label: T2 Frames per Super-frame
+ dtype: int
+ default: '2'
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: paprmode1
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: ['Off', Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_111 }
+- id: paprmode2
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: [P2 Only, Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_131 }
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+- id: preamble1
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO]
+ option_labels: [T2 SISO, T2 MISO]
+ option_attributes:
+ hide_base: ['', '']
+ hide_lite: [all, all]
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO]
+ hide: ${ version.hide_111 }
+- id: preamble2
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO, PREAMBLE_T2_LITE_SISO, PREAMBLE_T2_LITE_MISO]
+ option_labels: [T2 SISO, T2 MISO, T2-Lite SISO, T2-Lite MISO]
+ option_attributes:
+ hide_base: ['', '', all, all]
+ hide_lite: [all, all, '', '']
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO, dtv.PREAMBLE_T2_LITE_SISO,
+ dtv.PREAMBLE_T2_LITE_MISO]
+ hide: ${ version.hide_131 }
+- id: inputmode
+ label: Baseband Framing Mode
+ dtype: enum
+ options: [INPUTMODE_NORMAL, INPUTMODE_HIEFF]
+ option_labels: [Normal, High Efficiency]
+ option_attributes:
+ val: [dtv.INPUTMODE_NORMAL, dtv.INPUTMODE_HIEFF]
+ hide: ${ version.hide_131 }
+- id: reservedbiasbits
+ label: Reserved Bits Bias Balancing
+ dtype: enum
+ options: [RESERVED_OFF, RESERVED_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.RESERVED_OFF, dtv.RESERVED_ON]
+ hide: ${ version.hide_131 }
+- id: l1scrambled
+ label: L1-post Scrambling
+ dtype: enum
+ options: [L1_SCRAMBLED_OFF, L1_SCRAMBLED_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.L1_SCRAMBLED_OFF, dtv.L1_SCRAMBLED_ON]
+ hide: ${ version.hide_131 }
+- id: inband
+ label: In-band Signalling
+ dtype: enum
+ options: [INBAND_OFF, INBAND_ON]
+ option_labels: ['Off', Type B]
+ option_attributes:
+ val: [dtv.INBAND_OFF, dtv.INBAND_ON]
+ hide: ${ version.hide_131 }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_framemapper_cc(${framesize.val}, ${rate.val}, ${constellation.val},\
+ \ ${rotation.val}, ${fecblocks}, ${tiblocks}, ${carriermode.val}, \n% if str(version)\
+ \ == 'VERSION_111':\n${fftsize1.val}, \n% else:\n% if str(preamble2) == 'PREAMBLE_T2_SISO'\
+ \ or str(preamble2) == 'PREAMBLE_T2_MISO':\n${fftsize1.val}, \n% else:\n${fftsize2.val},\
+ \ \n% endif\n% endif\n${guardinterval.val}, ${l1constellation.val}, ${pilotpattern.val},\
+ \ ${t2frames}, ${numdatasyms}, \n% if str(version) == 'VERSION_111':\n${paprmode1.val},\
+ \ \n% else:\n${paprmode2.val}, \n% endif\n${version.val}, \n% if str(version)\
+ \ == 'VERSION_111':\n${preamble1.val}, \n% else:\n${preamble2.val}, \n% endif\n\
+ ${inputmode.val}, ${reservedbiasbits.val}, ${l1scrambled.val}, ${inband.val})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml b/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml
deleted file mode 100644
index e795c8a1dc..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_framemapper_cc.xml
+++ /dev/null
@@ -1,562 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Frame Mapper
-###################################################
- -->
-<block>
- <name>Frame Mapper</name>
- <key>dtv_dvbt2_framemapper_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_framemapper_cc($framesize.val, $rate.val, $constellation.val, $rotation.val, $fecblocks, $tiblocks, $carriermode.val, #slurp
-#if str($version) == 'VERSION_111'
-$fftsize1.val, #slurp
-#else
-#if str($preamble2) == 'PREAMBLE_T2_SISO' or str($preamble2) == 'PREAMBLE_T2_MISO'
-$fftsize1.val, #slurp
-#else
-$fftsize2.val, #slurp
-#end if
-#end if
-$guardinterval.val, $l1constellation.val, $pilotpattern.val, $t2frames, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$paprmode1.val, #slurp
-#else
-$paprmode2.val, #slurp
-#end if
-$version.val, #slurp
-#if str($version) == 'VERSION_111'
-$preamble1.val, #slurp
-#else
-$preamble2.val, #slurp
-#end if
-$inputmode.val, $reservedbiasbits.val, $l1scrambled.val, $inband.val)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate</key>
- <type>enum</type>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>MOD_16QAM</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>MOD_64QAM</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>MOD_256QAM</key>
- <opt>val:dtv.MOD_256QAM</opt>
- </option>
- </param>
- <param>
- <name>Constellation rotation</name>
- <key>rotation</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>ROTATION_OFF</key>
- <opt>val:dtv.ROTATION_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>ROTATION_ON</key>
- <opt>val:dtv.ROTATION_ON</opt>
- </option>
- </param>
- <param>
- <name>FEC blocks per frame</name>
- <key>fecblocks</key>
- <value>168</value>
- <type>int</type>
- </param>
- <param>
- <name>TI blocks per frame</name>
- <key>tiblocks</key>
- <value>3</value>
- <type>int</type>
- </param>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize1</key>
- <type>enum</type>
- <hide>#if str($version) == 'VERSION_111' then $preamble1.hide_base else $preamble2.hide_base</hide>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize2</key>
- <type>enum</type>
- <hide>#if str($version) == 'VERSION_111' then $preamble1.hide_lite else $preamble2.hide_lite</hide>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>L1 Constellation</name>
- <key>l1constellation</key>
- <type>enum</type>
- <option>
- <name>BPSK</name>
- <key>L1_MOD_BPSK</key>
- <opt>val:dtv.L1_MOD_BPSK</opt>
- </option>
- <option>
- <name>QPSK</name>
- <key>L1_MOD_QPSK</key>
- <opt>val:dtv.L1_MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>L1_MOD_16QAM</key>
- <opt>val:dtv.L1_MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>L1_MOD_64QAM</key>
- <opt>val:dtv.L1_MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Pilot Pattern</name>
- <key>pilotpattern</key>
- <type>enum</type>
- <option>
- <name>PP1</name>
- <key>PILOT_PP1</key>
- <opt>val:dtv.PILOT_PP1</opt>
- </option>
- <option>
- <name>PP2</name>
- <key>PILOT_PP2</key>
- <opt>val:dtv.PILOT_PP2</opt>
- </option>
- <option>
- <name>PP3</name>
- <key>PILOT_PP3</key>
- <opt>val:dtv.PILOT_PP3</opt>
- </option>
- <option>
- <name>PP4</name>
- <key>PILOT_PP4</key>
- <opt>val:dtv.PILOT_PP4</opt>
- </option>
- <option>
- <name>PP5</name>
- <key>PILOT_PP5</key>
- <opt>val:dtv.PILOT_PP5</opt>
- </option>
- <option>
- <name>PP6</name>
- <key>PILOT_PP6</key>
- <opt>val:dtv.PILOT_PP6</opt>
- </option>
- <option>
- <name>PP7</name>
- <key>PILOT_PP7</key>
- <opt>val:dtv.PILOT_PP7</opt>
- </option>
- <option>
- <name>PP8</name>
- <key>PILOT_PP8</key>
- <opt>val:dtv.PILOT_PP8</opt>
- </option>
- </param>
- <param>
- <name>T2 Frames per Super-frame</name>
- <key>t2frames</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>Off</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>P2 Only</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2-Lite SISO</name>
- <key>PREAMBLE_T2_LITE_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_SISO</opt>
- <opt>hide_lite:</opt>
- <opt>hide_base:all</opt>
- </option>
- <option>
- <name>T2-Lite MISO</name>
- <key>PREAMBLE_T2_LITE_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_MISO</opt>
- <opt>hide_lite:</opt>
- <opt>hide_base:all</opt>
- </option>
- </param>
- <param>
- <name>Baseband Framing Mode</name>
- <key>inputmode</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>Normal</name>
- <key>INPUTMODE_NORMAL</key>
- <opt>val:dtv.INPUTMODE_NORMAL</opt>
- </option>
- <option>
- <name>High Efficiency</name>
- <key>INPUTMODE_HIEFF</key>
- <opt>val:dtv.INPUTMODE_HIEFF</opt>
- </option>
- </param>
- <param>
- <name>Reserved Bits Bias Balancing</name>
- <key>reservedbiasbits</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>Off</name>
- <key>RESERVED_OFF</key>
- <opt>val:dtv.RESERVED_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>RESERVED_ON</key>
- <opt>val:dtv.RESERVED_ON</opt>
- </option>
- </param>
- <param>
- <name>L1-post Scrambling</name>
- <key>l1scrambled</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>Off</name>
- <key>L1_SCRAMBLED_OFF</key>
- <opt>val:dtv.L1_SCRAMBLED_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>L1_SCRAMBLED_ON</key>
- <opt>val:dtv.L1_SCRAMBLED_ON</opt>
- </option>
- </param>
- <param>
- <name>In-band Signalling</name>
- <key>inband</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>Off</name>
- <key>INBAND_OFF</key>
- <opt>val:dtv.INBAND_OFF</opt>
- </option>
- <option>
- <name>Type B</name>
- <key>INBAND_ON</key>
- <opt>val:dtv.INBAND_ON</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.block.yml
new file mode 100644
index 0000000000..990d4b8002
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.block.yml
@@ -0,0 +1,104 @@
+id: dtv_dvbt2_freqinterleaver_cc
+label: Frequency Interleaver
+
+parameters:
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_16K_T2GI, FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI, 32K, 32K DVB-T2
+ GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+- id: pilotpattern
+ label: Pilot Pattern
+ dtype: enum
+ options: [PILOT_PP1, PILOT_PP2, PILOT_PP3, PILOT_PP4, PILOT_PP5, PILOT_PP6, PILOT_PP7,
+ PILOT_PP8]
+ option_labels: [PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8]
+ option_attributes:
+ val: [dtv.PILOT_PP1, dtv.PILOT_PP2, dtv.PILOT_PP3, dtv.PILOT_PP4, dtv.PILOT_PP5,
+ dtv.PILOT_PP6, dtv.PILOT_PP7, dtv.PILOT_PP8]
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: paprmode1
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: ['Off', Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_111 }
+- id: paprmode2
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: [P2 Only, Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_131 }
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+- id: preamble1
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO]
+ option_labels: [T2 SISO, T2 MISO]
+ option_attributes:
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO]
+ hide: ${ version.hide_111 }
+- id: preamble2
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO, PREAMBLE_T2_LITE_SISO, PREAMBLE_T2_LITE_MISO]
+ option_labels: [T2 SISO, T2 MISO, T2-Lite SISO, T2-Lite MISO]
+ option_attributes:
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO, dtv.PREAMBLE_T2_LITE_SISO,
+ dtv.PREAMBLE_T2_LITE_MISO]
+ hide: ${ version.hide_131 }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_freqinterleaver_cc(${carriermode.val}, ${fftsize.val}, ${pilotpattern.val},\
+ \ ${guardinterval.val}, ${numdatasyms}, \n% if str(version) == 'VERSION_111':\n\
+ ${paprmode1.val}, \n% else:\n${paprmode2.val}, \n% endif\n${version.val},\
+ \ \n% if str(version) == 'VERSION_111':\n${preamble1.val}\n% else:\n${preamble2.val}\n\
+ % endif\n)"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.xml b/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.xml
deleted file mode 100644
index bd7ba2bbfa..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_freqinterleaver_cc.xml
+++ /dev/null
@@ -1,301 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Frequency Interleaver
-###################################################
- -->
-<block>
- <name>Frequency Interleaver</name>
- <key>dtv_dvbt2_freqinterleaver_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_freqinterleaver_cc($carriermode.val, $fftsize.val, $pilotpattern.val, $guardinterval.val, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$paprmode1.val, #slurp
-#else
-$paprmode2.val, #slurp
-#end if
-$version.val, #slurp
-#if str($version) == 'VERSION_111'
-$preamble1.val#slurp
-#else
-$preamble2.val#slurp
-#end if
-)</make>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize</key>
- <type>enum</type>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>Pilot Pattern</name>
- <key>pilotpattern</key>
- <type>enum</type>
- <option>
- <name>PP1</name>
- <key>PILOT_PP1</key>
- <opt>val:dtv.PILOT_PP1</opt>
- </option>
- <option>
- <name>PP2</name>
- <key>PILOT_PP2</key>
- <opt>val:dtv.PILOT_PP2</opt>
- </option>
- <option>
- <name>PP3</name>
- <key>PILOT_PP3</key>
- <opt>val:dtv.PILOT_PP3</opt>
- </option>
- <option>
- <name>PP4</name>
- <key>PILOT_PP4</key>
- <opt>val:dtv.PILOT_PP4</opt>
- </option>
- <option>
- <name>PP5</name>
- <key>PILOT_PP5</key>
- <opt>val:dtv.PILOT_PP5</opt>
- </option>
- <option>
- <name>PP6</name>
- <key>PILOT_PP6</key>
- <opt>val:dtv.PILOT_PP6</opt>
- </option>
- <option>
- <name>PP7</name>
- <key>PILOT_PP7</key>
- <opt>val:dtv.PILOT_PP7</opt>
- </option>
- <option>
- <name>PP8</name>
- <key>PILOT_PP8</key>
- <opt>val:dtv.PILOT_PP8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>Off</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>P2 Only</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- </option>
- <option>
- <name>T2-Lite SISO</name>
- <key>PREAMBLE_T2_LITE_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_SISO</opt>
- </option>
- <option>
- <name>T2-Lite MISO</name>
- <key>PREAMBLE_T2_LITE_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_MISO</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_interleaver_bb.block.yml b/gr-dtv/grc/dtv_dvbt2_interleaver_bb.block.yml
new file mode 100644
index 0000000000..c7ca955996
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_interleaver_bb.block.yml
@@ -0,0 +1,40 @@
+id: dtv_dvbt2_interleaver_bb
+label: Bit Interleaver
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+- id: rate
+ label: Code rate
+ dtype: enum
+ options: [C1_3, C2_5, C1_2, C3_5, C2_3, C3_4, C4_5, C5_6]
+ option_labels: [1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6]
+ option_attributes:
+ val: [dtv.C1_3, dtv.C2_5, dtv.C1_2, dtv.C3_5, dtv.C2_3, dtv.C3_4, dtv.C4_5,
+ dtv.C5_6]
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_16QAM, MOD_64QAM, MOD_256QAM]
+ option_labels: [QPSK, 16QAM, 64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM, dtv.MOD_256QAM]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt2_interleaver_bb(${framesize.val}, ${rate.val}, ${constellation.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_interleaver_bb.xml b/gr-dtv/grc/dtv_dvbt2_interleaver_bb.xml
deleted file mode 100644
index 0e4e1eaf45..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_interleaver_bb.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Bit Interleaver
-###################################################
- -->
-<block>
- <name>Bit Interleaver</name>
- <key>dtv_dvbt2_interleaver_bb</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_interleaver_bb($framesize.val, $rate.val, $constellation.val)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>rate</key>
- <type>enum</type>
- <option>
- <name>1/3</name>
- <key>C1_3</key>
- <opt>val:dtv.C1_3</opt>
- </option>
- <option>
- <name>2/5</name>
- <key>C2_5</key>
- <opt>val:dtv.C2_5</opt>
- </option>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>3/5</name>
- <key>C3_5</key>
- <opt>val:dtv.C3_5</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>4/5</name>
- <key>C4_5</key>
- <opt>val:dtv.C4_5</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>MOD_16QAM</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>MOD_64QAM</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>MOD_256QAM</key>
- <opt>val:dtv.MOD_256QAM</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_miso_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_miso_cc.block.yml
new file mode 100644
index 0000000000..81550c9c1f
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_miso_cc.block.yml
@@ -0,0 +1,86 @@
+id: dtv_dvbt2_miso_cc
+label: MISO Processing
+
+parameters:
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_16K_T2GI, FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI, 32K, 32K DVB-T2
+ GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+- id: pilotpattern
+ label: Pilot Pattern
+ dtype: enum
+ options: [PILOT_PP1, PILOT_PP2, PILOT_PP3, PILOT_PP4, PILOT_PP5, PILOT_PP6, PILOT_PP7,
+ PILOT_PP8]
+ option_labels: [PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8]
+ option_attributes:
+ val: [dtv.PILOT_PP1, dtv.PILOT_PP2, dtv.PILOT_PP3, dtv.PILOT_PP4, dtv.PILOT_PP5,
+ dtv.PILOT_PP6, dtv.PILOT_PP7, dtv.PILOT_PP8]
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: paprmode1
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: ['Off', Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_111 }
+- id: paprmode2
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: [P2 Only, Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_131 }
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+ multiplicity: '2'
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_miso_cc(${carriermode.val}, ${fftsize.val}, ${pilotpattern.val},\
+ \ ${guardinterval.val}, ${numdatasyms}, \n% if str(version) == 'VERSION_111':\n\
+ ${paprmode1.val}, \n% else:\n${paprmode2.val}, \n% endif\n)"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_miso_cc.xml b/gr-dtv/grc/dtv_dvbt2_miso_cc.xml
deleted file mode 100644
index 1ef4d2afc1..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_miso_cc.xml
+++ /dev/null
@@ -1,254 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 MISO Processing
-###################################################
- -->
-<block>
- <name>MISO Processing</name>
- <key>dtv_dvbt2_miso_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_miso_cc($carriermode.val, $fftsize.val, $pilotpattern.val, $guardinterval.val, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$paprmode1.val, #slurp
-#else
-$paprmode2.val, #slurp
-#end if
-)</make>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize</key>
- <type>enum</type>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>Pilot Pattern</name>
- <key>pilotpattern</key>
- <type>enum</type>
- <option>
- <name>PP1</name>
- <key>PILOT_PP1</key>
- <opt>val:dtv.PILOT_PP1</opt>
- </option>
- <option>
- <name>PP2</name>
- <key>PILOT_PP2</key>
- <opt>val:dtv.PILOT_PP2</opt>
- </option>
- <option>
- <name>PP3</name>
- <key>PILOT_PP3</key>
- <opt>val:dtv.PILOT_PP3</opt>
- </option>
- <option>
- <name>PP4</name>
- <key>PILOT_PP4</key>
- <opt>val:dtv.PILOT_PP4</opt>
- </option>
- <option>
- <name>PP5</name>
- <key>PILOT_PP5</key>
- <opt>val:dtv.PILOT_PP5</opt>
- </option>
- <option>
- <name>PP6</name>
- <key>PILOT_PP6</key>
- <opt>val:dtv.PILOT_PP6</opt>
- </option>
- <option>
- <name>PP7</name>
- <key>PILOT_PP7</key>
- <opt>val:dtv.PILOT_PP7</opt>
- </option>
- <option>
- <name>PP8</name>
- <key>PILOT_PP8</key>
- <opt>val:dtv.PILOT_PP8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>Off</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>P2 Only</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <nports>2</nports>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_modulator_bc.block.yml b/gr-dtv/grc/dtv_dvbt2_modulator_bc.block.yml
new file mode 100644
index 0000000000..5b1a9dd831
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_modulator_bc.block.yml
@@ -0,0 +1,39 @@
+id: dtv_dvbt2_modulator_bc
+label: DVB-T2 Modulator
+
+parameters:
+- id: framesize
+ label: FECFRAME size
+ dtype: enum
+ options: [FECFRAME_NORMAL, FECFRAME_SHORT]
+ option_labels: [Normal, Short]
+ option_attributes:
+ val: [dtv.FECFRAME_NORMAL, dtv.FECFRAME_SHORT]
+- id: constellation
+ label: Constellation
+ dtype: enum
+ options: [MOD_QPSK, MOD_16QAM, MOD_64QAM, MOD_256QAM]
+ option_labels: [QPSK, 16QAM, 64QAM, 256QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM, dtv.MOD_256QAM]
+- id: rotation
+ label: Constellation rotation
+ dtype: enum
+ options: [ROTATION_OFF, ROTATION_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ val: [dtv.ROTATION_OFF, dtv.ROTATION_ON]
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt2_modulator_bc(${framesize.val}, ${constellation.val}, ${rotation.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_modulator_bc.xml b/gr-dtv/grc/dtv_dvbt2_modulator_bc.xml
deleted file mode 100644
index 6bf17b831d..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_modulator_bc.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 QPSK/QAM Modulator
-###################################################
- -->
-<block>
- <name>DVB-T2 Modulator</name>
- <key>dtv_dvbt2_modulator_bc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_modulator_bc($framesize.val, $constellation.val, $rotation.val)</make>
- <param>
- <name>FECFRAME size</name>
- <key>framesize</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>FECFRAME_NORMAL</key>
- <opt>val:dtv.FECFRAME_NORMAL</opt>
- </option>
- <option>
- <name>Short</name>
- <key>FECFRAME_SHORT</key>
- <opt>val:dtv.FECFRAME_SHORT</opt>
- </option>
- </param>
- <param>
- <name>Constellation</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>MOD_QPSK</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>MOD_16QAM</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>MOD_64QAM</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- <option>
- <name>256QAM</name>
- <key>MOD_256QAM</key>
- <opt>val:dtv.MOD_256QAM</opt>
- </option>
- </param>
- <param>
- <name>Constellation rotation</name>
- <key>rotation</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>ROTATION_OFF</key>
- <opt>val:dtv.ROTATION_OFF</opt>
- </option>
- <option>
- <name>On</name>
- <key>ROTATION_ON</key>
- <opt>val:dtv.ROTATION_ON</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.block.yml
new file mode 100644
index 0000000000..ad9ab8519d
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.block.yml
@@ -0,0 +1,106 @@
+id: dtv_dvbt2_p1insertion_cc
+label: P1 Symbol Insertion
+
+parameters:
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize1
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 32K, 32K DVB-T2 GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+ hide: ${ (preamble1.hide_base if str(version) == 'VERSION_111' else preamble2.hide_base)
+ }
+- id: fftsize2
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K, FFTSIZE_16K_T2GI]
+ option_labels: [2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI]
+ hide: ${ (preamble1.hide_lite if str(version) == 'VERSION_111' else preamble2.hide_lite)
+ }
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+- id: preamble1
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO]
+ option_labels: [T2 SISO, T2 MISO]
+ option_attributes:
+ hide_base: ['', '']
+ hide_lite: [all, all]
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO]
+ hide: ${ version.hide_111 }
+- id: preamble2
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO, PREAMBLE_T2_LITE_SISO, PREAMBLE_T2_LITE_MISO]
+ option_labels: [T2 SISO, T2 MISO, T2-Lite SISO, T2-Lite MISO]
+ option_attributes:
+ hide_base: ['', '', all, all]
+ hide_lite: [all, all, '', '']
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO, dtv.PREAMBLE_T2_LITE_SISO,
+ dtv.PREAMBLE_T2_LITE_MISO]
+ hide: ${ version.hide_131 }
+- id: showlevels
+ label: Show Peak IQ Levels
+ dtype: enum
+ options: [SHOWLEVELS_OFF, SHOWLEVELS_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ hide_vclip: [all, '']
+ val: [dtv.SHOWLEVELS_OFF, dtv.SHOWLEVELS_ON]
+- id: vclip
+ label: Vclip
+ dtype: float
+ default: '3.3'
+ hide: ${ showlevels.hide_vclip }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_p1insertion_cc(${carriermode.val}, \n% if str(version) == 'VERSION_111':\n\
+ ${fftsize1.val}, \n% else:\n% if str(preamble2) == 'PREAMBLE_T2_SISO' or str(preamble2)\
+ \ == 'PREAMBLE_T2_MISO':\n${fftsize1.val}, \n% else:\n${fftsize2.val}, \n\
+ % endif\n% endif\n${guardinterval.val}, ${numdatasyms}, \n% if str(version)\
+ \ == 'VERSION_111':\n${preamble1.val}, \n% else:\n${preamble2.val}, \n% endif\n\
+ ${showlevels.val}, ${vclip})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.xml b/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.xml
deleted file mode 100644
index c73cf72ae0..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_p1insertion_cc.xml
+++ /dev/null
@@ -1,276 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 P1 Symbol Insertion
-###################################################
- -->
-<block>
- <name>P1 Symbol Insertion</name>
- <key>dtv_dvbt2_p1insertion_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_p1insertion_cc($carriermode.val, #slurp
-#if str($version) == 'VERSION_111'
-$fftsize1.val, #slurp
-#else
-#if str($preamble2) == 'PREAMBLE_T2_SISO' or str($preamble2) == 'PREAMBLE_T2_MISO'
-$fftsize1.val, #slurp
-#else
-$fftsize2.val, #slurp
-#end if
-#end if
-$guardinterval.val, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$preamble1.val, #slurp
-#else
-$preamble2.val, #slurp
-#end if
-$showlevels.val, $vclip)</make>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize1</key>
- <type>enum</type>
- <hide>#if str($version) == 'VERSION_111' then $preamble1.hide_base else $preamble2.hide_base</hide>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize2</key>
- <type>enum</type>
- <hide>#if str($version) == 'VERSION_111' then $preamble1.hide_lite else $preamble2.hide_lite</hide>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_lite:all</opt>
- <opt>hide_base:</opt>
- </option>
- <option>
- <name>T2-Lite SISO</name>
- <key>PREAMBLE_T2_LITE_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_SISO</opt>
- <opt>hide_lite:</opt>
- <opt>hide_base:all</opt>
- </option>
- <option>
- <name>T2-Lite MISO</name>
- <key>PREAMBLE_T2_LITE_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_MISO</opt>
- <opt>hide_lite:</opt>
- <opt>hide_base:all</opt>
- </option>
- </param>
- <param>
- <name>Show Peak IQ Levels</name>
- <key>showlevels</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>SHOWLEVELS_OFF</key>
- <opt>val:dtv.SHOWLEVELS_OFF</opt>
- <opt>hide_vclip:all</opt>
- </option>
- <option>
- <name>On</name>
- <key>SHOWLEVELS_ON</key>
- <opt>val:dtv.SHOWLEVELS_ON</opt>
- <opt>hide_vclip:</opt>
- </option>
- </param>
- <param>
- <name>Vclip</name>
- <key>vclip</key>
- <value>3.3</value>
- <type>float</type>
- <hide>$showlevels.hide_vclip</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_paprtr_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_paprtr_cc.block.yml
new file mode 100644
index 0000000000..0e1d6c285d
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_paprtr_cc.block.yml
@@ -0,0 +1,105 @@
+id: dtv_dvbt2_paprtr_cc
+label: Tone Reservation PAPR
+
+parameters:
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_16K_T2GI, FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI, 32K, 32K DVB-T2
+ GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+ vlength: ['1024', '2048', '4096', '8192', '8192', '16384', '16384', '32768',
+ '32768']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: pilotpattern
+ label: Pilot Pattern
+ dtype: enum
+ options: [PILOT_PP1, PILOT_PP2, PILOT_PP3, PILOT_PP4, PILOT_PP5, PILOT_PP6, PILOT_PP7,
+ PILOT_PP8]
+ option_labels: [PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8]
+ option_attributes:
+ val: [dtv.PILOT_PP1, dtv.PILOT_PP2, dtv.PILOT_PP3, dtv.PILOT_PP4, dtv.PILOT_PP5,
+ dtv.PILOT_PP6, dtv.PILOT_PP7, dtv.PILOT_PP8]
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: paprmode1
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: ['Off', Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ hide_vclip: [all, all, '', '']
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_111 }
+- id: paprmode2
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: [P2 Only, Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ hide_vclip: [all, all, '', '']
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_131 }
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+- id: vclip
+ label: Vclip
+ dtype: float
+ default: '3.3'
+ hide: ${ (paprmode1.hide_vclip if str(version) == 'VERSION_111' else paprmode2.hide_vclip)
+ }
+- id: iterations
+ label: Iterations
+ dtype: int
+ default: '10'
+ hide: ${ (paprmode1.hide_vclip if str(version) == 'VERSION_111' else paprmode2.hide_vclip)
+ }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fftsize.vlength }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fftsize.vlength }
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_paprtr_cc(${carriermode.val}, ${fftsize.val}, ${pilotpattern.val},\
+ \ ${guardinterval.val}, ${numdatasyms}, \n% if str(version) == 'VERSION_111':\n\
+ ${paprmode1.val}, \n% else:\n${paprmode2.val}, \n% endif\n${version.val},\
+ \ ${vclip}, ${iterations}, ${fftsize.vlength})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_paprtr_cc.xml b/gr-dtv/grc/dtv_dvbt2_paprtr_cc.xml
deleted file mode 100644
index 4fa37ef5b8..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_paprtr_cc.xml
+++ /dev/null
@@ -1,286 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Tone Reservation PAPR
-###################################################
- -->
-<block>
- <name>Tone Reservation PAPR</name>
- <key>dtv_dvbt2_paprtr_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_paprtr_cc($carriermode.val, $fftsize.val, $pilotpattern.val, $guardinterval.val, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$paprmode1.val, #slurp
-#else
-$paprmode2.val, #slurp
-#end if
-$version.val, $vclip, $iterations, $fftsize.vlength)</make>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize</key>
- <type>enum</type>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- <opt>vlength:1024</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- <opt>vlength:2048</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- <opt>vlength:4096</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- <opt>vlength:8192</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- <opt>vlength:8192</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- <opt>vlength:16384</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- <opt>vlength:16384</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- <opt>vlength:32768</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- <opt>vlength:32768</opt>
- </option>
- </param>
- <param>
- <name>Pilot Pattern</name>
- <key>pilotpattern</key>
- <type>enum</type>
- <option>
- <name>PP1</name>
- <key>PILOT_PP1</key>
- <opt>val:dtv.PILOT_PP1</opt>
- </option>
- <option>
- <name>PP2</name>
- <key>PILOT_PP2</key>
- <opt>val:dtv.PILOT_PP2</opt>
- </option>
- <option>
- <name>PP3</name>
- <key>PILOT_PP3</key>
- <opt>val:dtv.PILOT_PP3</opt>
- </option>
- <option>
- <name>PP4</name>
- <key>PILOT_PP4</key>
- <opt>val:dtv.PILOT_PP4</opt>
- </option>
- <option>
- <name>PP5</name>
- <key>PILOT_PP5</key>
- <opt>val:dtv.PILOT_PP5</opt>
- </option>
- <option>
- <name>PP6</name>
- <key>PILOT_PP6</key>
- <opt>val:dtv.PILOT_PP6</opt>
- </option>
- <option>
- <name>PP7</name>
- <key>PILOT_PP7</key>
- <opt>val:dtv.PILOT_PP7</opt>
- </option>
- <option>
- <name>PP8</name>
- <key>PILOT_PP8</key>
- <opt>val:dtv.PILOT_PP8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>Off</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- <opt>hide_vclip:all</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- <opt>hide_vclip:all</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- <opt>hide_vclip:</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- <opt>hide_vclip:</opt>
- </option>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>P2 Only</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- <opt>hide_vclip:all</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- <opt>hide_vclip:all</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- <opt>hide_vclip:</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- <opt>hide_vclip:</opt>
- </option>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <param>
- <name>Vclip</name>
- <key>vclip</key>
- <value>3.3</value>
- <type>float</type>
- <hide>#if str($version) == 'VERSION_111' then $paprmode1.hide_vclip else $paprmode2.hide_vclip</hide>
- </param>
- <param>
- <name>Iterations</name>
- <key>iterations</key>
- <value>10</value>
- <type>int</type>
- <hide>#if str($version) == 'VERSION_111' then $paprmode1.hide_vclip else $paprmode2.hide_vclip</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$fftsize.vlength</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$fftsize.vlength</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.block.yml b/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.block.yml
new file mode 100644
index 0000000000..083b86056c
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.block.yml
@@ -0,0 +1,137 @@
+id: dtv_dvbt2_pilotgenerator_cc
+label: Pilot Generator and IFFT
+
+parameters:
+- id: carriermode
+ label: Extended Carrier Mode
+ dtype: enum
+ options: [CARRIERS_NORMAL, CARRIERS_EXTENDED]
+ option_labels: [Normal, Extended]
+ option_attributes:
+ val: [dtv.CARRIERS_NORMAL, dtv.CARRIERS_EXTENDED]
+- id: fftsize
+ label: FFT Size
+ dtype: enum
+ options: [FFTSIZE_1K, FFTSIZE_2K, FFTSIZE_4K, FFTSIZE_8K, FFTSIZE_8K_T2GI, FFTSIZE_16K,
+ FFTSIZE_16K_T2GI, FFTSIZE_32K, FFTSIZE_32K_T2GI]
+ option_labels: [1K, 2K, 4K, 8K, 8K DVB-T2 GI, 16K, 16K DVB-T2 GI, 32K, 32K DVB-T2
+ GI]
+ option_attributes:
+ val: [dtv.FFTSIZE_1K, dtv.FFTSIZE_2K, dtv.FFTSIZE_4K, dtv.FFTSIZE_8K, dtv.FFTSIZE_8K_T2GI,
+ dtv.FFTSIZE_16K, dtv.FFTSIZE_16K_T2GI, dtv.FFTSIZE_32K, dtv.FFTSIZE_32K_T2GI]
+ vlength: ['1024', '2048', '4096', '8192', '8192', '16384', '16384', '32768',
+ '32768']
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: pilotpattern
+ label: Pilot Pattern
+ dtype: enum
+ options: [PILOT_PP1, PILOT_PP2, PILOT_PP3, PILOT_PP4, PILOT_PP5, PILOT_PP6, PILOT_PP7,
+ PILOT_PP8]
+ option_labels: [PP1, PP2, PP3, PP4, PP5, PP6, PP7, PP8]
+ option_attributes:
+ val: [dtv.PILOT_PP1, dtv.PILOT_PP2, dtv.PILOT_PP3, dtv.PILOT_PP4, dtv.PILOT_PP5,
+ dtv.PILOT_PP6, dtv.PILOT_PP7, dtv.PILOT_PP8]
+- id: guardinterval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4, GI_1_128, GI_19_128, GI_19_256]
+ option_labels: [1/32, 1/16, 1/8, 1/4, 1/128, 19/128, 19/256]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4, dtv.GI_1_128, dtv.GI_19_128,
+ dtv.GI_19_256]
+- id: numdatasyms
+ label: Number of Data Symbols
+ dtype: int
+ default: '100'
+- id: paprmode1
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: ['Off', Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_111 }
+- id: paprmode2
+ label: PAPR Mode
+ dtype: enum
+ options: [PAPR_OFF, PAPR_ACE, PAPR_TR, PAPR_BOTH]
+ option_labels: [P2 Only, Active Constellation Extension, Tone Reservation, Both
+ ACE and TR]
+ option_attributes:
+ val: [dtv.PAPR_OFF, dtv.PAPR_ACE, dtv.PAPR_TR, dtv.PAPR_BOTH]
+ hide: ${ version.hide_131 }
+- id: version
+ label: Specification Version
+ dtype: enum
+ options: [VERSION_111, VERSION_131]
+ option_labels: [1.1.1, 1.3.1]
+ option_attributes:
+ hide_111: ['', all]
+ hide_131: [all, '']
+ val: [dtv.VERSION_111, dtv.VERSION_131]
+- id: preamble1
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO]
+ option_labels: [T2 SISO, T2 MISO]
+ option_attributes:
+ hide_miso: [all, '']
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO]
+ hide: ${ version.hide_111 }
+- id: preamble2
+ label: Preamble
+ dtype: enum
+ options: [PREAMBLE_T2_SISO, PREAMBLE_T2_MISO, PREAMBLE_T2_LITE_SISO, PREAMBLE_T2_LITE_MISO]
+ option_labels: [T2 SISO, T2 MISO, T2-Lite SISO, T2-Lite MISO]
+ option_attributes:
+ hide_miso: [all, '', all, '']
+ val: [dtv.PREAMBLE_T2_SISO, dtv.PREAMBLE_T2_MISO, dtv.PREAMBLE_T2_LITE_SISO,
+ dtv.PREAMBLE_T2_LITE_MISO]
+ hide: ${ version.hide_131 }
+- id: misogroup
+ label: MISO Group
+ dtype: enum
+ options: [MISO_TX1, MISO_TX2]
+ option_labels: [TX1, TX2]
+ option_attributes:
+ val: [dtv.MISO_TX1, dtv.MISO_TX2]
+ hide: ${ (preamble1.hide_miso if str(version) == 'VERSION_111' else preamble2.hide_miso)
+ }
+- id: equalization
+ label: Sin(x)/x Equalization
+ dtype: enum
+ options: [EQUALIZATION_OFF, EQUALIZATION_ON]
+ option_labels: ['Off', 'On']
+ option_attributes:
+ hide_bandwidth: [all, '']
+ val: [dtv.EQUALIZATION_OFF, dtv.EQUALIZATION_ON]
+- id: bandwidth
+ label: Bandwidth
+ dtype: enum
+ options: [BANDWIDTH_1_7_MHZ, BANDWIDTH_5_0_MHZ, BANDWIDTH_6_0_MHZ, BANDWIDTH_7_0_MHZ,
+ BANDWIDTH_8_0_MHZ, BANDWIDTH_10_0_MHZ]
+ option_labels: [1.7 MHz, 5 MHz, 6 MHz, 7 MHz, 8 MHz, 10 MHz]
+ option_attributes:
+ val: [dtv.BANDWIDTH_1_7_MHZ, dtv.BANDWIDTH_5_0_MHZ, dtv.BANDWIDTH_6_0_MHZ,
+ dtv.BANDWIDTH_7_0_MHZ, dtv.BANDWIDTH_8_0_MHZ, dtv.BANDWIDTH_10_0_MHZ]
+ hide: ${ equalization.hide_bandwidth }
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fftsize.vlength }
+
+templates:
+ imports: from gnuradio import dtv
+ make: "dtv.dvbt2_pilotgenerator_cc(${carriermode.val}, ${fftsize.val}, ${pilotpattern.val},\
+ \ ${guardinterval.val}, ${numdatasyms}, \n% if str(version) == 'VERSION_111':\n\
+ ${paprmode1.val}, \n% else:\n${paprmode2.val}, \n% endif\n${version.val},\
+ \ \n% if str(version) == 'VERSION_111':\n${preamble1.val}, \n% else:\n${preamble2.val},\
+ \ \n% endif\n${misogroup.val}, ${equalization.val}, ${bandwidth.val}, ${fftsize.vlength})"
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.xml b/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.xml
deleted file mode 100644
index fdcac6489d..0000000000
--- a/gr-dtv/grc/dtv_dvbt2_pilotgenerator_cc.xml
+++ /dev/null
@@ -1,386 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T2 Pilot Generator
-###################################################
- -->
-<block>
- <name>Pilot Generator and IFFT</name>
- <key>dtv_dvbt2_pilotgenerator_cc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt2_pilotgenerator_cc($carriermode.val, $fftsize.val, $pilotpattern.val, $guardinterval.val, $numdatasyms, #slurp
-#if str($version) == 'VERSION_111'
-$paprmode1.val, #slurp
-#else
-$paprmode2.val, #slurp
-#end if
-$version.val, #slurp
-#if str($version) == 'VERSION_111'
-$preamble1.val, #slurp
-#else
-$preamble2.val, #slurp
-#end if
-$misogroup.val, $equalization.val, $bandwidth.val, $fftsize.vlength)</make>
- <param>
- <name>Extended Carrier Mode</name>
- <key>carriermode</key>
- <type>enum</type>
- <option>
- <name>Normal</name>
- <key>CARRIERS_NORMAL</key>
- <opt>val:dtv.CARRIERS_NORMAL</opt>
- </option>
- <option>
- <name>Extended</name>
- <key>CARRIERS_EXTENDED</key>
- <opt>val:dtv.CARRIERS_EXTENDED</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fftsize</key>
- <type>enum</type>
- <option>
- <name>1K</name>
- <key>FFTSIZE_1K</key>
- <opt>val:dtv.FFTSIZE_1K</opt>
- <opt>vlength:1024</opt>
- </option>
- <option>
- <name>2K</name>
- <key>FFTSIZE_2K</key>
- <opt>val:dtv.FFTSIZE_2K</opt>
- <opt>vlength:2048</opt>
- </option>
- <option>
- <name>4K</name>
- <key>FFTSIZE_4K</key>
- <opt>val:dtv.FFTSIZE_4K</opt>
- <opt>vlength:4096</opt>
- </option>
- <option>
- <name>8K</name>
- <key>FFTSIZE_8K</key>
- <opt>val:dtv.FFTSIZE_8K</opt>
- <opt>vlength:8192</opt>
- </option>
- <option>
- <name>8K DVB-T2 GI</name>
- <key>FFTSIZE_8K_T2GI</key>
- <opt>val:dtv.FFTSIZE_8K_T2GI</opt>
- <opt>vlength:8192</opt>
- </option>
- <option>
- <name>16K</name>
- <key>FFTSIZE_16K</key>
- <opt>val:dtv.FFTSIZE_16K</opt>
- <opt>vlength:16384</opt>
- </option>
- <option>
- <name>16K DVB-T2 GI</name>
- <key>FFTSIZE_16K_T2GI</key>
- <opt>val:dtv.FFTSIZE_16K_T2GI</opt>
- <opt>vlength:16384</opt>
- </option>
- <option>
- <name>32K</name>
- <key>FFTSIZE_32K</key>
- <opt>val:dtv.FFTSIZE_32K</opt>
- <opt>vlength:32768</opt>
- </option>
- <option>
- <name>32K DVB-T2 GI</name>
- <key>FFTSIZE_32K_T2GI</key>
- <opt>val:dtv.FFTSIZE_32K_T2GI</opt>
- <opt>vlength:32768</opt>
- </option>
- </param>
- <param>
- <name>Pilot Pattern</name>
- <key>pilotpattern</key>
- <type>enum</type>
- <option>
- <name>PP1</name>
- <key>PILOT_PP1</key>
- <opt>val:dtv.PILOT_PP1</opt>
- </option>
- <option>
- <name>PP2</name>
- <key>PILOT_PP2</key>
- <opt>val:dtv.PILOT_PP2</opt>
- </option>
- <option>
- <name>PP3</name>
- <key>PILOT_PP3</key>
- <opt>val:dtv.PILOT_PP3</opt>
- </option>
- <option>
- <name>PP4</name>
- <key>PILOT_PP4</key>
- <opt>val:dtv.PILOT_PP4</opt>
- </option>
- <option>
- <name>PP5</name>
- <key>PILOT_PP5</key>
- <opt>val:dtv.PILOT_PP5</opt>
- </option>
- <option>
- <name>PP6</name>
- <key>PILOT_PP6</key>
- <opt>val:dtv.PILOT_PP6</opt>
- </option>
- <option>
- <name>PP7</name>
- <key>PILOT_PP7</key>
- <opt>val:dtv.PILOT_PP7</opt>
- </option>
- <option>
- <name>PP8</name>
- <key>PILOT_PP8</key>
- <opt>val:dtv.PILOT_PP8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guardinterval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- <option>
- <name>1/128</name>
- <key>GI_1_128</key>
- <opt>val:dtv.GI_1_128</opt>
- </option>
- <option>
- <name>19/128</name>
- <key>GI_19_128</key>
- <opt>val:dtv.GI_19_128</opt>
- </option>
- <option>
- <name>19/256</name>
- <key>GI_19_256</key>
- <opt>val:dtv.GI_19_256</opt>
- </option>
- </param>
- <param>
- <name>Number of Data Symbols</name>
- <key>numdatasyms</key>
- <value>100</value>
- <type>int</type>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>Off</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>PAPR Mode</name>
- <key>paprmode2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>P2 Only</name>
- <key>PAPR_OFF</key>
- <opt>val:dtv.PAPR_OFF</opt>
- </option>
- <option>
- <name>Active Constellation Extension</name>
- <key>PAPR_ACE</key>
- <opt>val:dtv.PAPR_ACE</opt>
- </option>
- <option>
- <name>Tone Reservation</name>
- <key>PAPR_TR</key>
- <opt>val:dtv.PAPR_TR</opt>
- </option>
- <option>
- <name>Both ACE and TR</name>
- <key>PAPR_BOTH</key>
- <opt>val:dtv.PAPR_BOTH</opt>
- </option>
- </param>
- <param>
- <name>Specification Version</name>
- <key>version</key>
- <type>enum</type>
- <option>
- <name>1.1.1</name>
- <key>VERSION_111</key>
- <opt>val:dtv.VERSION_111</opt>
- <opt>hide_111:</opt>
- <opt>hide_131:all</opt>
- </option>
- <option>
- <name>1.3.1</name>
- <key>VERSION_131</key>
- <opt>val:dtv.VERSION_131</opt>
- <opt>hide_111:all</opt>
- <opt>hide_131:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble1</key>
- <type>enum</type>
- <hide>$version.hide_111</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_miso:all</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_miso:</opt>
- </option>
- </param>
- <param>
- <name>Preamble</name>
- <key>preamble2</key>
- <type>enum</type>
- <hide>$version.hide_131</hide>
- <option>
- <name>T2 SISO</name>
- <key>PREAMBLE_T2_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_SISO</opt>
- <opt>hide_miso:all</opt>
- </option>
- <option>
- <name>T2 MISO</name>
- <key>PREAMBLE_T2_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_MISO</opt>
- <opt>hide_miso:</opt>
- </option>
- <option>
- <name>T2-Lite SISO</name>
- <key>PREAMBLE_T2_LITE_SISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_SISO</opt>
- <opt>hide_miso:all</opt>
- </option>
- <option>
- <name>T2-Lite MISO</name>
- <key>PREAMBLE_T2_LITE_MISO</key>
- <opt>val:dtv.PREAMBLE_T2_LITE_MISO</opt>
- <opt>hide_miso:</opt>
- </option>
- </param>
- <param>
- <name>MISO Group</name>
- <key>misogroup</key>
- <type>enum</type>
- <hide>#if str($version) == 'VERSION_111' then $preamble1.hide_miso else $preamble2.hide_miso</hide>
- <option>
- <name>TX1</name>
- <key>MISO_TX1</key>
- <opt>val:dtv.MISO_TX1</opt>
- </option>
- <option>
- <name>TX2</name>
- <key>MISO_TX2</key>
- <opt>val:dtv.MISO_TX2</opt>
- </option>
- </param>
- <param>
- <name>Sin(x)/x Equalization</name>
- <key>equalization</key>
- <type>enum</type>
- <option>
- <name>Off</name>
- <key>EQUALIZATION_OFF</key>
- <opt>val:dtv.EQUALIZATION_OFF</opt>
- <opt>hide_bandwidth:all</opt>
- </option>
- <option>
- <name>On</name>
- <key>EQUALIZATION_ON</key>
- <opt>val:dtv.EQUALIZATION_ON</opt>
- <opt>hide_bandwidth:</opt>
- </option>
- </param>
- <param>
- <name>Bandwidth</name>
- <key>bandwidth</key>
- <type>enum</type>
- <hide>$equalization.hide_bandwidth</hide>
- <option>
- <name>1.7 MHz</name>
- <key>BANDWIDTH_1_7_MHZ</key>
- <opt>val:dtv.BANDWIDTH_1_7_MHZ</opt>
- </option>
- <option>
- <name>5 MHz</name>
- <key>BANDWIDTH_5_0_MHZ</key>
- <opt>val:dtv.BANDWIDTH_5_0_MHZ</opt>
- </option>
- <option>
- <name>6 MHz</name>
- <key>BANDWIDTH_6_0_MHZ</key>
- <opt>val:dtv.BANDWIDTH_6_0_MHZ</opt>
- </option>
- <option>
- <name>7 MHz</name>
- <key>BANDWIDTH_7_0_MHZ</key>
- <opt>val:dtv.BANDWIDTH_7_0_MHZ</opt>
- </option>
- <option>
- <name>8 MHz</name>
- <key>BANDWIDTH_8_0_MHZ</key>
- <opt>val:dtv.BANDWIDTH_8_0_MHZ</opt>
- </option>
- <option>
- <name>10 MHz</name>
- <key>BANDWIDTH_10_0_MHZ</key>
- <opt>val:dtv.BANDWIDTH_10_0_MHZ</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$fftsize.vlength</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.block.yml b/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.block.yml
new file mode 100644
index 0000000000..0431f30881
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.block.yml
@@ -0,0 +1,47 @@
+id: dtv_dvbt_bit_inner_deinterleaver
+label: Bit Inner Deinterleaver
+
+parameters:
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ num_streams: ['1', '2', '2', '2']
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+ hide: part
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+ multiplicity: ${ hierarchy.num_streams }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_bit_inner_deinterleaver(${transmission_mode.payload_length}, ${constellation.val},
+ ${hierarchy.val}, ${transmission_mode.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.xml b/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.xml
deleted file mode 100644
index ff338d2118..0000000000
--- a/gr-dtv/grc/dtv_dvbt_bit_inner_deinterleaver.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Bit Inner Deinterleaver
-###################################################
- -->
-<block>
- <name>Bit Inner Deinterleaver</name>
- <key>dtv_dvbt_bit_inner_deinterleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_bit_inner_deinterleaver($transmission_mode.payload_length, $constellation.val, $hierarchy.val, $transmission_mode.val)</make>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- <opt>num_streams:1</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- <opt>num_streams:2</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- <opt>num_streams:2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- <opt>num_streams:2</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- <nports>$hierarchy.num_streams</nports>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.block.yml b/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.block.yml
new file mode 100644
index 0000000000..1d9b40473f
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.block.yml
@@ -0,0 +1,47 @@
+id: dtv_dvbt_bit_inner_interleaver
+label: Bit Inner Interleaver
+
+parameters:
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ num_streams: ['1', '2', '2', '2']
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+ hide: part
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+ multiplicity: ${ hierarchy.num_streams }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_bit_inner_interleaver(${transmission_mode.payload_length}, ${constellation.val},
+ ${hierarchy.val}, ${transmission_mode.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.xml b/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.xml
deleted file mode 100644
index 31f1c2cfa5..0000000000
--- a/gr-dtv/grc/dtv_dvbt_bit_inner_interleaver.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Bit Inner Interleaver
-###################################################
- -->
-<block>
- <name>Bit Inner Interleaver</name>
- <key>dtv_dvbt_bit_inner_interleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_bit_inner_interleaver($transmission_mode.payload_length, $constellation.val, $hierarchy.val, $transmission_mode.val)</make>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- <opt>num_streams:1</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- <opt>num_streams:2</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- <opt>num_streams:2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- <opt>num_streams:2</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- <nports>$hierarchy.num_streams</nports>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.block.yml b/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.block.yml
new file mode 100644
index 0000000000..b4b5708bcc
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.block.yml
@@ -0,0 +1,39 @@
+id: dtv_dvbt_convolutional_deinterleaver
+label: Convolutional Deinterleaver
+
+parameters:
+- id: blocks
+ label: Blocks (12 Bytes)
+ dtype: int
+ default: '136'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: I
+ label: Number of Shift registers
+ dtype: int
+ default: '12'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: M
+ label: Depth of shift registers
+ dtype: int
+ default: '17'
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 1
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*I }
+
+asserts:
+- ${ blocks > 0 }
+- ${ I > 0 }
+- ${ M > 0 }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_convolutional_deinterleaver(${blocks}, ${I}, ${M})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.xml b/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.xml
deleted file mode 100644
index 315920bd42..0000000000
--- a/gr-dtv/grc/dtv_dvbt_convolutional_deinterleaver.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Convolutional Deinterleaver
-###################################################
- -->
-<block>
- <name>Convolutional Deinterleaver</name>
- <key>dtv_dvbt_convolutional_deinterleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_convolutional_deinterleaver($blocks, $I, $M)</make>
- <param>
- <name>Blocks (12 Bytes)</name>
- <key>blocks</key>
- <value>136</value>
- <type>int</type>
- </param>
- <param>
- <name>Number of Shift registers</name>
- <key>I</key>
- <value>12</value>
- <type>int</type>
- </param>
- <param>
- <name>Depth of shift registers</name>
- <key>M</key>
- <value>17</value>
- <type>int</type>
- </param>
- <check>$blocks &gt; 0</check>
- <check>$I &gt; 0</check>
- <check>$M &gt; 0</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>1</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$blocks*$I</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.block.yml b/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.block.yml
new file mode 100644
index 0000000000..e47f1d09e9
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.block.yml
@@ -0,0 +1,39 @@
+id: dtv_dvbt_convolutional_interleaver
+label: Convolutional Interleaver
+
+parameters:
+- id: blocks
+ label: Blocks (12 Bytes)
+ dtype: int
+ default: '136'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: I
+ label: Number of Shift registers
+ dtype: int
+ default: '12'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: M
+ label: Depth of shift registers
+ dtype: int
+ default: '17'
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*I }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 1
+
+asserts:
+- ${ blocks > 0 }
+- ${ I > 0 }
+- ${ M > 0 }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_convolutional_interleaver(${blocks}, ${I}, ${M})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.xml b/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.xml
deleted file mode 100644
index 04518dd622..0000000000
--- a/gr-dtv/grc/dtv_dvbt_convolutional_interleaver.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Convolutional Interleaver
-###################################################
- -->
-<block>
- <name>Convolutional Interleaver</name>
- <key>dtv_dvbt_convolutional_interleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_convolutional_interleaver($blocks, $I, $M)</make>
- <param>
- <name>Blocks (12 Bytes)</name>
- <key>blocks</key>
- <value>136</value>
- <type>int</type>
- </param>
- <param>
- <name>Number of Shift registers</name>
- <key>I</key>
- <value>12</value>
- <type>int</type>
- </param>
- <param>
- <name>Depth of shift registers</name>
- <key>M</key>
- <value>17</value>
- <type>int</type>
- </param>
- <check>$blocks &gt; 0</check>
- <check>$I &gt; 0</check>
- <check>$M &gt; 0</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$blocks*$I</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>1</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_demap.block.yml b/gr-dtv/grc/dtv_dvbt_demap.block.yml
new file mode 100644
index 0000000000..857bcf3463
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_demap.block.yml
@@ -0,0 +1,48 @@
+id: dtv_dvbt_demap
+label: DVB-T Demap
+
+parameters:
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: gain
+ label: Gain
+ dtype: complex
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.payload_length }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_demap(${transmission_mode.payload_length}, ${constellation.val},
+ ${hierarchy.val}, ${transmission_mode.val}, ${gain})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_demap.xml b/gr-dtv/grc/dtv_dvbt_demap.xml
deleted file mode 100644
index 2268ed7cf5..0000000000
--- a/gr-dtv/grc/dtv_dvbt_demap.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Demap
-###################################################
- -->
-<block>
- <name>DVB-T Demap</name>
- <key>dtv_dvbt_demap</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_demap($transmission_mode.payload_length, $constellation.val, $hierarchy.val, $transmission_mode.val, $gain)</make>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>complex</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_demod_reference_signals.block.yml b/gr-dtv/grc/dtv_dvbt_demod_reference_signals.block.yml
new file mode 100644
index 0000000000..a700f54eb6
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_demod_reference_signals.block.yml
@@ -0,0 +1,86 @@
+id: dtv_dvbt_demod_reference_signals
+label: Demod Reference Signals
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: code_rate_hp
+ label: Code rate HP
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+- id: code_rate_lp
+ label: Code rate LP
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+- id: guard_interval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4]
+ option_labels: [1/32, 1/16, 1/8, 1/4]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4]
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ fft_length: ['2048', '8192']
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: include_cell_id
+ label: Include Cell ID
+ dtype: enum
+ options: [call_id_yes, cell_id_no]
+ option_labels: ['Yes', 'No']
+ option_attributes:
+ val: ['1', '0']
+- id: cell_id
+ label: Cell Id
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.fft_length }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.payload_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_demod_reference_signals(${type.size}, ${transmission_mode.fft_length},
+ ${transmission_mode.payload_length}, ${constellation.val}, ${hierarchy.val},
+ ${code_rate_hp.val}, ${code_rate_lp.val}, ${guard_interval.val}, ${transmission_mode.val},
+ ${include_cell_id.val}, ${cell_id})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_demod_reference_signals.xml b/gr-dtv/grc/dtv_dvbt_demod_reference_signals.xml
deleted file mode 100644
index f92469b7e6..0000000000
--- a/gr-dtv/grc/dtv_dvbt_demod_reference_signals.xml
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Demod Reference Signals
-###################################################
- -->
-<block>
- <name>Demod Reference Signals</name>
- <key>dtv_dvbt_demod_reference_signals</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_demod_reference_signals($type.size, $transmission_mode.fft_length, $transmission_mode.payload_length, $constellation.val, $hierarchy.val, $code_rate_hp.val, $code_rate_lp.val, $guard_interval.val, $transmission_mode.val, $include_cell_id.val, $cell_id)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Code rate HP</name>
- <key>code_rate_hp</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <param>
- <name>Code rate LP</name>
- <key>code_rate_lp</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guard_interval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>fft_length:2048</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>fft_length:8192</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <param>
- <name>Include Cell ID</name>
- <key>include_cell_id</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>call_id_yes</key>
- <opt>val:1</opt>
- </option>
- <option>
- <name>No</name>
- <key>cell_id_no</key>
- <opt>val:0</opt>
- </option>
- </param>
- <param>
- <name>Cell Id</name>
- <key>cell_id</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$transmission_mode.fft_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_energy_descramble.block.yml b/gr-dtv/grc/dtv_dvbt_energy_descramble.block.yml
new file mode 100644
index 0000000000..9ca3fee196
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_energy_descramble.block.yml
@@ -0,0 +1,27 @@
+id: dtv_dvbt_energy_descramble
+label: Energy Descramble
+
+parameters:
+- id: nsize
+ label: Blocks(188 Bytes)
+ dtype: int
+ default: '8'
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 188*8
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 1
+
+asserts:
+- ${ nsize > 0 }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_energy_descramble(${nsize})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_energy_descramble.xml b/gr-dtv/grc/dtv_dvbt_energy_descramble.xml
deleted file mode 100644
index 689f85424f..0000000000
--- a/gr-dtv/grc/dtv_dvbt_energy_descramble.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Energy Descramble
-###################################################
- -->
-<block>
- <name>Energy Descramble</name>
- <key>dtv_dvbt_energy_descramble</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_energy_descramble($nsize)</make>
- <param>
- <name>Blocks(188 Bytes)</name>
- <key>nsize</key>
- <value>8</value>
- <type>int</type>
- </param>
- <check>$nsize &gt; 0</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>188*8</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>1</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_energy_dispersal.block.yml b/gr-dtv/grc/dtv_dvbt_energy_dispersal.block.yml
new file mode 100644
index 0000000000..1b7628fb65
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_energy_dispersal.block.yml
@@ -0,0 +1,28 @@
+id: dtv_dvbt_energy_dispersal
+label: Energy Dispersal
+
+parameters:
+- id: nsize
+ label: Blocks(1504 Bytes)
+ dtype: int
+ default: '8'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 1
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ 1504*nsize }
+
+asserts:
+- ${ nsize > 0 }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_energy_dispersal(${nsize})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_energy_dispersal.xml b/gr-dtv/grc/dtv_dvbt_energy_dispersal.xml
deleted file mode 100644
index 50746c8e4d..0000000000
--- a/gr-dtv/grc/dtv_dvbt_energy_dispersal.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Energy Dispersal
-###################################################
- -->
-<block>
- <name>Energy Dispersal</name>
- <key>dtv_dvbt_energy_dispersal</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_energy_dispersal($nsize)</make>
- <param>
- <name>Blocks(1504 Bytes)</name>
- <key>nsize</key>
- <value>8</value>
- <type>int</type>
- </param>
- <check>$nsize &gt; 0</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>1</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>1504*$nsize</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_inner_coder.block.yml b/gr-dtv/grc/dtv_dvbt_inner_coder.block.yml
new file mode 100644
index 0000000000..ca9c2eda4a
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_inner_coder.block.yml
@@ -0,0 +1,57 @@
+id: dtv_dvbt_inner_coder
+label: Inner Coder
+
+parameters:
+- id: ninput
+ label: Input length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: noutput
+ label: Output length
+ dtype: int
+ default: '1512'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: code_rate
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ ninput }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ noutput }
+
+asserts:
+- ${ ninput > 0 }
+- ${ noutput > 0 }
+- ${ noutput >= ninput }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_inner_coder(${ninput}, ${noutput}, ${constellation.val}, ${hierarchy.val},
+ ${code_rate.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_inner_coder.xml b/gr-dtv/grc/dtv_dvbt_inner_coder.xml
deleted file mode 100644
index 4751065dd1..0000000000
--- a/gr-dtv/grc/dtv_dvbt_inner_coder.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Inner Coder
-###################################################
- -->
-<block>
- <name>Inner Coder</name>
- <key>dtv_dvbt_inner_coder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_inner_coder($ninput, $noutput, $constellation.val, $hierarchy.val, $code_rate.val)</make>
- <param>
- <name>Input length</name>
- <key>ninput</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Output length</name>
- <key>noutput</key>
- <value>1512</value>
- <type>int</type>
- </param>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>code_rate</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <check>$ninput &gt; 0</check>
- <check>$noutput &gt; 0</check>
- <check>$noutput &gt;= $ninput</check>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$ninput</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$noutput</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_map.block.yml b/gr-dtv/grc/dtv_dvbt_map.block.yml
new file mode 100644
index 0000000000..76ffa0400b
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_map.block.yml
@@ -0,0 +1,48 @@
+id: dtv_dvbt_map
+label: DVB-T Map
+
+parameters:
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: gain
+ label: Gain
+ dtype: complex
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.payload_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_map(${transmission_mode.payload_length}, ${constellation.val},
+ ${hierarchy.val}, ${transmission_mode.val}, ${gain})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_map.xml b/gr-dtv/grc/dtv_dvbt_map.xml
deleted file mode 100644
index 705a508033..0000000000
--- a/gr-dtv/grc/dtv_dvbt_map.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Map
-###################################################
- -->
-<block>
- <name>DVB-T Map</name>
- <key>dtv_dvbt_map</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_map($transmission_mode.payload_length, $constellation.val, $hierarchy.val, $transmission_mode.val, $gain)</make>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>complex</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.block.yml b/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.block.yml
new file mode 100644
index 0000000000..fc00654488
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.block.yml
@@ -0,0 +1,45 @@
+id: dtv_dvbt_ofdm_sym_acquisition
+label: OFDM Symbol Acquisition
+
+parameters:
+- id: type
+ label: Output Type
+ dtype: enum
+ default: float
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ fcn: [c, f, i, s, b]
+ hide: part
+- id: fft_length
+ label: FFT Length
+ dtype: int
+ default: '2048'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: occupied_tones
+ label: Occupied Tones
+ dtype: int
+ default: '1705'
+- id: cp_length
+ label: Cyclic Prefix Length
+ dtype: int
+ default: '64'
+- id: snr
+ label: SNR
+ dtype: real
+ default: '10'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ fft_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_ofdm_sym_acquisition(1, ${fft_length}, ${occupied_tones}, ${cp_length},
+ ${snr})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.xml b/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.xml
deleted file mode 100644
index a75dcc02c3..0000000000
--- a/gr-dtv/grc/dtv_dvbt_ofdm_sym_acquisition.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## OFDM Symbol Acquisition
-###################################################
- -->
-<block>
- <name>OFDM Symbol Acquisition</name>
- <key>dtv_dvbt_ofdm_sym_acquisition</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_ofdm_sym_acquisition(1, $fft_length, $occupied_tones, $cp_length, $snr)</make>
- <param>
- <name>Output Type</name>
- <key>type</key>
- <value>float</value>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>fcn:i</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:b</opt>
- </option>
- </param>
- <param>
- <name>FFT Length</name>
- <key>fft_length</key>
- <value>2048</value>
- <type>int</type>
- </param>
- <param>
- <name>Occupied Tones</name>
- <key>occupied_tones</key>
- <value>1705</value>
- <type>int</type>
- </param>
- <param>
- <name>Cyclic Prefix Length</name>
- <key>cp_length</key>
- <value>64</value>
- <type>int</type>
- </param>
- <param>
- <name>SNR</name>
- <key>snr</key>
- <value>10</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$fft_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.block.yml b/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.block.yml
new file mode 100644
index 0000000000..e037c42e08
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.block.yml
@@ -0,0 +1,57 @@
+id: dtv_dvbt_reed_solomon_dec
+label: Reed-Solomon Decoder
+
+parameters:
+- id: p
+ label: p
+ dtype: int
+ default: '2'
+- id: m
+ label: m
+ dtype: int
+ default: '8'
+- id: gfpoly
+ label: GF polynomial
+ dtype: raw
+ default: '0x11d'
+- id: n
+ label: N
+ dtype: int
+ default: '255'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: k
+ label: K
+ dtype: int
+ default: '239'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: t
+ label: t
+ dtype: int
+ default: '8'
+- id: s
+ label: Shortening size
+ dtype: int
+ default: '51'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: blocks
+ label: Blocks
+ dtype: int
+ default: '8'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*(n-s) }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*(k-s) }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_reed_solomon_dec(${p}, ${m}, ${gfpoly}, ${n}, ${k}, ${t}, ${s},
+ ${blocks})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.xml b/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.xml
deleted file mode 100644
index 798a6d40f8..0000000000
--- a/gr-dtv/grc/dtv_dvbt_reed_solomon_dec.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Reed Solomon Decoder
-###################################################
- -->
-<block>
- <name>Reed-Solomon Decoder</name>
- <key>dtv_dvbt_reed_solomon_dec</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_reed_solomon_dec($p, $m, $gfpoly, $n, $k, $t, $s, $blocks)</make>
- <param>
- <name>p</name>
- <key>p</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>m</name>
- <key>m</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>GF polynomial</name>
- <key>gfpoly</key>
- <value>0x11d</value>
- <type>raw</type>
- </param>
- <param>
- <name>N</name>
- <key>n</key>
- <value>255</value>
- <type>int</type>
- </param>
- <param>
- <name>K</name>
- <key>k</key>
- <value>239</value>
- <type>int</type>
- </param>
- <param>
- <name>t</name>
- <key>t</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Shortening size</name>
- <key>s</key>
- <value>51</value>
- <type>int</type>
- </param>
- <param>
- <name>Blocks</name>
- <key>blocks</key>
- <value>8</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$blocks*($n-$s)</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$blocks*($k-$s)</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.block.yml b/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.block.yml
new file mode 100644
index 0000000000..af463cad4e
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.block.yml
@@ -0,0 +1,57 @@
+id: dtv_dvbt_reed_solomon_enc
+label: Reed-Solomon Encoder
+
+parameters:
+- id: p
+ label: p
+ dtype: int
+ default: '2'
+- id: m
+ label: m
+ dtype: int
+ default: '8'
+- id: gfpoly
+ label: GF polynomial
+ dtype: raw
+ default: '0x11d'
+- id: n
+ label: N
+ dtype: int
+ default: '255'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: k
+ label: K
+ dtype: int
+ default: '239'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: t
+ label: t
+ dtype: int
+ default: '8'
+- id: s
+ label: Shortening size
+ dtype: int
+ default: '51'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: blocks
+ label: Blocks
+ dtype: int
+ default: '8'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*(k-s) }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ blocks*(n-s) }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_reed_solomon_enc(${p}, ${m}, ${gfpoly}, ${n}, ${k}, ${t}, ${s},
+ ${blocks})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.xml b/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.xml
deleted file mode 100644
index 3dd57a7df0..0000000000
--- a/gr-dtv/grc/dtv_dvbt_reed_solomon_enc.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Reed Solomon Encoder
-###################################################
- -->
-<block>
- <name>Reed-Solomon Encoder</name>
- <key>dtv_dvbt_reed_solomon_enc</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_reed_solomon_enc($p, $m, $gfpoly, $n, $k, $t, $s, $blocks)</make>
- <param>
- <name>p</name>
- <key>p</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>m</name>
- <key>m</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>GF polynomial</name>
- <key>gfpoly</key>
- <value>0x11d</value>
- <type>raw</type>
- </param>
- <param>
- <name>N</name>
- <key>n</key>
- <value>255</value>
- <type>int</type>
- </param>
- <param>
- <name>K</name>
- <key>k</key>
- <value>239</value>
- <type>int</type>
- </param>
- <param>
- <name>t</name>
- <key>t</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Shortening size</name>
- <key>s</key>
- <value>51</value>
- <type>int</type>
- </param>
- <param>
- <name>Blocks</name>
- <key>blocks</key>
- <value>8</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$blocks*($k-$s)</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$blocks*($n-$s)</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_reference_signals.block.yml b/gr-dtv/grc/dtv_dvbt_reference_signals.block.yml
new file mode 100644
index 0000000000..d693b5ae10
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_reference_signals.block.yml
@@ -0,0 +1,86 @@
+id: dtv_dvbt_reference_signals
+label: Reference Signals
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: code_rate_hp
+ label: Code rate HP
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+- id: code_rate_lp
+ label: Code rate LP
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+- id: guard_interval
+ label: Guard Interval
+ dtype: enum
+ options: [GI_1_32, GI_1_16, GI_1_8, GI_1_4]
+ option_labels: [1/32, 1/16, 1/8, 1/4]
+ option_attributes:
+ val: [dtv.GI_1_32, dtv.GI_1_16, dtv.GI_1_8, dtv.GI_1_4]
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ fft_length: ['2048', '8192']
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: include_cell_id
+ label: Include Cell ID
+ dtype: enum
+ options: [call_id_yes, cell_id_no]
+ option_labels: ['Yes', 'No']
+ option_attributes:
+ val: ['1', '0']
+- id: cell_id
+ label: Cell Id
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.payload_length }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ transmission_mode.fft_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_reference_signals(${type.size}, ${transmission_mode.payload_length},
+ ${transmission_mode.fft_length}, ${constellation.val}, ${hierarchy.val}, ${code_rate_hp.val},
+ ${code_rate_lp.val}, ${guard_interval.val}, ${transmission_mode.val}, ${include_cell_id.val},
+ ${cell_id})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_reference_signals.xml b/gr-dtv/grc/dtv_dvbt_reference_signals.xml
deleted file mode 100644
index 3a4282cc50..0000000000
--- a/gr-dtv/grc/dtv_dvbt_reference_signals.xml
+++ /dev/null
@@ -1,222 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Reference Signals
-###################################################
- -->
-<block>
- <name>Reference Signals</name>
- <key>dtv_dvbt_reference_signals</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_reference_signals($type.size, $transmission_mode.payload_length, $transmission_mode.fft_length, $constellation.val, $hierarchy.val, $code_rate_hp.val, $code_rate_lp.val, $guard_interval.val, $transmission_mode.val, $include_cell_id.val, $cell_id)</make>
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Code rate HP</name>
- <key>code_rate_hp</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <param>
- <name>Code rate LP</name>
- <key>code_rate_lp</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <param>
- <name>Guard Interval</name>
- <key>guard_interval</key>
- <type>enum</type>
- <option>
- <name>1/32</name>
- <key>GI_1_32</key>
- <opt>val:dtv.GI_1_32</opt>
- </option>
- <option>
- <name>1/16</name>
- <key>GI_1_16</key>
- <opt>val:dtv.GI_1_16</opt>
- </option>
- <option>
- <name>1/8</name>
- <key>GI_1_8</key>
- <opt>val:dtv.GI_1_8</opt>
- </option>
- <option>
- <name>1/4</name>
- <key>GI_1_4</key>
- <opt>val:dtv.GI_1_4</opt>
- </option>
- </param>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>fft_length:2048</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>fft_length:8192</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <param>
- <name>Include Cell ID</name>
- <key>include_cell_id</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>call_id_yes</key>
- <opt>val:1</opt>
- </option>
- <option>
- <name>No</name>
- <key>cell_id_no</key>
- <opt>val:0</opt>
- </option>
- </param>
- <param>
- <name>Cell Id</name>
- <key>cell_id</key>
- <value>0</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$transmission_mode.fft_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.block.yml b/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.block.yml
new file mode 100644
index 0000000000..d516f0ec7a
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.block.yml
@@ -0,0 +1,37 @@
+id: dtv_dvbt_symbol_inner_interleaver
+label: Symbol Inner Interleaver
+
+parameters:
+- id: transmission_mode
+ label: Transmission Mode
+ dtype: enum
+ options: [T2k, T8k]
+ option_labels: [2K, 8K]
+ option_attributes:
+ fft_length: ['2048', '8192']
+ payload_length: ['1512', '6048']
+ val: [dtv.T2k, dtv.T8k]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: direction
+ label: Direction
+ dtype: enum
+ options: [Interleave, Deinterleave]
+ option_attributes:
+ val: ['1', '0']
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: ${ transmission_mode.payload_length }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_symbol_inner_interleaver(${transmission_mode.payload_length}, ${transmission_mode.val},
+ ${direction.val})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.xml b/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.xml
deleted file mode 100644
index f440769a46..0000000000
--- a/gr-dtv/grc/dtv_dvbt_symbol_inner_interleaver.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Symbol Inner Interleaver
-###################################################
- -->
-<block>
- <name>Symbol Inner Interleaver</name>
- <key>dtv_dvbt_symbol_inner_interleaver</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_symbol_inner_interleaver($transmission_mode.payload_length, $transmission_mode.val, $direction.val)</make>
- <param>
- <name>Transmission Mode</name>
- <key>transmission_mode</key>
- <type>enum</type>
- <option>
- <name>2K</name>
- <key>T2k</key>
- <opt>val:dtv.T2k</opt>
- <opt>fft_length:2048</opt>
- <opt>payload_length:1512</opt>
- </option>
- <option>
- <name>8K</name>
- <key>T8k</key>
- <opt>val:dtv.T8k</opt>
- <opt>fft_length:8192</opt>
- <opt>payload_length:6048</opt>
- </option>
- </param>
- <param>
- <name>Direction</name>
- <key>direction</key>
- <type>enum</type>
- <option>
- <name>Interleave</name>
- <key>Interleave</key>
- <opt>val:1</opt>
- </option>
- <option>
- <name>Deinterleave</name>
- <key>Deinterleave</key>
- <opt>val:0</opt>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>$transmission_mode.payload_length</vlen>
- </source>
-</block>
diff --git a/gr-dtv/grc/dtv_dvbt_viterbi_decoder.block.yml b/gr-dtv/grc/dtv_dvbt_viterbi_decoder.block.yml
new file mode 100644
index 0000000000..367b581014
--- /dev/null
+++ b/gr-dtv/grc/dtv_dvbt_viterbi_decoder.block.yml
@@ -0,0 +1,51 @@
+id: dtv_dvbt_viterbi_decoder
+label: Viterbi Decoder
+
+parameters:
+- id: constellation
+ label: Constellation Type
+ dtype: enum
+ options: [qpsk, 16qam, 64qam]
+ option_labels: [QPSK, 16QAM, 64QAM]
+ option_attributes:
+ val: [dtv.MOD_QPSK, dtv.MOD_16QAM, dtv.MOD_64QAM]
+- id: hierarchy
+ label: Hierarchy Type
+ dtype: enum
+ options: [nh, alpha1, alpha2, alpha4]
+ option_labels: [Non Hierarchical, Alpha 1, Alpha 2, Alpha 4]
+ option_attributes:
+ val: [dtv.NH, dtv.ALPHA1, dtv.ALPHA2, dtv.ALPHA4]
+- id: code_rate
+ label: Code rate
+ dtype: enum
+ options: [C1_2, C2_3, C3_4, C5_6, C7_8]
+ option_labels: [1/2, 2/3, 3/4, 5/6, 7/8]
+ option_attributes:
+ val: [dtv.C1_2, dtv.C2_3, dtv.C3_4, dtv.C5_6, dtv.C7_8]
+- id: type
+ label: Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: block_size
+ label: Block Size
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: ${ type.io }
+
+templates:
+ imports: from gnuradio import dtv
+ make: dtv.dvbt_viterbi_decoder(${constellation.val}, ${hierarchy.val}, ${code_rate.val},
+ ${block_size})
+
+file_format: 1
diff --git a/gr-dtv/grc/dtv_dvbt_viterbi_decoder.xml b/gr-dtv/grc/dtv_dvbt_viterbi_decoder.xml
deleted file mode 100644
index 1dde80c281..0000000000
--- a/gr-dtv/grc/dtv_dvbt_viterbi_decoder.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DVB-T Viterbi Decoder
-###################################################
- -->
-<block>
- <name>Viterbi Decoder</name>
- <key>dtv_dvbt_viterbi_decoder</key>
- <import>from gnuradio import dtv</import>
- <make>dtv.dvbt_viterbi_decoder($constellation.val, $hierarchy.val, $code_rate.val, $block_size)</make>
- <param>
- <name>Constellation Type</name>
- <key>constellation</key>
- <type>enum</type>
- <option>
- <name>QPSK</name>
- <key>qpsk</key>
- <opt>val:dtv.MOD_QPSK</opt>
- </option>
- <option>
- <name>16QAM</name>
- <key>16qam</key>
- <opt>val:dtv.MOD_16QAM</opt>
- </option>
- <option>
- <name>64QAM</name>
- <key>64qam</key>
- <opt>val:dtv.MOD_64QAM</opt>
- </option>
- </param>
- <param>
- <name>Hierarchy Type</name>
- <key>hierarchy</key>
- <type>enum</type>
- <option>
- <name>Non Hierarchical</name>
- <key>nh</key>
- <opt>val:dtv.NH</opt>
- </option>
- <option>
- <name>Alpha 1</name>
- <key>alpha1</key>
- <opt>val:dtv.ALPHA1</opt>
- </option>
- <option>
- <name>Alpha 2</name>
- <key>alpha2</key>
- <opt>val:dtv.ALPHA2</opt>
- </option>
- <option>
- <name>Alpha 4</name>
- <key>alpha4</key>
- <opt>val:dtv.ALPHA4</opt>
- </option>
- </param>
- <param>
- <name>Code rate</name>
- <key>code_rate</key>
- <type>enum</type>
- <option>
- <name>1/2</name>
- <key>C1_2</key>
- <opt>val:dtv.C1_2</opt>
- </option>
- <option>
- <name>2/3</name>
- <key>C2_3</key>
- <opt>val:dtv.C2_3</opt>
- </option>
- <option>
- <name>3/4</name>
- <key>C3_4</key>
- <opt>val:dtv.C3_4</opt>
- </option>
- <option>
- <name>5/6</name>
- <key>C5_6</key>
- <opt>val:dtv.C5_6</opt>
- </option>
- <option>
- <name>7/8</name>
- <key>C7_8</key>
- <opt>val:dtv.C7_8</opt>
- </option>
- </param>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.io</type>
- </source>
-</block>
diff --git a/gr-fec/grc/CMakeLists.txt b/gr-fec/grc/CMakeLists.txt
index f61603df22..5214189b99 100644
--- a/gr-fec/grc/CMakeLists.txt
+++ b/gr-fec/grc/CMakeLists.txt
@@ -18,9 +18,9 @@
# Boston, MA 02110-1301, USA.
########################################################################
-file(GLOB xml_files "*.xml")
+file(GLOB yml_files "*.yml")
install(FILES
- ${xml_files}
+ ${yml_files}
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-fec/grc/fec.tree.yml b/gr-fec/grc/fec.tree.yml
new file mode 100644
index 0000000000..e9109ba316
--- /dev/null
+++ b/gr-fec/grc/fec.tree.yml
@@ -0,0 +1,43 @@
+'[Core]':
+- Error Coding:
+ - Decoders:
+ - variable_cc_decoder_def
+ - variable_repetition_decoder_def
+ - variable_ldpc_decoder_def
+ - variable_ldpc_bit_flip_decoder_def
+ - variable_tpc_decoder_def
+ - variable_dummy_decoder_def
+ - variable_polar_decoder_sc_def
+ - variable_polar_decoder_sc_list_def
+ - variable_polar_decoder_sc_systematic_def
+ - Encoders:
+ - variable_cc_encoder_def
+ - variable_ccsds_encoder_def
+ - variable_repetition_encoder_def
+ - variable_tpc_encoder_def
+ - variable_ldpc_encoder_def
+ - variable_ldpc_encoder_G_def
+ - variable_ldpc_encoder_H_def
+ - variable_polar_encoder_def
+ - variable_polar_encoder_systematic_def
+ - variable_dummy_encoder_def
+ - fec_extended_encoder
+ - fec_extended_async_encoder
+ - fec_extended_tagged_encoder
+ - fec_extended_decoder
+ - fec_extended_tagged_decoder
+ - fec_generic_encoder
+ - fec_generic_decoder
+ - fec_tagged_encoder
+ - fec_tagged_decoder
+ - fec_async_encoder
+ - fec_async_decoder
+ - fec_decode_ccsds_27_fb
+ - fec_encode_ccsds_27_bb
+ - fec_puncture_xx
+ - fec_depuncture_bb
+ - fec_ber_bf
+ - fec_bercurve_generator
+ - variable_polar_code_configurator
+ - variable_ldpc_H_matrix_def
+ - variable_ldpc_G_matrix_def
diff --git a/gr-fec/grc/fec_async_decoder.block.yml b/gr-fec/grc/fec_async_decoder.block.yml
new file mode 100644
index 0000000000..94c3e148fd
--- /dev/null
+++ b/gr-fec/grc/fec_async_decoder.block.yml
@@ -0,0 +1,43 @@
+id: fec_async_decoder
+label: FEC Async Decoder
+
+parameters:
+- id: decoder
+ label: Decoder Obj.
+ dtype: raw
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: packed
+ label: Packed
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: part
+- id: rev_pack
+ label: Rev. Packing
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: ${ ('part' if packed == 'True' else 'all') }
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.async_decoder(${decoder}, ${packed}, ${rev_pack}, ${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_async_decoder.xml b/gr-fec/grc/fec_async_decoder.xml
deleted file mode 100644
index 9b67d869e4..0000000000
--- a/gr-fec/grc/fec_async_decoder.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Async Decoder</name>
- <key>fec_async_decoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.async_decoder($decoder, $packed, $rev_pack, $mtu)</make>
-
- <param>
- <name>Decoder Obj.</name>
- <key>decoder</key>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Packed</name>
- <key>packed</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
-
- <param>
- <name>Rev. Packing</name>
- <key>rev_pack</key>
- <value>True</value>
- <type>enum</type>
- <hide>#if $packed() == 'True' then 'part' else 'all'#</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
- <doc>
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_async_encoder.block.yml b/gr-fec/grc/fec_async_encoder.block.yml
new file mode 100644
index 0000000000..4b3902196e
--- /dev/null
+++ b/gr-fec/grc/fec_async_encoder.block.yml
@@ -0,0 +1,50 @@
+id: fec_async_encoder
+label: FEC Async Encoder
+
+parameters:
+- id: encoder
+ label: Encoder Obj.
+ dtype: raw
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: packed
+ label: Packed
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+ hide: part
+- id: rev_unpack
+ label: Rev. Unpacking
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: ${ ('part' if packed == 'True' else 'all') }
+- id: rev_pack
+ label: Rev. Packing
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: ${ ('part' if packed == 'True' else 'all') }
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.async_encoder(${encoder}, ${packed}, ${rev_unpack}, ${rev_pack}, ${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_async_encoder.xml b/gr-fec/grc/fec_async_encoder.xml
deleted file mode 100644
index 68d516fc6d..0000000000
--- a/gr-fec/grc/fec_async_encoder.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Async Encoder</name>
- <key>fec_async_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.async_encoder($encoder, $packed, $rev_unpack, $rev_pack, $mtu)</make>
-
- <param>
- <name>Encoder Obj.</name>
- <key>encoder</key>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Packed</name>
- <key>packed</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
-
- <param>
- <name>Rev. Unpacking</name>
- <key>rev_unpack</key>
- <value>True</value>
- <type>enum</type>
- <hide>#if $packed() == 'True' then 'part' else 'all'#</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>Rev. Packing</name>
- <key>rev_pack</key>
- <value>True</value>
- <type>enum</type>
- <hide>#if $packed() == 'True' then 'part' else 'all'#</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
- <doc>
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_ber_bf.block.yml b/gr-fec/grc/fec_ber_bf.block.yml
new file mode 100644
index 0000000000..65bb2747f0
--- /dev/null
+++ b/gr-fec/grc/fec_ber_bf.block.yml
@@ -0,0 +1,37 @@
+id: fec_ber_bf
+label: BER
+
+parameters:
+- id: test_mode
+ label: Test Mode
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+- id: berminerrors
+ label: BER Min. Errors
+ dtype: int
+ default: '100'
+ hide: ${ ('part' if test_mode else 'all') }
+- id: berlimit
+ label: BER Limit
+ dtype: float
+ default: '-7.0'
+ hide: ${ ('part' if test_mode else 'all') }
+
+inputs:
+- label: in0
+ domain: stream
+ dtype: byte
+- label: in1
+ domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.ber_bf(${test_mode}, ${berminerrors}, ${berlimit})
+
+file_format: 1
diff --git a/gr-fec/grc/fec_ber_bf.xml b/gr-fec/grc/fec_ber_bf.xml
deleted file mode 100644
index 6d8d85e9ff..0000000000
--- a/gr-fec/grc/fec_ber_bf.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>BER</name>
- <key>fec_ber_bf</key>
- <import>from gnuradio import fec</import>
- <make>fec.ber_bf($test_mode, $berminerrors, $berlimit)</make>
-
- <param>
- <name>Test Mode</name>
- <key>test_mode</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- </param>
-
- <param>
- <name>BER Min. Errors</name>
- <key>berminerrors</key>
- <value>100</value>
- <type>int</type>
- <hide>#if $test_mode() then 'part' else 'all'#</hide>
- </param>
-
- <param>
- <name>BER Limit</name>
- <key>berlimit</key>
- <value>-7.0</value>
- <type>float</type>
- <hide>#if $test_mode() then 'part' else 'all'#</hide>
- </param>
-
- <sink>
- <name>in0</name>
- <type>byte</type>
- </sink>
-
- <sink>
- <name>in1</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-
-</block> \ No newline at end of file
diff --git a/gr-fec/grc/fec_bercurve_generator.block.yml b/gr-fec/grc/fec_bercurve_generator.block.yml
new file mode 100644
index 0000000000..565a0cf6cd
--- /dev/null
+++ b/gr-fec/grc/fec_bercurve_generator.block.yml
@@ -0,0 +1,63 @@
+id: fec_bercurve_generator
+label: BER Curve Gen.
+
+parameters:
+- id: esno
+ label: Es/N0
+ dtype: raw
+ default: numpy.arange(0.0, 4.0, .5)
+ hide: part
+- id: samp_rate
+ label: Sample Rate
+ dtype: float
+ default: '3200000'
+- id: encoder_list
+ label: Encoder list
+ dtype: raw
+ default: '0'
+- id: decoder_list
+ label: Decoder list
+ dtype: raw
+ default: '0'
+- id: puncpat
+ label: Puncture Pat.
+ dtype: string
+ default: '''11'''
+- id: threadtype
+ label: Threading Type
+ dtype: enum
+ options: ['"capillary"', '"ordinary"', '"none"']
+ option_labels: [Capillary, Ordinary, None]
+ hide: part
+- id: seed
+ label: Noise Seed
+ dtype: int
+ default: '0'
+ hide: part
+
+outputs:
+- domain: stream
+ dtype: byte
+ multiplicity: ${ len(esno)*2 }
+
+templates:
+ imports: |-
+ from gnuradio import fec
+ import numpy
+ make: "fec.bercurve_generator(\n\t${encoder_list}, \\#size\n\t${decoder_list},\
+ \ \\#name\n\t${esno}, \\#range of esnos\n\t${samp_rate}, \\#throttle\n \
+ \ ${threadtype}, \\#threading mode\n\t${puncpat}, \\#puncture pattern\n\
+ \ ${seed} \\# noise gen. seed\n)\n "
+
+documentation: |-
+ Note that this block tries to launch many parallel codes to run simultaneously. Thus, it requires that the definitions for each encoder and decoder (specified in the "Encoder list" and "Decoder list") be configured with a parallelism > 0. If the parallelism for one of the encoder or decoder definition blocks is configured to 0, you will likely see an error like:
+
+ generic_decoder=decoder_list[i],
+ TypeError: 'generic_decoder_sptr' object does not support indexing
+
+ or
+
+ generic_encoder=encoder_list[i],
+ TypeError: 'generic_encoder_sptr' object does not support indexing
+
+file_format: 1
diff --git a/gr-fec/grc/fec_bercurve_generator.xml b/gr-fec/grc/fec_bercurve_generator.xml
deleted file mode 100644
index 5dfc7c6714..0000000000
--- a/gr-fec/grc/fec_bercurve_generator.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## BER Curve Generator
-###################################################
- -->
-<block>
- <name>BER Curve Gen.</name>
- <key>fec_bercurve_generator</key>
- <import>from gnuradio import fec</import>
- <import>import numpy</import>
- <make>fec.bercurve_generator(
- $encoder_list, \#size
- $decoder_list, \#name
- $esno, \#range of esnos
- $samp_rate, \#throttle
- $threadtype, \#threading mode
- $puncpat, \#puncture pattern
- $seed \# noise gen. seed
-)
- </make>
-
- <param>
- <name>Es/N0</name>
- <key>esno</key>
- <value>numpy.arange(0.0, 4.0, .5)</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>3200000</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Encoder list</name>
- <key>encoder_list</key>
- <value>0</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Decoder list</name>
- <key>decoder_list</key>
- <value>0</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Puncture Pat.</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Threading Type</name>
- <key>threadtype</key>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>Capillary</name>
- <key>"capillary"</key>
- </option>
- <option>
- <name>Ordinary</name>
- <key>"ordinary"</key>
- </option>
- <option>
- <name>None</name>
- <key>"none"</key>
- </option>
- </param>
-
- <param>
- <name>Noise Seed</name>
- <key>seed</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
-
- <bus_source>1</bus_source>
-
- <source>
- <name>out</name>
- <type>byte</type>
- <nports>len($esno)*2</nports>
- </source>
-
- <doc>
- Note that this block tries to launch many parallel codes to run simultaneously. Thus, it requires that the definitions for each encoder and decoder (specified in the "Encoder list" and "Decoder list") be configured with a parallelism > 0. If the parallelism for one of the encoder or decoder definition blocks is configured to 0, you will likely see an error like:
-
- generic_decoder=decoder_list[i],
- TypeError: 'generic_decoder_sptr' object does not support indexing
-
- or
-
- generic_encoder=encoder_list[i],
- TypeError: 'generic_encoder_sptr' object does not support indexing
- </doc>
-</block>
diff --git a/gr-fec/grc/fec_block_tree.xml b/gr-fec/grc/fec_block_tree.xml
deleted file mode 100644
index b1535e3c42..0000000000
--- a/gr-fec/grc/fec_block_tree.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Block Tree for gr-fec
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Error Coding</name>
- <cat>
- <name>Decoders</name>
- <block>variable_cc_decoder_def</block>
- <block>variable_repetition_decoder_def</block>
- <block>variable_ldpc_decoder_def</block>
- <block>variable_ldpc_bit_flip_decoder_def</block>
- <block>variable_tpc_decoder_def</block>
- <block>variable_dummy_decoder_def</block>
- <block>variable_polar_decoder_sc_def</block>
- <block>variable_polar_decoder_sc_list_def</block>
- <block>variable_polar_decoder_sc_systematic_def</block>
- </cat>
- <cat>
- <name>Encoders</name>
- <block>variable_cc_encoder_def</block>
- <block>variable_ccsds_encoder_def</block>
- <block>variable_repetition_encoder_def</block>
- <block>variable_tpc_encoder_def</block>
- <block>variable_ldpc_encoder_def</block>
- <block>variable_ldpc_encoder_G_def</block>
- <block>variable_ldpc_encoder_H_def</block>
- <block>variable_polar_encoder_def</block>
- <block>variable_polar_encoder_systematic_def</block>
- <block>variable_dummy_encoder_def</block>
- </cat>
- <block>fec_extended_encoder</block>
- <block>fec_extended_async_encoder</block>
- <block>fec_extended_tagged_encoder</block>
- <block>fec_extended_decoder</block>
- <block>fec_extended_tagged_decoder</block>
- <block>fec_generic_encoder</block>
- <block>fec_generic_decoder</block>
- <block>fec_tagged_encoder</block>
- <block>fec_tagged_decoder</block>
- <block>fec_async_encoder</block>
- <block>fec_async_decoder</block>
- <block>fec_decode_ccsds_27_fb</block>
- <block>fec_encode_ccsds_27_bb</block>
- <block>fec_puncture_xx</block>
- <block>fec_depuncture_bb</block>
- <block>fec_ber_bf</block>
- <block>fec_bercurve_generator</block>
- <block>variable_polar_code_configurator</block>
- <block>variable_ldpc_H_matrix_def</block>
- <block>variable_ldpc_G_matrix_def</block>
- </cat>
-</cat>
diff --git a/gr-fec/grc/fec_decode_ccsds_27_bb.block.yml b/gr-fec/grc/fec_decode_ccsds_27_bb.block.yml
new file mode 100644
index 0000000000..310b54e4e2
--- /dev/null
+++ b/gr-fec/grc/fec_decode_ccsds_27_bb.block.yml
@@ -0,0 +1,16 @@
+id: fec_encode_ccsds_27_bb
+label: Encode CCSDS 27
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.encode_ccsds_27_bb()
+
+file_format: 1
diff --git a/gr-fec/grc/fec_decode_ccsds_27_bb.xml b/gr-fec/grc/fec_decode_ccsds_27_bb.xml
deleted file mode 100644
index ea11837c11..0000000000
--- a/gr-fec/grc/fec_decode_ccsds_27_bb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Encode CCSDS 27
-###################################################
- -->
-<block>
- <name>Encode CCSDS 27</name>
- <key>fec_encode_ccsds_27_bb</key>
- <import>from gnuradio import fec</import>
- <make>fec.encode_ccsds_27_bb()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-fec/grc/fec_decode_ccsds_27_fb.block.yml b/gr-fec/grc/fec_decode_ccsds_27_fb.block.yml
new file mode 100644
index 0000000000..51eed3783d
--- /dev/null
+++ b/gr-fec/grc/fec_decode_ccsds_27_fb.block.yml
@@ -0,0 +1,16 @@
+id: fec_decode_ccsds_27_fb
+label: Decode CCSDS 27
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.decode_ccsds_27_fb()
+
+file_format: 1
diff --git a/gr-fec/grc/fec_decode_ccsds_27_fb.xml b/gr-fec/grc/fec_decode_ccsds_27_fb.xml
deleted file mode 100644
index f7bd9d3b5c..0000000000
--- a/gr-fec/grc/fec_decode_ccsds_27_fb.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Decode CCSDS 27
-###################################################
- -->
-<block>
- <name>Decode CCSDS 27</name>
- <key>fec_decode_ccsds_27_fb</key>
- <import>from gnuradio import fec</import>
- <make>fec.decode_ccsds_27_fb()</make>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-fec/grc/fec_decoder.block.yml b/gr-fec/grc/fec_decoder.block.yml
new file mode 100644
index 0000000000..b90a4749c4
--- /dev/null
+++ b/gr-fec/grc/fec_decoder.block.yml
@@ -0,0 +1,41 @@
+id: fec_generic_decoder
+label: FEC Decoder
+
+parameters:
+- id: decoder
+ label: Decoder Object
+ dtype: raw
+ default: decoder_variable
+- id: itype
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: otype
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ itype }
+
+outputs:
+- domain: stream
+ dtype: ${ otype }
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.decoder(${decoder}, ${itype.size}, ${otype.size})
+
+documentation: |-
+ This is a GNU Radio adaptor for any FEC decoder following the generic_decoder API in the fec module. Input and output are flexible to accomodate decoders that, say, modulate their encoded results into complex or float types.
+
+file_format: 1
diff --git a/gr-fec/grc/fec_decoder.xml b/gr-fec/grc/fec_decoder.xml
deleted file mode 100644
index dd9d08d5f6..0000000000
--- a/gr-fec/grc/fec_decoder.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Decoder</name>
- <key>fec_generic_decoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.decoder($decoder, $itype.size, $otype.size)</make>
-
- <param>
- <name>Decoder Object</name>
- <key>decoder</key>
- <value>decoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Input Type</name>
- <key>itype</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Output Type</name>
- <key>otype</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>$itype</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$otype</type>
- </source>
-
- <doc>
- This is a GNU Radio adaptor for any FEC decoder following the generic_decoder API in the fec module. Input and output are flexible to accomodate decoders that, say, modulate their encoded results into complex or float types.
- </doc>
-
-</block> \ No newline at end of file
diff --git a/gr-fec/grc/fec_depuncture_bb.block.yml b/gr-fec/grc/fec_depuncture_bb.block.yml
new file mode 100644
index 0000000000..24a3e62fcc
--- /dev/null
+++ b/gr-fec/grc/fec_depuncture_bb.block.yml
@@ -0,0 +1,33 @@
+id: fec_depuncture_bb
+label: Depuncture
+
+parameters:
+- id: puncsize
+ label: Puncture Size
+ dtype: int
+- id: puncpat
+ label: Puncture Pattern
+ dtype: int
+- id: delay
+ label: Delay
+ dtype: int
+ default: '0'
+- id: sym
+ label: Symbol
+ dtype: int
+ default: '127'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.depuncture_bb(${puncsize}, ${puncpat}, ${delay}, ${sym})
+
+file_format: 1
diff --git a/gr-fec/grc/fec_depuncture_bb.xml b/gr-fec/grc/fec_depuncture_bb.xml
deleted file mode 100644
index 03dec9bd70..0000000000
--- a/gr-fec/grc/fec_depuncture_bb.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Depuncture</name>
- <key>fec_depuncture_bb</key>
- <import>from gnuradio import fec</import>
- <make>fec.depuncture_bb($puncsize, $puncpat, $delay, $sym)</make>
-
- <param>
- <name>Puncture Size</name>
- <key>puncsize</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Delay</name>
- <key>delay</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Symbol</name>
- <key>sym</key>
- <value>127</value>
- <type>int</type>
- <hide>part</hide>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
-</block>
diff --git a/gr-fec/grc/fec_encoder.block.yml b/gr-fec/grc/fec_encoder.block.yml
new file mode 100644
index 0000000000..f530d806dc
--- /dev/null
+++ b/gr-fec/grc/fec_encoder.block.yml
@@ -0,0 +1,41 @@
+id: fec_generic_encoder
+label: FEC Encoder
+
+parameters:
+- id: encoder
+ label: Constituent Encoder
+ dtype: raw
+ default: encoder_variable
+- id: itype
+ label: Input Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: otype
+ label: Output Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ itype }
+
+outputs:
+- domain: stream
+ dtype: ${ otype }
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.encoder(${encoder}, ${itype.size}, ${otype.size})
+
+documentation: |-
+ This is a GNU Radio adaptor for any FEC encoder following the generic_encoder API in the fec module. Input and output are flexible to accomodate encoders that, say, modulate their encoded results into complex or float types.
+
+file_format: 1
diff --git a/gr-fec/grc/fec_encoder.xml b/gr-fec/grc/fec_encoder.xml
deleted file mode 100644
index defb7c3b46..0000000000
--- a/gr-fec/grc/fec_encoder.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Encoder</name>
- <key>fec_generic_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.encoder($encoder, $itype.size, $otype.size)</make>
-
- <param>
- <name>Constituent Encoder</name>
- <key>encoder</key>
- <value>encoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Input Type</name>
- <key>itype</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Output Type</name>
- <key>otype</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>$itype</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$otype</type>
- </source>
-
- <doc>
- This is a GNU Radio adaptor for any FEC encoder following the generic_encoder API in the fec module. Input and output are flexible to accomodate encoders that, say, modulate their encoded results into complex or float types.
- </doc>
-
-</block> \ No newline at end of file
diff --git a/gr-fec/grc/fec_extended_async_encoder.block.yml b/gr-fec/grc/fec_extended_async_encoder.block.yml
new file mode 100644
index 0000000000..87fb0918ef
--- /dev/null
+++ b/gr-fec/grc/fec_extended_async_encoder.block.yml
@@ -0,0 +1,30 @@
+id: fec_extended_async_encoder
+label: FEC Extended Async Encoder
+
+parameters:
+- id: encoder_list
+ label: Encoder Objects
+ dtype: raw
+ default: encoder_variable
+- id: puncpat
+ label: Puncture Pattern
+ dtype: string
+ default: '''11'''
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.extended_async_encoder(encoder_obj_list=${encoder_list}, puncpat=${puncpat})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_extended_async_encoder.xml b/gr-fec/grc/fec_extended_async_encoder.xml
deleted file mode 100644
index e61696bcc4..0000000000
--- a/gr-fec/grc/fec_extended_async_encoder.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Extended Async Encoder</name>
- <key>fec_extended_async_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.extended_async_encoder(encoder_obj_list=$encoder_list, puncpat=$puncpat)</make>
-
- <param>
- <name>Encoder Objects</name>
- <key>encoder_list</key>
- <value>encoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
- <doc>
-
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_extended_decoder.block.yml b/gr-fec/grc/fec_extended_decoder.block.yml
new file mode 100644
index 0000000000..6e8fb23dbb
--- /dev/null
+++ b/gr-fec/grc/fec_extended_decoder.block.yml
@@ -0,0 +1,44 @@
+id: fec_extended_decoder
+label: FEC Extended Decoder
+
+parameters:
+- id: value
+ label: fake val
+ dtype: string
+ default: fec_extended_decoder
+ hide: all
+- id: decoder_list
+ label: Decoder Objects
+ dtype: raw
+ default: decoder_variable
+- id: threadtype
+ label: Threading Type
+ dtype: enum
+ options: [capillary, ordinary, none]
+ option_attributes:
+ arg: ['''capillary''', '''ordinary''', ' None']
+- id: ann
+ label: Annihilator
+ dtype: raw
+ default: None
+- id: puncpat
+ label: Puncture Pattern
+ dtype: string
+ default: '''11'''
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.extended_decoder(decoder_obj_list=${decoder_list}, threading=${threadtype.arg},
+ ann=${ann}, puncpat=${puncpat}, integration_period=10000)
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_extended_decoder.xml b/gr-fec/grc/fec_extended_decoder.xml
deleted file mode 100644
index 9ed2f06bd0..0000000000
--- a/gr-fec/grc/fec_extended_decoder.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Extended Decoder</name>
- <key>fec_extended_decoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.extended_decoder(decoder_obj_list=$decoder_list, threading=$threadtype.arg, ann=$ann, puncpat=$puncpat, integration_period=10000)</make>
-
- <param>
- <name>fake val</name>
- <key>value</key>
- <value>fec_extended_decoder</value>
- <type>string</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Decoder Objects</name>
- <key>decoder_list</key>
- <value>decoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Threading Type</name>
- <key>threadtype</key>
- <type>enum</type>
- <option>
- <name>Capillary</name>
- <key>capillary</key>
- <opt>arg:'capillary'</opt>
- </option>
- <option>
- <name>Ordinary</name>
- <key>ordinary</key>
- <opt>arg:'ordinary'</opt>
- </option>
- <option>
- <name>None</name>
- <key>none</key>
- <opt>arg: None</opt>
- </option>
- </param>
-
- <param>
- <name>Annihilator</name>
- <key>ann</key>
- <value>None</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
- <doc>
-
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_extended_encoder.block.yml b/gr-fec/grc/fec_extended_encoder.block.yml
new file mode 100644
index 0000000000..b478e9bbf6
--- /dev/null
+++ b/gr-fec/grc/fec_extended_encoder.block.yml
@@ -0,0 +1,35 @@
+id: fec_extended_encoder
+label: FEC Extended Encoder
+
+parameters:
+- id: encoder_list
+ label: Encoder Objects
+ dtype: raw
+ default: encoder_variable
+- id: threadtype
+ label: Threading Type
+ dtype: enum
+ options: [capillary, ordinary, none]
+ option_attributes:
+ arg: ['''capillary''', '''ordinary''', ' None']
+- id: puncpat
+ label: Puncture Pattern
+ dtype: string
+ default: '''11'''
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.extended_encoder(encoder_obj_list=${encoder_list}, threading=${threadtype.arg},
+ puncpat=${puncpat})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_extended_encoder.xml b/gr-fec/grc/fec_extended_encoder.xml
deleted file mode 100644
index d2a3ec87db..0000000000
--- a/gr-fec/grc/fec_extended_encoder.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Extended Encoder</name>
- <key>fec_extended_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.extended_encoder(encoder_obj_list=$encoder_list, threading=$threadtype.arg, puncpat=$puncpat)</make>
-
- <param>
- <name>Encoder Objects</name>
- <key>encoder_list</key>
- <value>encoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Threading Type</name>
- <key>threadtype</key>
- <type>enum</type>
- <option>
- <name>Capillary</name>
- <key>capillary</key>
- <opt>arg:'capillary'</opt>
- </option>
- <option>
- <name>Ordinary</name>
- <key>ordinary</key>
- <opt>arg:'ordinary'</opt>
- </option>
- <option>
- <name>None</name>
- <key>none</key>
- <opt>arg: None</opt>
- </option>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
- <doc>
-
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_extended_tagged_decoder.block.yml b/gr-fec/grc/fec_extended_tagged_decoder.block.yml
new file mode 100644
index 0000000000..7a22e092f4
--- /dev/null
+++ b/gr-fec/grc/fec_extended_tagged_decoder.block.yml
@@ -0,0 +1,47 @@
+id: fec_extended_tagged_decoder
+label: FEC Extended Tagged Decoder
+
+parameters:
+- id: value
+ label: fake val
+ dtype: string
+ default: fec_extended_decoder
+ hide: all
+- id: decoder_list
+ label: Decoder Objects
+ dtype: raw
+ default: decoder_variable
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: ann
+ label: Annihilator
+ dtype: raw
+ default: None
+- id: puncpat
+ label: Puncture Pattern
+ dtype: string
+ default: '''11'''
+- id: lentagname
+ label: Length Tag Name
+ dtype: string
+ default: None
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: self.${id} = ${id} = fec.extended_tagged_decoder(decoder_obj_list=${decoder_list},
+ ann=${ann}, puncpat=${puncpat}, integration_period=10000, lentagname=${lentagname},
+ mtu=${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_extended_tagged_decoder.xml b/gr-fec/grc/fec_extended_tagged_decoder.xml
deleted file mode 100644
index 59f34d4df9..0000000000
--- a/gr-fec/grc/fec_extended_tagged_decoder.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Extended Tagged Decoder</name>
- <key>fec_extended_tagged_decoder</key>
- <import>from gnuradio import fec</import>
- <make>self.$(id) = $(id) = fec.extended_tagged_decoder(decoder_obj_list=$decoder_list, ann=$ann, puncpat=$puncpat, integration_period=10000, lentagname=$lentagname, mtu=$mtu)</make>
-
- <param>
- <name>fake val</name>
- <key>value</key>
- <value>fec_extended_decoder</value>
- <type>string</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Decoder Objects</name>
- <key>decoder_list</key>
- <value>decoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Annihilator</name>
- <key>ann</key>
- <value>None</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Length Tag Name</name>
- <key>lentagname</key>
- <value>None</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
- <doc>
-
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_extended_tagged_encoder.block.yml b/gr-fec/grc/fec_extended_tagged_encoder.block.yml
new file mode 100644
index 0000000000..e59ab3365d
--- /dev/null
+++ b/gr-fec/grc/fec_extended_tagged_encoder.block.yml
@@ -0,0 +1,37 @@
+id: fec_extended_tagged_encoder
+label: FEC Extended Tagged Encoder
+
+parameters:
+- id: encoder_list
+ label: Encoder Objects
+ dtype: raw
+ default: encoder_variable
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: puncpat
+ label: Puncture Pattern
+ dtype: string
+ default: '''11'''
+- id: lentagname
+ label: Length Tag Name
+ dtype: string
+ default: None
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.extended_tagged_encoder(encoder_obj_list=${encoder_list}, puncpat=${puncpat},
+ lentagname=${lentagname}, mtu=${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_extended_tagged_encoder.xml b/gr-fec/grc/fec_extended_tagged_encoder.xml
deleted file mode 100644
index 92df08079a..0000000000
--- a/gr-fec/grc/fec_extended_tagged_encoder.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Extended Tagged Encoder</name>
- <key>fec_extended_tagged_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.extended_tagged_encoder(encoder_obj_list=$encoder_list, puncpat=$puncpat, lentagname=$lentagname, mtu=$mtu)</make>
-
- <param>
- <name>Encoder Objects</name>
- <key>encoder_list</key>
- <value>encoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <value>'11'</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Length Tag Name</name>
- <key>lentagname</key>
- <value>None</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-
- <doc>
-
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_puncture_xx.block.yml b/gr-fec/grc/fec_puncture_xx.block.yml
new file mode 100644
index 0000000000..de7cf16cab
--- /dev/null
+++ b/gr-fec/grc/fec_puncture_xx.block.yml
@@ -0,0 +1,35 @@
+id: fec_puncture_xx
+label: Puncture
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ fcn: [bb, ff]
+ hide: part
+- id: puncsize
+ label: Puncture Size
+ dtype: int
+- id: puncpat
+ label: Puncture Pattern
+ dtype: int
+- id: delay
+ label: Delay
+ dtype: int
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.puncture_${type.fcn}(${puncsize}, ${puncpat}, ${delay})
+
+file_format: 1
diff --git a/gr-fec/grc/fec_puncture_xx.xml b/gr-fec/grc/fec_puncture_xx.xml
deleted file mode 100644
index 1075a1c062..0000000000
--- a/gr-fec/grc/fec_puncture_xx.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>Puncture</name>
- <key>fec_puncture_xx</key>
- <import>from gnuradio import fec</import>
- <make>fec.puncture_$(type.fcn)($puncsize, $puncpat, $delay)</make>
-
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:bb</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
-
- <param>
- <name>Puncture Size</name>
- <key>puncsize</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Puncture Pattern</name>
- <key>puncpat</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Delay</name>
- <key>delay</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-
-</block>
diff --git a/gr-fec/grc/fec_tagged_decoder.block.yml b/gr-fec/grc/fec_tagged_decoder.block.yml
new file mode 100644
index 0000000000..7856bb6794
--- /dev/null
+++ b/gr-fec/grc/fec_tagged_decoder.block.yml
@@ -0,0 +1,47 @@
+id: fec_tagged_decoder
+label: FEC Tagged Decoder
+
+parameters:
+- id: decoder
+ label: Constituent Decoder
+ dtype: raw
+ default: decoder_variable
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: itype
+ label: Input Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ size: [gr.sizeof_char, gr.sizeof_float]
+ hide: part
+- id: otype
+ label: Output Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ size: [gr.sizeof_char, gr.sizeof_float]
+ hide: part
+- id: lentagname
+ label: Length Tag Name
+ dtype: string
+ default: '"pkt_len"'
+
+inputs:
+- domain: stream
+ dtype: ${ itype }
+
+outputs:
+- domain: stream
+ dtype: ${ otype }
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.tagged_decoder(${decoder}, ${itype.size}, ${otype.size}, ${lentagname},
+ ${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_tagged_decoder.xml b/gr-fec/grc/fec_tagged_decoder.xml
deleted file mode 100644
index 1ea20bd085..0000000000
--- a/gr-fec/grc/fec_tagged_decoder.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Tagged Decoder</name>
- <key>fec_tagged_decoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.tagged_decoder($decoder, $itype.size, $otype.size, $lentagname, $mtu)</make>
-
- <param>
- <name>Constituent Decoder</name>
- <key>decoder</key>
- <value>decoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Input Type</name>
- <key>itype</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- </param>
-
- <param>
- <name>Output Type</name>
- <key>otype</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- </param>
-
- <param>
- <name>Length Tag Name</name>
- <key>lentagname</key>
- <value>"pkt_len"</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$itype</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$otype</type>
- </source>
-
- <doc>
- </doc>
-
-</block>
diff --git a/gr-fec/grc/fec_tagged_encoder.block.yml b/gr-fec/grc/fec_tagged_encoder.block.yml
new file mode 100644
index 0000000000..bf675e4188
--- /dev/null
+++ b/gr-fec/grc/fec_tagged_encoder.block.yml
@@ -0,0 +1,47 @@
+id: fec_tagged_encoder
+label: FEC Tagged Encoder
+
+parameters:
+- id: encoder
+ label: Constituent Encoder
+ dtype: raw
+ default: encoder_variable
+- id: mtu
+ label: MTU (bytes)
+ dtype: int
+ default: '1500'
+- id: itype
+ label: Input Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ size: [gr.sizeof_char, gr.sizeof_float]
+ hide: part
+- id: otype
+ label: Output Type
+ dtype: enum
+ options: [byte, float]
+ option_attributes:
+ size: [gr.sizeof_char, gr.sizeof_float]
+ hide: part
+- id: lentagname
+ label: Length Tag Name
+ dtype: string
+ default: '"pkt_len"'
+
+inputs:
+- domain: stream
+ dtype: ${ itype }
+
+outputs:
+- domain: stream
+ dtype: ${ otype }
+
+templates:
+ imports: from gnuradio import fec
+ make: fec.tagged_encoder(${encoder}, ${itype.size}, ${otype.size}, ${lentagname},
+ ${mtu})
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/fec_tagged_encoder.xml b/gr-fec/grc/fec_tagged_encoder.xml
deleted file mode 100644
index 30fa20e45c..0000000000
--- a/gr-fec/grc/fec_tagged_encoder.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>FEC Tagged Encoder</name>
- <key>fec_tagged_encoder</key>
- <import>from gnuradio import fec</import>
- <make>fec.tagged_encoder($encoder, $itype.size, $otype.size, $lentagname, $mtu)</make>
-
- <param>
- <name>Constituent Encoder</name>
- <key>encoder</key>
- <value>encoder_variable</value>
- <type>raw</type>
- </param>
-
- <param>
- <name>MTU (bytes)</name>
- <key>mtu</key>
- <value>1500</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Input Type</name>
- <key>itype</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- </param>
-
- <param>
- <name>Output Type</name>
- <key>otype</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- </param>
-
- <param>
- <name>Length Tag Name</name>
- <key>lentagname</key>
- <value>"pkt_len"</value>
- <type>string</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$itype</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$otype</type>
- </source>
-
- <doc>
- </doc>
-
-</block>
diff --git a/gr-fec/grc/ldpc_decoder_def_list.block.yml b/gr-fec/grc/ldpc_decoder_def_list.block.yml
new file mode 100644
index 0000000000..8dc32bdc3d
--- /dev/null
+++ b/gr-fec/grc/ldpc_decoder_def_list.block.yml
@@ -0,0 +1,53 @@
+id: variable_ldpc_decoder_def
+label: LDPC Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: file
+ label: AList File
+ dtype: file_open
+- id: sigma
+ label: Sigma
+ dtype: float
+ default: '0.5'
+- id: max_iter
+ label: Max Iterations
+ dtype: int
+ default: '50'
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ldpc_decoder.make(${file},\
+ \ ${sigma}, ${max_iter}); \n% elif int(ndim)==1 #:\nself.${id} = ${id} = map(\
+ \ (lambda a: fec.ldpc_decoder.make(${file}, ${sigma}, ${max_iter})), range(0,${dim1})\
+ \ ); \n% else:\nself.${id} = ${id} = map( (lambda b: map( ( lambda a: fec.ldpc_decoder.make(${file},\
+ \ ${sigma}, ${max_iter})), range(0,${dim2}) ) ), range(0,${dim1})); \n% endif"
+
+documentation: |-
+ This is a soft-decision decoder that uses belief propagation (also known as message passing) that is described at:
+
+ www.cs.toronto.edu/~radford/ftp/LDPC-2012-02-11/decoding.html
+
+ Designed for a memoryless AWGN channel, it assumes a noise variance of the value specified for sigma.
+
+file_format: 1
diff --git a/gr-fec/grc/ldpc_decoder_def_list.xml b/gr-fec/grc/ldpc_decoder_def_list.xml
deleted file mode 100644
index 007f85505c..0000000000
--- a/gr-fec/grc/ldpc_decoder_def_list.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>LDPC Decoder Definition</name>
- <key>variable_ldpc_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ldpc_decoder.make($file, $sigma, $max_iter); #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.ldpc_decoder.make($file, $sigma, $max_iter)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.ldpc_decoder.make($file, $sigma, $max_iter)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if</var_make>
- <make></make>
-
-<!-- This definition below is wierd, it seems required for the GRC to be happy, im confused -->
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>AList File</name>
- <key>file</key>
- <type>file_open</type>
- </param>
-
- <param>
- <name>Sigma</name>
- <key>sigma</key>
- <value>0.5</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Max Iterations</name>
- <key>max_iter</key>
- <value>50</value>
- <type>int</type>
- </param>
-
- <doc>
-This is a soft-decision decoder that uses belief propagation (also known as message passing) that is described at:
-
-www.cs.toronto.edu/~radford/ftp/LDPC-2012-02-11/decoding.html
-
-Designed for a memoryless AWGN channel, it assumes a noise variance of the value specified for sigma.
- </doc>
-</block>
diff --git a/gr-fec/grc/ldpc_encoder_def_list.block.yml b/gr-fec/grc/ldpc_encoder_def_list.block.yml
new file mode 100644
index 0000000000..cc31e960d9
--- /dev/null
+++ b/gr-fec/grc/ldpc_encoder_def_list.block.yml
@@ -0,0 +1,38 @@
+id: variable_ldpc_encoder_def
+label: LDPC Encoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: file
+ label: AList File
+ dtype: file_open
+value: ${ fec.ldpc_encoder_make(file) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ldpc_encoder_make(${file});\
+ \ \n% elif int(ndim)==1 #:\nself.${id} = ${id} = map( (lambda a: fec.ldpc_encoder_make(${file})),\
+ \ range(0,${dim1}) ); \n% else:\nself.${id} = ${id} = map( (lambda b: map(\
+ \ ( lambda a: fec.ldpc_encoder_make(${file})), range(0,${dim2}) ) ), range(0,${dim1}));\
+ \ \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/ldpc_encoder_def_list.xml b/gr-fec/grc/ldpc_encoder_def_list.xml
deleted file mode 100755
index 985568afc5..0000000000
--- a/gr-fec/grc/ldpc_encoder_def_list.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-
-<block>
- <name>LDPC Encoder Definition</name>
- <key>variable_ldpc_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ldpc_encoder_make($file); #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.ldpc_encoder_make($file)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.ldpc_encoder_make($file)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if</var_make>
- <var_value>fec.ldpc_encoder_make($file)</var_value>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>AList File</name>
- <key>file</key>
- <value></value>
- <type>file_open</type>
- </param>
-
-</block>
diff --git a/gr-fec/grc/tpc_decoder_def_list.block.yml b/gr-fec/grc/tpc_decoder_def_list.block.yml
new file mode 100644
index 0000000000..94fb55b1b9
--- /dev/null
+++ b/gr-fec/grc/tpc_decoder_def_list.block.yml
@@ -0,0 +1,77 @@
+id: variable_tpc_decoder_def
+label: TPC Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: row_poly
+ label: Row Encoder Polynomials
+ dtype: int_vector
+ default: '[3]'
+- id: col_poly
+ label: Column Encoder Polynomials
+ dtype: int_vector
+ default: '[43]'
+- id: krow
+ label: K Row
+ dtype: int
+ default: '26'
+- id: kcol
+ label: K Col
+ dtype: int
+ default: '6'
+- id: bval
+ label: B
+ dtype: int
+ default: '9'
+- id: qval
+ label: Q
+ dtype: int
+ default: '3'
+- id: max_iter
+ label: NUM Turbo Iterations
+ dtype: int
+ default: '6'
+- id: decoder_type
+ label: Decoder Type
+ dtype: enum
+ options: ['0', '1', '2', '3', '4']
+ option_labels: [Linear LOG-MAP, MAX LOG-MAP, Constant LOG-MAP, LOG-MAP (LUT Correction
+ Factor), LOG-MAP (C Correction Factor)]
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.tpc_decoder_make(${row_poly},\
+ \ ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, ${max_iter}, ${decoder_type});\
+ \ \n% elif int(ndim)==1 #:\nself.${id} = ${id} = map( (lambda a: fec.tpc_decoder_make(${row_poly},\
+ \ ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}, ${max_iter}, ${decoder_type})),\
+ \ range(0,${dim1}) ); \n% else:\nself.${id} = ${id} = map( (lambda b: map(\
+ \ ( lambda a: fec.tpc_decoder_make(${row_poly}, ${col_poly}, ${krow}, ${kcol},\
+ \ ${bval}, ${qval}, ${max_iter}, ${decoder_type})), range(0,${dim2}) ) ),\
+ \ range(0,${dim1})); \n% endif"
+
+documentation: |-
+ This instantiates a 1-dim array or 2-dim array fo Turbo Product Encoders (TPC).
+ Restrictions: B and Q must be carefully chosen such that when the matrices are setup,
+ and the first B outputs are removed, they (the first B outputs) are all 0's.
+
+file_format: 1
diff --git a/gr-fec/grc/tpc_decoder_def_list.xml b/gr-fec/grc/tpc_decoder_def_list.xml
deleted file mode 100644
index aac08dbb76..0000000000
--- a/gr-fec/grc/tpc_decoder_def_list.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>TPC Decoder Definition</name>
- <key>variable_tpc_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.tpc_decoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval, $max_iter, $decoder_type); #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.tpc_decoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval, $max_iter, $decoder_type)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.tpc_decoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval, $max_iter, $decoder_type)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if</var_make>
- <make></make>
-
-<!-- This definition below is wierd, it seems required for the GRC to be happy, im confused -->
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Row Encoder Polynomials</name>
- <key>row_poly</key>
- <value>[3]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Column Encoder Polynomials</name>
- <key>col_poly</key>
- <value>[43]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>K Row</name>
- <key>krow</key>
- <value>26</value>
- <type>int</type>
- </param>
-
- <param>
- <name>K Col</name>
- <key>kcol</key>
- <value>6</value>
- <type>int</type>
- </param>
-
- <param>
- <name>B</name>
- <key>bval</key>
- <value>9</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Q</name>
- <key>qval</key>
- <value>3</value>
- <type>int</type>
- </param>
-
- <param>
- <name>NUM Turbo Iterations</name>
- <key>max_iter</key>
- <value>6</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Decoder Type</name>
- <key>decoder_type</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>Linear LOG-MAP</name>
- <key>0</key>
- </option>
- <option>
- <name>MAX LOG-MAP</name>
- <key>1</key>
- </option>
- <option>
- <name>Constant LOG-MAP</name>
- <key>2</key>
- </option>
- <option>
- <name>LOG-MAP (LUT Correction Factor)</name>
- <key>3</key>
- </option>
- <option>
- <name>LOG-MAP (C Correction Factor)</name>
- <key>4</key>
- </option>
- </param>
-
-
- <doc>
- This instantiates a 1-dim array or 2-dim array fo Turbo Product Encoders (TPC).
- Restrictions: B and Q must be carefully chosen such that when the matrices are setup,
- and the first B outputs are removed, they (the first B outputs) are all 0's.
- </doc>
-</block>
diff --git a/gr-fec/grc/tpc_encoder_def_list.block.yml b/gr-fec/grc/tpc_encoder_def_list.block.yml
new file mode 100644
index 0000000000..9e47207750
--- /dev/null
+++ b/gr-fec/grc/tpc_encoder_def_list.block.yml
@@ -0,0 +1,66 @@
+id: variable_tpc_encoder_def
+label: TPC Encoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: row_poly
+ label: Row Encoder Polynomials
+ dtype: int_vector
+ default: '[3]'
+- id: col_poly
+ label: Column Encoder Polynomials
+ dtype: int_vector
+ default: '[43]'
+- id: krow
+ label: K Row
+ dtype: int
+ default: '26'
+- id: kcol
+ label: K Col
+ dtype: int
+ default: '6'
+- id: bval
+ label: B
+ dtype: int
+ default: '9'
+- id: qval
+ label: Q
+ dtype: int
+ default: '3'
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.tpc_encoder_make(${row_poly},\
+ \ ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval}); \n% elif int(ndim)==1\
+ \ #:\nself.${id} = ${id} = map( (lambda a: fec.tpc_encoder_make(${row_poly},\
+ \ ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval})), range(0,${dim1}) ); \n\
+ % else:\nself.${id} = ${id} = map( (lambda b: map( ( lambda a: fec.tpc_encoder_make(${row_poly},\
+ \ ${col_poly}, ${krow}, ${kcol}, ${bval}, ${qval})), range(0,${dim2}) ) ),\
+ \ range(0,${dim1})); \n% endif"
+
+documentation: |-
+ This instantiates a 1-dim array or 2-dim array fo Turbo Product Encoders (TPC).
+ Restrictions: B and Q must be carefully chosen such that when the matrices are setup,
+ and the first B outputs are removed, they (the first B outputs) are all 0's.
+
+file_format: 1
diff --git a/gr-fec/grc/tpc_encoder_def_list.xml b/gr-fec/grc/tpc_encoder_def_list.xml
deleted file mode 100755
index c035795b58..0000000000
--- a/gr-fec/grc/tpc_encoder_def_list.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>TPC Encoder Definition</name>
- <key>variable_tpc_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.tpc_encoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval); #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.tpc_encoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.tpc_encoder_make($row_poly, $col_poly, $krow, $kcol, $bval, $qval)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if</var_make>
- <make></make>
-
-<!-- This definition below is wierd, it seems required for the GRC to be happy, im confused -->
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Row Encoder Polynomials</name>
- <key>row_poly</key>
- <value>[3]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Column Encoder Polynomials</name>
- <key>col_poly</key>
- <value>[43]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>K Row</name>
- <key>krow</key>
- <value>26</value>
- <type>int</type>
- </param>
-
- <param>
- <name>K Col</name>
- <key>kcol</key>
- <value>6</value>
- <type>int</type>
- </param>
-
- <param>
- <name>B</name>
- <key>bval</key>
- <value>9</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Q</name>
- <key>qval</key>
- <value>3</value>
- <type>int</type>
- </param>
-
- <doc>
- This instantiates a 1-dim array or 2-dim array fo Turbo Product Encoders (TPC).
- Restrictions: B and Q must be carefully chosen such that when the matrices are setup,
- and the first B outputs are removed, they (the first B outputs) are all 0's.
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_cc_decoder_def_list.block.yml b/gr-fec/grc/variable_cc_decoder_def_list.block.yml
new file mode 100644
index 0000000000..0dd4aa86b2
--- /dev/null
+++ b/gr-fec/grc/variable_cc_decoder_def_list.block.yml
@@ -0,0 +1,76 @@
+id: variable_cc_decoder_def
+label: CC Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+- id: k
+ label: Constraint Length (K)
+ dtype: int
+ default: '7'
+- id: rate
+ label: Rate Inverse (1/R) (1/2) --> 2
+ dtype: int
+ default: '2'
+- id: polys
+ label: Polynomials
+ dtype: int_vector
+ default: '[79,109]'
+- id: state_start
+ label: Start State
+ dtype: int
+ default: '0'
+- id: state_end
+ label: End State
+ dtype: int
+ default: '-1'
+- id: mode
+ label: Streaming Behavior
+ dtype: enum
+ options: [fec.CC_STREAMING, fec.CC_TERMINATED, fec.CC_TAILBITING, fec.CC_TRUNCATED]
+ option_labels: [Streaming, Terminated, Tailbiting, Truncated]
+- id: padding
+ label: Byte Padding
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+value: ${ fec.cc_decoder.make(framebits, k, rate, polys, state_start, state_end, mode,
+ padding) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.cc_decoder.make(${framebits},\
+ \ ${k}, ${rate}, ${polys}, ${state_start}, ${state_end}, ${mode}, ${padding})\n\
+ % elif int(ndim)==1 #:\nself.${id} = ${id} = map( (lambda a: fec.cc_decoder.make(${framebits},\
+ \ ${k}, ${rate}, ${polys}, ${state_start}, ${state_end}, ${mode}, ${padding})),\
+ \ range(0,${dim1}) ); \n% else:\nself.${id} = ${id} = map( (lambda b: map(\
+ \ ( lambda a: fec.cc_decoder.make(${framebits}, ${k}, ${rate}, ${polys}, ${state_start},\
+ \ ${state_end}, ${mode}, ${padding})), range(0,${dim2}) ) ), range(0,${dim1}));\
+ \ \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_cc_decoder_def_list.xml b/gr-fec/grc/variable_cc_decoder_def_list.xml
deleted file mode 100644
index daa7c73ef4..0000000000
--- a/gr-fec/grc/variable_cc_decoder_def_list.xml
+++ /dev/null
@@ -1,148 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC CC DECODER
-###################################################
- -->
-<block>
- <name>CC Decoder Definition</name>
- <key>variable_cc_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.cc_decoder.make($framebits, $k, $rate, $polys, $state_start, $state_end, $mode, $padding)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.cc_decoder.make($framebits, $k, $rate, $polys, $state_start, $state_end, $mode, $padding)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.cc_decoder.make($framebits, $k, $rate, $polys, $state_start, $state_end, $mode, $padding)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if
- </var_make>
- <var_value>fec.cc_decoder.make($framebits, $k, $rate, $polys, $state_start, $state_end, $mode, $padding)</var_value>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Constraint Length (K)</name>
- <key>k</key>
- <value>7</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Rate Inverse (1/R) (1/2) --> 2</name>
- <key>rate</key>
- <value>2</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Polynomials</name>
- <key>polys</key>
- <value>[79,109]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Start State</name>
- <key>state_start</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <param>
- <name>End State</name>
- <key>state_end</key>
- <value>-1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Streaming Behavior</name>
- <key>mode</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>Streaming</name>
- <key>fec.CC_STREAMING</key>
- </option>
- <option>
- <name>Terminated</name>
- <key>fec.CC_TERMINATED</key>
- </option>
- <option>
- <name>Tailbiting</name>
- <key>fec.CC_TAILBITING</key>
- </option>
- <option>
- <name>Truncated</name>
- <key>fec.CC_TRUNCATED</key>
- </option>
- </param>
-
- <param>
- <name>Byte Padding</name>
- <key>padding</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_cc_encoder_def_list.block.yml b/gr-fec/grc/variable_cc_encoder_def_list.block.yml
new file mode 100644
index 0000000000..43f330a617
--- /dev/null
+++ b/gr-fec/grc/variable_cc_encoder_def_list.block.yml
@@ -0,0 +1,66 @@
+id: variable_cc_encoder_def
+label: CC Encoder Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+- id: k
+ label: Constraint Length (K)
+ dtype: int
+ default: '7'
+- id: rate
+ label: Rate Inverse (1/R) (1/2) --> 2
+ dtype: int
+ default: '2'
+- id: polys
+ label: Polynomials
+ dtype: int_vector
+ default: '[79,109]'
+- id: state_start
+ label: Start State
+ dtype: int
+ default: '0'
+- id: mode
+ label: Streaming Behavior
+ dtype: enum
+ options: [fec.CC_STREAMING, fec.CC_TERMINATED, fec.CC_TAILBITING, fec.CC_TRUNCATED]
+ option_labels: [Streaming, Terminated, Tailbiting, Truncated]
+- id: padding
+ label: Byte Padding
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+value: ${ fec.cc_encoder_make(framebits, k, rate, polys, state_start, mode, padding)
+ }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.cc_encoder_make(${framebits},\
+ \ ${k}, ${rate}, ${polys}, ${state_start}, ${mode}, ${padding})\n% elif int(ndim)==1\
+ \ #:\nself.${id} = ${id} = map( (lambda a: fec.cc_encoder_make(${framebits},\
+ \ ${k}, ${rate}, ${polys}, ${state_start}, ${mode}, ${padding})), range(0,${dim1})\
+ \ ); \n% else:\nself.${id} = ${id} = map( (lambda b: map( ( lambda a: fec.cc_encoder_make(${framebits},\
+ \ ${k}, ${rate}, ${polys}, ${state_start}, ${mode}, ${padding})), range(0,${dim2})\
+ \ ) ), range(0,${dim1})); \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_cc_encoder_def_list.xml b/gr-fec/grc/variable_cc_encoder_def_list.xml
deleted file mode 100644
index 92965204d1..0000000000
--- a/gr-fec/grc/variable_cc_encoder_def_list.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC MAKING FOR GREAT JUSTICE
-###################################################
- -->
-<block>
- <name>CC Encoder Definition</name>
- <key>variable_cc_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.cc_encoder_make($framebits, $k, $rate, $polys, $state_start, $mode, $padding)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.cc_encoder_make($framebits, $k, $rate, $polys, $state_start, $mode, $padding)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.cc_encoder_make($framebits, $k, $rate, $polys, $state_start, $mode, $padding)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if
- </var_make>
- <var_value>fec.cc_encoder_make($framebits, $k, $rate, $polys, $state_start, $mode, $padding)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Constraint Length (K)</name>
- <key>k</key>
- <value>7</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Rate Inverse (1/R) (1/2) --> 2</name>
- <key>rate</key>
- <value>2</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Polynomials</name>
- <key>polys</key>
- <value>[79,109]</value>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Start State</name>
- <key>state_start</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Streaming Behavior</name>
- <key>mode</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>Streaming</name>
- <key>fec.CC_STREAMING</key>
- </option>
- <option>
- <name>Terminated</name>
- <key>fec.CC_TERMINATED</key>
- </option>
- <option>
- <name>Tailbiting</name>
- <key>fec.CC_TAILBITING</key>
- </option>
- <option>
- <name>Truncated</name>
- <key>fec.CC_TRUNCATED</key>
- </option>
- </param>
-
- <param>
- <name>Byte Padding</name>
- <key>padding</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ccsds_encoder_def_list.block.yml b/gr-fec/grc/variable_ccsds_encoder_def_list.block.yml
new file mode 100644
index 0000000000..7a412dde96
--- /dev/null
+++ b/gr-fec/grc/variable_ccsds_encoder_def_list.block.yml
@@ -0,0 +1,46 @@
+id: variable_ccsds_encoder_def
+label: CCSDS Encoder Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+- id: state_start
+ label: Start State
+ dtype: int
+ default: '0'
+- id: mode
+ label: Streaming Behavior
+ dtype: enum
+ options: [fec.CC_STREAMING, fec.CC_TERMINATED, fec.CC_TAILBITING, fec.CC_TRUNCATED]
+ option_labels: [Streaming, Terminated, Tailbiting, Truncated]
+value: ${ fec.ccsds_encoder_make(framebits, state_start, mode) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ccsds_encoder_make(${framebits},\
+ \ ${state_start}, ${mode})\n% elif int(ndim)==1 #:\nself.${id} = ${id} = map(\
+ \ (lambda a: fec.ccsds_encoder_make(${framebits}, ${state_start}, ${mode})),\
+ \ range(0,${dim1}) ); \n% else:\nself.${id} = ${id} = map( (lambda b: map(\
+ \ ( lambda a: fec.ccsds_encoder_make(${framebits}, ${state_start}, ${mode})),\
+ \ range(0,${dim2}) ) ), range(0,${dim1})); \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ccsds_encoder_def_list.xml b/gr-fec/grc/variable_ccsds_encoder_def_list.xml
deleted file mode 100644
index d925fd1a7e..0000000000
--- a/gr-fec/grc/variable_ccsds_encoder_def_list.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC MAKING FOR GREAT JUSTICE
-###################################################
- -->
-<block>
- <name>CCSDS Encoder Definition</name>
- <key>variable_ccsds_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ccsds_encoder_make($framebits, $state_start, $mode)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.ccsds_encoder_make($framebits, $state_start, $mode)), range(0,$dim1) ); #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.ccsds_encoder_make($framebits, $state_start, $mode)), range(0,$dim2) ) ), range(0,$dim1)); #slurp
-#end if
- </var_make>
- <var_value>fec.ccsds_encoder_make($framebits, $state_start, $mode)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Start State</name>
- <key>state_start</key>
- <value>0</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Streaming Behavior</name>
- <key>mode</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>Streaming</name>
- <key>fec.CC_STREAMING</key>
- </option>
- <option>
- <name>Terminated</name>
- <key>fec.CC_TERMINATED</key>
- </option>
- <option>
- <name>Tailbiting</name>
- <key>fec.CC_TAILBITING</key>
- </option>
- <option>
- <name>Truncated</name>
- <key>fec.CC_TRUNCATED</key>
- </option>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_dummy_decoder_def_list.block.yml b/gr-fec/grc/variable_dummy_decoder_def_list.block.yml
new file mode 100644
index 0000000000..14d0ff42d9
--- /dev/null
+++ b/gr-fec/grc/variable_dummy_decoder_def_list.block.yml
@@ -0,0 +1,40 @@
+id: variable_dummy_decoder_def
+label: Dummy Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+value: ${ fec.dummy_decoder.make(framebits) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.dummy_decoder.make(${framebits})\n\
+ % elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.dummy_decoder.make(${framebits})),\
+ \ range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.dummy_decoder.make(${framebits})), range(0,${dim2}))), range(0,${dim1}))\
+ \ \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_dummy_decoder_def_list.xml b/gr-fec/grc/variable_dummy_decoder_def_list.xml
deleted file mode 100644
index 4a27971c87..0000000000
--- a/gr-fec/grc/variable_dummy_decoder_def_list.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC DUMMY DECODER
-###################################################
- -->
-<block>
- <name>Dummy Decoder Definition</name>
- <key>variable_dummy_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.dummy_decoder.make($framebits)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.dummy_decoder.make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if
- </var_make>
- <var_value>fec.dummy_decoder.make($framebits)</var_value>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_dummy_encoder_def_list.block.yml b/gr-fec/grc/variable_dummy_encoder_def_list.block.yml
new file mode 100644
index 0000000000..cb9181bcd6
--- /dev/null
+++ b/gr-fec/grc/variable_dummy_encoder_def_list.block.yml
@@ -0,0 +1,36 @@
+id: variable_dummy_encoder_def
+label: Dummy Encoder Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+value: ${ fec.dummy_encoder_make(framebits) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.dummy_encoder_make(${framebits})\n\
+ % elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.dummy_encoder_make(${framebits})),\
+ \ range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.dummy_encoder_make(${framebits})), range(0,${dim2}))), range(0,${dim1}))\
+ \ \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_dummy_encoder_def_list.xml b/gr-fec/grc/variable_dummy_encoder_def_list.xml
deleted file mode 100644
index 351fddadaf..0000000000
--- a/gr-fec/grc/variable_dummy_encoder_def_list.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC DUMMY ENCODER
-###################################################
- -->
-<block>
- <name>Dummy Encoder Definition</name>
- <key>variable_dummy_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.dummy_encoder_make($framebits)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.dummy_encoder_make($framebits)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if
- </var_make>
- <var_value>fec.dummy_encoder_make($framebits)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ldpc_G_matrix_object.block.yml b/gr-fec/grc/variable_ldpc_G_matrix_object.block.yml
new file mode 100644
index 0000000000..24f0cb3cbe
--- /dev/null
+++ b/gr-fec/grc/variable_ldpc_G_matrix_object.block.yml
@@ -0,0 +1,31 @@
+id: variable_ldpc_G_matrix_def
+label: LDPC Generator Matrix
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: filename
+ label: File
+ dtype: file_open
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: self.${id} = ${id} = fec.ldpc_G_matrix(${filename})
+
+documentation: |-
+ This block creates a LDPC Generator Matrix variable.
+
+ This variable can be used by:
+ 1) LDPC Encoder Definition (via Generator) block
+ 2) LDPC Bit Flip Decoder Definition block
+
+ Provide an alist file, which contains a Generator matrix, G, in the standard format G = [I P], where I is an identity matrix and P is the parity submatrix.
+
+ The format of alist files is described at:
+ http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ldpc_G_matrix_object.xml b/gr-fec/grc/variable_ldpc_G_matrix_object.xml
deleted file mode 100644
index cd9360c7f7..0000000000
--- a/gr-fec/grc/variable_ldpc_G_matrix_object.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC LDPC MATRIX OBJECT
-###################################################
- -->
-
-<block>
- <name>LDPC Generator Matrix</name>
- <key>variable_ldpc_G_matrix_def</key>
- <import>from gnuradio import fec</import>
- <var_make>self.$(id) = $(id) = fec.ldpc_G_matrix($filename)</var_make>
-
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>File</name>
- <key>filename</key>
- <value></value>
- <type>file_open</type>
- </param>
-
- <doc>
-This block creates a LDPC Generator Matrix variable.
-
-This variable can be used by:
- 1) LDPC Encoder Definition (via Generator) block
- 2) LDPC Bit Flip Decoder Definition block
-
-Provide an alist file, which contains a Generator matrix, G, in the standard format G = [I P], where I is an identity matrix and P is the parity submatrix.
-
-The format of alist files is described at:
-http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ldpc_H_matrix_object.block.yml b/gr-fec/grc/variable_ldpc_H_matrix_object.block.yml
new file mode 100644
index 0000000000..f2d1a640bd
--- /dev/null
+++ b/gr-fec/grc/variable_ldpc_H_matrix_object.block.yml
@@ -0,0 +1,40 @@
+id: variable_ldpc_H_matrix_def
+label: LDPC Parity Check Matrix
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: filename
+ label: File
+ dtype: file_open
+- id: gap
+ label: Gap
+ dtype: int
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: self.${id} = ${id} = fec.ldpc_H_matrix(${filename}, ${gap})
+
+documentation: |-
+ This block creates a FEC LDPC Parity Check Matrix variable.
+
+ This variable can be used by:
+ 1) LDPC Encoder Definition (via Parity Check) block
+ 2) LDPC Bit Flip Decoder Definition block
+
+ The format of alist files is described at:
+ http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html
+
+ The specific format of this parity check matrix is described by Richardson and Urbanke in Appendix A of their book: Modern Coding Theory (ISBN 978-0-521-85229-6).
+
+ As an example, see the file {$target}/share/gnuradio/fec/ldpc/n_1800_k_0902_gap_28.alist, which is used by the FEC example flowgraph ber_curve_gen_ldpc.grc.
+
+ There is a small library of encoding-ready alist files at {$target}/share/gnuradio/fec/ldpc.
+
+ To convert a parity check matrix to the appropriate format required for this encoder, use the python functions in {$target}/lib/python2.7/dist-packages/gnuradio/fec/LDPC/Generate_LDPC_matrix.py.
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ldpc_H_matrix_object.xml b/gr-fec/grc/variable_ldpc_H_matrix_object.xml
deleted file mode 100644
index 1bfb6be060..0000000000
--- a/gr-fec/grc/variable_ldpc_H_matrix_object.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC LDPC PARITY CHECK MATRIX OBJECT
-###################################################
- -->
-<block>
- <name>LDPC Parity Check Matrix</name>
- <key>variable_ldpc_H_matrix_def</key>
- <import>from gnuradio import fec</import>
- <var_make>self.$(id) = $(id) = fec.ldpc_H_matrix($filename, $gap)</var_make>
-
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>File</name>
- <key>filename</key>
- <value></value>
- <type>file_open</type>
- </param>
-
- <param>
- <name>Gap</name>
- <key>gap</key>
- <value></value>
- <type>int</type>
- </param>
-
- <doc>
-This block creates a FEC LDPC Parity Check Matrix variable.
-
-This variable can be used by:
- 1) LDPC Encoder Definition (via Parity Check) block
- 2) LDPC Bit Flip Decoder Definition block
-
-The format of alist files is described at:
-http://www.inference.phy.cam.ac.uk/mackay/codes/alist.html
-
-The specific format of this parity check matrix is described by Richardson and Urbanke in Appendix A of their book: Modern Coding Theory (ISBN 978-0-521-85229-6).
-
-As an example, see the file {$target}/share/gnuradio/fec/ldpc/n_1800_k_0902_gap_28.alist, which is used by the FEC example flowgraph ber_curve_gen_ldpc.grc.
-
-There is a small library of encoding-ready alist files at {$target}/share/gnuradio/fec/ldpc.
-
-To convert a parity check matrix to the appropriate format required for this encoder, use the python functions in {$target}/lib/python2.7/dist-packages/gnuradio/fec/LDPC/Generate_LDPC_matrix.py.
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ldpc_bit_flip_decoder.block.yml b/gr-fec/grc/variable_ldpc_bit_flip_decoder.block.yml
new file mode 100644
index 0000000000..4f66f07307
--- /dev/null
+++ b/gr-fec/grc/variable_ldpc_bit_flip_decoder.block.yml
@@ -0,0 +1,51 @@
+id: variable_ldpc_bit_flip_decoder_def
+label: LDPC Bit Flip Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: max_iterations
+ label: Max Iterations
+ dtype: int
+ default: '100'
+- id: matrix_object
+ label: LDPC FEC Matrix ID
+ dtype: raw
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(),\
+ \ ${max_iterations})\n% elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda\
+ \ a: fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(), ${max_iterations})),\
+ \ range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(), ${max_iterations})),\
+ \ range(0,${dim2}))), range(0,${dim1})) \n% endif"
+
+documentation: |-
+ This block creates a LDPC Bit Flip Decoder Definition variable.
+
+ The decoder requires knowledge of the matrix used to create (encode) the codewords. In the LDPC FEC Matrix ID field, input the ID of either a:
+ 1) LDPC Generator Matrix variable, or
+ 2) LDPC Parity Check Matrix variable
+
+ Max iterations may be increased from 100 for possibly better performance, but significantly higher number of iterations may slow things down.
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ldpc_bit_flip_decoder.xml b/gr-fec/grc/variable_ldpc_bit_flip_decoder.xml
deleted file mode 100644
index d905ce27fb..0000000000
--- a/gr-fec/grc/variable_ldpc_bit_flip_decoder.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC LDPC BIT FLIP DECODER
-###################################################
- -->
-<block>
- <name>LDPC Bit Flip Decoder Definition</name>
- <key>variable_ldpc_bit_flip_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(), $max_iterations)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(), $max_iterations)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.ldpc_bit_flip_decoder.make(${matrix_object}.get_base_sptr(), $max_iterations)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if</var_make>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Max Iterations</name>
- <key>max_iterations</key>
- <value>100</value>
- <type>int</type>
- </param>
-
- <param>
- <name>LDPC FEC Matrix ID</name>
- <key>matrix_object</key>
- <type>raw</type>
- </param>
-
- <doc>
-This block creates a LDPC Bit Flip Decoder Definition variable.
-
-The decoder requires knowledge of the matrix used to create (encode) the codewords. In the LDPC FEC Matrix ID field, input the ID of either a:
- 1) LDPC Generator Matrix variable, or
- 2) LDPC Parity Check Matrix variable
-
-Max iterations may be increased from 100 for possibly better performance, but significantly higher number of iterations may slow things down.
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ldpc_encoder_G.block.yml b/gr-fec/grc/variable_ldpc_encoder_G.block.yml
new file mode 100644
index 0000000000..f35f473705
--- /dev/null
+++ b/gr-fec/grc/variable_ldpc_encoder_G.block.yml
@@ -0,0 +1,42 @@
+id: variable_ldpc_encoder_G_def
+label: LDPC Encoder Definition (via Generator)
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: G
+ label: LDPC Generator Matrix
+ dtype: raw
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ldpc_gen_mtrx_encoder_make(${G})\n\
+ % elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.ldpc_gen_mtrx_encoder_make(${G})),\
+ \ range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.ldpc_gen_mtrx_encoder_make(${G})), range(0,${dim2}))), range(0,${dim1}))\
+ \ \n% endif"
+
+documentation: |-
+ Given a generator matrix in systematic form, G = [I|P], where I is the identity matrix and P is the parity submatrix, the information word s is encoded into a codeword x via:
+
+ x = G'*s
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ldpc_encoder_G.xml b/gr-fec/grc/variable_ldpc_encoder_G.xml
deleted file mode 100644
index 3b4dbeee25..0000000000
--- a/gr-fec/grc/variable_ldpc_encoder_G.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC LDPC ENCODER DEFINITION (VIA GENERATOR)
-###################################################
- -->
-
-<block>
- <name>LDPC Encoder Definition (via Generator)</name>
- <key>variable_ldpc_encoder_G_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ldpc_gen_mtrx_encoder_make($G)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.ldpc_gen_mtrx_encoder_make($G)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.ldpc_gen_mtrx_encoder_make($G)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if</var_make>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>LDPC Generator Matrix</name>
- <key>G</key>
- <value></value>
- <type>raw</type>
- </param>
-
- <doc>
-Given a generator matrix in systematic form, G = [I|P], where I is the identity matrix and P is the parity submatrix, the information word s is encoded into a codeword x via:
-
-x = G'*s
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_ldpc_encoder_H.block.yml b/gr-fec/grc/variable_ldpc_encoder_H.block.yml
new file mode 100644
index 0000000000..3fba6c7dbf
--- /dev/null
+++ b/gr-fec/grc/variable_ldpc_encoder_H.block.yml
@@ -0,0 +1,42 @@
+id: variable_ldpc_encoder_H_def
+label: LDPC Encoder Definition (via Parity Check)
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: H
+ label: Parity Check Matrix
+ dtype: raw
+value: ${ value }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.ldpc_par_mtrx_encoder_make_H(${H})\n\
+ % elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.ldpc_par_mtrx_encoder_make_H(${H})),\
+ \ range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.ldpc_par_mtrx_encoder_make_H(${H})), range(0,${dim2}))), range(0,${dim1}))\
+ \ \n% endif"
+
+documentation: |-
+ This block creates a LDPC Encoder Definition variable.
+
+ This encoder performs a reduced complexity algorithm described by Richardson and Urbanke in Appendix A of their book: Modern Coding Theory. Compared to the block "LDPC Encoder Definition (via Generator)," this encoder requires orders of magnitude fewer operations to create each codeword. This is accomplished by completing a significant amount of the complex matrix manipulation (including inverse, multiplication, and Gaussian elimination operations) during preprocessing. The disadvantage of this encoder is that it requires a specially formatted matrix. However, GNU Radio includes python scripts to format a standard parity check matrix appropriately for this encoder, as well as a small library of encoding-ready matrices for use.
+
+file_format: 1
diff --git a/gr-fec/grc/variable_ldpc_encoder_H.xml b/gr-fec/grc/variable_ldpc_encoder_H.xml
deleted file mode 100644
index 555891b095..0000000000
--- a/gr-fec/grc/variable_ldpc_encoder_H.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC LDPC ENCODER DEFINITION (PARITY CHECK)
-###################################################
- -->
-<block>
- <name>LDPC Encoder Definition (via Parity Check)</name>
- <key>variable_ldpc_encoder_H_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.ldpc_par_mtrx_encoder_make_H($H)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.ldpc_par_mtrx_encoder_make_H($H)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.ldpc_par_mtrx_encoder_make_H($H)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if</var_make>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Parity Check Matrix</name>
- <key>H</key>
- <value></value>
- <type>raw</type>
- </param>
- <doc>
-This block creates a LDPC Encoder Definition variable.
-
-This encoder performs a reduced complexity algorithm described by Richardson and Urbanke in Appendix A of their book: Modern Coding Theory. Compared to the block "LDPC Encoder Definition (via Generator)," this encoder requires orders of magnitude fewer operations to create each codeword. This is accomplished by completing a significant amount of the complex matrix manipulation (including inverse, multiplication, and Gaussian elimination operations) during preprocessing. The disadvantage of this encoder is that it requires a specially formatted matrix. However, GNU Radio includes python scripts to format a standard parity check matrix appropriately for this encoder, as well as a small library of encoding-ready matrices for use.
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_polar_code_configurator.block.yml b/gr-fec/grc/variable_polar_code_configurator.block.yml
new file mode 100644
index 0000000000..2c07822c23
--- /dev/null
+++ b/gr-fec/grc/variable_polar_code_configurator.block.yml
@@ -0,0 +1,42 @@
+id: variable_polar_code_configurator
+label: POLAR code Configurator
+
+parameters:
+- id: channel
+ label: Channel
+ dtype: string
+ default: polar.CHANNEL_TYPE_BEC
+ options: [polar.CHANNEL_TYPE_BEC, polar.CHANNEL_TYPE_AWGN]
+ option_labels: [BEC, AWGN]
+- id: block_size
+ label: Block size (N)
+ dtype: int
+ default: '32'
+- id: num_info_bits
+ label: Info Bits (K)
+ dtype: int
+ default: '16'
+- id: design_snr
+ label: design SNR
+ dtype: float
+ default: '0.0'
+- id: mu
+ label: mu
+ dtype: int
+ default: '16'
+value: ${ polar.load_frozen_bits_info(True, channel, block_size, num_info_bits, design_snr,
+ mu) }
+
+templates:
+ imports: from gnuradio.fec import polar
+ var_make: self.${id} = ${id} = polar.load_frozen_bits_info(False, ${channel},
+ ${block_size}, ${num_info_bits}, ${design_snr}, ${mu})
+
+documentation: "This block serves as an interface to the underlying Python functions\
+ \ for channel construction.\n \n Current channel types are: BEC/AWGN\n Block\
+ \ size must be a power of 2!\n Info Bits must be 0 smaller K smaller N\n Design\
+ \ SNR does affect the target transmission SNR and thus performance.\n The parameter\
+ \ mu is only relevant for AWGN channels. It is passed on to the corresponding\
+ \ Channel construction algorithm."
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_code_configurator.xml b/gr-fec/grc/variable_polar_code_configurator.xml
deleted file mode 100644
index ee145b16f7..0000000000
--- a/gr-fec/grc/variable_polar_code_configurator.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>POLAR code Configurator</name>
- <key>variable_polar_code_configurator</key>
- <import>from gnuradio.fec import polar</import>
- <var_make>self.$(id) = $(id) = polar.load_frozen_bits_info(False, $channel, $block_size, $num_info_bits, $design_snr, $mu)</var_make>
- <var_value>polar.load_frozen_bits_info(True, $channel, $block_size, $num_info_bits, $design_snr, $mu)</var_value>
- <make></make>
-
- <param>
- <name>Channel</name>
- <key>channel</key>
- <value>polar.CHANNEL_TYPE_BEC</value>
- <type>string</type>
- <option>
- <name>BEC</name>
- <key>polar.CHANNEL_TYPE_BEC</key>
- </option>
- <option>
- <name>AWGN</name>
- <key>polar.CHANNEL_TYPE_AWGN</key>
- </option>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <value>32</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Info Bits (K)</name>
- <key>num_info_bits</key>
- <value>16</value>
- <type>int</type>
- </param>
-
- <param>
- <name>design SNR</name>
- <key>design_snr</key>
- <value>0.0</value>
- <type>float</type>
- </param>
-
- <param>
- <name>mu</name>
- <key>mu</key>
- <value>16</value>
- <type>int</type>
- </param>
- <doc>This block serves as an interface to the underlying Python functions for channel construction.
-
- Current channel types are: BEC/AWGN
- Block size must be a power of 2!
- Info Bits must be 0 smaller K smaller N
- Design SNR does affect the target transmission SNR and thus performance.
- The parameter mu is only relevant for AWGN channels. It is passed on to the corresponding Channel construction algorithm.</doc>
-</block>
diff --git a/gr-fec/grc/variable_polar_decoder_sc.block.yml b/gr-fec/grc/variable_polar_decoder_sc.block.yml
new file mode 100644
index 0000000000..00120a65db
--- /dev/null
+++ b/gr-fec/grc/variable_polar_decoder_sc.block.yml
@@ -0,0 +1,45 @@
+id: variable_polar_decoder_sc_def
+label: POLAR Decoder SC Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: block_size
+ label: Block size (N)
+ dtype: int
+- id: num_info_bits
+ label: '#Info Bits (K)'
+ dtype: int
+- id: frozen_bit_positions
+ label: Frozen Bit Positions
+ dtype: int_vector
+- id: frozen_bit_values
+ label: Frozen Bit Values
+ dtype: int_vector
+value: ${ fec.polar_decoder_sc.make(block_size, num_info_bits, frozen_bit_positions,
+ frozen_bit_values) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "% if int(ndim)==0 #:\nself.${id} = ${id} = fec.polar_decoder_sc.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values}) \n% elif\
+ \ int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.polar_decoder_sc.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values})), range(0,\
+ \ ${dim1}) ) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda a:\
+ \ fec.polar_decoder_sc.make(${block_size}, ${num_info_bits}, ${frozen_bit_positions},\
+ \ ${frozen_bit_values})), range(0, ${dim2}))), range(0, ${dim1})) \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_decoder_sc.xml b/gr-fec/grc/variable_polar_decoder_sc.xml
deleted file mode 100644
index 4976afb4b6..0000000000
--- a/gr-fec/grc/variable_polar_decoder_sc.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>POLAR Decoder SC Definition</name>
- <key>variable_polar_decoder_sc_def</key>
- <import>from gnuradio import fec</import>
- <var_make>#if int($ndim())==0 #
-self.$(id) = $(id) = fec.polar_decoder_sc.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values) #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.polar_decoder_sc.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)), range(0, $dim1) ) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.polar_decoder_sc.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)), range(0, $dim2))), range(0, $dim1)) #slurp
-#end if</var_make>
- <var_value>fec.polar_decoder_sc.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>#Info Bits (K)</name>
- <key>num_info_bits</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Frozen Bit Positions</name>
- <key>frozen_bit_positions</key>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Frozen Bit Values</name>
- <key>frozen_bit_values</key>
- <type>int_vector</type>
- </param>
-</block>
diff --git a/gr-fec/grc/variable_polar_decoder_sc_list.block.yml b/gr-fec/grc/variable_polar_decoder_sc_list.block.yml
new file mode 100644
index 0000000000..7c9de3240f
--- /dev/null
+++ b/gr-fec/grc/variable_polar_decoder_sc_list.block.yml
@@ -0,0 +1,49 @@
+id: variable_polar_decoder_sc_list_def
+label: POLAR Decoder SC List Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: max_list_size
+ label: Maximum List Size (L)
+ dtype: int
+- id: block_size
+ label: Block size (N)
+ dtype: int
+- id: num_info_bits
+ label: '#Info Bits (K)'
+ dtype: int
+- id: frozen_bit_positions
+ label: Frozen Bit Positions
+ dtype: int_vector
+- id: frozen_bit_values
+ label: Frozen Bit Values
+ dtype: int_vector
+value: ${ fec.polar_decoder_sc_list.make(max_list_size, block_size, num_info_bits,
+ frozen_bit_positions, frozen_bit_values) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "% if int(ndim)==0 #:\nself.${id} = ${id} = fec.polar_decoder_sc_list.make(${max_list_size},\
+ \ ${block_size}, ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values})\
+ \ \n% elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.polar_decoder_sc_list.make(${max_list_size},\
+ \ ${block_size}, ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values})),\
+ \ range(0, ${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.polar_decoder_sc_list.make(${max_list_size}, ${block_size}, ${num_info_bits},\
+ \ ${frozen_bit_positions}, ${frozen_bit_values})), range(0, ${dim2}))), range(0,\
+ \ ${dim1})) \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_decoder_sc_list.xml b/gr-fec/grc/variable_polar_decoder_sc_list.xml
deleted file mode 100644
index 2128110ad4..0000000000
--- a/gr-fec/grc/variable_polar_decoder_sc_list.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>POLAR Decoder SC List Definition</name>
- <key>variable_polar_decoder_sc_list_def</key>
- <import>from gnuradio import fec</import>
- <var_make>#if int($ndim())==0 #
-self.$(id) = $(id) = fec.polar_decoder_sc_list.make($max_list_size, $block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values) #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.polar_decoder_sc_list.make($max_list_size, $block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)), range(0, $dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.polar_decoder_sc_list.make($max_list_size, $block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)), range(0, $dim2))), range(0, $dim1)) #slurp
-#end if</var_make>
- <var_value>fec.polar_decoder_sc_list.make($max_list_size, $block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Maximum List Size (L)</name>
- <key>max_list_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>#Info Bits (K)</name>
- <key>num_info_bits</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Frozen Bit Positions</name>
- <key>frozen_bit_positions</key>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Frozen Bit Values</name>
- <key>frozen_bit_values</key>
- <type>int_vector</type>
- </param>
-</block>
diff --git a/gr-fec/grc/variable_polar_decoder_sc_systematic.block.yml b/gr-fec/grc/variable_polar_decoder_sc_systematic.block.yml
new file mode 100644
index 0000000000..b730b20068
--- /dev/null
+++ b/gr-fec/grc/variable_polar_decoder_sc_systematic.block.yml
@@ -0,0 +1,42 @@
+id: variable_polar_decoder_sc_systematic_def
+label: systematic POLAR Decoder SC Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: block_size
+ label: Block size (N)
+ dtype: int
+- id: num_info_bits
+ label: '#Info Bits (K)'
+ dtype: int
+- id: frozen_bit_positions
+ label: Frozen Bit Positions
+ dtype: int_vector
+value: ${ fec.polar_decoder_sc_systematic.make(block_size, num_info_bits, frozen_bit_positions)
+ }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "% if int(ndim)==0 #:\nself.${id} = ${id} = fec.polar_decoder_sc_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}) \n% elif int(ndim)==1 #:\nself.${id}\
+ \ = ${id} = map((lambda a: fec.polar_decoder_sc_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions})), range(0, ${dim1}) ) \n% else:\n\
+ self.${id} = ${id} = map((lambda b: map((lambda a: fec.polar_decoder_sc_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions})), range(0, ${dim2}))), range(0,\
+ \ ${dim1})) \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_decoder_sc_systematic.xml b/gr-fec/grc/variable_polar_decoder_sc_systematic.xml
deleted file mode 100644
index cefc7e237d..0000000000
--- a/gr-fec/grc/variable_polar_decoder_sc_systematic.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>systematic POLAR Decoder SC Definition</name>
- <key>variable_polar_decoder_sc_systematic_def</key>
- <import>from gnuradio import fec</import>
- <var_make>#if int($ndim())==0 #
-self.$(id) = $(id) = fec.polar_decoder_sc_systematic.make($block_size, $num_info_bits, $frozen_bit_positions) #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.polar_decoder_sc_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)), range(0, $dim1) ) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.polar_decoder_sc_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)), range(0, $dim2))), range(0, $dim1)) #slurp
-#end if</var_make>
- <var_value>fec.polar_decoder_sc_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>#Info Bits (K)</name>
- <key>num_info_bits</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Frozen Bit Positions</name>
- <key>frozen_bit_positions</key>
- <type>int_vector</type>
- </param>
-</block>
diff --git a/gr-fec/grc/variable_polar_encoder.block.yml b/gr-fec/grc/variable_polar_encoder.block.yml
new file mode 100644
index 0000000000..7979a71f43
--- /dev/null
+++ b/gr-fec/grc/variable_polar_encoder.block.yml
@@ -0,0 +1,52 @@
+id: variable_polar_encoder_def
+label: POLAR Encoder Definition
+
+parameters:
+- id: is_packed
+ label: Packed Bits
+ dtype: enum
+ default: 'False'
+ options: ['False', 'True']
+ option_labels: ['No', 'Yes']
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: block_size
+ label: Block size (N)
+ dtype: int
+- id: num_info_bits
+ label: '#Info Bits (K)'
+ dtype: int
+- id: frozen_bit_positions
+ label: Frozen Bit Positions
+ dtype: int_vector
+- id: frozen_bit_values
+ label: Frozen Bit Values
+ dtype: int_vector
+value: ${ fec.polar_encoder.make(block_size, num_info_bits, frozen_bit_positions,
+ frozen_bit_values, is_packed) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "% if int(ndim)==0 #:\nself.${id} = ${id} = fec.polar_encoder.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values}, ${is_packed})\
+ \ \n% elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.polar_encoder.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}, ${frozen_bit_values}, ${is_packed})),\
+ \ range(0, ${dim1})) \n% else:\nself.${id} = ${id} = map((lambda b: map((lambda\
+ \ a: fec.polar_encoder.make(${block_size}, ${num_info_bits}, ${frozen_bit_positions},\
+ \ ${frozen_bit_values}, ${is_packed})), range(0, ${dim2}))), range(0, ${dim1}))\
+ \ \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_encoder.xml b/gr-fec/grc/variable_polar_encoder.xml
deleted file mode 100644
index 4147cf1edf..0000000000
--- a/gr-fec/grc/variable_polar_encoder.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>POLAR Encoder Definition</name>
- <key>variable_polar_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>#if int($ndim())==0 #
-self.$(id) = $(id) = fec.polar_encoder.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values, $is_packed) #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.polar_encoder.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values, $is_packed)), range(0, $dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.polar_encoder.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values, $is_packed)), range(0, $dim2))), range(0, $dim1)) #slurp
-#end if</var_make>
- <var_value>fec.polar_encoder.make($block_size, $num_info_bits, $frozen_bit_positions, $frozen_bit_values, $is_packed)</var_value>
- <make></make>
-
- <param>
- <name>Packed Bits</name>
- <key>is_packed</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>#Info Bits (K)</name>
- <key>num_info_bits</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Frozen Bit Positions</name>
- <key>frozen_bit_positions</key>
- <type>int_vector</type>
- </param>
-
- <param>
- <name>Frozen Bit Values</name>
- <key>frozen_bit_values</key>
- <type>int_vector</type>
- </param>
-</block>
diff --git a/gr-fec/grc/variable_polar_encoder_systematic.block.yml b/gr-fec/grc/variable_polar_encoder_systematic.block.yml
new file mode 100644
index 0000000000..0f4c5f23a3
--- /dev/null
+++ b/gr-fec/grc/variable_polar_encoder_systematic.block.yml
@@ -0,0 +1,42 @@
+id: variable_polar_encoder_systematic_def
+label: systematic POLAR Encoder Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ default: '0'
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '4'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: block_size
+ label: Block size (N)
+ dtype: int
+- id: num_info_bits
+ label: '#Info Bits (K)'
+ dtype: int
+- id: frozen_bit_positions
+ label: Frozen Bit Positions
+ dtype: int_vector
+value: ${ fec.polar_encoder_systematic.make(block_size, num_info_bits, frozen_bit_positions)
+ }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "% if int(ndim)==0 #:\nself.${id} = ${id} = fec.polar_encoder_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions}) \n% elif int(ndim)==1 #:\nself.${id}\
+ \ = ${id} = map((lambda a: fec.polar_encoder_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions})), range(0, ${dim1})) \n% else:\n\
+ self.${id} = ${id} = map((lambda b: map((lambda a: fec.polar_encoder_systematic.make(${block_size},\
+ \ ${num_info_bits}, ${frozen_bit_positions})), range(0, ${dim2}))), range(0,\
+ \ ${dim1})) \n% endif"
+
+file_format: 1
diff --git a/gr-fec/grc/variable_polar_encoder_systematic.xml b/gr-fec/grc/variable_polar_encoder_systematic.xml
deleted file mode 100644
index 0d9bcd96ab..0000000000
--- a/gr-fec/grc/variable_polar_encoder_systematic.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>systematic POLAR Encoder Definition</name>
- <key>variable_polar_encoder_systematic_def</key>
- <import>from gnuradio import fec</import>
- <var_make>#if int($ndim())==0 #
-self.$(id) = $(id) = fec.polar_encoder_systematic.make($block_size, $num_info_bits, $frozen_bit_positions) #slurp
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.polar_encoder_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)), range(0, $dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.polar_encoder_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)), range(0, $dim2))), range(0, $dim1)) #slurp
-#end if</var_make>
- <var_value>fec.polar_encoder_systematic.make($block_size, $num_info_bits, $frozen_bit_positions)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value>0</value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>4</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Block size (N)</name>
- <key>block_size</key>
- <type>int</type>
- </param>
-
- <param>
- <name>#Info Bits (K)</name>
- <key>num_info_bits</key>
- <type>int</type>
- </param>
-
- <param>
- <name>Frozen Bit Positions</name>
- <key>frozen_bit_positions</key>
- <type>int_vector</type>
- </param>
-</block>
diff --git a/gr-fec/grc/variable_repetition_decoder_def_list.block.yml b/gr-fec/grc/variable_repetition_decoder_def_list.block.yml
new file mode 100644
index 0000000000..50590038e5
--- /dev/null
+++ b/gr-fec/grc/variable_repetition_decoder_def_list.block.yml
@@ -0,0 +1,49 @@
+id: variable_repetition_decoder_def
+label: Repetition Decoder Definition
+
+parameters:
+- id: value
+ label: Ignore Me
+ dtype: raw
+ default: '"ok"'
+ hide: all
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+- id: rep
+ label: Repetitions
+ dtype: int
+ default: '3'
+- id: prob
+ label: a prior prob
+ dtype: float
+ default: '0.5'
+value: ${ fec.repetition_decoder.make(framebits, rep, prob) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.repetition_decoder.make(${framebits},\
+ \ ${rep}, ${prob})\n% elif int(ndim)==1 #:\nself.${id} = ${id} = map( (lambda\
+ \ a: fec.repetition_decoder.make(${framebits}, ${rep}, ${prob})), range(0,${dim1})\
+ \ ) \n% else:\nself.${id} = ${id} = map( (lambda b: map( ( lambda a: fec.repetition_decoder.make(${framebits},\
+ \ ${rep}, ${prob})), range(0,${dim2}) ) ), range(0,${dim1})) \n% endif\n \
+ \ "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_repetition_decoder_def_list.xml b/gr-fec/grc/variable_repetition_decoder_def_list.xml
deleted file mode 100644
index cbeef445fa..0000000000
--- a/gr-fec/grc/variable_repetition_decoder_def_list.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC REPETITION DECODER
-###################################################
- -->
-<block>
- <name>Repetition Decoder Definition</name>
- <key>variable_repetition_decoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.repetition_decoder.make($framebits, $rep, $prob)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map( (lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim1) ) #slurp
-#else
-self.$(id) = $(id) = map( (lambda b: map( ( lambda a: fec.repetition_decoder.make($framebits, $rep, $prob)), range(0,$dim2) ) ), range(0,$dim1)) #slurp
-#end if
- </var_make>
- <var_value>fec.repetition_decoder.make($framebits, $rep, $prob)</var_value>
- <make></make>
-
- <param>
- <name>Ignore Me</name>
- <key>value</key>
- <value>"ok"</value>
- <type>raw</type>
- <hide>all</hide>
- </param>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Repetitions</name>
- <key>rep</key>
- <value>3</value>
- <type>int</type>
- </param>
-
- <param>
- <name>a prior prob</name>
- <key>prob</key>
- <value>0.5</value>
- <type>float</type>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fec/grc/variable_repetition_encoder_def_list.block.yml b/gr-fec/grc/variable_repetition_encoder_def_list.block.yml
new file mode 100644
index 0000000000..3e86966e72
--- /dev/null
+++ b/gr-fec/grc/variable_repetition_encoder_def_list.block.yml
@@ -0,0 +1,39 @@
+id: variable_repetition_encoder_def
+label: Repetition Encoder Definition
+
+parameters:
+- id: ndim
+ label: Parallelism
+ dtype: enum
+ options: ['0', '1', '2']
+- id: dim1
+ label: Dimension 1
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 1) else 'all') }
+- id: dim2
+ label: Dimension 2
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if (int(ndim) >= 2) else 'all') }
+- id: framebits
+ label: Frame Bits
+ dtype: int
+ default: '2048'
+- id: rep
+ label: Repetitions
+ dtype: int
+ default: '3'
+value: ${ fec.repetition_encoder_make(framebits, rep) }
+
+templates:
+ imports: from gnuradio import fec
+ var_make: "\n% if int(ndim)==0 #:\nself.${id} = ${id} = fec.repetition_encoder_make(${framebits},\
+ \ ${rep})\n% elif int(ndim)==1 #:\nself.${id} = ${id} = map((lambda a: fec.repetition_encoder_make(${framebits},\
+ \ ${rep})), range(0,${dim1})) \n% else:\nself.${id} = ${id} = map((lambda\
+ \ b: map((lambda a: fec.repetition_encoder_make(${framebits}, ${rep})), range(0,${dim2}))),\
+ \ range(0,${dim1})) \n% endif\n "
+
+documentation: ""
+
+file_format: 1
diff --git a/gr-fec/grc/variable_repetition_encoder_def_list.xml b/gr-fec/grc/variable_repetition_encoder_def_list.xml
deleted file mode 100644
index e8554189cc..0000000000
--- a/gr-fec/grc/variable_repetition_encoder_def_list.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-# FEC REPETITION ENCODER
-###################################################
- -->
-<block>
- <name>Repetition Encoder Definition</name>
- <key>variable_repetition_encoder_def</key>
- <import>from gnuradio import fec</import>
- <var_make>
-#if int($ndim())==0 #
-self.$(id) = $(id) = fec.repetition_encoder_make($framebits, $rep)
-#else if int($ndim())==1 #
-self.$(id) = $(id) = map((lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim1)) #slurp
-#else
-self.$(id) = $(id) = map((lambda b: map((lambda a: fec.repetition_encoder_make($framebits, $rep)), range(0,$dim2))), range(0,$dim1)) #slurp
-#end if
- </var_make>
- <var_value>fec.repetition_encoder_make($framebits, $rep)</var_value>
- <make></make>
-
- <param>
- <name>Parallelism</name>
- <key>ndim</key>
- <value></value>
- <type>enum</type>
- <option>
- <name>0</name>
- <key>0</key>
- </option>
- <option>
- <name>1</name>
- <key>1</key>
- </option>
- <option>
- <name>2</name>
- <key>2</key>
- </option>
- </param>
-
- <param>
- <name>Dimension 1</name>
- <key>dim1</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Dimension 2</name>
- <key>dim2</key>
- <value>1</value>
- <type>int</type>
- <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
- </param>
-
- <param>
- <name>Frame Bits</name>
- <key>framebits</key>
- <value>2048</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Repetitions</name>
- <key>rep</key>
- <value>3</value>
- <type>int</type>
- </param>
-
- <doc>
- </doc>
-</block>
diff --git a/gr-fft/grc/CMakeLists.txt b/gr-fft/grc/CMakeLists.txt
index 8eeb431c3e..d0432c4281 100644
--- a/gr-fft/grc/CMakeLists.txt
+++ b/gr-fft/grc/CMakeLists.txt
@@ -18,10 +18,10 @@
# Boston, MA 02110-1301, USA.
install(FILES
- fft_block_tree.xml
- fft_fft_vxx.xml
- fft_goertzel_fc.xml
- fft_logpwrfft_x.xml
- fft_ctrlport_probe_psd.xml
+ fft.tree.yml
+ fft_fft_vxx.block.yml
+ fft_goertzel_fc.block.yml
+ fft_logpwrfft_x.block.yml
+ fft_ctrlport_probe_psd.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-fft/grc/fft.tree.yml b/gr-fft/grc/fft.tree.yml
new file mode 100644
index 0000000000..c198bc4573
--- /dev/null
+++ b/gr-fft/grc/fft.tree.yml
@@ -0,0 +1,7 @@
+'[Core]':
+- Fourier Analysis:
+ - fft_vxx
+ - goertzel_fc
+ - logpwrfft_x
+- Control Port:
+ - fft_ctrlport_probe_psd
diff --git a/gr-fft/grc/fft_block_tree.xml b/gr-fft/grc/fft_block_tree.xml
deleted file mode 100644
index e844d837b4..0000000000
--- a/gr-fft/grc/fft_block_tree.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR FFT blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name> <!-- Blank for Root Name -->
- <cat>
- <name>Fourier Analysis</name>
- <block>fft_vxx</block>
- <block>goertzel_fc</block>
- <block>logpwrfft_x</block>
- </cat>
- <cat>
- <name>Control Port</name>
- <block>fft_ctrlport_probe_psd</block>
- </cat>
-</cat>
diff --git a/gr-fft/grc/fft_ctrlport_probe_psd.block.yml b/gr-fft/grc/fft_ctrlport_probe_psd.block.yml
new file mode 100644
index 0000000000..3349f42639
--- /dev/null
+++ b/gr-fft/grc/fft_ctrlport_probe_psd.block.yml
@@ -0,0 +1,31 @@
+id: fft_ctrlport_probe_psd
+label: Ctrlport Probe PSD
+
+parameters:
+- id: name
+ label: Name
+ dtype: string
+ default: psd
+- id: desc
+ label: Description
+ dtype: string
+ default: PSD Plot
+- id: len
+ label: Length
+ dtype: int
+ default: '1024'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import fft
+ make: fft.ctrlport_probe_psd(${name}, ${desc}, ${len})
+ callbacks:
+ - set_length(${len})
+
+documentation: |-
+ Place this in a graph to export PSD values to a GRCP port probe.
+
+file_format: 1
diff --git a/gr-fft/grc/fft_ctrlport_probe_psd.xml b/gr-fft/grc/fft_ctrlport_probe_psd.xml
deleted file mode 100644
index f50144ba92..0000000000
--- a/gr-fft/grc/fft_ctrlport_probe_psd.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<block>
- <name>Ctrlport Probe PSD</name>
- <key>fft_ctrlport_probe_psd</key>
- <import>from gnuradio import fft</import>
- <make>fft.ctrlport_probe_psd($name, $desc, $len)</make>
- <callback>set_length($len)</callback>
-
- <param>
- <name>Name</name>
- <key>name</key>
- <value>psd</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Description</name>
- <key>desc</key>
- <value>PSD Plot</value>
- <type>string</type>
- </param>
-
- <param>
- <name>Length</name>
- <key>len</key>
- <value>1024</value>
- <type>int</type>
- </param>
-
-
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
-
- <doc>
- Place this in a graph to export PSD values to a GRCP port probe.
- </doc>
-
-</block>
-
diff --git a/gr-fft/grc/fft_fft_vxx.block.yml b/gr-fft/grc/fft_fft_vxx.block.yml
new file mode 100644
index 0000000000..33143f688a
--- /dev/null
+++ b/gr-fft/grc/fft_fft_vxx.block.yml
@@ -0,0 +1,60 @@
+id: fft_vxx
+label: FFT
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ hide_shift: ['', all]
+ hide: part
+- id: fft_size
+ label: FFT Size
+ dtype: int
+ default: '1024'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: forward
+ label: Forward/Reverse
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: [Forward, Reverse]
+- id: window
+ label: Window
+ dtype: real_vector
+ default: window.blackmanharris(1024)
+- id: shift
+ label: Shift
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+ hide: ${ type.hide_shift }
+- id: nthreads
+ label: Num. Threads
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ fft_size }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ fft_size }
+
+templates:
+ imports: |-
+ from gnuradio import fft
+ from gnuradio.fft import window
+ make: |-
+ % if type == "complex":
+ fft.fft_vcc(${fft_size}, ${forward}, ${window}, ${shift}, ${nthreads})
+ % else:
+ fft.fft_vfc(${fft_size}, ${forward}, ${window}, ${nthreads})
+ % endif
+ callbacks:
+ - set_nthreads(${nthreads})
+
+file_format: 1
diff --git a/gr-fft/grc/fft_fft_vxx.xml b/gr-fft/grc/fft_fft_vxx.xml
deleted file mode 100644
index 028721fe25..0000000000
--- a/gr-fft/grc/fft_fft_vxx.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FFT
-###################################################
- -->
-<block>
- <name>FFT</name>
- <key>fft_vxx</key>
- <import>from gnuradio import fft</import>
- <import>from gnuradio.fft import window</import>
- <make>#if $type() == "complex"
-fft.fft_vcc($fft_size, $forward, $window, $shift, $nthreads)
-#else
-fft.fft_vfc($fft_size, $forward, $window, $nthreads)
-#end if</make>
- <callback>set_nthreads($nthreads)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>hide_shift:</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>hide_shift:all</opt>
- </option>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fft_size</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <param>
- <name>Forward/Reverse</name>
- <key>forward</key>
- <type>enum</type>
- <option>
- <name>Forward</name>
- <key>True</key>
- </option>
- <option>
- <name>Reverse</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Window</name>
- <key>window</key>
- <value>window.blackmanharris(1024)</value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Shift</name>
- <key>shift</key>
- <type>enum</type>
- <hide>$type.hide_shift</hide>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Num. Threads</name>
- <key>nthreads</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$fft_size</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>$fft_size</vlen>
- </source>
-</block>
diff --git a/gr-fft/grc/fft_goertzel_fc.block.yml b/gr-fft/grc/fft_goertzel_fc.block.yml
new file mode 100644
index 0000000000..6ea74e7f53
--- /dev/null
+++ b/gr-fft/grc/fft_goertzel_fc.block.yml
@@ -0,0 +1,30 @@
+id: goertzel_fc
+label: Goertzel
+
+parameters:
+- id: rate
+ label: Rate
+ dtype: int
+- id: len
+ label: Length
+ dtype: int
+- id: freq
+ label: Frequency
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import fft
+ make: fft.goertzel_fc(${rate}, ${len}, ${freq})
+ callbacks:
+ - set_freq(${freq})
+ - set_rate(${rate})
+
+file_format: 1
diff --git a/gr-fft/grc/fft_goertzel_fc.xml b/gr-fft/grc/fft_goertzel_fc.xml
deleted file mode 100644
index 3712843586..0000000000
--- a/gr-fft/grc/fft_goertzel_fc.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Goertzel
-###################################################
- -->
-<block>
- <name>Goertzel</name>
- <key>goertzel_fc</key>
- <import>from gnuradio import fft</import>
- <make>fft.goertzel_fc($rate, $len, $freq)</make>
- <callback>set_freq($freq)</callback>
- <callback>set_rate($rate)</callback>
- <param>
- <name>Rate</name>
- <key>rate</key>
- <type>int</type>
- </param>
- <param>
- <name>Length</name>
- <key>len</key>
- <type>int</type>
- </param>
- <param>
- <name>Frequency</name>
- <key>freq</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-fft/grc/fft_logpwrfft_x.block.yml b/gr-fft/grc/fft_logpwrfft_x.block.yml
new file mode 100644
index 0000000000..1046fe81aa
--- /dev/null
+++ b/gr-fft/grc/fft_logpwrfft_x.block.yml
@@ -0,0 +1,59 @@
+id: logpwrfft_x
+label: Log Power FFT
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [c, f]
+ hide: part
+- id: sample_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: fft_size
+ label: FFT Size
+ dtype: int
+ default: '1024'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: ref_scale
+ label: Reference Scale
+ dtype: real
+ default: '2'
+- id: frame_rate
+ label: Frame Rate
+ dtype: real
+ default: '30'
+- id: average
+ label: Average
+ dtype: bool
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['On', 'Off']
+- id: avg_alpha
+ label: Average Alpha
+ dtype: real
+ default: '1.0'
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: float
+ vlen: ${ fft_size }
+
+templates:
+ imports: from gnuradio.fft import logpwrfft
+ make: "logpwrfft.logpwrfft_${type.fcn}(\n\tsample_rate=${sample_rate},\n\tfft_size=${fft_size},\n\
+ \tref_scale=${ref_scale},\n\tframe_rate=${frame_rate},\n\tavg_alpha=${avg_alpha},\n\
+ \taverage=${average},\n)"
+ callbacks:
+ - set_sample_rate(${sample_rate})
+ - set_avg_alpha(${avg_alpha})
+ - set_average(${average})
+
+file_format: 1
diff --git a/gr-fft/grc/fft_logpwrfft_x.xml b/gr-fft/grc/fft_logpwrfft_x.xml
deleted file mode 100644
index ee45b577d8..0000000000
--- a/gr-fft/grc/fft_logpwrfft_x.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Log Power FFT
-###################################################
- -->
-<block>
- <name>Log Power FFT</name>
- <key>logpwrfft_x</key>
- <import>from gnuradio.fft import logpwrfft</import>
- <make>logpwrfft.logpwrfft_$(type.fcn)(
- sample_rate=$sample_rate,
- fft_size=$fft_size,
- ref_scale=$ref_scale,
- frame_rate=$frame_rate,
- avg_alpha=$avg_alpha,
- average=$average,
-)</make>
- <callback>set_sample_rate($sample_rate)</callback>
- <callback>set_avg_alpha($avg_alpha)</callback>
- <callback>set_average($average)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:c</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:f</opt>
- </option>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>sample_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>FFT Size</name>
- <key>fft_size</key>
- <value>1024</value>
- <type>int</type>
- </param>
- <param>
- <name>Reference Scale</name>
- <key>ref_scale</key>
- <value>2</value>
- <type>real</type>
- </param>
- <param>
- <name>Frame Rate</name>
- <key>frame_rate</key>
- <value>30</value>
- <type>real</type>
- </param>
- <param>
- <name>Average</name>
- <key>average</key>
- <value>False</value>
- <type>bool</type>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Average Alpha</name>
- <key>avg_alpha</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- <vlen>$fft_size</vlen>
- </source>
-</block>
diff --git a/gr-filter/grc/CMakeLists.txt b/gr-filter/grc/CMakeLists.txt
index d3039eb20b..95c286a136 100644
--- a/gr-filter/grc/CMakeLists.txt
+++ b/gr-filter/grc/CMakeLists.txt
@@ -18,37 +18,37 @@
# Boston, MA 02110-1301, USA.
install(FILES
- filter_block_tree.xml
- filter_dc_blocker_xx.xml
- filter_fft_filter_xxx.xml
- filter_fir_filter_xxx.xml
- filter_filter_delay_fc.xml
- filter_filterbank_vcvcf.xml
- filter_mmse_interpolator_xx.xml
- filter_mmse_resampler_xx.xml
- filter_freq_xlating_fft_filter_ccc.xml
- filter_freq_xlating_fir_filter_xxx.xml
- filter_hilbert_fc.xml
- filter_iir_filter_xxx.xml
- filter_interp_fir_filter_xxx.xml
- filter_pfb_arb_resampler.xml
- filter_pfb_channelizer.xml
- filter_pfb_channelizer_hier.xml
- filter_pfb_decimator.xml
- filter_pfb_interpolator.xml
- filter_pfb_synthesizer.xml
- filter_rational_resampler_xxx.xml
- filter_rational_resampler_base_xxx.xml
- filter_single_pole_iir_filter_xx.xml
- filter_low_pass_filter.xml
- filter_high_pass_filter.xml
- filter_band_pass_filter.xml
- filter_band_reject_filter.xml
- filter_root_raised_cosine_filter.xml
- variable_low_pass_filter_taps.xml
- variable_high_pass_filter_taps.xml
- variable_band_pass_filter_taps.xml
- variable_band_reject_filter_taps.xml
- variable_rrc_filter_taps.xml
+ filter.tree.yml
+ filter_dc_blocker_xx.block.yml
+ filter_fft_filter_xxx.block.yml
+ filter_fir_filter_xxx.block.yml
+ filter_filter_delay_fc.block.yml
+ filter_filterbank_vcvcf.block.yml
+ filter_mmse_interpolator_xx.block.yml
+ filter_mmse_resampler_xx.block.yml
+ filter_freq_xlating_fft_filter_ccc.block.yml
+ filter_freq_xlating_fir_filter_xxx.block.yml
+ filter_hilbert_fc.block.yml
+ filter_iir_filter_xxx.block.yml
+ filter_interp_fir_filter_xxx.block.yml
+ filter_pfb_arb_resampler.block.yml
+ filter_pfb_channelizer.block.yml
+ filter_pfb_channelizer_hier.block.yml
+ filter_pfb_decimator.block.yml
+ filter_pfb_interpolator.block.yml
+ filter_pfb_synthesizer.block.yml
+ filter_rational_resampler_xxx.block.yml
+ filter_rational_resampler_base_xxx.block.yml
+ filter_single_pole_iir_filter_xx.block.yml
+ filter_low_pass_filter.block.yml
+ filter_high_pass_filter.block.yml
+ filter_band_pass_filter.block.yml
+ filter_band_reject_filter.block.yml
+ filter_root_raised_cosine_filter.block.yml
+ variable_low_pass_filter_taps.block.yml
+ variable_high_pass_filter_taps.block.yml
+ variable_band_pass_filter_taps.block.yml
+ variable_band_reject_filter_taps.block.yml
+ variable_rrc_filter_taps.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-filter/grc/filter.tree.yml b/gr-filter/grc/filter.tree.yml
new file mode 100644
index 0000000000..dcb84503c9
--- /dev/null
+++ b/gr-filter/grc/filter.tree.yml
@@ -0,0 +1,35 @@
+'[Core]':
+- Filters:
+ - variable_low_pass_filter_taps
+ - variable_high_pass_filter_taps
+ - variable_band_pass_filter_taps
+ - variable_band_reject_filter_taps
+ - variable_rrc_filter_taps
+ - low_pass_filter
+ - high_pass_filter
+ - band_pass_filter
+ - band_reject_filter
+ - root_raised_cosine_filter
+ - dc_blocker_xx
+ - fft_filter_xxx
+ - fir_filter_xxx
+ - filterbank_vcvcf
+ - filter_delay_fc
+ - hilbert_fc
+ - iir_filter_xxx
+ - interp_fir_filter_xxx
+ - single_pole_iir_filter_xx
+- Resamplers:
+ - mmse_resampler_xx
+ - mmse_interpolator_xx
+ - pfb_arb_resampler_xxx
+ - rational_resampler_xxx
+ - rational_resampler_base_xxx
+- Channelizers:
+ - freq_xlating_fft_filter_ccc
+ - freq_xlating_fir_filter_xxx
+ - pfb_channelizer_ccf
+ - pfb_channelizer_hier_ccf
+ - pfb_decimator_ccf
+ - pfb_interpolator_ccf
+ - pfb_synthesizer_ccf
diff --git a/gr-filter/grc/filter_band_pass_filter.block.yml b/gr-filter/grc/filter_band_pass_filter.block.yml
new file mode 100644
index 0000000000..3d193cb122
--- /dev/null
+++ b/gr-filter/grc/filter_band_pass_filter.block.yml
@@ -0,0 +1,85 @@
+id: band_pass_filter
+label: Band Pass Filter
+
+parameters:
+- id: type
+ label: FIR Type
+ dtype: enum
+ options: [fir_filter_ccf, interp_fir_filter_ccf, fir_filter_fff, interp_fir_filter_fff,
+ fir_filter_ccc, interp_fir_filter_ccc, fir_filter_fcc, interp_fir_filter_fcc]
+ option_labels: [Complex->Complex (Real Taps) (Decim), Complex->Complex (Real Taps)
+ (Interp), Float->Float (Real Taps) (Decim), Float->Float (Real Taps) (Interp),
+ Complex->Complex (Complex Taps) (Decim), Complex->Complex (Complex Taps) (Interp),
+ Float->Complex (Complex Taps) (Decim), Float->Complex (Complex Taps) (Interp)]
+ option_attributes:
+ fcn: [band_pass, band_pass, band_pass, band_pass, complex_band_pass, complex_band_pass,
+ complex_band_pass, complex_band_pass]
+ input: [complex, complex, float, float, complex, complex, float, float]
+ output: [complex, complex, float, float, complex, complex, complex, complex]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+ hide: ${ ('all' if str(type).startswith('interp') else 'none') }
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if str(type).startswith('interp') else 'all') }
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: low_cutoff_freq
+ label: Low Cutoff Freq
+ dtype: real
+- id: high_cutoff_freq
+ label: High Cutoff Freq
+ dtype: real
+- id: width
+ label: Transition Width
+ dtype: real
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.$(type)(% if str(type).startswith('interp') then interp else decim#,\
+ \ firdes.type.fcn(:\n\t${gain}, ${samp_rate}, ${low_cutoff_freq}, ${high_cutoff_freq},\
+ \ ${width}, ${win}, ${beta}))"
+ callbacks:
+ - set_taps(firdes.${type.fcn}(${gain}, ${samp_rate}, ${low_cutoff_freq}, ${high_cutoff_freq},
+ ${width}, ${win}, ${beta}))
+
+documentation: |-
+ This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
+
+ Sample rate, cutoff frequency, and transition width are in Hertz.
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_band_pass_filter.xml b/gr-filter/grc/filter_band_pass_filter.xml
deleted file mode 100644
index c4c1852481..0000000000
--- a/gr-filter/grc/filter_band_pass_filter.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Band Pass Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>Band Pass Filter</name>
- <key>band_pass_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.$(type)(#if str($type).startswith('interp') then $interp else $decim#, firdes.$(type.fcn)(
- $gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta))</make>
- <callback>set_taps(firdes.$(type.fcn)($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta))</callback>
- <param>
- <name>FIR Type</name>
- <key>type</key>
- <type>enum</type>
- <!-- Real Band Pass Taps -->
- <option>
- <name>Complex->Complex (Real Taps) (Decim)</name>
- <key>fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>fcn:band_pass</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps) (Interp)</name>
- <key>interp_fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>fcn:band_pass</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps) (Decim)</name>
- <key>fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>fcn:band_pass</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps) (Interp)</name>
- <key>interp_fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>fcn:band_pass</opt>
- </option>
- <!-- Complex Band Pass Taps -->
- <option>
- <name>Complex->Complex (Complex Taps) (Decim)</name>
- <key>fir_filter_ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>fcn:complex_band_pass</opt>
- </option>
- <option>
- <name>Complex->Complex (Complex Taps) (Interp)</name>
- <key>interp_fir_filter_ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>fcn:complex_band_pass</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps) (Decim)</name>
- <key>fir_filter_fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>fcn:complex_band_pass</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps) (Interp)</name>
- <key>interp_fir_filter_fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>fcn:complex_band_pass</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'all' else 'none'#</hide>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'none' else 'all'#</hide>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Low Cutoff Freq</name>
- <key>low_cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>High Cutoff Freq</name>
- <key>high_cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Transition Width</name>
- <key>width</key>
- <type>real</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
-
-Sample rate, cutoff frequency, and transition width are in Hertz.
-
-The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_band_reject_filter.block.yml b/gr-filter/grc/filter_band_reject_filter.block.yml
new file mode 100644
index 0000000000..a030bf4e42
--- /dev/null
+++ b/gr-filter/grc/filter_band_reject_filter.block.yml
@@ -0,0 +1,80 @@
+id: band_reject_filter
+label: Band Reject Filter
+
+parameters:
+- id: type
+ label: FIR Type
+ dtype: enum
+ options: [fir_filter_ccf, interp_fir_filter_ccf, fir_filter_fff, interp_fir_filter_fff]
+ option_labels: [Complex->Complex (Decimating), Complex->Complex (Interpolating),
+ Float->Float (Decimating), Float->Float (Interpolating)]
+ option_attributes:
+ input: [complex, complex, float, float]
+ output: [complex, complex, float, float]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+ hide: ${ ('all' if str(type).startswith('interp') else 'none') }
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if str(type).startswith('interp') else 'all') }
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: low_cutoff_freq
+ label: Low Cutoff Freq
+ dtype: real
+- id: high_cutoff_freq
+ label: High Cutoff Freq
+ dtype: real
+- id: width
+ label: Transition Width
+ dtype: real
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.$(type)(% if str(type).startswith('interp') then interp else decim#,\
+ \ firdes.band_reject(:\n\t${gain}, ${samp_rate}, ${low_cutoff_freq}, ${high_cutoff_freq},\
+ \ ${width}, ${win}, ${beta}))"
+ callbacks:
+ - set_taps(firdes.band_reject(${gain}, ${samp_rate}, ${low_cutoff_freq}, ${high_cutoff_freq},
+ ${width}, ${win}, ${beta}))
+
+documentation: |-
+ This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
+
+ Sample rate, cutoff frequency, and transition width are in Hertz.
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_band_reject_filter.xml b/gr-filter/grc/filter_band_reject_filter.xml
deleted file mode 100644
index a506789627..0000000000
--- a/gr-filter/grc/filter_band_reject_filter.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Band Reject Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>Band Reject Filter</name>
- <key>band_reject_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.$(type)(#if str($type).startswith('interp') then $interp else $decim#, firdes.band_reject(
- $gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta))</make>
- <callback>set_taps(firdes.band_reject($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta))</callback>
- <param>
- <name>FIR Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Decimating)</name>
- <key>fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Complex->Complex (Interpolating)</name>
- <key>interp_fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float->Float (Decimating)</name>
- <key>fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- <option>
- <name>Float->Float (Interpolating)</name>
- <key>interp_fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'all' else 'none'#</hide>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'none' else 'all'#</hide>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Low Cutoff Freq</name>
- <key>low_cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>High Cutoff Freq</name>
- <key>high_cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Transition Width</name>
- <key>width</key>
- <type>real</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
-
-Sample rate, cutoff frequency, and transition width are in Hertz.
-
-The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_block_tree.xml b/gr-filter/grc/filter_block_tree.xml
deleted file mode 100644
index b296e1cc74..0000000000
--- a/gr-filter/grc/filter_block_tree.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2012,2015 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR Filter blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Filters</name>
- <!-- FIR filter tap generators -->
- <block>variable_low_pass_filter_taps</block>
- <block>variable_high_pass_filter_taps</block>
- <block>variable_band_pass_filter_taps</block>
- <block>variable_band_reject_filter_taps</block>
- <block>variable_rrc_filter_taps</block>
- <!-- FIR convenience filters -->
- <block>low_pass_filter</block>
- <block>high_pass_filter</block>
- <block>band_pass_filter</block>
- <block>band_reject_filter</block>
- <block>root_raised_cosine_filter</block>
- <!-- Regular Filter Blocks -->
- <block>dc_blocker_xx</block>
- <block>fft_filter_xxx</block>
- <block>fir_filter_xxx</block>
- <block>filterbank_vcvcf</block>
- <block>filter_delay_fc</block>
- <block>hilbert_fc</block>
- <block>iir_filter_xxx</block>
- <block>interp_fir_filter_xxx</block>
- <block>single_pole_iir_filter_xx</block>
- </cat>
- <cat>
- <name>Resamplers</name>
- <block>mmse_resampler_xx</block>
- <block>mmse_interpolator_xx</block>
- <block>pfb_arb_resampler_xxx</block>
- <block>rational_resampler_xxx</block>
- <block>rational_resampler_base_xxx</block>
- </cat>
- <cat>
- <name>Channelizers</name>
- <block>freq_xlating_fft_filter_ccc</block>
- <block>freq_xlating_fir_filter_xxx</block>
- <block>pfb_channelizer_ccf</block>
- <block>pfb_channelizer_hier_ccf</block>
- <block>pfb_decimator_ccf</block>
- <block>pfb_interpolator_ccf</block>
- <block>pfb_synthesizer_ccf</block>
- </cat>
-</cat>
diff --git a/gr-filter/grc/filter_dc_blocker_xx.block.yml b/gr-filter/grc/filter_dc_blocker_xx.block.yml
new file mode 100644
index 0000000000..2187624ff3
--- /dev/null
+++ b/gr-filter/grc/filter_dc_blocker_xx.block.yml
@@ -0,0 +1,35 @@
+id: dc_blocker_xx
+label: DC Blocker
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [cc, ff]
+ option_labels: [Complex->Complex, Float->Float]
+ option_attributes:
+ input: [complex, float]
+ output: [complex, float]
+ hide: part
+- id: length
+ label: Length
+ dtype: int
+ default: '32'
+- id: long_form
+ label: Long Form
+ dtype: bool
+ default: 'True'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.dc_blocker_${type}(${length}, ${long_form})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_dc_blocker_xx.xml b/gr-filter/grc/filter_dc_blocker_xx.xml
deleted file mode 100644
index 9bce5e980b..0000000000
--- a/gr-filter/grc/filter_dc_blocker_xx.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## DC Blocker
-###################################################
- -->
-<block>
- <name>DC Blocker</name>
- <key>dc_blocker_xx</key>
- <import>from gnuradio import filter</import>
- <make>filter.dc_blocker_$(type)($length, $long_form)</make>
- <!-- <callback>set_length($length)</callback> -->
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex</name>
- <key>cc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float->Float</name>
- <key>ff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Length</name>
- <key>length</key>
- <value>32</value>
- <type>int</type>
- </param>
- <param>
- <name>Long Form</name>
- <key>long_form</key>
- <value>True</value>
- <type>bool</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_fft_filter_xxx.block.yml b/gr-filter/grc/filter_fft_filter_xxx.block.yml
new file mode 100644
index 0000000000..bc53a02cd5
--- /dev/null
+++ b/gr-filter/grc/filter_fft_filter_xxx.block.yml
@@ -0,0 +1,52 @@
+id: fft_filter_xxx
+label: FFT Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fff]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Float (Real Taps)]
+ option_attributes:
+ input: [complex, complex, float]
+ output: [complex, complex, float]
+ taps: [complex_vector, float_vector, float_vector]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+- id: nthreads
+ label: Num. Threads
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |
+ filter.fft_filter_${type}(${decim}, ${taps}, ${nthreads})
+ self.${id}.declare_sample_delay(${samp_delay})
+ callbacks:
+ - set_taps(${taps})
+ - set_nthreads(${nthreads})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_fft_filter_xxx.xml b/gr-filter/grc/filter_fft_filter_xxx.xml
deleted file mode 100644
index f843af2024..0000000000
--- a/gr-filter/grc/filter_fft_filter_xxx.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##FFT Filter
-###################################################
- -->
-<block>
- <name>FFT Filter</name>
- <key>fft_filter_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.fft_filter_$(type)($decim, $taps, $nthreads)
-self.$(id).declare_sample_delay($samp_delay)
-</make>
- <callback>set_taps($taps)</callback>
- <callback>set_nthreads($nthreads)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:float_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:float_vector</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Num. Threads</name>
- <key>nthreads</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_filter_delay_fc.block.yml b/gr-filter/grc/filter_filter_delay_fc.block.yml
new file mode 100644
index 0000000000..5c220ccca6
--- /dev/null
+++ b/gr-filter/grc/filter_filter_delay_fc.block.yml
@@ -0,0 +1,26 @@
+id: filter_delay_fc
+label: Filter Delay
+
+parameters:
+- id: taps
+ label: Taps
+ dtype: real_vector
+
+inputs:
+- domain: stream
+ dtype: float
+- domain: stream
+ dtype: float
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: filter.filter_delay_fc(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_filter_delay_fc.xml b/gr-filter/grc/filter_filter_delay_fc.xml
deleted file mode 100644
index 7b77c2caf9..0000000000
--- a/gr-filter/grc/filter_filter_delay_fc.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Filter Delay
-###################################################
- -->
-<block>
- <name>Filter Delay</name>
- <key>filter_delay_fc</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.filter_delay_fc($taps)</make>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>real_vector</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <sink>
- <name>in</name>
- <type>float</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_filterbank_vcvcf.block.yml b/gr-filter/grc/filter_filterbank_vcvcf.block.yml
new file mode 100644
index 0000000000..7ced5e27cb
--- /dev/null
+++ b/gr-filter/grc/filter_filterbank_vcvcf.block.yml
@@ -0,0 +1,26 @@
+id: filterbank_vcvcf
+label: Generic Filterbank
+
+parameters:
+- id: taps
+ label: Taps(list of lists)
+ dtype: raw
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ len(taps) }
+
+outputs:
+- domain: stream
+ dtype: complex
+ vlen: ${ len(taps) }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.filterbank_vcvcf(${taps})
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_filterbank_vcvcf.xml b/gr-filter/grc/filter_filterbank_vcvcf.xml
deleted file mode 100644
index c8175358d1..0000000000
--- a/gr-filter/grc/filter_filterbank_vcvcf.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Generic Filterbank
-###################################################
- -->
-<block>
- <name>Generic Filterbank</name>
- <key>filterbank_vcvcf</key>
- <import>from gnuradio import filter</import>
- <make>filter.filterbank_vcvcf($taps)</make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Taps(list of lists)</name>
- <key>taps</key>
- <value></value>
- <type>raw</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <vlen>len($taps)</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <vlen>len($taps)</vlen>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_fir_filter_xxx.block.yml b/gr-filter/grc/filter_fir_filter_xxx.block.yml
new file mode 100644
index 0000000000..4d2f16b608
--- /dev/null
+++ b/gr-filter/grc/filter_fir_filter_xxx.block.yml
@@ -0,0 +1,49 @@
+id: fir_filter_xxx
+label: Decimating FIR Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fff, fsf, scc]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Float (Real Taps), Float->Short (Real
+ Taps), Short->Complex (Complex Taps)]
+ option_attributes:
+ input: [complex, complex, float, float, float, short]
+ output: [complex, complex, complex, float, short, complex]
+ taps: [complex_vector, real_vector, complex_vector, real_vector, real_vector,
+ complex_vector]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |
+ filter.fir_filter_${type}(${decim}, ${taps})
+ self.${id}.declare_sample_delay(${samp_delay})
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_fir_filter_xxx.xml b/gr-filter/grc/filter_fir_filter_xxx.xml
deleted file mode 100644
index edfd4b30c8..0000000000
--- a/gr-filter/grc/filter_fir_filter_xxx.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Decimating FIR Filter
-###################################################
- -->
-<block>
- <name>Decimating FIR Filter</name>
- <key>fir_filter_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.fir_filter_$(type)($decim, $taps)
-self.$(id).declare_sample_delay($samp_delay)
-</make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Short (Real Taps)</name>
- <key>fsf</key>
- <opt>input:float</opt>
- <opt>output:short</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Complex Taps)</name>
- <key>scc</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.block.yml b/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.block.yml
new file mode 100644
index 0000000000..734f1aa909
--- /dev/null
+++ b/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.block.yml
@@ -0,0 +1,51 @@
+id: freq_xlating_fft_filter_ccc
+label: Frequency Xlating FFT Filter
+
+parameters:
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: complex_vector
+- id: center_freq
+ label: Center Frequency
+ dtype: real
+ default: '0'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+- id: nthreads
+ label: Num. Threads
+ dtype: int
+ default: '1'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |-
+ filter.freq_xlating_fft_filter_ccc(${decim}, ${taps}, ${center_freq}, ${samp_rate})
+ self.${id}.set_nthreads(${nthreads})
+ self.${id}.declare_sample_delay(${samp_delay})
+ callbacks:
+ - set_taps(${taps})
+ - set_center_freq(${center_freq})
+ - set_nthreads(${nthreads})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.xml b/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.xml
deleted file mode 100644
index ec27a4ff49..0000000000
--- a/gr-filter/grc/filter_freq_xlating_fft_filter_ccc.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Frequency Xlating FFT Filter
-###################################################
- -->
-<block>
- <name>Frequency Xlating FFT Filter</name>
- <key>freq_xlating_fft_filter_ccc</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.freq_xlating_fft_filter_ccc($decim, $taps, $center_freq, $samp_rate)
-self.$(id).set_nthreads($nthreads)
-self.$(id).declare_sample_delay($samp_delay)</make>
- <callback>set_taps($taps)</callback>
- <callback>set_center_freq($center_freq)</callback>
- <callback>set_nthreads($nthreads)</callback>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>complex_vector</type>
- </param>
- <param>
- <name>Center Frequency</name>
- <key>center_freq</key>
- <value>0</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Num. Threads</name>
- <key>nthreads</key>
- <value>1</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.block.yml b/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.block.yml
new file mode 100644
index 0000000000..aece398e29
--- /dev/null
+++ b/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.block.yml
@@ -0,0 +1,55 @@
+id: freq_xlating_fir_filter_xxx
+label: Frequency Xlating FIR Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fcf, scc, scf]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Complex (Real Taps), Short->Complex
+ (Complex Taps), Short->Complex (Real Taps)]
+ option_attributes:
+ input: [complex, complex, float, float, short, short]
+ output: [complex, complex, complex, complex, complex, complex]
+ taps: [complex_vector, real_vector, complex_vector, real_vector, complex_vector,
+ real_vector]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: center_freq
+ label: Center Frequency
+ dtype: real
+ default: '0'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+- domain: message
+ id: freq
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: filter.freq_xlating_fir_filter_${type}(${decim}, ${taps}, ${center_freq},
+ ${samp_rate})
+ callbacks:
+ - set_taps(${taps})
+ - set_center_freq(${center_freq})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.xml b/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.xml
deleted file mode 100644
index 8c8e100e60..0000000000
--- a/gr-filter/grc/filter_freq_xlating_fir_filter_xxx.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Frequency Xlating Filter
-###################################################
- -->
-<block>
- <name>Frequency Xlating FIR Filter</name>
- <key>freq_xlating_fir_filter_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.freq_xlating_fir_filter_$(type)($decim, $taps, $center_freq, $samp_rate)</make>
- <callback>set_taps($taps)</callback>
- <callback>set_center_freq($center_freq)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Real Taps)</name>
- <key>fcf</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Complex Taps)</name>
- <key>scc</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Real Taps)</name>
- <key>scf</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Center Frequency</name>
- <key>center_freq</key>
- <value>0</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
-
- <sink>
- <name>freq</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_high_pass_filter.block.yml b/gr-filter/grc/filter_high_pass_filter.block.yml
new file mode 100644
index 0000000000..26947d1823
--- /dev/null
+++ b/gr-filter/grc/filter_high_pass_filter.block.yml
@@ -0,0 +1,77 @@
+id: high_pass_filter
+label: High Pass Filter
+
+parameters:
+- id: type
+ label: FIR Type
+ dtype: enum
+ options: [fir_filter_ccf, interp_fir_filter_ccf, fir_filter_fff, interp_fir_filter_fff]
+ option_labels: [Complex->Complex (Decimating), Complex->Complex (Interpolating),
+ Float->Float (Decimating), Float->Float (Interpolating)]
+ option_attributes:
+ input: [complex, complex, float, float]
+ output: [complex, complex, float, float]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+ hide: ${ ('all' if str(type).startswith('interp') else 'none') }
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if str(type).startswith('interp') else 'all') }
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: cutoff_freq
+ label: Cutoff Freq
+ dtype: real
+- id: width
+ label: Transition Width
+ dtype: real
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.$(type)(% if str(type).startswith('interp') then interp else decim#,\
+ \ firdes.high_pass(:\n\t${gain}, ${samp_rate}, ${cutoff_freq}, ${width}, ${win},\
+ \ ${beta}))"
+ callbacks:
+ - set_taps(firdes.high_pass(${gain}, ${samp_rate}, ${cutoff_freq}, ${width}, ${win},
+ ${beta}))
+
+documentation: |-
+ This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
+
+ Sample rate, cutoff frequency, and transition width are in Hertz.
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_high_pass_filter.xml b/gr-filter/grc/filter_high_pass_filter.xml
deleted file mode 100644
index 6b041145d5..0000000000
--- a/gr-filter/grc/filter_high_pass_filter.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##High Pass Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>High Pass Filter</name>
- <key>high_pass_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.$(type)(#if str($type).startswith('interp') then $interp else $decim#, firdes.high_pass(
- $gain, $samp_rate, $cutoff_freq, $width, $win, $beta))</make>
- <callback>set_taps(firdes.high_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta))</callback>
- <param>
- <name>FIR Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Decimating)</name>
- <key>fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Complex->Complex (Interpolating)</name>
- <key>interp_fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float->Float (Decimating)</name>
- <key>fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- <option>
- <name>Float->Float (Interpolating)</name>
- <key>interp_fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'all' else 'none'#</hide>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'none' else 'all'#</hide>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Cutoff Freq</name>
- <key>cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Transition Width</name>
- <key>width</key>
- <type>real</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
-
-Sample rate, cutoff frequency, and transition width are in Hertz.
-
-The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_hilbert_fc.block.yml b/gr-filter/grc/filter_hilbert_fc.block.yml
new file mode 100644
index 0000000000..0d835c388d
--- /dev/null
+++ b/gr-filter/grc/filter_hilbert_fc.block.yml
@@ -0,0 +1,35 @@
+id: hilbert_fc
+label: Hilbert
+
+parameters:
+- id: num_taps
+ label: Num Taps
+ dtype: int
+ default: '65'
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_BLACKMAN_hARRIS,
+ firdes.WIN_RECTANGULAR, firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Blackman-harris, Rectangular, Kaiser]
+ hide: part
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.hilbert_fc(${num_taps}, ${win}, ${beta})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_hilbert_fc.xml b/gr-filter/grc/filter_hilbert_fc.xml
deleted file mode 100644
index ddb7c334c5..0000000000
--- a/gr-filter/grc/filter_hilbert_fc.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Hilbert
-###################################################
- -->
-<block>
- <name>Hilbert</name>
- <key>hilbert_fc</key>
- <import>from gnuradio import filter</import>
- <make>filter.hilbert_fc($num_taps, $win, $beta)</make>
- <param>
- <name>Num Taps</name>
- <key>num_taps</key>
- <value>65</value>
- <type>int</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <hide>part</hide>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Blackman-harris</name>
- <key>firdes.WIN_BLACKMAN_hARRIS</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_iir_filter_xxx.block.yml b/gr-filter/grc/filter_iir_filter_xxx.block.yml
new file mode 100644
index 0000000000..4dfef2b0d6
--- /dev/null
+++ b/gr-filter/grc/filter_iir_filter_xxx.block.yml
@@ -0,0 +1,44 @@
+id: iir_filter_xxx
+label: IIR Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ffd, ccf, ccd, ccc, ccz]
+ option_labels: [Float->Float (Double Taps), Complex->Complex (Float Taps), Complex->Complex
+ (Double Taps), Complex->Complex (Complex Taps), Complex->Complex (Complex
+ Double Taps)]
+ option_attributes:
+ input: [float, complex, complex, complex, complex]
+ output: [float, complex, complex, complex, complex]
+ taps: [real_vector, real_vector, real_vector, complex_vector, complex_vector]
+ hide: part
+- id: fftaps
+ label: Feed-forward Taps
+ dtype: ${ type.taps }
+- id: fbtaps
+ label: Feedback Taps
+ dtype: ${ type.taps }
+- id: oldstyle
+ label: Old Style of Taps
+ dtype: enum
+ default: 'True'
+ options: ['True', 'False']
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.iir_filter_${type}(${fftaps}, ${fbtaps}, ${oldstyle})
+ callbacks:
+ - set_taps(${fftaps}, ${fbtaps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_iir_filter_xxx.xml b/gr-filter/grc/filter_iir_filter_xxx.xml
deleted file mode 100644
index cd41d47caf..0000000000
--- a/gr-filter/grc/filter_iir_filter_xxx.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##IIR Filter
-###################################################
- -->
-<block>
- <name>IIR Filter</name>
- <key>iir_filter_xxx</key>
- <import>from gnuradio import filter</import>
- <make>filter.iir_filter_$(type)($fftaps, $fbtaps, $oldstyle)</make>
- <callback>set_taps($fftaps, $fbtaps)</callback>
-
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Float->Float (Double Taps)</name>
- <key>ffd</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Float Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Double Taps)</name>
- <key>ccd</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Complex Double Taps)</name>
- <key>ccz</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
-
- <param>
- <name>Feed-forward Taps</name>
- <key>fftaps</key>
- <type>$type.taps</type>
- </param>
-
- <param>
- <name>Feedback Taps</name>
- <key>fbtaps</key>
- <type>$type.taps</type>
- </param>
-
- <param>
- <name>Old Style of Taps</name>
- <key>oldstyle</key>
- <value>True</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
-
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-
-</block>
diff --git a/gr-filter/grc/filter_interp_fir_filter_xxx.block.yml b/gr-filter/grc/filter_interp_fir_filter_xxx.block.yml
new file mode 100644
index 0000000000..b5edfa1532
--- /dev/null
+++ b/gr-filter/grc/filter_interp_fir_filter_xxx.block.yml
@@ -0,0 +1,49 @@
+id: interp_fir_filter_xxx
+label: Interpolating FIR Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fff, fsf, scc]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Float (Real Taps), Float->Short (Real
+ Taps), Short->Complex (Complex Taps)]
+ option_attributes:
+ input: [complex, complex, float, float, float, short]
+ output: [complex, complex, complex, float, short, complex]
+ taps: [complex_vector, real_vector, complex_vector, real_vector, real_vector,
+ complex_vector]
+ hide: part
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |
+ filter.interp_fir_filter_${type}(${interp}, ${taps})
+ self.${id}.declare_sample_delay(${samp_delay})
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_interp_fir_filter_xxx.xml b/gr-filter/grc/filter_interp_fir_filter_xxx.xml
deleted file mode 100644
index 0b82330f8c..0000000000
--- a/gr-filter/grc/filter_interp_fir_filter_xxx.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Interpolating FIR Filter
-###################################################
- -->
-<block>
- <name>Interpolating FIR Filter</name>
- <key>interp_fir_filter_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.interp_fir_filter_$(type)($interp, $taps)
-self.$(id).declare_sample_delay($samp_delay)
-</make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Short (Real Taps)</name>
- <key>fsf</key>
- <opt>input:float</opt>
- <opt>output:short</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Complex Taps)</name>
- <key>scc</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_low_pass_filter.block.yml b/gr-filter/grc/filter_low_pass_filter.block.yml
new file mode 100644
index 0000000000..f2007b5f99
--- /dev/null
+++ b/gr-filter/grc/filter_low_pass_filter.block.yml
@@ -0,0 +1,77 @@
+id: low_pass_filter
+label: Low Pass Filter
+
+parameters:
+- id: type
+ label: FIR Type
+ dtype: enum
+ options: [fir_filter_ccf, interp_fir_filter_ccf, fir_filter_fff, interp_fir_filter_fff]
+ option_labels: [Complex->Complex (Decimating), Complex->Complex (Interpolating),
+ Float->Float (Decimating), Float->Float (Interpolating)]
+ option_attributes:
+ input: [complex, complex, float, float]
+ output: [complex, complex, float, float]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+ hide: ${ ('all' if str(type).startswith('interp') else 'none') }
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if str(type).startswith('interp') else 'all') }
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: cutoff_freq
+ label: Cutoff Freq
+ dtype: real
+- id: width
+ label: Transition Width
+ dtype: real
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.$(type)(% if str(type).startswith('interp') then interp else decim#,\
+ \ firdes.low_pass(:\n\t${gain}, ${samp_rate}, ${cutoff_freq}, ${width}, ${win},\
+ \ ${beta}))"
+ callbacks:
+ - set_taps(firdes.low_pass(${gain}, ${samp_rate}, ${cutoff_freq}, ${width}, ${win},
+ ${beta}))
+
+documentation: |-
+ This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
+
+ Sample rate, cutoff frequency, and transition width are in Hertz.
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_low_pass_filter.xml b/gr-filter/grc/filter_low_pass_filter.xml
deleted file mode 100644
index 66d15bb592..0000000000
--- a/gr-filter/grc/filter_low_pass_filter.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Low Pass Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>Low Pass Filter</name>
- <key>low_pass_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.$(type)(#if str($type).startswith('interp') then $interp else $decim#, firdes.low_pass(
- $gain, $samp_rate, $cutoff_freq, $width, $win, $beta))</make>
- <callback>set_taps(firdes.low_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta))</callback>
- <param>
- <name>FIR Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Decimating)</name>
- <key>fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Complex->Complex (Interpolating)</name>
- <key>interp_fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float->Float (Decimating)</name>
- <key>fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- <option>
- <name>Float->Float (Interpolating)</name>
- <key>interp_fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'all' else 'none'#</hide>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'none' else 'all'#</hide>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Cutoff Freq</name>
- <key>cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Transition Width</name>
- <key>width</key>
- <type>real</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
-
-Sample rate, cutoff frequency, and transition width are in Hertz.
-
-The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_low_pass_xlating_filter.block.yml b/gr-filter/grc/filter_low_pass_xlating_filter.block.yml
new file mode 100644
index 0000000000..22cb100d06
--- /dev/null
+++ b/gr-filter/grc/filter_low_pass_xlating_filter.block.yml
@@ -0,0 +1,79 @@
+id: xlating_low_pass_filter
+label: Xlating Low Pass Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fcf, scc, scf]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Complex (Real Taps), Short->Complex
+ (Complex Taps), Short->Complex (Real Taps)]
+ option_attributes:
+ input: [complex, complex, float, float, short, short]
+ output: [complex, complex, complex, complex, complex, complex]
+ taps: [complex_vector, real_vector, complex_vector, real_vector, complex_vector,
+ real_vector]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: center_freq
+ label: Center Frequency
+ dtype: real
+ default: '0'
+- id: cutoff_freq
+ label: Cutoff Freq
+ dtype: real
+- id: width
+ label: Transition Width
+ dtype: real
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: real
+ default: '6.76'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |-
+ filter.freq_xlating_fir_filter_${type}(${decim}, firdes.low_pass(
+ ${gain}, 2*${samp_rate}, ${cutoff_freq}, ${width}, ${win}, ${beta}), ${center_freq}, ${samp_rate})
+ callbacks:
+ - set_taps(firdes.low_pass(${gain}, 2*${samp_rate}, ${cutoff_freq}, ${width},
+ ${win}, ${beta}))
+ - set_center_freq(${center_freq})
+
+documentation: |-
+ This filter is a convenience wrapper for an xlating fir filter and a firdes taps generating function.
+
+ Sample rate, cutoff frequency, and transition width are in Hertz.
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_low_pass_xlating_filter.xml b/gr-filter/grc/filter_low_pass_xlating_filter.xml
deleted file mode 100644
index 65d5e5bff6..0000000000
--- a/gr-filter/grc/filter_low_pass_xlating_filter.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Xlating Low Pass Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>Xlating Low Pass Filter</name>
- <key>xlating_low_pass_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.freq_xlating_fir_filter_$(type)($decim, firdes.low_pass(
- $gain, 2*$samp_rate, $cutoff_freq, $width, $win, $beta), $center_freq, $samp_rate)</make>
- <callback>set_taps(firdes.low_pass($gain, 2*$samp_rate, $cutoff_freq, $width, $win, $beta))</callback>
- <callback>set_center_freq($center_freq)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Real Taps)</name>
- <key>fcf</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Complex Taps)</name>
- <key>scc</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Real Taps)</name>
- <key>scf</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Center Frequency</name>
- <key>center_freq</key>
- <value>0</value>
- <type>real</type>
- </param>
- <param>
- <name>Cutoff Freq</name>
- <key>cutoff_freq</key>
- <type>real</type>
- </param>
- <param>
- <name>Transition Width</name>
- <key>width</key>
- <type>real</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an xlating fir filter and a firdes taps generating function.
-
-Sample rate, cutoff frequency, and transition width are in Hertz.
-
-The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_mmse_interpolator_xx.block.yml b/gr-filter/grc/filter_mmse_interpolator_xx.block.yml
new file mode 100644
index 0000000000..2eb0a3aa46
--- /dev/null
+++ b/gr-filter/grc/filter_mmse_interpolator_xx.block.yml
@@ -0,0 +1,33 @@
+id: mmse_interpolator_xx
+label: Fractional Interpolator
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: phase_shift
+ label: Phase Shift
+ dtype: real
+- id: interp_ratio
+ label: Interpolation Ratio
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.mmse_interpolator_${type.fcn}(${phase_shift}, ${interp_ratio})
+ callbacks:
+ - set_interp_ratio(${interp_ratio})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_mmse_interpolator_xx.xml b/gr-filter/grc/filter_mmse_interpolator_xx.xml
deleted file mode 100644
index 6677cf6f02..0000000000
--- a/gr-filter/grc/filter_mmse_interpolator_xx.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Fractional MMSE Interpolator
-###################################################
- -->
-<block>
- <name>Fractional Interpolator</name>
- <key>mmse_interpolator_xx</key>
- <import>from gnuradio import filter</import>
- <make>filter.mmse_interpolator_$(type.fcn)($phase_shift, $interp_ratio)</make>
- <callback>set_interp_ratio($interp_ratio)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Phase Shift</name>
- <key>phase_shift</key>
- <type>real</type>
- </param>
- <param>
- <name>Interpolation Ratio</name>
- <key>interp_ratio</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_mmse_resampler_xx.block.yml b/gr-filter/grc/filter_mmse_resampler_xx.block.yml
new file mode 100644
index 0000000000..d2ea3bdfe7
--- /dev/null
+++ b/gr-filter/grc/filter_mmse_resampler_xx.block.yml
@@ -0,0 +1,40 @@
+id: mmse_resampler_xx
+label: Fractional Resampler
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: phase_shift
+ label: Phase Shift
+ dtype: real
+- id: resamp_ratio
+ label: Resampling Ratio
+ dtype: real
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+- label: rate
+ domain: stream
+ dtype: float
+ optional: true
+- domain: message
+ id: msg_in
+ optional: true
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.mmse_resampler_${type.fcn}(${phase_shift}, ${resamp_ratio})
+ callbacks:
+ - set_resamp_ratio(${resamp_ratio})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_mmse_resampler_xx.xml b/gr-filter/grc/filter_mmse_resampler_xx.xml
deleted file mode 100644
index 5d5f9c1786..0000000000
--- a/gr-filter/grc/filter_mmse_resampler_xx.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Fractional MMSE Resampler
-###################################################
- -->
-<block>
- <name>Fractional Resampler</name>
- <key>mmse_resampler_xx</key>
- <import>from gnuradio import filter</import>
- <make>filter.mmse_resampler_$(type.fcn)($phase_shift, $resamp_ratio)</make>
- <callback>set_resamp_ratio($resamp_ratio)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Phase Shift</name>
- <key>phase_shift</key>
- <type>real</type>
- </param>
- <param>
- <name>Resampling Ratio</name>
- <key>resamp_ratio</key>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- </sink>
- <sink>
- <name>rate</name>
- <type>float</type>
- <optional>1</optional>
- </sink>
- <sink>
- <name>msg_in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_arb_resampler.block.yml b/gr-filter/grc/filter_pfb_arb_resampler.block.yml
new file mode 100644
index 0000000000..f724aa099e
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_arb_resampler.block.yml
@@ -0,0 +1,55 @@
+id: pfb_arb_resampler_xxx
+label: Polyphase Arbitrary Resampler
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccf, fff, ccc]
+ option_labels: [Complex->Complex (Real Taps), Float->Float (Real Taps), Complex->Complex
+ (Complex Taps)]
+ option_attributes:
+ input: [complex, float, complex]
+ output: [complex, float, complex]
+ taps: [real_vector, real_vector, complex_vector]
+ hide: part
+- id: rrate
+ label: Resampling Rate
+ dtype: real
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: nfilts
+ label: Number of Filters
+ dtype: int
+ default: '32'
+- id: atten
+ label: Stop-band Attenuation
+ dtype: real
+ default: '100'
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio.filter import pfb
+ from gnuradio.filter import firdes
+ make: "pfb.arb_resampler_${type}(\n\t ${rrate},\n% if taps:\n taps=${taps},\n\
+ % else:\n taps=None,\n% endif\n\t flt_size=${nfilts})\nself.${id}.declare_sample_delay(${samp_delay})\n\
+ \t"
+ callbacks:
+ - set_taps(${taps})
+ - set_rate(${rrate})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_arb_resampler.xml b/gr-filter/grc/filter_pfb_arb_resampler.xml
deleted file mode 100644
index b528adc00c..0000000000
--- a/gr-filter/grc/filter_pfb_arb_resampler.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Polyphase Arbitrary Resampler
-###################################################
- -->
-<block>
- <name>Polyphase Arbitrary Resampler</name>
- <key>pfb_arb_resampler_xxx</key>
- <import>from gnuradio.filter import pfb</import>
- <import>from gnuradio.filter import firdes</import>
- <make>pfb.arb_resampler_$(type)(
- $rrate,
-#if $taps()
- taps=$taps,
-#else
- taps=None,
-#end if
- flt_size=$nfilts)
-self.$(id).declare_sample_delay($samp_delay)
- </make>
- <callback>set_taps($taps)</callback>
- <callback>set_rate($rrate)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
- <param>
- <name>Resampling Rate</name>
- <key>rrate</key>
- <type>real</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Number of Filters</name>
- <key>nfilts</key>
- <value>32</value>
- <type>int</type>
- </param>
- <param>
- <name>Stop-band Attenuation</name>
- <key>atten</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_channelizer.block.yml b/gr-filter/grc/filter_pfb_channelizer.block.yml
new file mode 100644
index 0000000000..225a17451f
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_channelizer.block.yml
@@ -0,0 +1,56 @@
+id: pfb_channelizer_ccf
+label: Polyphase Channelizer
+
+parameters:
+- id: nchans
+ label: Channels
+ dtype: int
+ default: '1'
+ hide: part
+- id: taps
+ label: Taps
+ dtype: real_vector
+- id: osr
+ label: Over Sample Ratio
+ dtype: real
+ default: '1.0'
+- id: atten
+ label: Attenuation
+ dtype: real
+ default: '100'
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+- id: ch_map
+ label: Channel Map
+ dtype: int_vector
+ default: '[]'
+- id: bus_conns
+ label: Bus Connections
+ dtype: raw
+ default: '[[0,],]'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+ multiplicity: ${ nchans }
+
+templates:
+ imports: |-
+ from gnuradio.filter import pfb
+ from gnuradio.filter import firdes
+ make: "pfb.channelizer_ccf(\n\t ${nchans},\n\t ${taps},\n\t ${osr},\n\t ${atten})\n\
+ self.${id}.set_channel_map(${ch_map})\nself.${id}.declare_sample_delay(${samp_delay})\n\
+ \t"
+ callbacks:
+ - set_taps(${taps})
+ - set_channel_map(${ch_map})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_channelizer.xml b/gr-filter/grc/filter_pfb_channelizer.xml
deleted file mode 100644
index 446acf0591..0000000000
--- a/gr-filter/grc/filter_pfb_channelizer.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Polyphase Channelizer
-###################################################
- -->
-<block>
- <name>Polyphase Channelizer</name>
- <key>pfb_channelizer_ccf</key>
- <import>from gnuradio.filter import pfb</import>
- <import>from gnuradio.filter import firdes</import>
- <make>pfb.channelizer_ccf(
- $nchans,
- $taps,
- $osr,
- $atten)
-self.$(id).set_channel_map($ch_map)
-self.$(id).declare_sample_delay($samp_delay)
- </make>
- <callback>set_taps($taps)</callback>
- <callback>set_channel_map($ch_map)</callback>
-
- <param>
- <name>Channels</name>
- <key>nchans</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value></value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Over Sample Ratio</name>
- <key>osr</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Attenuation</name>
- <key>atten</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Channel Map</name>
- <key>ch_map</key>
- <value>[]</value>
- <type>int_vector</type>
- </param>
- <param>
- <name>Bus Connections</name>
- <key>bus_conns</key>
- <value>[[0,],]</value>
- <type>raw</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <nports>$nchans</nports>
- </source>
- <bus_structure_source>$bus_conns</bus_structure_source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_channelizer_hier.block.yml b/gr-filter/grc/filter_pfb_channelizer_hier.block.yml
new file mode 100644
index 0000000000..764f88f65d
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_channelizer_hier.block.yml
@@ -0,0 +1,55 @@
+id: pfb_channelizer_hier_ccf
+label: Hierarchical Polyphase Channelizer
+
+parameters:
+- id: nchans
+ label: Number of Channels
+ dtype: int
+ default: '3'
+ hide: part
+- id: n_filterbanks
+ label: Number of Filterbanks
+ dtype: int
+ default: '4'
+- id: taps
+ label: Taps
+ dtype: raw
+ default: None
+- id: outchans
+ label: Output Channels
+ dtype: raw
+ default: None
+- id: atten
+ label: Attenuation
+ dtype: real
+ default: '100'
+- id: bw
+ label: Fraction of Channel to Keep
+ dtype: real
+ default: '1.0'
+- id: tb
+ label: Transition Band (as a fraction of channel width)
+ dtype: real
+ default: '0.2'
+- id: ripple
+ label: Passband Ripple in dB
+ dtype: real
+ default: '0.1'
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+ multiplicity: ${ nchans }
+
+templates:
+ imports: from gnuradio.filter import pfb
+ make: "pfb.channelizer_hier_ccf(\n\t${nchans},\n\t${n_filterbanks},\n\t${taps},\n\
+ \t${outchans},\n ${atten},\n ${bw},\n ${tb},\n ${ripple}\n )\n\t"
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_channelizer_hier.xml b/gr-filter/grc/filter_pfb_channelizer_hier.xml
deleted file mode 100644
index 356187d90c..0000000000
--- a/gr-filter/grc/filter_pfb_channelizer_hier.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Hierarchical Polyphase Channelizer
-###################################################
- -->
-<block>
- <name>Hierarchical Polyphase Channelizer</name>
- <key>pfb_channelizer_hier_ccf</key>
- <import>from gnuradio.filter import pfb</import>
- <make>pfb.channelizer_hier_ccf(
- $nchans,
- $n_filterbanks,
- $taps,
- $outchans,
- $atten,
- $bw,
- $tb,
- $ripple
- )
- </make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Number of Channels</name>
- <key>nchans</key>
- <value>3</value>
- <type>int</type>
- </param>
- <param>
- <name>Number of Filterbanks</name>
- <key>n_filterbanks</key>
- <value>4</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value>None</value>
- <type>raw</type>
- </param>
- <param>
- <name>Output Channels</name>
- <key>outchans</key>
- <value>None</value>
- <type>raw</type>
- </param>
- <param>
- <name>Attenuation</name>
- <key>atten</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Fraction of Channel to Keep</name>
- <key>bw</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Transition Band (as a fraction of channel width)</name>
- <key>tb</key>
- <value>0.2</value>
- <type>real</type>
- </param>
- <param>
- <name>Passband Ripple in dB</name>
- <key>ripple</key>
- <value>0.1</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- <nports>$nchans</nports>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_decimator.block.yml b/gr-filter/grc/filter_pfb_decimator.block.yml
new file mode 100644
index 0000000000..2d3653ee03
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_decimator.block.yml
@@ -0,0 +1,56 @@
+id: pfb_decimator_ccf
+label: Polyphase Decimator
+
+parameters:
+- id: decim
+ label: Decimation
+ dtype: int
+- id: taps
+ label: Taps
+ dtype: real_vector
+- id: channel
+ label: Output Channel
+ dtype: int
+ default: '0'
+- id: atten
+ label: Stop-band Attenuation
+ dtype: real
+ default: '100'
+- id: fft_rot
+ label: Use FFT Rotator
+ dtype: raw
+ default: 'True'
+ options: ['True', 'False']
+ hide: part
+- id: fft_filts
+ label: Use FFT Filters
+ dtype: raw
+ default: 'True'
+ options: ['True', 'False']
+ hide: part
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio.filter import pfb
+ from gnuradio.filter import firdes
+ make: "pfb.decimator_ccf(\n\t ${decim},\n\t ${taps},\n\t ${channel},\n\t ${atten},\n\
+ \ ${fft_rot},\n ${fft_filts})\nself.${id}.declare_sample_delay(${samp_delay})\n\
+ \t"
+ callbacks:
+ - set_taps(${taps})
+ - set_channel(int(${channel}))
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_decimator.xml b/gr-filter/grc/filter_pfb_decimator.xml
deleted file mode 100644
index 2ad9e050c0..0000000000
--- a/gr-filter/grc/filter_pfb_decimator.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Polyphase Decimator
-###################################################
- -->
-<block>
- <name>Polyphase Decimator</name>
- <key>pfb_decimator_ccf</key>
- <import>from gnuradio.filter import pfb</import>
- <import>from gnuradio.filter import firdes</import>
- <make>pfb.decimator_ccf(
- $decim,
- $taps,
- $channel,
- $atten,
- $fft_rot,
- $fft_filts)
-self.$(id).declare_sample_delay($samp_delay)
- </make>
- <callback>set_taps($taps)</callback>
- <callback>set_channel(int($channel))</callback>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value></value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Output Channel</name>
- <key>channel</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Stop-band Attenuation</name>
- <key>atten</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Use FFT Rotator</name>
- <key>fft_rot</key>
- <value>True</value>
- <type>raw</type>
- <hide>part</hide>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Use FFT Filters</name>
- <key>fft_filts</key>
- <value>True</value>
- <type>raw</type>
- <hide>part</hide>
- <option>
- <name>True</name>
- <key>True</key>
- </option>
- <option>
- <name>False</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_interpolator.block.yml b/gr-filter/grc/filter_pfb_interpolator.block.yml
new file mode 100644
index 0000000000..9da3c07a15
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_interpolator.block.yml
@@ -0,0 +1,38 @@
+id: pfb_interpolator_ccf
+label: Polyphase Interpolator
+
+parameters:
+- id: interp
+ label: Interpolation
+ dtype: int
+- id: taps
+ label: Taps
+ dtype: real_vector
+- id: atten
+ label: Attenuation
+ dtype: real
+ default: '100'
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio.filter import pfb
+ from gnuradio.filter import firdes
+ make: "pfb.interpolator_ccf(\n\t ${interp},\n\t ${taps},\n\t ${atten})\nself.${id}.declare_sample_delay(${samp_delay})\n\
+ \t"
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_interpolator.xml b/gr-filter/grc/filter_pfb_interpolator.xml
deleted file mode 100644
index 0ad5909c12..0000000000
--- a/gr-filter/grc/filter_pfb_interpolator.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Polyphase Interpolator
-###################################################
- -->
-<block>
- <name>Polyphase Interpolator</name>
- <key>pfb_interpolator_ccf</key>
- <import>from gnuradio.filter import pfb</import>
- <import>from gnuradio.filter import firdes</import>
- <make>pfb.interpolator_ccf(
- $interp,
- $taps,
- $atten)
-self.$(id).declare_sample_delay($samp_delay)
- </make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value></value>
- <type>real_vector</type>
- </param>
- <param>
- <name>Attenuation</name>
- <key>atten</key>
- <value>100</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_pfb_synthesizer.block.yml b/gr-filter/grc/filter_pfb_synthesizer.block.yml
new file mode 100644
index 0000000000..00da00e4e5
--- /dev/null
+++ b/gr-filter/grc/filter_pfb_synthesizer.block.yml
@@ -0,0 +1,55 @@
+id: pfb_synthesizer_ccf
+label: Polyphase Synthesizer
+
+parameters:
+- id: numchans
+ label: Channels
+ dtype: int
+ default: '2'
+- id: connections
+ label: Connections
+ dtype: int
+ default: '2'
+ hide: part
+- id: taps
+ label: Taps
+ dtype: real_vector
+- id: twox
+ label: 2x Sample Rate
+ dtype: bool
+ default: 'False'
+- id: samp_delay
+ label: Sample Delay
+ dtype: int
+ default: '0'
+ hide: part
+- id: ch_map
+ label: Channel Map
+ dtype: int_vector
+ default: '[]'
+- id: bus_conns
+ label: Bus Connections
+ dtype: raw
+ default: '[[0,],]'
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: complex
+ multiplicity: ${ connections }
+
+outputs:
+- domain: stream
+ dtype: complex
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.pfb_synthesizer_ccf(\n\t ${numchans}, ${taps}, ${twox})\nself.${id}.set_channel_map(${ch_map})\n\
+ self.${id}.declare_sample_delay(${samp_delay})\n\t"
+ callbacks:
+ - set_taps(${taps})
+ - set_channel_map(${ch_map})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_pfb_synthesizer.xml b/gr-filter/grc/filter_pfb_synthesizer.xml
deleted file mode 100644
index 8cbe19528d..0000000000
--- a/gr-filter/grc/filter_pfb_synthesizer.xml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Polyphase Synthesis Filterbank
-###################################################
- -->
-<block>
- <name>Polyphase Synthesizer</name>
- <key>pfb_synthesizer_ccf</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.pfb_synthesizer_ccf(
- $numchans, $taps, $twox)
-self.$(id).set_channel_map($ch_map)
-self.$(id).declare_sample_delay($samp_delay)
- </make>
- <callback>set_taps($taps)</callback>
- <callback>set_channel_map($ch_map)</callback>
-
- <param>
- <name>Channels</name>
- <key>numchans</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Connections</name>
- <key>connections</key>
- <value>2</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>real_vector</type>
- </param>
- <param>
- <name>2x Sample Rate</name>
- <key>twox</key>
- <value>False</value>
- <type>bool</type>
- </param>
- <param>
- <name>Sample Delay</name>
- <key>samp_delay</key>
- <value>0</value>
- <type>int</type>
- <hide>part</hide>
- </param>
- <param>
- <name>Channel Map</name>
- <key>ch_map</key>
- <value>[]</value>
- <type>int_vector</type>
- </param>
- <param>
- <name>Bus Connections</name>
- <key>bus_conns</key>
- <value>[[0,],]</value>
- <type>raw</type>
- <hide>part</hide>
- </param>
- <sink>
- <name>in</name>
- <type>complex</type>
- <nports>$connections</nports>
- </sink>
- <source>
- <name>out</name>
- <type>complex</type>
- </source>
- <bus_structure_sink>$bus_conns</bus_structure_sink>
-</block>
diff --git a/gr-filter/grc/filter_rational_resampler_base_xxx.block.yml b/gr-filter/grc/filter_rational_resampler_base_xxx.block.yml
new file mode 100644
index 0000000000..e8fc797d9b
--- /dev/null
+++ b/gr-filter/grc/filter_rational_resampler_base_xxx.block.yml
@@ -0,0 +1,46 @@
+id: rational_resampler_base_xxx
+label: Rational Resampler Base
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fff, fsf, scc]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Float (Real Taps), Float->Short (Real
+ Taps), Short->Complex (Complex Taps)]
+ option_attributes:
+ input: [complex, complex, float, float, float, short]
+ output: [complex, complex, complex, float, short, complex]
+ taps: [complex_vector, real_vector, complex_vector, real_vector, real_vector,
+ complex_vector]
+ hide: part
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: filter.rational_resampler_base_${type}(${interp}, ${decim}, ${taps})
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_rational_resampler_base_xxx.xml b/gr-filter/grc/filter_rational_resampler_base_xxx.xml
deleted file mode 100644
index 399bfc74c9..0000000000
--- a/gr-filter/grc/filter_rational_resampler_base_xxx.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Rational Resampler Base
-###################################################
- -->
-<block>
- <name>Rational Resampler Base</name>
- <key>rational_resampler_base_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.rational_resampler_base_$(type)($interp, $decim, $taps)</make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Short (Real Taps)</name>
- <key>fsf</key>
- <opt>input:float</opt>
- <opt>output:short</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Short->Complex (Complex Taps)</name>
- <key>scc</key>
- <opt>input:short</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <type>$type.taps</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_rational_resampler_xxx.block.yml b/gr-filter/grc/filter_rational_resampler_xxx.block.yml
new file mode 100644
index 0000000000..e67e7cbf6f
--- /dev/null
+++ b/gr-filter/grc/filter_rational_resampler_xxx.block.yml
@@ -0,0 +1,62 @@
+id: rational_resampler_xxx
+label: Rational Resampler
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [ccc, ccf, fcc, fff]
+ option_labels: [Complex->Complex (Complex Taps), Complex->Complex (Real Taps),
+ Float->Complex (Complex Taps), Float->Float (Real Taps)]
+ option_attributes:
+ input: [complex, complex, float, float]
+ output: [complex, complex, complex, float]
+ taps: [complex_vector, real_vector, complex_vector, real_vector]
+ hide: part
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+- id: taps
+ label: Taps
+ dtype: ${ type.taps }
+- id: fbw
+ label: Fractional BW
+ dtype: real
+ default: '0'
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: |-
+ filter.rational_resampler_${type}(
+ interpolation=${interp},
+ decimation=${decim},
+ % if taps:
+ taps=${taps},
+ % else:
+ taps=None,
+ % endif
+ % if fbw != 0:
+ fractional_bw=${fbw},
+ % else:
+ fractional_bw=None,
+ % endif
+ )
+ callbacks:
+ - set_taps(${taps})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_rational_resampler_xxx.xml b/gr-filter/grc/filter_rational_resampler_xxx.xml
deleted file mode 100644
index 7e275818d2..0000000000
--- a/gr-filter/grc/filter_rational_resampler_xxx.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Rational Resampler Base
-###################################################
- -->
-<block>
- <name>Rational Resampler</name>
- <key>rational_resampler_xxx</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.rational_resampler_$(type)(
- interpolation=$interp,
- decimation=$decim,
-#if $taps()
- taps=$taps,
-#else
- taps=None,
-#end if
-#if $fbw() != 0
- fractional_bw=$fbw,
-#else
- fractional_bw=None,
-#end if
-)</make>
- <callback>set_taps($taps)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Complex Taps)</name>
- <key>ccc</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Complex->Complex (Real Taps)</name>
- <key>ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- <opt>taps:real_vector</opt>
- </option>
- <option>
- <name>Float->Complex (Complex Taps)</name>
- <key>fcc</key>
- <opt>input:float</opt>
- <opt>output:complex</opt>
- <opt>taps:complex_vector</opt>
- </option>
- <option>
- <name>Float->Float (Real Taps)</name>
- <key>fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- <opt>taps:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- </param>
- <param>
- <name>Taps</name>
- <key>taps</key>
- <value></value>
- <type>$type.taps</type>
- </param>
- <param>
- <name>Fractional BW</name>
- <key>fbw</key>
- <value>0</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
-</block>
diff --git a/gr-filter/grc/filter_root_raised_cosine_filter.block.yml b/gr-filter/grc/filter_root_raised_cosine_filter.block.yml
new file mode 100644
index 0000000000..7a435f161b
--- /dev/null
+++ b/gr-filter/grc/filter_root_raised_cosine_filter.block.yml
@@ -0,0 +1,70 @@
+id: root_raised_cosine_filter
+label: Root Raised Cosine Filter
+
+parameters:
+- id: type
+ label: FIR Type
+ dtype: enum
+ options: [fir_filter_ccf, interp_fir_filter_ccf, fir_filter_fff, interp_fir_filter_fff]
+ option_labels: [Complex->Complex (Decimating), Complex->Complex (Interpolating),
+ Float->Float (Decimating), Float->Float (Interpolating)]
+ option_attributes:
+ input: [complex, complex, float, float]
+ output: [complex, complex, float, float]
+ hide: part
+- id: decim
+ label: Decimation
+ dtype: int
+ default: '1'
+ hide: ${ ('all' if str(type).startswith('interp') else 'none') }
+- id: interp
+ label: Interpolation
+ dtype: int
+ default: '1'
+ hide: ${ ('none' if str(type).startswith('interp') else 'all') }
+- id: gain
+ label: Gain
+ dtype: real
+ default: '1'
+- id: samp_rate
+ label: Sample Rate
+ dtype: real
+ default: samp_rate
+- id: sym_rate
+ label: Symbol Rate
+ dtype: real
+ default: '1.0'
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '0.35'
+- id: ntaps
+ label: Num Taps
+ dtype: int
+ default: 11*samp_rate
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+templates:
+ imports: |-
+ from gnuradio import filter
+ from gnuradio.filter import firdes
+ make: "filter.$(type)(% if str(type).startswith('interp') then interp else decim#,\
+ \ firdes.root_raised_cosine(:\n\t${gain}, ${samp_rate}, ${sym_rate}, ${alpha},\
+ \ ${ntaps}))"
+ callbacks:
+ - set_taps(firdes.root_raised_cosine(${gain}, ${samp_rate}, ${sym_rate}, ${alpha},
+ ${ntaps}))
+
+documentation: |-
+ This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
+
+ Sample rate in Hertz.
+
+file_format: 1
diff --git a/gr-filter/grc/filter_root_raised_cosine_filter.xml b/gr-filter/grc/filter_root_raised_cosine_filter.xml
deleted file mode 100644
index fde88828da..0000000000
--- a/gr-filter/grc/filter_root_raised_cosine_filter.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Root Raised Cosine Filter: Custom wrapper
-###################################################
- -->
-<block>
- <name>Root Raised Cosine Filter</name>
- <key>root_raised_cosine_filter</key>
- <import>from gnuradio import filter</import>
- <import>from gnuradio.filter import firdes</import>
- <make>filter.$(type)(#if str($type).startswith('interp') then $interp else $decim#, firdes.root_raised_cosine(
- $gain, $samp_rate, $sym_rate, $alpha, $ntaps))</make>
- <callback>set_taps(firdes.root_raised_cosine($gain, $samp_rate, $sym_rate, $alpha, $ntaps))</callback>
- <param>
- <name>FIR Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex->Complex (Decimating)</name>
- <key>fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Complex->Complex (Interpolating)</name>
- <key>interp_fir_filter_ccf</key>
- <opt>input:complex</opt>
- <opt>output:complex</opt>
- </option>
- <option>
- <name>Float->Float (Decimating)</name>
- <key>fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- <option>
- <name>Float->Float (Interpolating)</name>
- <key>interp_fir_filter_fff</key>
- <opt>input:float</opt>
- <opt>output:float</opt>
- </option>
- </param>
- <param>
- <name>Decimation</name>
- <key>decim</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'all' else 'none'#</hide>
- </param>
- <param>
- <name>Interpolation</name>
- <key>interp</key>
- <value>1</value>
- <type>int</type>
- <hide>#if str($type).startswith('interp') then 'none' else 'all'#</hide>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1</value>
- <type>real</type>
- </param>
- <param>
- <name>Sample Rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>real</type>
- </param>
- <param>
- <name>Symbol Rate</name>
- <key>sym_rate</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>0.35</value>
- <type>real</type>
- </param>
- <param>
- <name>Num Taps</name>
- <key>ntaps</key>
- <value>11*samp_rate</value>
- <type>int</type>
- </param>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-This filter is a convenience wrapper for an fir filter and a firdes taps generating function.
-
-Sample rate in Hertz.
- </doc>
-</block>
diff --git a/gr-filter/grc/filter_single_pole_iir_filter_xx.block.yml b/gr-filter/grc/filter_single_pole_iir_filter_xx.block.yml
new file mode 100644
index 0000000000..09561d7109
--- /dev/null
+++ b/gr-filter/grc/filter_single_pole_iir_filter_xx.block.yml
@@ -0,0 +1,38 @@
+id: single_pole_iir_filter_xx
+label: Single Pole IIR Filter
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float]
+ option_attributes:
+ fcn: [cc, ff]
+ hide: part
+- id: alpha
+ label: Alpha
+ dtype: real
+ default: '1.0'
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import filter
+ make: filter.single_pole_iir_filter_${type.fcn}(${alpha}, ${vlen})
+ callbacks:
+ - set_taps(${alpha})
+
+file_format: 1
diff --git a/gr-filter/grc/filter_single_pole_iir_filter_xx.xml b/gr-filter/grc/filter_single_pole_iir_filter_xx.xml
deleted file mode 100644
index 3eaf52625f..0000000000
--- a/gr-filter/grc/filter_single_pole_iir_filter_xx.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Single Pole IIR Filter
-###################################################
- -->
-<block>
- <name>Single Pole IIR Filter</name>
- <key>single_pole_iir_filter_xx</key>
- <import>from gnuradio import filter</import>
- <make>filter.single_pole_iir_filter_$(type.fcn)($alpha, $vlen)</make>
- <callback>set_taps($alpha)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>fcn:cc</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>fcn:ff</opt>
- </option>
- </param>
- <param>
- <name>Alpha</name>
- <key>alpha</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-</block>
diff --git a/gr-filter/grc/variable_band_pass_filter_taps.block.yml b/gr-filter/grc/variable_band_pass_filter_taps.block.yml
new file mode 100644
index 0000000000..4d82445a8a
--- /dev/null
+++ b/gr-filter/grc/variable_band_pass_filter_taps.block.yml
@@ -0,0 +1,53 @@
+id: variable_band_pass_filter_taps
+label: Band-pass Filter Taps
+
+parameters:
+- id: type
+ label: Tap Type
+ dtype: enum
+ options: [taps_real, taps_complex]
+ option_labels: [Real, Complex]
+ option_attributes:
+ fcn: [band_pass, complex_band_pass]
+- id: gain
+ label: Gain
+ dtype: float
+ default: '1.0'
+- id: samp_rate
+ label: Sample Rate (Hz)
+ dtype: float
+ default: samp_rate
+- id: low_cutoff_freq
+ label: Low Cutoff Freq (Hz)
+ dtype: float
+- id: high_cutoff_freq
+ label: High Cutoff Freq (Hz)
+ dtype: float
+- id: width
+ label: Transition Width (Hz)
+ dtype: float
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: float
+ default: '6.76'
+value: ${ firdes.type.fcn(gain, samp_rate, low_cutoff_freq, high_cutoff_freq, width,
+ win, beta) }
+
+templates:
+ imports: from gnuradio.filter import firdes
+ var_make: "\nself.${id} = ${id} = firdes.${type.fcn}(${gain}, ${samp_rate}, ${low_cutoff_freq},\
+ \ ${high_cutoff_freq}, ${width}, ${win}, ${beta})\n "
+
+documentation: |-
+ This is a convenience wrapper for calling firdes.band_pass() or firdes.complex_band_pass()
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/variable_band_pass_filter_taps.xml b/gr-filter/grc/variable_band_pass_filter_taps.xml
deleted file mode 100644
index 6cdfcc0373..0000000000
--- a/gr-filter/grc/variable_band_pass_filter_taps.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#######################################################
-# Convenience wrapper for calling firdes.band_pass(...)
-# or firdes.complex_bandpass(...)
-#######################################################
- -->
-<block>
- <name>Band-pass Filter Taps</name>
- <key>variable_band_pass_filter_taps</key>
- <import>from gnuradio.filter import firdes</import>
- <var_make>
-self.$(id) = $(id) = firdes.$(type.fcn)($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta)
- </var_make>
- <var_value>firdes.$(type.fcn)($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta)</var_value>
- <make></make>
-
- <param>
- <name>Tap Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Real</name>
- <key>taps_real</key>
- <opt>fcn:band_pass</opt>
- </option>
- <option>
- <name>Complex</name>
- <key>taps_complex</key>
- <opt>fcn:complex_band_pass</opt>
- </option>
- </param>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>float</type>
- </param>
- <param>
- <name>Sample Rate (Hz)</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>float</type>
- </param>
- <param>
- <name>Low Cutoff Freq (Hz)</name>
- <key>low_cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>High Cutoff Freq (Hz)</name>
- <key>high_cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>Transition Width (Hz)</name>
- <key>width</key>
- <type>float</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>float</type>
- </param>
- <doc>
- This is a convenience wrapper for calling firdes.band_pass() or firdes.complex_band_pass()
-
- The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/variable_band_reject_filter_taps.block.yml b/gr-filter/grc/variable_band_reject_filter_taps.block.yml
new file mode 100644
index 0000000000..fbb3825067
--- /dev/null
+++ b/gr-filter/grc/variable_band_reject_filter_taps.block.yml
@@ -0,0 +1,46 @@
+id: variable_band_reject_filter_taps
+label: Band-reject Filter Taps
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: float
+ default: '1.0'
+- id: samp_rate
+ label: Sample Rate (Hz)
+ dtype: float
+ default: samp_rate
+- id: low_cutoff_freq
+ label: Low Cutoff Freq (Hz)
+ dtype: float
+- id: high_cutoff_freq
+ label: High Cutoff Freq (Hz)
+ dtype: float
+- id: width
+ label: Transition Width (Hz)
+ dtype: float
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: float
+ default: '6.76'
+value: ${ firdes.band_reject(gain, samp_rate, low_cutoff_freq, high_cutoff_freq, width,
+ win, beta) }
+
+templates:
+ imports: from gnuradio.filter import firdes
+ var_make: "\nself.${id} = ${id} = firdes.band_reject(${gain}, ${samp_rate}, ${low_cutoff_freq},\
+ \ ${high_cutoff_freq}, ${width}, ${win}, ${beta})\n "
+
+documentation: |-
+ This is a convenience wrapper for calling firdes.band_reject().
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/variable_band_reject_filter_taps.xml b/gr-filter/grc/variable_band_reject_filter_taps.xml
deleted file mode 100644
index fbf25886d3..0000000000
--- a/gr-filter/grc/variable_band_reject_filter_taps.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<!--
-#########################################################
-# Convenience wrapper for calling firdes.band_reject(...)
-#########################################################
- -->
-<block>
- <name>Band-reject Filter Taps</name>
- <key>variable_band_reject_filter_taps</key>
- <import>from gnuradio.filter import firdes</import>
- <var_make>
-self.$(id) = $(id) = firdes.band_reject($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta)
- </var_make>
- <var_value>firdes.band_reject($gain, $samp_rate, $low_cutoff_freq, $high_cutoff_freq, $width, $win, $beta)</var_value>
- <make></make>
-
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>float</type>
- </param>
- <param>
- <name>Sample Rate (Hz)</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>float</type>
- </param>
- <param>
- <name>Low Cutoff Freq (Hz)</name>
- <key>low_cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>High Cutoff Freq (Hz)</name>
- <key>high_cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>Transition Width (Hz)</name>
- <key>width</key>
- <type>float</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>float</type>
- </param>
- <doc>
- This is a convenience wrapper for calling firdes.band_reject().
-
- The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/variable_high_pass_filter_taps.block.yml b/gr-filter/grc/variable_high_pass_filter_taps.block.yml
new file mode 100644
index 0000000000..e7aa9ee0d5
--- /dev/null
+++ b/gr-filter/grc/variable_high_pass_filter_taps.block.yml
@@ -0,0 +1,42 @@
+id: variable_high_pass_filter_taps
+label: High-pass Filter Taps
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: float
+ default: '1.0'
+- id: samp_rate
+ label: Sample Rate (Hz)
+ dtype: float
+ default: samp_rate
+- id: cutoff_freq
+ label: Cutoff Freq (Hz)
+ dtype: float
+- id: width
+ label: Transition Width (Hz)
+ dtype: float
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: float
+ default: '6.76'
+value: ${ firdes.high_pass(gain, samp_rate, cutoff_freq, width, win, beta) }
+
+templates:
+ imports: from gnuradio.filter import firdes
+ var_make: "\nself.${id} = ${id} = firdes.high_pass(${gain}, ${samp_rate}, ${cutoff_freq},\
+ \ ${width}, ${win}, ${beta})\n "
+
+documentation: |-
+ This variable is a convenience wrapper around a call to firdes.high_pass(...).
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/variable_high_pass_filter_taps.xml b/gr-filter/grc/variable_high_pass_filter_taps.xml
deleted file mode 100644
index 08768d808a..0000000000
--- a/gr-filter/grc/variable_high_pass_filter_taps.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-######################################################
-## Convenience wrapper around call to fides.high_pass()
-######################################################
- -->
-<block>
- <name>High-pass Filter Taps</name>
- <key>variable_high_pass_filter_taps</key>
- <import>from gnuradio.filter import firdes</import>
- <var_make>
-self.$(id) = $(id) = firdes.high_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta)
- </var_make>
- <var_value>firdes.high_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta)</var_value>
- <make></make>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>float</type>
- </param>
- <param>
- <name>Sample Rate (Hz)</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>float</type>
- </param>
- <param>
- <name>Cutoff Freq (Hz)</name>
- <key>cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>Transition Width (Hz)</name>
- <key>width</key>
- <type>float</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>float</type>
- </param>
- <doc>
- This variable is a convenience wrapper around a call to firdes.high_pass(...).
-
- The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/variable_low_pass_filter_taps.block.yml b/gr-filter/grc/variable_low_pass_filter_taps.block.yml
new file mode 100644
index 0000000000..2a28e2be1a
--- /dev/null
+++ b/gr-filter/grc/variable_low_pass_filter_taps.block.yml
@@ -0,0 +1,42 @@
+id: variable_low_pass_filter_taps
+label: Low-pass Filter Taps
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: float
+ default: '1.0'
+- id: samp_rate
+ label: Sample Rate (Hz)
+ dtype: float
+ default: samp_rate
+- id: cutoff_freq
+ label: Cutoff Freq (Hz)
+ dtype: float
+- id: width
+ label: Transition Width (Hz)
+ dtype: float
+- id: win
+ label: Window
+ dtype: int
+ default: firdes.WIN_HAMMING
+ options: [firdes.WIN_HAMMING, firdes.WIN_HANN, firdes.WIN_BLACKMAN, firdes.WIN_RECTANGULAR,
+ firdes.WIN_KAISER]
+ option_labels: [Hamming, Hann, Blackman, Rectangular, Kaiser]
+- id: beta
+ label: Beta
+ dtype: float
+ default: '6.76'
+value: ${ firdes.low_pass(gain, samp_rate, cutoff_freq, width, win, beta) }
+
+templates:
+ imports: from gnuradio.filter import firdes
+ var_make: "\nself.${id} = ${id} = firdes.low_pass(${gain}, ${samp_rate}, ${cutoff_freq},\
+ \ ${width}, ${win}, ${beta})\n "
+
+documentation: |-
+ This variable is a convenience wrapper around a call to firdes.low_pass(...).
+
+ The beta paramater only applies to the Kaiser window.
+
+file_format: 1
diff --git a/gr-filter/grc/variable_low_pass_filter_taps.xml b/gr-filter/grc/variable_low_pass_filter_taps.xml
deleted file mode 100644
index e3367b1ec5..0000000000
--- a/gr-filter/grc/variable_low_pass_filter_taps.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0"?>
-<!--
-######################################################
-## Convenience wrapper around call to fides.low_pass()
-######################################################
- -->
-<block>
- <name>Low-pass Filter Taps</name>
- <key>variable_low_pass_filter_taps</key>
- <import>from gnuradio.filter import firdes</import>
- <var_make>
-self.$(id) = $(id) = firdes.low_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta)
- </var_make>
- <var_value>firdes.low_pass($gain, $samp_rate, $cutoff_freq, $width, $win, $beta)</var_value>
- <make></make>
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>float</type>
- </param>
- <param>
- <name>Sample Rate (Hz)</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>float</type>
- </param>
- <param>
- <name>Cutoff Freq (Hz)</name>
- <key>cutoff_freq</key>
- <type>float</type>
- </param>
- <param>
- <name>Transition Width (Hz)</name>
- <key>width</key>
- <type>float</type>
- </param>
- <param>
- <name>Window</name>
- <key>win</key>
- <value>firdes.WIN_HAMMING</value>
- <type>int</type>
- <option>
- <name>Hamming</name>
- <key>firdes.WIN_HAMMING</key>
- </option>
- <option>
- <name>Hann</name>
- <key>firdes.WIN_HANN</key>
- </option>
- <option>
- <name>Blackman</name>
- <key>firdes.WIN_BLACKMAN</key>
- </option>
- <option>
- <name>Rectangular</name>
- <key>firdes.WIN_RECTANGULAR</key>
- </option>
- <option>
- <name>Kaiser</name>
- <key>firdes.WIN_KAISER</key>
- </option>
- </param>
- <param>
- <name>Beta</name>
- <key>beta</key>
- <value>6.76</value>
- <type>float</type>
- </param>
- <doc>
- This variable is a convenience wrapper around a call to firdes.low_pass(...).
-
- The beta paramater only applies to the Kaiser window.
- </doc>
-</block>
diff --git a/gr-filter/grc/variable_rrc_filter_taps.block.yml b/gr-filter/grc/variable_rrc_filter_taps.block.yml
new file mode 100644
index 0000000000..6fcf0c56cb
--- /dev/null
+++ b/gr-filter/grc/variable_rrc_filter_taps.block.yml
@@ -0,0 +1,34 @@
+id: variable_rrc_filter_taps
+label: RRC Filter Taps
+
+parameters:
+- id: gain
+ label: Gain
+ dtype: float
+ default: '1.0'
+- id: samp_rate
+ label: Sample Rate (Hz)
+ dtype: float
+ default: samp_rate
+- id: sym_rate
+ label: Symbol Rate (Hz)
+ dtype: float
+- id: alpha
+ label: Excess BW
+ dtype: float
+ default: '0.35'
+- id: ntaps
+ label: Num Taps
+ dtype: int
+ default: 11*sps
+value: ${ firdes.root_raised_cosine(gain, samp_rate, sym_rate, alpha, ntaps) }
+
+templates:
+ imports: from gnuradio.filter import firdes
+ var_make: "\nself.${id} = ${id} = firdes.root_raised_cosine(${gain}, ${samp_rate},\
+ \ ${sym_rate}, ${alpha}, ${ntaps})\n "
+
+documentation: |-
+ This is a convenience wrapper for calling firdes.root_raised_cosine(...).
+
+file_format: 1
diff --git a/gr-filter/grc/variable_rrc_filter_taps.xml b/gr-filter/grc/variable_rrc_filter_taps.xml
deleted file mode 100644
index 2824ba75b2..0000000000
--- a/gr-filter/grc/variable_rrc_filter_taps.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0"?>
-<!--
-########################################################################
-## Convenience wrapper for calling firdes.root_raised_cosine_filter(...)
-########################################################################
- -->
-<block>
- <name>RRC Filter Taps</name>
- <key>variable_rrc_filter_taps</key>
- <import>from gnuradio.filter import firdes</import>
- <var_make>
-self.$(id) = $(id) = firdes.root_raised_cosine($gain, $samp_rate, $sym_rate, $alpha, $ntaps)
- </var_make>
- <var_value>firdes.root_raised_cosine($gain, $samp_rate, $sym_rate, $alpha, $ntaps)</var_value>
- <make></make>
-
- <param>
- <name>Gain</name>
- <key>gain</key>
- <value>1.0</value>
- <type>float</type>
- </param>
- <param>
- <name>Sample Rate (Hz)</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
- <type>float</type>
- </param>
- <param>
- <name>Symbol Rate (Hz)</name>
- <key>sym_rate</key>
- <value></value>
- <type>float</type>
- </param>
- <param>
- <name>Excess BW</name>
- <key>alpha</key>
- <value>0.35</value>
- <type>float</type>
- </param>
- <param>
- <name>Num Taps</name>
- <key>ntaps</key>
- <value>11*sps</value>
- <type>int</type>
- </param>
- <doc>
- This is a convenience wrapper for calling firdes.root_raised_cosine(...).
- </doc>
-</block>
diff --git a/gr-trellis/grc/CMakeLists.txt b/gr-trellis/grc/CMakeLists.txt
index 9fbadd50d8..f727da92d4 100644
--- a/gr-trellis/grc/CMakeLists.txt
+++ b/gr-trellis/grc/CMakeLists.txt
@@ -18,18 +18,18 @@
# Boston, MA 02110-1301, USA.
install(FILES
- trellis_encoder_xx.xml
- trellis_siso_combined_f.xml
- trellis_viterbi_x.xml
- trellis_metrics_x.xml
- trellis_siso_f.xml
- trellis_permutation.xml
- trellis_viterbi_combined_xx.xml
- trellis_sccc_encoder_xx.xml
- trellis_sccc_decoder_x.xml
- trellis_sccc_decoder_combined_xx.xml
- trellis_pccc_encoder_xx.xml
- trellis_pccc_decoder_x.xml
- trellis_pccc_decoder_combined_xx.xml
+ trellis_encoder_xx.block.yml
+ trellis_siso_combined_f.block.yml
+ trellis_viterbi_x.block.yml
+ trellis_metrics_x.block.yml
+ trellis_siso_f.block.yml
+ trellis_permutation.block.yml
+ trellis_viterbi_combined_xx.block.yml
+ trellis_sccc_encoder_xx.block.yml
+ trellis_sccc_decoder_x.block.yml
+ trellis_sccc_decoder_combined_xx.block.yml
+ trellis_pccc_encoder_xx.block.yml
+ trellis_pccc_decoder_x.block.yml
+ trellis_pccc_decoder_combined_xx.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
diff --git a/gr-trellis/grc/trellis_encoder_xx.block.yml b/gr-trellis/grc/trellis_encoder_xx.block.yml
new file mode 100644
index 0000000000..d437c16119
--- /dev/null
+++ b/gr-trellis/grc/trellis_encoder_xx.block.yml
@@ -0,0 +1,59 @@
+id: trellis_encoder_xx
+label: Trellis Encoder
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [bb, bs, bi, ss, si, ii]
+ option_labels: [Byte->Byte, Byte->Short, Byte->Int, Short->Short, Short->Int,
+ Int->Int]
+ option_attributes:
+ input: [byte, byte, byte, short, short, int]
+ output: [byte, short, int, short, int, int]
+ hide: part
+- id: fsm_args
+ label: FSM Args
+ dtype: raw
+- id: init_state
+ label: Initial State
+ dtype: int
+ default: '0'
+- id: blockwise
+ label: Blockwise
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['On', 'Off']
+ hide: part
+- id: blocklength
+ label: Block length
+ dtype: int
+ default: '0'
+ hide: ${ ('none' if blockwise == 'True' else 'all') }
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+asserts:
+- ${ (isinstance(eval(""" fsm_args """[1:-1], locals(),globals()), str) and open(fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: ' trellis.encoder_${type}(trellis.fsm(${fsm_args}), ${init_state}, ${blocklength})
+ if ${blockwise} else trellis.encoder_${type}(trellis.fsm(${fsm_args}), ${init_state}) '
+ callbacks:
+ - set_FSM(trellis.fsm(${fsm_args}))
+ - set_ST(${init_state})
+ - set_K(${blocklength})
+
+documentation: |-
+ The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_encoder_xx.xml b/gr-trellis/grc/trellis_encoder_xx.xml
deleted file mode 100644
index ab7d5226e9..0000000000
--- a/gr-trellis/grc/trellis_encoder_xx.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis Encoder
-###################################################
- -->
-
-<block>
- <name>Trellis Encoder</name>
- <key>trellis_encoder_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make> trellis.encoder_$(type)(trellis.fsm($fsm_args), $init_state, $blocklength) if $blockwise else trellis.encoder_$(type)(trellis.fsm($fsm_args), $init_state) </make>
- <callback>set_FSM(trellis.fsm($fsm_args))</callback>
- <callback>set_ST($init_state)</callback>
- <callback>set_K($blocklength)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte->Byte</name>
- <key>bb</key>
- <opt>input:byte</opt>
- <opt>output:byte</opt>
- </option>
- <option>
- <name>Byte->Short</name>
- <key>bs</key>
- <opt>input:byte</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Byte->Int</name>
- <key>bi</key>
- <opt>input:byte</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Short->Short</name>
- <key>ss</key>
- <opt>input:short</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Short->Int</name>
- <key>si</key>
- <opt>input:short</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Int->Int</name>
- <key>ii</key>
- <opt>input:int</opt>
- <opt>output:int</opt>
- </option>
- </param>
- <param>
- <name>FSM Args</name>
- <key>fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Blockwise</name>
- <key>blockwise</key>
- <value>False</value>
- <type>enum</type>
- <hide>part</hide>
- <option>
- <name>On</name>
- <key>True</key>
- </option>
- <option>
- <name>Off</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>Block length</name>
- <key>blocklength</key>
- <value>0</value>
- <type>int</type>
- <hide>#if $blockwise() == 'True' then 'none' else 'all'#</hide>
- </param>
- <check>(isinstance(eval(""" $fsm_args """[1:-1], locals(),globals()), str) and open($fsm_args).close()) or True</check>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_metrics_x.block.yml b/gr-trellis/grc/trellis_metrics_x.block.yml
new file mode 100644
index 0000000000..e4559ea15c
--- /dev/null
+++ b/gr-trellis/grc/trellis_metrics_x.block.yml
@@ -0,0 +1,50 @@
+id: trellis_metrics_x
+label: Trellis Metrics
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [c, f, i, s]
+ option_labels: [Complex, Float, Int, Short]
+ option_attributes:
+ io: [complex, float, int, short]
+ table: [complex_vector, real_vector, int_vector, int_vector]
+ hide: part
+- id: card
+ label: Output Cardinality
+ dtype: int
+- id: dim
+ label: Dimensionality
+ dtype: int
+- id: table
+ label: Constellation
+ dtype: ${ type.table }
+- id: metric_type
+ label: Metric Type
+ dtype: enum
+ options: [digital.TRELLIS_EUCLIDEAN, digital.TRELLIS_HARD_SYMBOL, digital.TRELLIS_HARD_BIT]
+ option_labels: [Euclidean, Hard Symbol, Hard Bit]
+
+inputs:
+- domain: stream
+ dtype: ${ type.io }
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import trellis, digital
+ make: trellis.metrics_${type}(${card}, ${dim}, ${table}, ${metric_type})
+ callbacks:
+ - set_O(${card})
+ - set_D(${dim})
+ - set_TYPE(${metric_type})
+ - set_TABLE(${table})
+
+documentation: |-
+ Generate metrics required for Viterbi or SISO algorithms.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_metrics_x.xml b/gr-trellis/grc/trellis_metrics_x.xml
deleted file mode 100644
index 15e7338098..0000000000
--- a/gr-trellis/grc/trellis_metrics_x.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis Metrics
-###################################################
- -->
-
-
-<block>
- <name>Trellis Metrics</name>
- <key>trellis_metrics_x</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis, digital</import>
- <make>trellis.metrics_$(type)($card, $dim, $table, $metric_type)</make>
- <callback>set_O($card)</callback>
- <callback>set_D($dim)</callback>
- <callback>set_TYPE($metric_type)</callback>
- <callback>set_TABLE($table)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>c</key>
- <opt>io:complex</opt>
- <opt>table:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>f</key>
- <opt>io:float</opt>
- <opt>table:real_vector</opt>
- </option>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- <opt>table:int_vector</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- <opt>table:int_vector</opt>
- </option>
- </param>
- <param>
- <name>Output Cardinality</name>
- <key>card</key>
- <type>int</type>
- </param>
- <param>
- <name>Dimensionality</name>
- <key>dim</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation</name>
- <key>table</key>
- <type>$type.table</type>
- </param>
- <param>
- <name>Metric Type</name>
- <key>metric_type</key>
- <type>enum</type>
- <option>
- <name>Euclidean</name>
- <key>digital.TRELLIS_EUCLIDEAN</key>
- </option>
- <option>
- <name>Hard Symbol</name>
- <key>digital.TRELLIS_HARD_SYMBOL</key>
- </option>
- <option>
- <name>Hard Bit</name>
- <key>digital.TRELLIS_HARD_BIT</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type.io</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
- <doc>
-Generate metrics required for Viterbi or SISO algorithms.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_pccc_decoder_combined_xx.block.yml b/gr-trellis/grc/trellis_pccc_decoder_combined_xx.block.yml
new file mode 100644
index 0000000000..dbfe1ec31d
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_decoder_combined_xx.block.yml
@@ -0,0 +1,102 @@
+id: trellis_pccc_decoder_combined_xx
+label: PCCC Decoder Combo
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [c, f]
+ option_labels: [Complex, Float]
+ option_attributes:
+ io: [complex, float]
+ table: [complex_vector, real_vector]
+ hide: part
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: o_fsm_args
+ label: FSM 1
+ dtype: raw
+- id: o_init_state
+ label: Initial State 1
+ dtype: int
+ default: '0'
+- id: o_final_state
+ label: Final State 1
+ dtype: int
+ default: '-1'
+- id: i_fsm_args
+ label: FSM 2
+ dtype: raw
+- id: i_init_state
+ label: Initial State 2
+ dtype: int
+ default: '0'
+- id: i_final_state
+ label: Final State 2
+ dtype: int
+ default: '-1'
+- id: interleaver
+ label: Interleaver
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: iterations
+ label: Iterations
+ dtype: int
+ default: '10'
+- id: dim
+ label: Dimensionality
+ dtype: int
+- id: table
+ label: Constellation
+ dtype: ${ type.table }
+- id: metric_type
+ label: Metric Type
+ dtype: enum
+ options: [digital.TRELLIS_EUCLIDEAN, digital.TRELLIS_HARD_SYMBOL, digital.TRELLIS_HARD_BIT]
+ option_labels: [Euclidean, Hard Symbol, Hard Bit]
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+- id: scaling
+ label: Scaling
+ dtype: real
+ default: '1.0'
+
+inputs:
+- domain: stream
+ dtype: ${ type.io }
+
+outputs:
+- domain: stream
+ dtype: ${ out_type.io }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis, digital
+ make: "trellis.pccc_decoder_combined_${type}${out_type}(\n trellis.fsm(${o_fsm_args}),\
+ \ ${o_init_state}, ${o_final_state},\n trellis.fsm(${i_fsm_args}), ${i_init_state},\
+ \ ${i_final_state},\n trellis.interleaver(${interleaver}),\n ${block_size},\n\
+ \ ${iterations},\n ${siso_type},\n ${dim}, ${table}, ${metric_type},\n\
+ \ ${scaling})\n "
+ callbacks:
+ - set_scaling(${scaling})
+
+documentation: |-
+ PCCC turbo Decoder combined with metric calculation.
+ The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml b/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml
deleted file mode 100644
index 7bb38db893..0000000000
--- a/gr-trellis/grc/trellis_pccc_decoder_combined_xx.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PCCC Decoder Combined
-###################################################
- -->
-
-
-<block>
- <name>PCCC Decoder Combo</name>
- <key>trellis_pccc_decoder_combined_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis, digital</import>
- <make>trellis.pccc_decoder_combined_$(type)$(out_type)(
- trellis.fsm($o_fsm_args), $o_init_state, $o_final_state,
- trellis.fsm($i_fsm_args), $i_init_state, $i_final_state,
- trellis.interleaver($interleaver),
- $block_size,
- $iterations,
- $siso_type,
- $dim, $table, $metric_type,
- $scaling)
- </make>
- <callback>set_scaling($scaling)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>c</key>
- <opt>io:complex</opt>
- <opt>table:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>f</key>
- <opt>io:float</opt>
- <opt>table:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>FSM 1</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 1</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State 1</name>
- <key>o_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>FSM 2</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 2</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State 2</name>
- <key>i_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Iterations</name>
- <key>iterations</key>
- <value>10</value>
- <type>int</type>
- </param>
- <param>
- <name>Dimensionality</name>
- <key>dim</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation</name>
- <key>table</key>
- <type>$type.table</type>
- </param>
- <param>
- <name>Metric Type</name>
- <key>metric_type</key>
- <type>enum</type>
- <option>
- <name>Euclidean</name>
- <key>digital.TRELLIS_EUCLIDEAN</key>
- </option>
- <option>
- <name>Hard Symbol</name>
- <key>digital.TRELLIS_HARD_SYMBOL</key>
- </option>
- <option>
- <name>Hard Bit</name>
- <key>digital.TRELLIS_HARD_BIT</key>
- </option>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <param>
- <name>Scaling</name>
- <key>scaling</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>$type.io</type>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type.io</type>
- </source>
- <doc>
-PCCC turbo Decoder combined with metric calculation.
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_pccc_decoder_x.block.yml b/gr-trellis/grc/trellis_pccc_decoder_x.block.yml
new file mode 100644
index 0000000000..f49ec91a70
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_decoder_x.block.yml
@@ -0,0 +1,75 @@
+id: trellis_pccc_decoder_x
+label: PCCC Decoder
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: o_fsm_args
+ label: FSM 1
+ dtype: raw
+- id: o_init_state
+ label: Initial State 1
+ dtype: int
+ default: '0'
+- id: o_final_state
+ label: Final State 1
+ dtype: int
+ default: '-1'
+- id: i_fsm_args
+ label: FSM 2
+ dtype: raw
+- id: i_init_state
+ label: Initial State 2
+ dtype: int
+ default: '0'
+- id: i_final_state
+ label: Final State 2
+ dtype: int
+ default: '-1'
+- id: interleaver
+ label: Interleaver
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: iterations
+ label: Iterations
+ dtype: int
+ default: '10'
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: ${ out_type.io }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: "trellis.pccc_decoder_${out_type}(\n trellis.fsm(${o_fsm_args}), ${o_init_state},\
+ \ ${o_final_state},\n trellis.fsm(${i_fsm_args}), ${i_init_state}, ${i_final_state},\n\
+ \ trellis.interleaver(${interleaver}),\n ${block_size},\n ${iterations},\n\
+ \ ${siso_type})\n "
+
+documentation: |-
+ PCCC turbo Decoder.
+ The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_pccc_decoder_x.xml b/gr-trellis/grc/trellis_pccc_decoder_x.xml
deleted file mode 100644
index 08d1f526af..0000000000
--- a/gr-trellis/grc/trellis_pccc_decoder_x.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PCCC Decoder
-###################################################
- -->
-
-
-<block>
- <name>PCCC Decoder</name>
- <key>trellis_pccc_decoder_x</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.pccc_decoder_$(out_type)(
- trellis.fsm($o_fsm_args), $o_init_state, $o_final_state,
- trellis.fsm($i_fsm_args), $i_init_state, $i_final_state,
- trellis.interleaver($interleaver),
- $block_size,
- $iterations,
- $siso_type)
- </make>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>FSM 1</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 1</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State 1</name>
- <key>o_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>FSM 2</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 2</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State 2</name>
- <key>i_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Iterations</name>
- <key>iterations</key>
- <value>10</value>
- <type>int</type>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type.io</type>
- </source>
- <doc>
-PCCC turbo Decoder.
-The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_pccc_encoder_xx.block.yml b/gr-trellis/grc/trellis_pccc_encoder_xx.block.yml
new file mode 100644
index 0000000000..4bc2f10b3b
--- /dev/null
+++ b/gr-trellis/grc/trellis_pccc_encoder_xx.block.yml
@@ -0,0 +1,58 @@
+id: trellis_pccc_encoder_xx
+label: PCCC Encoder
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [bb, bs, bi, ss, si, ii]
+ option_labels: [Byte->Byte, Byte->Short, Byte->Int, Short->Short, Short->Int,
+ Int->Int]
+ option_attributes:
+ input: [byte, byte, byte, short, short, int]
+ output: [byte, short, int, short, int, int]
+ hide: part
+- id: o_fsm_args
+ label: FSM 1
+ dtype: raw
+- id: o_init_state
+ label: Initial State 1
+ dtype: int
+ default: '0'
+- id: i_fsm_args
+ label: FSM 2
+ dtype: raw
+- id: i_init_state
+ label: Initial State 2
+ dtype: int
+ default: '0'
+- id: interleaver_args
+ label: Interleaver
+ dtype: raw
+- id: bl
+ label: Blocklength
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.pccc_encoder_${type}(trellis.fsm(${o_fsm_args}), ${o_init_state},
+ trellis.fsm(${i_fsm_args}), ${i_init_state}, trellis.interleaver(${interleaver_args}),
+ ${bl})
+
+documentation: |-
+ The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_pccc_encoder_xx.xml b/gr-trellis/grc/trellis_pccc_encoder_xx.xml
deleted file mode 100644
index 85348e6e9b..0000000000
--- a/gr-trellis/grc/trellis_pccc_encoder_xx.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## PCCC Encoder
-###################################################
- -->
-
-<block>
- <name>PCCC Encoder</name>
- <key>trellis_pccc_encoder_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.pccc_encoder_$(type)(trellis.fsm($o_fsm_args), $o_init_state, trellis.fsm($i_fsm_args), $i_init_state, trellis.interleaver($interleaver_args), $bl)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte->Byte</name>
- <key>bb</key>
- <opt>input:byte</opt>
- <opt>output:byte</opt>
- </option>
- <option>
- <name>Byte->Short</name>
- <key>bs</key>
- <opt>input:byte</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Byte->Int</name>
- <key>bi</key>
- <opt>input:byte</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Short->Short</name>
- <key>ss</key>
- <opt>input:short</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Short->Int</name>
- <key>si</key>
- <opt>input:short</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Int->Int</name>
- <key>ii</key>
- <opt>input:int</opt>
- <opt>output:int</opt>
- </option>
- </param>
- <param>
- <name>FSM 1</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 1</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>FSM 2</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Initial State 2</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Blocklength</name>
- <key>bl</key>
- <type>int</type>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_permutation.block.yml b/gr-trellis/grc/trellis_permutation.block.yml
new file mode 100644
index 0000000000..2dba671448
--- /dev/null
+++ b/gr-trellis/grc/trellis_permutation.block.yml
@@ -0,0 +1,54 @@
+id: trellis_permutation
+label: Trellis Permutation
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ size: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: interleaver_size
+ label: Interleaver Size
+ dtype: int
+- id: table
+ label: Table
+ dtype: int_vector
+- id: syms_per_block
+ label: Symbols per Block
+ dtype: int
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+asserts:
+- ${ vlen > 0 }
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.permutation(${interleaver_size}, ${table}, ${syms_per_block}, ${type.size}*${vlen})
+ callbacks:
+ - set_K(${interleaver_size})
+ - set_TABLE(${table})
+ - set_SYMS_PER_BLOCK(${syms_per_block})
+
+documentation: |-
+ Interleaver size is given in blocks.
+ One Symbol = (in/out type) * (vector length)
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_permutation.xml b/gr-trellis/grc/trellis_permutation.xml
deleted file mode 100644
index 99eb2d291c..0000000000
--- a/gr-trellis/grc/trellis_permutation.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis Permutation
-###################################################
- -->
-
-
-<block>
- <name>Trellis Permutation</name>
- <key>trellis_permutation</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.permutation($interleaver_size, $table, $syms_per_block, $type.size*$vlen)</make>
- <callback>set_K($interleaver_size)</callback>
- <callback>set_TABLE($table)</callback>
- <callback>set_SYMS_PER_BLOCK($syms_per_block)</callback>
-
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>size:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>size:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>size:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>size:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>size:gr.sizeof_char</opt>
- </option>
- </param>
- <param>
- <name>Interleaver Size</name>
- <key>interleaver_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Table</name>
- <key>table</key>
- <type>int_vector</type>
- </param>
- <param>
- <name>Symbols per Block</name>
- <key>syms_per_block</key>
- <type>int</type>
- </param>
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
- <check>$vlen &gt; 0</check>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
- <doc>
-Interleaver size is given in blocks.
-One Symbol = (in/out type) * (vector length)
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_sccc_decoder_combined_xx.block.yml b/gr-trellis/grc/trellis_sccc_decoder_combined_xx.block.yml
new file mode 100644
index 0000000000..441d9593b8
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_decoder_combined_xx.block.yml
@@ -0,0 +1,102 @@
+id: trellis_sccc_decoder_combined_xx
+label: SCCC Decoder Combo
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [c, f]
+ option_labels: [Complex, Float]
+ option_attributes:
+ io: [complex, float]
+ table: [complex_vector, real_vector]
+ hide: part
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: o_fsm_args
+ label: Outer FSM
+ dtype: raw
+- id: o_init_state
+ label: Outer Initial State
+ dtype: int
+ default: '0'
+- id: o_final_state
+ label: Outer Final State
+ dtype: int
+ default: '-1'
+- id: i_fsm_args
+ label: Inner FSM
+ dtype: raw
+- id: i_init_state
+ label: Inner Initial State
+ dtype: int
+ default: '0'
+- id: i_final_state
+ label: Inner Final State
+ dtype: int
+ default: '-1'
+- id: interleaver
+ label: Interleaver
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: iterations
+ label: Iterations
+ dtype: int
+ default: '10'
+- id: dim
+ label: Dimensionality
+ dtype: int
+- id: table
+ label: Constellation
+ dtype: ${ type.table }
+- id: metric_type
+ label: Metric Type
+ dtype: enum
+ options: [digital.TRELLIS_EUCLIDEAN, digital.TRELLIS_HARD_SYMBOL, digital.TRELLIS_HARD_BIT]
+ option_labels: [Euclidean, Hard Symbol, Hard Bit]
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+- id: scaling
+ label: Scaling
+ dtype: real
+ default: '1.0'
+
+inputs:
+- domain: stream
+ dtype: ${ type.io }
+
+outputs:
+- domain: stream
+ dtype: ${ out_type.io }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis, digital
+ make: "trellis.sccc_decoder_combined_${type}${out_type}(\n trellis.fsm(${o_fsm_args}),\
+ \ ${o_init_state}, ${o_final_state},\n trellis.fsm(${i_fsm_args}), ${i_init_state},\
+ \ ${i_final_state},\n trellis.interleaver(${interleaver}),\n ${block_size},\n\
+ \ ${iterations},\n ${siso_type},\n ${dim}, ${table},\
+ \ ${metric_type},\n ${scaling})\n "
+ callbacks:
+ - set_scaling(${scaling})
+
+documentation: |-
+ SCCC turbo Decoder combined with metric calculation.
+ The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml b/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml
deleted file mode 100644
index 79be0b8b5d..0000000000
--- a/gr-trellis/grc/trellis_sccc_decoder_combined_xx.xml
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## SCCC Decoder Combined
-###################################################
- -->
-
-
-<block>
- <name>SCCC Decoder Combo</name>
- <key>trellis_sccc_decoder_combined_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis, digital</import>
- <make>trellis.sccc_decoder_combined_$(type)$(out_type)(
- trellis.fsm($o_fsm_args), $o_init_state, $o_final_state,
- trellis.fsm($i_fsm_args), $i_init_state, $i_final_state,
- trellis.interleaver($interleaver),
- $block_size,
- $iterations,
- $siso_type,
- $dim, $table, $metric_type,
- $scaling)
- </make>
- <callback>set_scaling($scaling)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>c</key>
- <opt>io:complex</opt>
- <opt>table:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>f</key>
- <opt>io:float</opt>
- <opt>table:real_vector</opt>
- </option>
- </param>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>Outer FSM</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Outer Initial State</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Outer Final State</name>
- <key>o_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Inner FSM</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Inner Initial State</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Inner Final State</name>
- <key>i_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Iterations</name>
- <key>iterations</key>
- <value>10</value>
- <type>int</type>
- </param>
- <param>
- <name>Dimensionality</name>
- <key>dim</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation</name>
- <key>table</key>
- <type>$type.table</type>
- </param>
- <param>
- <name>Metric Type</name>
- <key>metric_type</key>
- <type>enum</type>
- <option>
- <name>Euclidean</name>
- <key>digital.TRELLIS_EUCLIDEAN</key>
- </option>
- <option>
- <name>Hard Symbol</name>
- <key>digital.TRELLIS_HARD_SYMBOL</key>
- </option>
- <option>
- <name>Hard Bit</name>
- <key>digital.TRELLIS_HARD_BIT</key>
- </option>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <param>
- <name>Scaling</name>
- <key>scaling</key>
- <value>1.0</value>
- <type>real</type>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>$type.io</type>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type.io</type>
- </source>
- <doc>
-SCCC turbo Decoder combined with metric calculation.
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_sccc_decoder_x.block.yml b/gr-trellis/grc/trellis_sccc_decoder_x.block.yml
new file mode 100644
index 0000000000..794115d48a
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_decoder_x.block.yml
@@ -0,0 +1,75 @@
+id: trellis_sccc_decoder_x
+label: SCCC Decoder
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: o_fsm_args
+ label: Outer FSM
+ dtype: raw
+- id: o_init_state
+ label: Outer Initial State
+ dtype: int
+ default: '0'
+- id: o_final_state
+ label: Outer Final State
+ dtype: int
+ default: '-1'
+- id: i_fsm_args
+ label: Inner FSM
+ dtype: raw
+- id: i_init_state
+ label: Inner Initial State
+ dtype: int
+ default: '0'
+- id: i_final_state
+ label: Inner Final State
+ dtype: int
+ default: '-1'
+- id: interleaver
+ label: Interleaver
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: iterations
+ label: Iterations
+ dtype: int
+ default: '10'
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: ${ out_type.io }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: "trellis.sccc_decoder_${out_type}(\n trellis.fsm(${o_fsm_args}), ${o_init_state},\
+ \ ${o_final_state},\n trellis.fsm(${i_fsm_args}), ${i_init_state}, ${i_final_state},\n\
+ \ trellis.interleaver(${interleaver}),\n ${block_size},\n ${iterations},\n\
+ \ ${siso_type})\n "
+
+documentation: |-
+ SCCC turbo Decoder.
+ The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_sccc_decoder_x.xml b/gr-trellis/grc/trellis_sccc_decoder_x.xml
deleted file mode 100644
index 584ff0b0af..0000000000
--- a/gr-trellis/grc/trellis_sccc_decoder_x.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## SCCC Decoder
-###################################################
- -->
-
-
-<block>
- <name>SCCC Decoder</name>
- <key>trellis_sccc_decoder_x</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.sccc_decoder_$(out_type)(
- trellis.fsm($o_fsm_args), $o_init_state, $o_final_state,
- trellis.fsm($i_fsm_args), $i_init_state, $i_final_state,
- trellis.interleaver($interleaver),
- $block_size,
- $iterations,
- $siso_type)
- </make>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>Outer FSM</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Outer Initial State</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Outer Final State</name>
- <key>o_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Inner FSM</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Inner Initial State</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Inner Final State</name>
- <key>i_final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Iterations</name>
- <key>iterations</key>
- <value>10</value>
- <type>int</type>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type.io</type>
- </source>
- <doc>
-SCCC turbo Decoder.
-The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_sccc_encoder_xx.block.yml b/gr-trellis/grc/trellis_sccc_encoder_xx.block.yml
new file mode 100644
index 0000000000..5068af38ff
--- /dev/null
+++ b/gr-trellis/grc/trellis_sccc_encoder_xx.block.yml
@@ -0,0 +1,58 @@
+id: trellis_sccc_encoder_xx
+label: SCCC Encoder
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [bb, bs, bi, ss, si, ii]
+ option_labels: [Byte->Byte, Byte->Short, Byte->Int, Short->Short, Short->Int,
+ Int->Int]
+ option_attributes:
+ input: [byte, byte, byte, short, short, int]
+ output: [byte, short, int, short, int, int]
+ hide: part
+- id: o_fsm_args
+ label: Outer FSM
+ dtype: raw
+- id: o_init_state
+ label: Outer Initial State
+ dtype: int
+ default: '0'
+- id: i_fsm_args
+ label: Inner FSM
+ dtype: raw
+- id: i_init_state
+ label: Inner Initial State
+ dtype: int
+ default: '0'
+- id: interleaver_args
+ label: Interleaver
+ dtype: raw
+- id: bl
+ label: Blocklength
+ dtype: int
+
+inputs:
+- domain: stream
+ dtype: ${ type.input }
+
+outputs:
+- domain: stream
+ dtype: ${ type.output }
+
+asserts:
+- ${ (isinstance(eval(""" o_fsm_args """[1:-1], locals(),globals()), str) and open(o_fsm_args).close()) or True }
+- ${ (isinstance(eval(""" i_fsm_args """[1:-1], locals(),globals()), str) and open(i_fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.sccc_encoder_${type}(trellis.fsm(${o_fsm_args}), ${o_init_state},
+ trellis.fsm(${i_fsm_args}), ${i_init_state}, trellis.interleaver(${interleaver_args}),
+ ${bl})
+
+documentation: |-
+ The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_sccc_encoder_xx.xml b/gr-trellis/grc/trellis_sccc_encoder_xx.xml
deleted file mode 100644
index 7b4ab30c75..0000000000
--- a/gr-trellis/grc/trellis_sccc_encoder_xx.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##SCCC Encoder
-###################################################
- -->
-
-<block>
- <name>SCCC Encoder</name>
- <key>trellis_sccc_encoder_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.sccc_encoder_$(type)(trellis.fsm($o_fsm_args), $o_init_state, trellis.fsm($i_fsm_args), $i_init_state, trellis.interleaver($interleaver_args), $bl)</make>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte->Byte</name>
- <key>bb</key>
- <opt>input:byte</opt>
- <opt>output:byte</opt>
- </option>
- <option>
- <name>Byte->Short</name>
- <key>bs</key>
- <opt>input:byte</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Byte->Int</name>
- <key>bi</key>
- <opt>input:byte</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Short->Short</name>
- <key>ss</key>
- <opt>input:short</opt>
- <opt>output:short</opt>
- </option>
- <option>
- <name>Short->Int</name>
- <key>si</key>
- <opt>input:short</opt>
- <opt>output:int</opt>
- </option>
- <option>
- <name>Int->Int</name>
- <key>ii</key>
- <opt>input:int</opt>
- <opt>output:int</opt>
- </option>
- </param>
- <param>
- <name>Outer FSM</name>
- <key>o_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Outer Initial State</name>
- <key>o_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Inner FSM</name>
- <key>i_fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Inner Initial State</name>
- <key>i_init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Interleaver</name>
- <key>interleaver_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Blocklength</name>
- <key>bl</key>
- <type>int</type>
- </param>
- <check>(isinstance(eval(""" $o_fsm_args """[1:-1], locals(),globals()), str) and open($o_fsm_args).close()) or True</check>
- <check>(isinstance(eval(""" $i_fsm_args """[1:-1], locals(),globals()), str) and open($i_fsm_args).close()) or True </check>
- <sink>
- <name>in</name>
- <type>$type.input</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.output</type>
- </source>
- <doc>
-The fsm and interleaver arguments are passed directly to the trellis.fsm() and trellis.interleaver() constructors.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_siso_combined_f.block.yml b/gr-trellis/grc/trellis_siso_combined_f.block.yml
new file mode 100644
index 0000000000..0a10dc14d3
--- /dev/null
+++ b/gr-trellis/grc/trellis_siso_combined_f.block.yml
@@ -0,0 +1,79 @@
+id: trellis_siso_combined_f
+label: SISO Combo
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: fsm_args
+ label: FSM Args
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: init_state
+ label: Initial State
+ dtype: int
+ default: '0'
+- id: final_state
+ label: Final State
+ dtype: int
+ default: '-1'
+- id: a_post_in
+ label: A-posteriori In
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: a_post_out
+ label: A-posteriori Out
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+- id: dim
+ label: Dimensionality
+ dtype: int
+- id: table
+ label: Constellation
+ dtype: real_vector
+- id: metric_type
+ label: Metric Type
+ dtype: enum
+ options: [trellis.TRELLIS_EUCLIDEAN, trellis.TRELLIS_HARD_SYMBOL, trellis.TRELLIS_HARD_BIT]
+ option_labels: [Euclidean, Hard Symbol, Hard Bit]
+
+inputs:
+- label: in_i
+ domain: stream
+ dtype: float
+- label: in_o
+ domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.siso_combined_f(trellis.fsm(${fsm_args}), ${block_size}, ${init_state},
+ ${final_state}, ${a_post_in}, ${a_post_out}, ${siso_type}, ${dim}, ${table},
+ ${metric_type})
+ callbacks:
+ - set_FSM(trellis.fsm(${fsm_args}))
+ - set_K(${block_size})
+ - set_S0(${init_state})
+ - set_SK(${final_state})
+ - set_POSTI(${a_post_in})
+ - set_POSTO(${a_post_out})
+ - set_SISO_TYPE(${siso_type})
+ - set_D(${dim})
+ - set_TABLE(${table})
+ - set_TYPE(${metric_type})
+
+documentation: |-
+ BCJR Algorithm combined with metric calculation. The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_siso_combined_f.xml b/gr-trellis/grc/trellis_siso_combined_f.xml
deleted file mode 100644
index f8ec9c2d21..0000000000
--- a/gr-trellis/grc/trellis_siso_combined_f.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis SISO Combined
-###################################################
- -->
-
-
-<block>
- <name>SISO Combo</name>
- <key>trellis_siso_combined_f</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.siso_combined_f(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $a_post_in, $a_post_out, $siso_type, $dim, $table, $metric_type)</make>
- <callback>set_FSM(trellis.fsm($fsm_args))</callback>
- <callback>set_K($block_size)</callback>
- <callback>set_S0($init_state)</callback>
- <callback>set_SK($final_state)</callback>
- <callback>set_POSTI($a_post_in)</callback>
- <callback>set_POSTO($a_post_out)</callback>
- <callback>set_SISO_TYPE($siso_type)</callback>
- <callback>set_D($dim)</callback>
- <callback>set_TABLE($table)</callback>
- <callback>set_TYPE($metric_type)</callback>
- <param>
- <name>FSM Args</name>
- <key>fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State</name>
- <key>final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>A-posteriori In</name>
- <key>a_post_in</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>A-posteriori Out</name>
- <key>a_post_out</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <param>
- <name>Dimensionality</name>
- <key>dim</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation</name>
- <key>table</key>
- <type>real_vector</type>
- </param>
- <param>
- <name>Metric Type</name>
- <key>metric_type</key>
- <type>enum</type>
- <option>
- <name>Euclidean</name>
- <key>trellis.TRELLIS_EUCLIDEAN</key>
- </option>
- <option>
- <name>Hard Symbol</name>
- <key>trellis.TRELLIS_HARD_SYMBOL</key>
- </option>
- <option>
- <name>Hard Bit</name>
- <key>trellis.TRELLIS_HARD_BIT</key>
- </option>
- </param>
- <sink>
- <name>in_i</name>
- <type>float</type>
- </sink>
- <sink>
- <name>in_o</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
- <doc>
-BCJR Algorithm combined with metric calculation. \
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_siso_f.block.yml b/gr-trellis/grc/trellis_siso_f.block.yml
new file mode 100644
index 0000000000..5687dee4ea
--- /dev/null
+++ b/gr-trellis/grc/trellis_siso_f.block.yml
@@ -0,0 +1,67 @@
+id: trellis_siso_f
+label: SISO
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: fsm_args
+ label: FSM Args
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: init_state
+ label: Initial State
+ dtype: int
+ default: '0'
+- id: final_state
+ label: Final State
+ dtype: int
+ default: '-1'
+- id: a_post_in
+ label: A-posteriori In
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: a_post_out
+ label: A-posteriori Out
+ dtype: enum
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: siso_type
+ label: SISO Type
+ dtype: enum
+ options: [trellis.TRELLIS_MIN_SUM, trellis.TRELLIS_SUM_PRODUCT]
+ option_labels: [Min Sum, Sum Product]
+
+inputs:
+- label: priori
+ domain: stream
+ dtype: float
+- label: prioro
+ domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: float
+
+asserts:
+- ${ (isinstance(eval(""" fsm_args """[1:-1], locals(),globals()), str) and open(fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.siso_f(trellis.fsm(${fsm_args}), ${block_size}, ${init_state}, ${final_state},
+ ${a_post_in}, ${a_post_out}, ${siso_type})
+ callbacks:
+ - set_FSM(trellis.fsm(${fsm_args}))
+ - set_K(${block_size})
+ - set_S0(${init_state})
+ - set_SK(${final_state})
+ - set_POSTI(${a_post_in})
+ - set_POSTO(${a_post_out})
+ - set_SISO_TYPE(${siso_type})
+
+documentation: |-
+ BCJR Algorithm. The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_siso_f.xml b/gr-trellis/grc/trellis_siso_f.xml
deleted file mode 100644
index e121643e3f..0000000000
--- a/gr-trellis/grc/trellis_siso_f.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis SISO
-###################################################
- -->
-
-
-<block>
- <name>SISO</name>
- <key>trellis_siso_f</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.siso_f(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $a_post_in, $a_post_out, $siso_type)</make>
- <callback>set_FSM(trellis.fsm($fsm_args))</callback>
- <callback>set_K($block_size)</callback>
- <callback>set_S0($init_state)</callback>
- <callback>set_SK($final_state)</callback>
- <callback>set_POSTI($a_post_in)</callback>
- <callback>set_POSTO($a_post_out)</callback>
- <callback>set_SISO_TYPE($siso_type)</callback>
- <param>
- <name>FSM Args</name>
- <key>fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State</name>
- <key>final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>A-posteriori In</name>
- <key>a_post_in</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>A-posteriori Out</name>
- <key>a_post_out</key>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
- <param>
- <name>SISO Type</name>
- <key>siso_type</key>
- <type>enum</type>
- <option>
- <name>Min Sum</name>
- <key>trellis.TRELLIS_MIN_SUM</key>
- </option>
- <option>
- <name>Sum Product</name>
- <key>trellis.TRELLIS_SUM_PRODUCT</key>
- </option>
- </param>
- <check>(isinstance(eval(""" $fsm_args """[1:-1], locals(),globals()), str) and open($fsm_args).close()) or True</check>
- <sink>
- <name>priori</name>
- <type>float</type>
- </sink>
- <sink>
- <name>prioro</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
- <doc>
-BCJR Algorithm. \
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_viterbi_combined_xx.block.yml b/gr-trellis/grc/trellis_viterbi_combined_xx.block.yml
new file mode 100644
index 0000000000..8d1451e2da
--- /dev/null
+++ b/gr-trellis/grc/trellis_viterbi_combined_xx.block.yml
@@ -0,0 +1,76 @@
+id: trellis_viterbi_combined_xx
+label: Viterbi Combo
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [c, f, i, s]
+ option_labels: [Complex, Float, Int, Short]
+ option_attributes:
+ io: [complex, float, int, short]
+ table: [complex_vector, real_vector, int_vector, int_vector]
+ hide: part
+- id: out_type
+ label: Output Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: fsm_args
+ label: FSM Args
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: init_state
+ label: Initial State
+ dtype: int
+ default: '0'
+- id: final_state
+ label: Final State
+ dtype: int
+ default: '-1'
+- id: dim
+ label: Dimensionality
+ dtype: int
+- id: table
+ label: Constellation
+ dtype: ${ type.table }
+- id: metric_type
+ label: Metric Type
+ dtype: enum
+ options: [digital.TRELLIS_EUCLIDEAN, digital.TRELLIS_HARD_SYMBOL, digital.TRELLIS_HARD_BIT]
+ option_labels: [Euclidean, Hard Symbol, Hard Bit]
+
+inputs:
+- domain: stream
+ dtype: ${ type.io }
+
+outputs:
+- domain: stream
+ dtype: ${ out_type.io }
+
+asserts:
+- ${ (isinstance(eval(""" fsm_args """[1:-1], locals(),globals()), str) and open(fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis, digital
+ make: trellis.viterbi_combined_${type}${out_type}(trellis.fsm(${fsm_args}), ${block_size},
+ ${init_state}, ${final_state}, ${dim}, ${table}, ${metric_type})
+ callbacks:
+ - set_FSM(trellis.fsm(${fsm_args}))
+ - set_K(${block_size})
+ - set_S0(${init_state})
+ - set_SK(${final_state})
+ - set_D(${dim})
+ - set_TABLE(${table})
+ - set_TYPE(${metric_type})
+
+documentation: |-
+ Viterbi Decoder combined with metric calculation. The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_viterbi_combined_xx.xml b/gr-trellis/grc/trellis_viterbi_combined_xx.xml
deleted file mode 100644
index a52e5ed2b5..0000000000
--- a/gr-trellis/grc/trellis_viterbi_combined_xx.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis Viterbi Combined
-###################################################
- -->
-
-
-<block>
- <name>Viterbi Combo</name>
- <key>trellis_viterbi_combined_xx</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis, digital</import>
- <make>trellis.viterbi_combined_$(type)$(out_type)(trellis.fsm($fsm_args), $block_size, $init_state, $final_state, $dim, $table, $metric_type)</make>
- <callback>set_FSM(trellis.fsm($fsm_args))</callback>
- <callback>set_K($block_size)</callback>
- <callback>set_S0($init_state)</callback>
- <callback>set_SK($final_state)</callback>
- <callback>set_D($dim)</callback>
- <callback>set_TABLE($table)</callback>
- <callback>set_TYPE($metric_type)</callback>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>c</key>
- <opt>io:complex</opt>
- <opt>table:complex_vector</opt>
- </option>
- <option>
- <name>Float</name>
- <key>f</key>
- <opt>io:float</opt>
- <opt>table:real_vector</opt>
- </option>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- <opt>table:int_vector</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- <opt>table:int_vector</opt>
- </option>
- </param>
- <param>
- <name>Output Type</name>
- <key>out_type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>FSM Args</name>
- <key>fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State</name>
- <key>final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <param>
- <name>Dimensionality</name>
- <key>dim</key>
- <type>int</type>
- </param>
- <param>
- <name>Constellation</name>
- <key>table</key>
- <type>$type.table</type>
- </param>
- <param>
- <name>Metric Type</name>
- <key>metric_type</key>
- <type>enum</type>
- <option>
- <name>Euclidean</name>
- <key>digital.TRELLIS_EUCLIDEAN</key>
- </option>
- <option>
- <name>Hard Symbol</name>
- <key>digital.TRELLIS_HARD_SYMBOL</key>
- </option>
- <option>
- <name>Hard Bit</name>
- <key>digital.TRELLIS_HARD_BIT</key>
- </option>
- </param>
- <check>(isinstance(eval(""" $fsm_args """[1:-1], locals(),globals()), str) and open($fsm_args).close()) or True</check>
- <sink>
- <name>in</name>
- <type>$type.io</type>
- </sink>
- <source>
- <name>out</name>
- <type>$out_type.io</type>
- </source>
- <doc>
-Viterbi Decoder combined with metric calculation. \
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-trellis/grc/trellis_viterbi_x.block.yml b/gr-trellis/grc/trellis_viterbi_x.block.yml
new file mode 100644
index 0000000000..2caa5992e7
--- /dev/null
+++ b/gr-trellis/grc/trellis_viterbi_x.block.yml
@@ -0,0 +1,53 @@
+id: trellis_viterbi_x
+label: Viterbi
+category: '[Core]/Trellis Coding'
+
+parameters:
+- id: type
+ label: Type
+ dtype: enum
+ options: [i, s, b]
+ option_labels: [Int, Short, Byte]
+ option_attributes:
+ io: [int, short, byte]
+ hide: part
+- id: fsm_args
+ label: FSM Args
+ dtype: raw
+- id: block_size
+ label: Block Size
+ dtype: int
+- id: init_state
+ label: Initial State
+ dtype: int
+ default: '0'
+- id: final_state
+ label: Final State
+ dtype: int
+ default: '-1'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: ${ type.io }
+
+asserts:
+- ${ (isinstance(eval(""" fsm_args """[1:-1], locals(),globals()), str) and open(fsm_args).close()) or True }
+
+templates:
+ imports: from gnuradio import trellis
+ make: trellis.viterbi_${type}(trellis.fsm(${fsm_args}), ${block_size}, ${init_state},
+ ${final_state})
+ callbacks:
+ - set_FSM(trellis.fsm(${fsm_args}))
+ - set_K(${block_size})
+ - set_S0(${init_state})
+ - set_SK(${final_state})
+
+documentation: |-
+ Viterbi Decoder. The fsm arguments are passed directly to the trellis.fsm() constructor.
+
+file_format: 1
diff --git a/gr-trellis/grc/trellis_viterbi_x.xml b/gr-trellis/grc/trellis_viterbi_x.xml
deleted file mode 100644
index 21611ee51d..0000000000
--- a/gr-trellis/grc/trellis_viterbi_x.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Trellis Viterbi
-###################################################
- -->
-
-
-<block>
- <name>Viterbi</name>
- <key>trellis_viterbi_x</key>
- <category>[Core]/Trellis Coding</category>
- <import>from gnuradio import trellis</import>
- <make>trellis.viterbi_$(type)(trellis.fsm($fsm_args), $block_size, $init_state, $final_state)</make>
- <callback>set_FSM(trellis.fsm($fsm_args))</callback>
- <callback>set_K($block_size)</callback>
- <callback>set_S0($init_state)</callback>
- <callback>set_SK($final_state)</callback>
- <param>
- <name>Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Int</name>
- <key>i</key>
- <opt>io:int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>s</key>
- <opt>io:short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>b</key>
- <opt>io:byte</opt>
- </option>
- </param>
- <param>
- <name>FSM Args</name>
- <key>fsm_args</key>
- <type>raw</type>
- </param>
- <param>
- <name>Block Size</name>
- <key>block_size</key>
- <type>int</type>
- </param>
- <param>
- <name>Initial State</name>
- <key>init_state</key>
- <value>0</value>
- <type>int</type>
- </param>
- <param>
- <name>Final State</name>
- <key>final_state</key>
- <value>-1</value>
- <type>int</type>
- </param>
- <check>(isinstance(eval(""" $fsm_args """[1:-1], locals(),globals()), str) and open($fsm_args).close()) or True</check>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>$type.io</type>
- </source>
- <doc>
-Viterbi Decoder. \
-The fsm arguments are passed directly to the trellis.fsm() constructor.
- </doc>
-</block>
diff --git a/gr-video-sdl/grc/CMakeLists.txt b/gr-video-sdl/grc/CMakeLists.txt
index f62d41b6db..f72c9e3576 100644
--- a/gr-video-sdl/grc/CMakeLists.txt
+++ b/gr-video-sdl/grc/CMakeLists.txt
@@ -18,8 +18,8 @@
# Boston, MA 02110-1301, USA.
install(FILES
- video_sdl_sink.xml
- video_block_tree.xml
+ video_sdl_sink.block.yml
+ video.tree.yml
DESTINATION share/gnuradio/grc/blocks
)
diff --git a/gr-video-sdl/grc/video.tree.yml b/gr-video-sdl/grc/video.tree.yml
new file mode 100644
index 0000000000..566de33ecc
--- /dev/null
+++ b/gr-video-sdl/grc/video.tree.yml
@@ -0,0 +1,3 @@
+'[Core]':
+- Video:
+ - video_sdl_sink
diff --git a/gr-video-sdl/grc/video_block_tree.xml b/gr-video-sdl/grc/video_block_tree.xml
deleted file mode 100644
index f4f3e4199c..0000000000
--- a/gr-video-sdl/grc/video_block_tree.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-##Block Tree for video blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Video</name>
- <block>video_sdl_sink</block>
- </cat>
-</cat>
diff --git a/gr-video-sdl/grc/video_sdl_sink.block.yml b/gr-video-sdl/grc/video_sdl_sink.block.yml
new file mode 100644
index 0000000000..cc3b9949b0
--- /dev/null
+++ b/gr-video-sdl/grc/video_sdl_sink.block.yml
@@ -0,0 +1,61 @@
+id: video_sdl_sink
+label: Video SDL Sink
+
+parameters:
+- id: type
+ label: Input Type
+ dtype: enum
+ options: [byte, short]
+ option_attributes:
+ fcn: [uc, s]
+ hide: part
+- id: width
+ label: Input Width
+ dtype: int
+ default: '640'
+- id: height
+ label: Input Height
+ dtype: int
+ default: '480'
+- id: display_width
+ label: Display Width
+ dtype: int
+ default: '640'
+- id: display_height
+ label: Display Height
+ dtype: int
+ default: '480'
+- id: fps
+ label: Framerate
+ dtype: float
+ default: '0'
+- id: num_channels
+ label: Channels
+ dtype: enum
+ options: ['1', '2', '3']
+ option_labels: [1 (Grayscale), '2 (Y, alternating pixels U and V)', 3 (YUV)]
+ hide: part
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: 1
+ multiplicity: ${ num_channels }
+
+templates:
+ imports: from gnuradio import video_sdl
+ make: video_sdl.sink_${type.fcn}(${fps}, ${width}, ${height}, 0, ${display_width},
+ ${display_height})
+
+documentation: |-
+ Provides a rudimentary on-screen video display using libsdl.
+
+ A framerate of zero means video will be displayed as quickly as possible.
+
+ In 1-channel mode, input data is assumed to be grayscale, with each input item mapping to a single pixel.
+
+ In 2-channel mode, the first channel is Y for every pixel while the second channel alternates between pixels values for U and V.
+
+ In 3-channel mode, input channels are assumed to be matching triples of YUV values, one byte per pixel, per channel.
+
+file_format: 1
diff --git a/gr-video-sdl/grc/video_sdl_sink.xml b/gr-video-sdl/grc/video_sdl_sink.xml
deleted file mode 100644
index 02ad089aff..0000000000
--- a/gr-video-sdl/grc/video_sdl_sink.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version='1.0'?>
-<block>
- <name>Video SDL Sink</name>
- <key>video_sdl_sink</key>
- <import>from gnuradio import video_sdl</import>
- <make>video_sdl.sink_$(type.fcn)($fps, $width, $height, 0, $display_width, $display_height)</make>
- <param>
- <name>Input Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>fcn:uc</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>fcn:s</opt>
- </option>
- </param>
- <param>
- <name>Input Width</name>
- <key>width</key>
- <value>640</value>
- <type>int</type>
- </param>
- <param>
- <name>Input Height</name>
- <key>height</key>
- <value>480</value>
- <type>int</type>
- </param>
- <param>
- <name>Display Width</name>
- <key>display_width</key>
- <value>640</value>
- <type>int</type>
- </param>
- <param>
- <name>Display Height</name>
- <key>display_height</key>
- <value>480</value>
- <type>int</type>
- </param>
- <param>
- <name>Framerate</name>
- <key>fps</key>
- <value>0</value>
- <type>float</type>
- </param>
- <param>
- <name>Channels</name>
- <key>num_channels</key>
- <type>enum</type>
- <option>
- <name>1 (Grayscale)</name>
- <key>1</key>
- </option>
- <option>
- <name>2 (Y, alternating pixels U and V)</name>
- <key>2</key>
- </option>
- <option>
- <name>3 (YUV)</name>
- <key>3</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>1</vlen>
- <nports>$num_channels</nports>
- </sink>
- <doc>
-Provides a rudimentary on-screen video display using libsdl.
-
-A framerate of zero means video will be displayed as quickly as possible.
-
-In 1-channel mode, input data is assumed to be grayscale, with each input item mapping to a single pixel.
-
-In 2-channel mode, the first channel is Y for every pixel while the second channel alternates between pixels values for U and V.
-
-In 3-channel mode, input channels are assumed to be matching triples of YUV values, one byte per pixel, per channel.
- </doc>
-</block>
diff --git a/gr-vocoder/grc/CMakeLists.txt b/gr-vocoder/grc/CMakeLists.txt
index eef52179cb..2365298f34 100644
--- a/gr-vocoder/grc/CMakeLists.txt
+++ b/gr-vocoder/grc/CMakeLists.txt
@@ -18,36 +18,36 @@
# Boston, MA 02110-1301, USA.
install(FILES
- vocoder_alaw_decode_bs.xml
- vocoder_alaw_encode_sb.xml
- vocoder_block_tree.xml
- vocoder_cvsd_decode_bs.xml
- vocoder_cvsd_decode.xml
- vocoder_cvsd_encode_sb.xml
- vocoder_cvsd_encode.xml
- vocoder_g721_decode_bs.xml
- vocoder_g721_encode_sb.xml
- vocoder_g723_24_decode_bs.xml
- vocoder_g723_24_encode_sb.xml
- vocoder_g723_40_decode_bs.xml
- vocoder_g723_40_encode_sb.xml
- vocoder_ulaw_decode_bs.xml
- vocoder_ulaw_encode_sb.xml
+ vocoder_alaw_decode_bs.block.yml
+ vocoder_alaw_encode_sb.block.yml
+ vocoder.tree.yml
+ vocoder_cvsd_decode_bs.block.yml
+ vocoder_cvsd_decode.block.yml
+ vocoder_cvsd_encode_sb.block.yml
+ vocoder_cvsd_encode.block.yml
+ vocoder_g721_decode_bs.block.yml
+ vocoder_g721_encode_sb.block.yml
+ vocoder_g723_24_decode_bs.block.yml
+ vocoder_g723_24_encode_sb.block.yml
+ vocoder_g723_40_decode_bs.block.yml
+ vocoder_g723_40_encode_sb.block.yml
+ vocoder_ulaw_decode_bs.block.yml
+ vocoder_ulaw_encode_sb.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
if(LIBCODEC2_FOUND)
install(FILES
- vocoder_codec2_decode_ps.xml
- vocoder_codec2_encode_sp.xml
+ vocoder_codec2_decode_ps.block.yml
+ vocoder_codec2_encode_sp.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
endif(LIBCODEC2_FOUND)
if(LIBCODEC2_HAS_FREEDV_API)
install(FILES
- vocoder_freedv_rx_ss.xml
- vocoder_freedv_tx_ss.xml
+ vocoder_freedv_rx_ss.block.yml
+ vocoder_freedv_tx_ss.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
COMPONENT "vocoder_python"
)
@@ -55,8 +55,8 @@ endif(LIBCODEC2_HAS_FREEDV_API)
if(LIBGSM_FOUND)
install(FILES
- vocoder_gsm_fr_decode_ps.xml
- vocoder_gsm_fr_encode_sp.xml
+ vocoder_gsm_fr_decode_ps.block.yml
+ vocoder_gsm_fr_encode_sp.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
endif(LIBGSM_FOUND)
diff --git a/gr-vocoder/grc/CMakeLists.txt.orig b/gr-vocoder/grc/CMakeLists.txt.orig
index fd320545ad..fb2cc5053e 100644
--- a/gr-vocoder/grc/CMakeLists.txt.orig
+++ b/gr-vocoder/grc/CMakeLists.txt.orig
@@ -18,36 +18,36 @@
# Boston, MA 02110-1301, USA.
install(FILES
- vocoder_alaw_decode_bs.xml
- vocoder_alaw_encode_sb.xml
- vocoder_block_tree.xml
- vocoder_cvsd_decode_bs.xml
- vocoder_cvsd_decode.xml
- vocoder_cvsd_encode_sb.xml
- vocoder_cvsd_encode.xml
- vocoder_g721_decode_bs.xml
- vocoder_g721_encode_sb.xml
- vocoder_g723_24_decode_bs.xml
- vocoder_g723_24_encode_sb.xml
- vocoder_g723_40_decode_bs.xml
- vocoder_g723_40_encode_sb.xml
- vocoder_ulaw_decode_bs.xml
- vocoder_ulaw_encode_sb.xml
+ vocoder_alaw_decode_bs.block.yml
+ vocoder_alaw_encode_sb.block.yml
+ vocoder_block_tree.block.yml
+ vocoder_cvsd_decode_bs.block.yml
+ vocoder_cvsd_decode.block.yml
+ vocoder_cvsd_encode_sb.block.yml
+ vocoder_cvsd_encode.block.yml
+ vocoder_g721_decode_bs.block.yml
+ vocoder_g721_encode_sb.block.yml
+ vocoder_g723_24_decode_bs.block.yml
+ vocoder_g723_24_encode_sb.block.yml
+ vocoder_g723_40_decode_bs.block.yml
+ vocoder_g723_40_encode_sb.block.yml
+ vocoder_ulaw_decode_bs.block.yml
+ vocoder_ulaw_encode_sb.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
if(LIBCODEC2_FOUND)
install(FILES
- vocoder_codec2_decode_ps.xml
- vocoder_codec2_encode_sp.xml
+ vocoder_codec2_decode_ps.block.yml
+ vocoder_codec2_encode_sp.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
endif(LIBCODEC2_FOUND)
if(LIBGSM_FOUND)
install(FILES
- vocoder_gsm_fr_decode_ps.xml
- vocoder_gsm_fr_encode_sp.xml
+ vocoder_gsm_fr_decode_ps.block.yml
+ vocoder_gsm_fr_encode_sp.block.yml
DESTINATION ${GRC_BLOCKS_DIR}
)
endif(LIBGSM_FOUND)
diff --git a/gr-vocoder/grc/vocoder.tree.yml b/gr-vocoder/grc/vocoder.tree.yml
new file mode 100644
index 0000000000..bdcf2de462
--- /dev/null
+++ b/gr-vocoder/grc/vocoder.tree.yml
@@ -0,0 +1,22 @@
+'[Core]':
+- Audio:
+ - vocoder_alaw_decode_bs
+ - vocoder_alaw_encode_sb
+ - vocoder_codec2_decode_ps
+ - vocoder_codec2_encode_sp
+ - vocoder_cvsd_decode_bs
+ - vocoder_cvsd_encode_sb
+ - vocoder_cvsd_decode_bf
+ - vocoder_cvsd_encode_fb
+ - vocoder_freedv_tx_ss
+ - vocoder_freedv_rx_ss
+ - vocoder_g721_decode_bs
+ - vocoder_g721_encode_sb
+ - vocoder_g723_24_decode_bs
+ - vocoder_g723_24_encode_sb
+ - vocoder_g723_40_decode_bs
+ - vocoder_g723_40_encode_sb
+ - vocoder_gsm_fr_decode_ps
+ - vocoder_gsm_fr_encode_sp
+ - vocoder_ulaw_decode_bs
+ - vocoder_ulaw_encode_sb
diff --git a/gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml b/gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml
new file mode 100644
index 0000000000..f4e7e92e56
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_alaw_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_alaw_decode_bs
+label: Alaw Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.alaw_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_alaw_decode_bs.xml b/gr-vocoder/grc/vocoder_alaw_decode_bs.xml
deleted file mode 100644
index 776187d4de..0000000000
--- a/gr-vocoder/grc/vocoder_alaw_decode_bs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Alaw audio decoder
-###################################################
- -->
-<block>
- <name>Alaw Audio Decoder</name>
- <key>vocoder_alaw_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.alaw_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml b/gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml
new file mode 100644
index 0000000000..8a688ed963
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_alaw_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_alaw_encode_sb
+label: g711 Alaw Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.alaw_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_alaw_encode_sb.xml b/gr-vocoder/grc/vocoder_alaw_encode_sb.xml
deleted file mode 100644
index 728158eec7..0000000000
--- a/gr-vocoder/grc/vocoder_alaw_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Alaw audio encoder
-###################################################
- -->
-<block>
- <name>g711 Alaw Audio Encoder</name>
- <key>vocoder_alaw_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.alaw_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_block_tree.xml b/gr-vocoder/grc/vocoder_block_tree.xml
deleted file mode 100644
index e47af4cdd5..0000000000
--- a/gr-vocoder/grc/vocoder_block_tree.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- Copyright 2011 Free Software Foundation, Inc.
-
- This file is part of GNU Radio
-
- GNU Radio is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GNU Radio is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNU Radio; see the file COPYING. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street,
- Boston, MA 02110-1301, USA.
--->
-
-<!--
-###################################################
-##Block Tree for GR Digital blocks.
-###################################################
- -->
-<cat>
- <name>[Core]</name>
- <cat>
- <name>Audio</name>
- <block>vocoder_alaw_decode_bs</block>
- <block>vocoder_alaw_encode_sb</block>
- <block>vocoder_codec2_decode_ps</block>
- <block>vocoder_codec2_encode_sp</block>
- <block>vocoder_cvsd_decode_bs</block>
- <block>vocoder_cvsd_encode_sb</block>
- <block>vocoder_cvsd_decode_bf</block>
- <block>vocoder_cvsd_encode_fb</block>
- <block>vocoder_freedv_tx_ss</block>
- <block>vocoder_freedv_rx_ss</block>
- <block>vocoder_g721_decode_bs</block>
- <block>vocoder_g721_encode_sb</block>
- <block>vocoder_g723_24_decode_bs</block>
- <block>vocoder_g723_24_encode_sb</block>
- <block>vocoder_g723_40_decode_bs</block>
- <block>vocoder_g723_40_encode_sb</block>
- <block>vocoder_gsm_fr_decode_ps</block>
- <block>vocoder_gsm_fr_encode_sp</block>
- <block>vocoder_ulaw_decode_bs</block>
- <block>vocoder_ulaw_encode_sb</block>
- </cat>
-</cat>
diff --git a/gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml b/gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml
new file mode 100644
index 0000000000..0aec7ec4c1
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_codec2_decode_ps.block.yml
@@ -0,0 +1,30 @@
+id: vocoder_codec2_decode_ps
+label: CODEC2 Audio Decoder
+
+parameters:
+- id: mode
+ label: Bit rate
+ dtype: int
+ default: codec2.MODE_2400
+ options: [codec2.MODE_3200, codec2.MODE_2400, codec2.MODE_1600, codec2.MODE_1400,
+ codec2.MODE_1300, codec2.MODE_1200, codec2.MODE_700, codec2.MODE_700B]
+ option_labels: [3200 bps, 2400 bps, 1600 bps, 1400 bps, 1300 bps, 1200 bps, 700
+ bps, 700B bps]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: '${ { 0: 64, 1: 48, 2: 64, 3: 56, 4: 52, 5: 48, 6: 28, 7: 28 }[mode] }'
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: |-
+ from gnuradio import vocoder
+ from gnuradio.vocoder import codec2
+ make: vocoder.codec2_decode_ps(${mode})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_codec2_decode_ps.xml b/gr-vocoder/grc/vocoder_codec2_decode_ps.xml
deleted file mode 100644
index 8448dc83df..0000000000
--- a/gr-vocoder/grc/vocoder_codec2_decode_ps.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CODEC2 audio decoder
-###################################################
- -->
-<block>
- <name>CODEC2 Audio Decoder</name>
- <key>vocoder_codec2_decode_ps</key>
- <import>from gnuradio import vocoder</import>
- <import>from gnuradio.vocoder import codec2</import>
- <make>vocoder.codec2_decode_ps($mode)</make>
- <param>
- <name>Bit rate</name>
- <key>mode</key>
- <value>codec2.MODE_2400</value>
- <type>int</type>
- <option>
- <name>3200 bps</name>
- <key>codec2.MODE_3200</key>
- </option>
- <option>
- <name>2400 bps</name>
- <key>codec2.MODE_2400</key>
- </option>
- <option>
- <name>1600 bps</name>
- <key>codec2.MODE_1600</key>
- </option>
- <option>
- <name>1400 bps</name>
- <key>codec2.MODE_1400</key>
- </option>
- <option>
- <name>1300 bps</name>
- <key>codec2.MODE_1300</key>
- </option>
- <option>
- <name>1200 bps</name>
- <key>codec2.MODE_1200</key>
- </option>
- <option>
- <name>700 bps</name>
- <key>codec2.MODE_700</key>
- </option>
- <option>
- <name>700B bps</name>
- <key>codec2.MODE_700B</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>{ 0: 64, 1: 48, 2: 64, 3: 56, 4: 52, 5: 48, 6: 28, 7: 28 }[$mode]</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml b/gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml
new file mode 100644
index 0000000000..f03787341c
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_codec2_encode_sp.block.yml
@@ -0,0 +1,30 @@
+id: vocoder_codec2_encode_sp
+label: CODEC2 Audio Encoder
+
+parameters:
+- id: mode
+ label: Bit rate
+ dtype: int
+ default: codec2.MODE_2400
+ options: [codec2.MODE_3200, codec2.MODE_2400, codec2.MODE_1600, codec2.MODE_1400,
+ codec2.MODE_1300, codec2.MODE_1200, codec2.MODE_700, codec2.MODE_700B]
+ option_labels: [3200 bps, 2400 bps, 1600 bps, 1400 bps, 1300 bps, 1200 bps, 700
+ bps, 700B bps]
+ hide: ${ 'part' if vlen == 1 else 'none' }
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: '${ { 0: 64, 1: 48, 2: 64, 3: 56, 4: 52, 5: 48, 6: 28, 7: 28 }[mode] }'
+
+templates:
+ imports: |-
+ from gnuradio import vocoder
+ from gnuradio.vocoder import codec2
+ make: vocoder.codec2_encode_sp(${mode})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_codec2_encode_sp.xml b/gr-vocoder/grc/vocoder_codec2_encode_sp.xml
deleted file mode 100644
index f11ad443c6..0000000000
--- a/gr-vocoder/grc/vocoder_codec2_encode_sp.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CODEC2 audio encoder
-###################################################
- -->
-<block>
- <name>CODEC2 Audio Encoder</name>
- <key>vocoder_codec2_encode_sp</key>
- <import>from gnuradio import vocoder</import>
- <import>from gnuradio.vocoder import codec2</import>
- <make>vocoder.codec2_encode_sp($mode)</make>
- <param>
- <name>Bit rate</name>
- <key>mode</key>
- <value>codec2.MODE_2400</value>
- <type>int</type>
- <option>
- <name>3200 bps</name>
- <key>codec2.MODE_3200</key>
- </option>
- <option>
- <name>2400 bps</name>
- <key>codec2.MODE_2400</key>
- </option>
- <option>
- <name>1600 bps</name>
- <key>codec2.MODE_1600</key>
- </option>
- <option>
- <name>1400 bps</name>
- <key>codec2.MODE_1400</key>
- </option>
- <option>
- <name>1300 bps</name>
- <key>codec2.MODE_1300</key>
- </option>
- <option>
- <name>1200 bps</name>
- <key>codec2.MODE_1200</key>
- </option>
- <option>
- <name>700 bps</name>
- <key>codec2.MODE_700</key>
- </option>
- <option>
- <name>700B bps</name>
- <key>codec2.MODE_700B</key>
- </option>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>{ 0: 64, 1: 48, 2: 64, 3: 56, 4: 52, 5: 48, 6: 28, 7: 28 }[$mode]</vlen>
- </source>
-</block>
-
diff --git a/gr-vocoder/grc/vocoder_cvsd_decode.block.yml b/gr-vocoder/grc/vocoder_cvsd_decode.block.yml
new file mode 100644
index 0000000000..59d9a7a1be
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_cvsd_decode.block.yml
@@ -0,0 +1,26 @@
+id: vocoder_cvsd_decode_bf
+label: CVSD Decoder
+
+parameters:
+- id: resample
+ label: Resample
+ dtype: int
+ default: '8'
+- id: bw
+ label: Frac. Bandwidth
+ dtype: real
+ default: '0.5'
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: float
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.cvsd_decode_bf(${resample},${bw})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_cvsd_decode.xml b/gr-vocoder/grc/vocoder_cvsd_decode.xml
deleted file mode 100644
index ce117c5d4e..0000000000
--- a/gr-vocoder/grc/vocoder_cvsd_decode.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CVSD Encoder
-###################################################
- -->
-<block>
- <name>CVSD Decoder</name>
- <key>vocoder_cvsd_decode_bf</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.cvsd_decode_bf($resample,$bw)</make>
- <param>
- <name>Resample</name>
- <key>resample</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Frac. Bandwidth</name>
- <key>bw</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>float</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml b/gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml
new file mode 100644
index 0000000000..f7893aed29
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_cvsd_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_cvsd_decode_bs
+label: CVSD Audio Decoder (Raw Bit-Level)
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.cvsd_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_cvsd_decode_bs.xml b/gr-vocoder/grc/vocoder_cvsd_decode_bs.xml
deleted file mode 100644
index 40ddc04d43..0000000000
--- a/gr-vocoder/grc/vocoder_cvsd_decode_bs.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CVSD audio decoder
-###################################################
- -->
-<block>
- <name>CVSD Audio Decoder (Raw Bit-Level)</name>
- <key>vocoder_cvsd_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.cvsd_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
-
diff --git a/gr-vocoder/grc/vocoder_cvsd_encode.block.yml b/gr-vocoder/grc/vocoder_cvsd_encode.block.yml
new file mode 100644
index 0000000000..ab3f43c17f
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_cvsd_encode.block.yml
@@ -0,0 +1,26 @@
+id: vocoder_cvsd_encode_fb
+label: CVSD Encoder
+
+parameters:
+- id: resample
+ label: Resample
+ dtype: int
+ default: '8'
+- id: bw
+ label: Frac. Bandwidth
+ dtype: real
+ default: '0.5'
+
+inputs:
+- domain: stream
+ dtype: float
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.cvsd_encode_fb(${resample},${bw})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_cvsd_encode.xml b/gr-vocoder/grc/vocoder_cvsd_encode.xml
deleted file mode 100644
index 12e73f6025..0000000000
--- a/gr-vocoder/grc/vocoder_cvsd_encode.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CVSD Encoder
-###################################################
- -->
-<block>
- <name>CVSD Encoder</name>
- <key>vocoder_cvsd_encode_fb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.cvsd_encode_fb($resample,$bw)</make>
- <param>
- <name>Resample</name>
- <key>resample</key>
- <value>8</value>
- <type>int</type>
- </param>
- <param>
- <name>Frac. Bandwidth</name>
- <key>bw</key>
- <value>0.5</value>
- <type>real</type>
- </param>
- <sink>
- <name>in</name>
- <type>float</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml b/gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml
new file mode 100644
index 0000000000..6b2ab297bf
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_cvsd_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_cvsd_encode_sb
+label: CVSD Audio Encoder (Raw Bit-Level)
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.cvsd_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_cvsd_encode_sb.xml b/gr-vocoder/grc/vocoder_cvsd_encode_sb.xml
deleted file mode 100644
index a92387a60b..0000000000
--- a/gr-vocoder/grc/vocoder_cvsd_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## CVSD audio encoder
-###################################################
- -->
-<block>
- <name>CVSD Audio Encoder (Raw Bit-Level)</name>
- <key>vocoder_cvsd_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.cvsd_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_freedv_rx_ss.block.yml b/gr-vocoder/grc/vocoder_freedv_rx_ss.block.yml
new file mode 100644
index 0000000000..4b486d41cb
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_freedv_rx_ss.block.yml
@@ -0,0 +1,33 @@
+id: vocoder_freedv_rx_ss
+label: FreeDV demodulator
+
+parameters:
+- id: mode
+ label: Operating Mode
+ dtype: int
+ default: freedv_api.MODE_1600
+ options: [freedv_api.MODE_1600, freedv_api.MODE_700, freedv_api.MODE_700B, freedv_api.MODE_2400A,
+ freedv_api.MODE_2400B, freedv_api.MODE_800XA]
+ option_labels: ['1600', '700', 700B, 2400A, 2400B, 800XA]
+- id: squelch_thresh
+ label: Squelch Threshold
+ dtype: float
+ default: '-100.0'
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: |-
+ from gnuradio import vocoder
+ from gnuradio.vocoder import freedv_api
+ make: vocoder.freedv_rx_ss(${mode},${squelch_thresh})
+ callbacks:
+ - set_squelch_thresh(${squelch_thresh})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_freedv_rx_ss.xml b/gr-vocoder/grc/vocoder_freedv_rx_ss.xml
deleted file mode 100644
index 14e00a0979..0000000000
--- a/gr-vocoder/grc/vocoder_freedv_rx_ss.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FreeDV audio modem demodulator
-###################################################
- -->
-<block>
- <name>FreeDV demodulator</name>
- <key>vocoder_freedv_rx_ss</key>
- <import>from gnuradio import vocoder</import>
- <import>from gnuradio.vocoder import freedv_api</import>
- <make>vocoder.freedv_rx_ss($mode,$squelch_thresh)</make>
- <callback>set_squelch_thresh($squelch_thresh)</callback>
- <param>
- <name>Operating Mode</name>
- <key>mode</key>
- <value>freedv_api.MODE_1600</value>
- <type>int</type>
- <option>
- <name>1600</name>
- <key>freedv_api.MODE_1600</key>
- </option>
- <option>
- <name>700</name>
- <key>freedv_api.MODE_700</key>
- </option>
- <option>
- <name>700B</name>
- <key>freedv_api.MODE_700B</key>
- </option>
- <option>
- <name>2400A</name>
- <key>freedv_api.MODE_2400A</key>
- </option>
- <option>
- <name>2400B</name>
- <key>freedv_api.MODE_2400B</key>
- </option>
- <option>
- <name>800XA</name>
- <key>freedv_api.MODE_800XA</key>
- </option>
- </param>
- <param>
- <name>Squelch Threshold</name>
- <key>squelch_thresh</key>
- <value>-100.0</value>
- <type>float</type>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_freedv_tx_ss.block.yml b/gr-vocoder/grc/vocoder_freedv_tx_ss.block.yml
new file mode 100644
index 0000000000..6ae73dfbbb
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_freedv_tx_ss.block.yml
@@ -0,0 +1,31 @@
+id: vocoder_freedv_tx_ss
+label: FreeDV modulator
+
+parameters:
+- id: mode
+ label: Operating Mode
+ dtype: int
+ default: freedv_api.MODE_1600
+ options: [freedv_api.MODE_1600, freedv_api.MODE_700, freedv_api.MODE_700B, freedv_api.MODE_2400A,
+ freedv_api.MODE_2400B, freedv_api.MODE_800XA]
+ option_labels: ['1600', '700', 700B, 2400A, 2400B, 800XA]
+- id: txt_msg
+ label: Text Message
+ dtype: string
+ default: '''GNU Radio'''
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: |-
+ from gnuradio import vocoder
+ from gnuradio.vocoder import freedv_api
+ make: vocoder.freedv_tx_ss(${mode},${txt_msg})
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_freedv_tx_ss.xml b/gr-vocoder/grc/vocoder_freedv_tx_ss.xml
deleted file mode 100644
index 54a49b730f..0000000000
--- a/gr-vocoder/grc/vocoder_freedv_tx_ss.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## FreeDV audio modem modulator
-###################################################
- -->
-<block>
- <name>FreeDV modulator</name>
- <key>vocoder_freedv_tx_ss</key>
- <import>from gnuradio import vocoder</import>
- <import>from gnuradio.vocoder import freedv_api</import>
- <make>vocoder.freedv_tx_ss($mode,$txt_msg)</make>
- <param>
- <name>Operating Mode</name>
- <key>mode</key>
- <value>freedv_api.MODE_1600</value>
- <type>int</type>
- <option>
- <name>1600</name>
- <key>freedv_api.MODE_1600</key>
- </option>
- <option>
- <name>700</name>
- <key>freedv_api.MODE_700</key>
- </option>
- <option>
- <name>700B</name>
- <key>freedv_api.MODE_700B</key>
- </option>
- <option>
- <name>2400A</name>
- <key>freedv_api.MODE_2400A</key>
- </option>
- <option>
- <name>2400B</name>
- <key>freedv_api.MODE_2400B</key>
- </option>
- <option>
- <name>800XA</name>
- <key>freedv_api.MODE_800XA</key>
- </option>
- </param>
- <param>
- <name>Text Message</name>
- <key>txt_msg</key>
- <value>'GNU Radio'</value>
- <type>string</type>
- </param>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_g721_decode_bs.block.yml b/gr-vocoder/grc/vocoder_g721_decode_bs.block.yml
new file mode 100644
index 0000000000..8ee30dca01
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g721_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g721_decode_bs
+label: g721 Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g721_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g721_decode_bs.xml b/gr-vocoder/grc/vocoder_g721_decode_bs.xml
deleted file mode 100644
index d5c0291b7d..0000000000
--- a/gr-vocoder/grc/vocoder_g721_decode_bs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g271 audio decoder
-###################################################
- -->
-<block>
- <name>g721 Audio Decoder</name>
- <key>vocoder_g721_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g721_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_g721_encode_sb.block.yml b/gr-vocoder/grc/vocoder_g721_encode_sb.block.yml
new file mode 100644
index 0000000000..f9a60ed25b
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g721_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g721_encode_sb
+label: g721 Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g721_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g721_encode_sb.xml b/gr-vocoder/grc/vocoder_g721_encode_sb.xml
deleted file mode 100644
index f105ff8ff0..0000000000
--- a/gr-vocoder/grc/vocoder_g721_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g721 audio encoder
-###################################################
- -->
-<block>
- <name>g721 Audio Encoder</name>
- <key>vocoder_g721_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g721_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml b/gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml
new file mode 100644
index 0000000000..d16a1d3a0b
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g723_24_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g723_24_decode_bs
+label: g723_24 Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g723_24_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g723_24_decode_bs.xml b/gr-vocoder/grc/vocoder_g723_24_decode_bs.xml
deleted file mode 100644
index 939a7f91b3..0000000000
--- a/gr-vocoder/grc/vocoder_g723_24_decode_bs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g723_24 audio decoder
-###################################################
- -->
-<block>
- <name>g723_24 Audio Decoder</name>
- <key>vocoder_g723_24_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g723_24_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml b/gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml
new file mode 100644
index 0000000000..36f95b630a
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g723_24_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g723_24_encode_sb
+label: g723_24 Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g723_24_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g723_24_encode_sb.xml b/gr-vocoder/grc/vocoder_g723_24_encode_sb.xml
deleted file mode 100644
index 0e70ddedc0..0000000000
--- a/gr-vocoder/grc/vocoder_g723_24_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g723_24 audio encoder
-###################################################
- -->
-<block>
- <name>g723_24 Audio Encoder</name>
- <key>vocoder_g723_24_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g723_24_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml b/gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml
new file mode 100644
index 0000000000..e42e33d6bd
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g723_40_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g723_40_decode_bs
+label: g723_40 Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g723_40_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g723_40_decode_bs.xml b/gr-vocoder/grc/vocoder_g723_40_decode_bs.xml
deleted file mode 100644
index f3ba56e5bc..0000000000
--- a/gr-vocoder/grc/vocoder_g723_40_decode_bs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g723_40 audio decoder
-###################################################
- -->
-<block>
- <name>g723_40 Audio Decoder</name>
- <key>vocoder_g723_40_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g723_40_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml b/gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml
new file mode 100644
index 0000000000..2f58b41514
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_g723_40_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_g723_40_encode_sb
+label: g723_40 Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.g723_40_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_g723_40_encode_sb.xml b/gr-vocoder/grc/vocoder_g723_40_encode_sb.xml
deleted file mode 100644
index fbbf600ffa..0000000000
--- a/gr-vocoder/grc/vocoder_g723_40_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## g723_40 audio encoder
-###################################################
- -->
-<block>
- <name>g723_40 Audio Encoder</name>
- <key>vocoder_g723_40_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.g723_40_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml
new file mode 100644
index 0000000000..47ff9621ba
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.block.yml
@@ -0,0 +1,17 @@
+id: vocoder_gsm_fr_decode_ps
+label: GSM full-rate Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+ vlen: 33
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.gsm_fr_decode_ps()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml b/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml
deleted file mode 100644
index bef07fb822..0000000000
--- a/gr-vocoder/grc/vocoder_gsm_fr_decode_ps.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## GSM full-rate audio decoder
-###################################################
- -->
-<block>
- <name>GSM full-rate Audio Decoder</name>
- <key>vocoder_gsm_fr_decode_ps</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.gsm_fr_decode_ps()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- <vlen>33</vlen>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml
new file mode 100644
index 0000000000..4fcd2dc6d0
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.block.yml
@@ -0,0 +1,17 @@
+id: vocoder_gsm_fr_encode_sp
+label: GSM full-rate Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+ vlen: 33
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.gsm_fr_encode_sp()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml b/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml
deleted file mode 100644
index 4c3eab71a8..0000000000
--- a/gr-vocoder/grc/vocoder_gsm_fr_encode_sp.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## GSM full-rate audio encoder
-###################################################
- -->
-<block>
- <name>GSM full-rate Audio Encoder</name>
- <key>vocoder_gsm_fr_encode_sp</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.gsm_fr_encode_sp()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- <vlen>33</vlen>
- </source>
-</block>
-
-
diff --git a/gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml b/gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml
new file mode 100644
index 0000000000..384036ee53
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_ulaw_decode_bs.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_ulaw_decode_bs
+label: ulaw Audio Decoder
+
+inputs:
+- domain: stream
+ dtype: byte
+
+outputs:
+- domain: stream
+ dtype: short
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.ulaw_decode_bs()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_ulaw_decode_bs.xml b/gr-vocoder/grc/vocoder_ulaw_decode_bs.xml
deleted file mode 100644
index ca3c535c18..0000000000
--- a/gr-vocoder/grc/vocoder_ulaw_decode_bs.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## Ulaw audio decoder
-###################################################
- -->
-<block>
- <name>ulaw Audio Decoder</name>
- <key>vocoder_ulaw_decode_bs</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.ulaw_decode_bs()</make>
- <sink>
- <name>in</name>
- <type>byte</type>
- </sink>
- <source>
- <name>out</name>
- <type>short</type>
- </source>
-</block>
diff --git a/gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml b/gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml
new file mode 100644
index 0000000000..024384d625
--- /dev/null
+++ b/gr-vocoder/grc/vocoder_ulaw_encode_sb.block.yml
@@ -0,0 +1,16 @@
+id: vocoder_ulaw_encode_sb
+label: ulaw Audio Encoder
+
+inputs:
+- domain: stream
+ dtype: short
+
+outputs:
+- domain: stream
+ dtype: byte
+
+templates:
+ imports: from gnuradio import vocoder
+ make: vocoder.ulaw_encode_sb()
+
+file_format: 1
diff --git a/gr-vocoder/grc/vocoder_ulaw_encode_sb.xml b/gr-vocoder/grc/vocoder_ulaw_encode_sb.xml
deleted file mode 100644
index 8e76d8d083..0000000000
--- a/gr-vocoder/grc/vocoder_ulaw_encode_sb.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<!--
-###################################################
-## ulaw audio encoder
-###################################################
- -->
-<block>
- <name>ulaw Audio Encoder</name>
- <key>vocoder_ulaw_encode_sb</key>
- <import>from gnuradio import vocoder</import>
- <make>vocoder.ulaw_encode_sb()</make>
- <sink>
- <name>in</name>
- <type>short</type>
- </sink>
- <source>
- <name>out</name>
- <type>byte</type>
- </source>
-</block>
-
-
diff --git a/gr-zeromq/grc/CMakeLists.txt b/gr-zeromq/grc/CMakeLists.txt
index 7807bcfe9d..50aa1d7d52 100644
--- a/gr-zeromq/grc/CMakeLists.txt
+++ b/gr-zeromq/grc/CMakeLists.txt
@@ -18,18 +18,18 @@
# Boston, MA 02110-1301, USA.
install(FILES
- zeromq_pub_sink.xml
- zeromq_pub_msg_sink.xml
- zeromq_sub_source.xml
- zeromq_sub_msg_source.xml
- zeromq_push_sink.xml
- zeromq_push_msg_sink.xml
- zeromq_pull_source.xml
- zeromq_pull_msg_source.xml
- zeromq_rep_sink.xml
- zeromq_rep_msg_sink.xml
- zeromq_req_source.xml
- zeromq_req_msg_source.xml
+ zeromq_pub_sink.block.yml
+ zeromq_pub_msg_sink.block.yml
+ zeromq_sub_source.block.yml
+ zeromq_sub_msg_source.block.yml
+ zeromq_push_sink.block.yml
+ zeromq_push_msg_sink.block.yml
+ zeromq_pull_source.block.yml
+ zeromq_pull_msg_source.block.yml
+ zeromq_rep_sink.block.yml
+ zeromq_rep_msg_sink.block.yml
+ zeromq_req_source.block.yml
+ zeromq_req_msg_source.block.yml
DESTINATION share/gnuradio/grc/blocks
)
diff --git a/gr-zeromq/grc/zeromq_pub_msg_sink.block.yml b/gr-zeromq/grc/zeromq_pub_msg_sink.block.yml
new file mode 100644
index 0000000000..ee4e9739df
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_pub_msg_sink.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_pub_msg_sink
+label: ZMQ PUB Message Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.pub_msg_sink(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_pub_msg_sink.xml b/gr-zeromq/grc/zeromq_pub_msg_sink.xml
deleted file mode 100644
index 245ac37180..0000000000
--- a/gr-zeromq/grc/zeromq_pub_msg_sink.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PUB Message Sink</name>
- <key>zeromq_pub_msg_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.pub_msg_sink($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_pub_sink.block.yml b/gr-zeromq/grc/zeromq_pub_sink.block.yml
new file mode 100644
index 0000000000..d8e5983d20
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_pub_sink.block.yml
@@ -0,0 +1,48 @@
+id: zeromq_pub_sink
+label: ZMQ PUB Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.pub_sink(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_pub_sink.xml b/gr-zeromq/grc/zeromq_pub_sink.xml
deleted file mode 100644
index af130eeb21..0000000000
--- a/gr-zeromq/grc/zeromq_pub_sink.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PUB Sink</name>
- <key>zeromq_pub_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.pub_sink($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_pull_msg_source.block.yml b/gr-zeromq/grc/zeromq_pull_msg_source.block.yml
new file mode 100644
index 0000000000..00be80c2c2
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_pull_msg_source.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_pull_msg_source
+label: ZMQ PULL Message Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.pull_msg_source(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_pull_msg_source.xml b/gr-zeromq/grc/zeromq_pull_msg_source.xml
deleted file mode 100644
index c6004d987e..0000000000
--- a/gr-zeromq/grc/zeromq_pull_msg_source.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PULL Message Source</name>
- <key>zeromq_pull_msg_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.pull_msg_source($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_pull_source.block.yml b/gr-zeromq/grc/zeromq_pull_source.block.yml
new file mode 100644
index 0000000000..a318b568f1
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_pull_source.block.yml
@@ -0,0 +1,48 @@
+id: zeromq_pull_source
+label: ZMQ PULL Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.pull_source(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_pull_source.xml b/gr-zeromq/grc/zeromq_pull_source.xml
deleted file mode 100644
index f2c8b61d86..0000000000
--- a/gr-zeromq/grc/zeromq_pull_source.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PULL Source</name>
- <key>zeromq_pull_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.pull_source($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_push_msg_sink.block.yml b/gr-zeromq/grc/zeromq_push_msg_sink.block.yml
new file mode 100644
index 0000000000..d1c9d8f82c
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_push_msg_sink.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_push_msg_sink
+label: ZMQ PUSH Message Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.push_msg_sink(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_push_msg_sink.xml b/gr-zeromq/grc/zeromq_push_msg_sink.xml
deleted file mode 100644
index 283a250064..0000000000
--- a/gr-zeromq/grc/zeromq_push_msg_sink.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PUSH Message Sink</name>
- <key>zeromq_push_msg_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.push_msg_sink($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_push_sink.block.yml b/gr-zeromq/grc/zeromq_push_sink.block.yml
new file mode 100644
index 0000000000..63b9d2497c
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_push_sink.block.yml
@@ -0,0 +1,48 @@
+id: zeromq_push_sink
+label: ZMQ PUSH Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.push_sink(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_push_sink.xml b/gr-zeromq/grc/zeromq_push_sink.xml
deleted file mode 100644
index 8277c02c22..0000000000
--- a/gr-zeromq/grc/zeromq_push_sink.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ PUSH Sink</name>
- <key>zeromq_push_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.push_sink($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_rep_msg_sink.block.yml b/gr-zeromq/grc/zeromq_rep_msg_sink.block.yml
new file mode 100644
index 0000000000..d4732a705d
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_rep_msg_sink.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_rep_msg_sink
+label: ZMQ REP Message Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+inputs:
+- domain: message
+ id: in
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.rep_msg_sink(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_rep_msg_sink.xml b/gr-zeromq/grc/zeromq_rep_msg_sink.xml
deleted file mode 100644
index 37515b39bc..0000000000
--- a/gr-zeromq/grc/zeromq_rep_msg_sink.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ REP Message Sink</name>
- <key>zeromq_rep_msg_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.rep_msg_sink($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <sink>
- <name>in</name>
- <type>message</type>
- <optional>1</optional>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_rep_sink.block.yml b/gr-zeromq/grc/zeromq_rep_sink.block.yml
new file mode 100644
index 0000000000..fbc27fcf0d
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_rep_sink.block.yml
@@ -0,0 +1,49 @@
+id: zeromq_rep_sink
+label: ZMQ REP Sink
+category: '[Core]/ZeroMQ Interfaces'
+
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+inputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.rep_sink(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_rep_sink.xml b/gr-zeromq/grc/zeromq_rep_sink.xml
deleted file mode 100644
index 17c824156c..0000000000
--- a/gr-zeromq/grc/zeromq_rep_sink.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ REP Sink</name>
- <key>zeromq_rep_sink</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.rep_sink($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <sink>
- <name>in</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </sink>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_req_msg_source.block.yml b/gr-zeromq/grc/zeromq_req_msg_source.block.yml
new file mode 100644
index 0000000000..81cefd573a
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_req_msg_source.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_req_msg_source
+label: ZMQ REQ Message Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.req_msg_source(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_req_msg_source.xml b/gr-zeromq/grc/zeromq_req_msg_source.xml
deleted file mode 100644
index ae34c30dd0..0000000000
--- a/gr-zeromq/grc/zeromq_req_msg_source.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ REQ Message Source</name>
- <key>zeromq_req_msg_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.req_msg_source($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_req_source.block.yml b/gr-zeromq/grc/zeromq_req_source.block.yml
new file mode 100644
index 0000000000..f534e106a9
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_req_source.block.yml
@@ -0,0 +1,48 @@
+id: zeromq_req_source
+label: ZMQ REQ Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.req_source(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_req_source.xml b/gr-zeromq/grc/zeromq_req_source.xml
deleted file mode 100644
index 0fc1aa1488..0000000000
--- a/gr-zeromq/grc/zeromq_req_source.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ REQ Source</name>
- <key>zeromq_req_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.req_source($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_sub_msg_source.block.yml b/gr-zeromq/grc/zeromq_sub_msg_source.block.yml
new file mode 100644
index 0000000000..a9202d9480
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_sub_msg_source.block.yml
@@ -0,0 +1,23 @@
+id: zeromq_sub_msg_source
+label: ZMQ SUB Message Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+
+outputs:
+- domain: message
+ id: out
+ optional: true
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.sub_msg_source(${address}, ${timeout})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_sub_msg_source.xml b/gr-zeromq/grc/zeromq_sub_msg_source.xml
deleted file mode 100644
index 475537f5fe..0000000000
--- a/gr-zeromq/grc/zeromq_sub_msg_source.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ SUB Message Source</name>
- <key>zeromq_sub_msg_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.sub_msg_source($address, $timeout)</make>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <source>
- <name>out</name>
- <type>message</type>
- <optional>1</optional>
- </source>
-
-</block>
diff --git a/gr-zeromq/grc/zeromq_sub_source.block.yml b/gr-zeromq/grc/zeromq_sub_source.block.yml
new file mode 100644
index 0000000000..7235d480f4
--- /dev/null
+++ b/gr-zeromq/grc/zeromq_sub_source.block.yml
@@ -0,0 +1,48 @@
+id: zeromq_sub_source
+label: ZMQ SUB Source
+category: '[Core]/ZeroMQ Interfaces'
+
+parameters:
+- id: type
+ label: IO Type
+ dtype: enum
+ options: [complex, float, int, short, byte]
+ option_attributes:
+ itemsize: [gr.sizeof_gr_complex, gr.sizeof_float, gr.sizeof_int, gr.sizeof_short,
+ gr.sizeof_char]
+ hide: part
+- id: vlen
+ label: Vec Length
+ dtype: int
+ default: '1'
+ hide: ${ 'part' if vlen == 1 else 'none' }
+- id: address
+ label: Address
+ dtype: string
+- id: timeout
+ label: Timeout (msec)
+ dtype: float
+ default: '100'
+- id: pass_tags
+ label: Pass Tags
+ dtype: enum
+ default: 'False'
+ options: ['True', 'False']
+ option_labels: ['Yes', 'No']
+- id: hwm
+ label: High Watermark
+ dtype: int
+ default: '-1'
+ hide: ${ ('part' if hwm == -1 else 'none') }
+
+outputs:
+- domain: stream
+ dtype: ${ type }
+ vlen: ${ vlen }
+
+templates:
+ imports: from gnuradio import zeromq
+ make: zeromq.sub_source(${type.itemsize}, ${vlen}, ${address}, ${timeout}, ${pass_tags},
+ ${hwm})
+
+file_format: 1
diff --git a/gr-zeromq/grc/zeromq_sub_source.xml b/gr-zeromq/grc/zeromq_sub_source.xml
deleted file mode 100644
index 31e6170c6a..0000000000
--- a/gr-zeromq/grc/zeromq_sub_source.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0"?>
-<block>
- <name>ZMQ SUB Source</name>
- <key>zeromq_sub_source</key>
- <category>[Core]/ZeroMQ Interfaces</category>
- <import>from gnuradio import zeromq</import>
- <make>zeromq.sub_source($type.itemsize, $vlen, $address, $timeout, $pass_tags, $hwm)</make>
-
- <param>
- <name>IO Type</name>
- <key>type</key>
- <type>enum</type>
- <option>
- <name>Complex</name>
- <key>complex</key>
- <opt>itemsize:gr.sizeof_gr_complex</opt>
- </option>
- <option>
- <name>Float</name>
- <key>float</key>
- <opt>itemsize:gr.sizeof_float</opt>
- </option>
- <option>
- <name>Int</name>
- <key>int</key>
- <opt>itemsize:gr.sizeof_int</opt>
- </option>
- <option>
- <name>Short</name>
- <key>short</key>
- <opt>itemsize:gr.sizeof_short</opt>
- </option>
- <option>
- <name>Byte</name>
- <key>byte</key>
- <opt>itemsize:gr.sizeof_char</opt>
- </option>
- </param>
-
- <param>
- <name>Vec Length</name>
- <key>vlen</key>
- <value>1</value>
- <type>int</type>
- </param>
-
- <param>
- <name>Address</name>
- <key>address</key>
- <type>string</type>
- </param>
-
- <param>
- <name>Timeout (msec)</name>
- <key>timeout</key>
- <value>100</value>
- <type>float</type>
- </param>
-
- <param>
- <name>Pass Tags</name>
- <key>pass_tags</key>
- <value>False</value>
- <type>enum</type>
- <option>
- <name>Yes</name>
- <key>True</key>
- </option>
- <option>
- <name>No</name>
- <key>False</key>
- </option>
- </param>
-
- <param>
- <name>High Watermark</name>
- <key>hwm</key>
- <value>-1</value>
- <type>int</type>
- <hide>#if $hwm() == -1 then 'part' else 'none'#</hide>
- </param>
-
- <source>
- <name>out</name>
- <type>$type</type>
- <vlen>$vlen</vlen>
- </source>
-
-</block>