Change in gr-gsm[master]: Migrate grc blocks from xml to yaml

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

ptrkrysik gerrit-no-reply at lists.osmocom.org
Mon May 3 10:24:37 UTC 2021


Hello vvvelichkov,

I'd like you to do a code review. Please visit

    https://gerrit.osmocom.org/c/gr-gsm/+/24061

to review the following change.


Change subject: Migrate grc blocks from xml to yaml
......................................................................

Migrate grc blocks from xml to yaml

Convert the blocks using cmdline_converter.py script from
https://gist.githubusercontent.com/haakov/4228ff6a14486641add538483093e86b/raw/c861a840e31182ace2e74f5425e356cb4f8b183a/cmdline_converter.py

Change-Id: Iee5c611a2e100bd2fdf487611a867dc937d8c292
---
M grc/CMakeLists.txt
M grc/decoding/CMakeLists.txt
A grc/decoding/gsm_control_channels_decoder.block.yml
D grc/decoding/gsm_control_channels_decoder.xml
A grc/decoding/gsm_tch_f_decoder.block.yml
D grc/decoding/gsm_tch_f_decoder.xml
A grc/decoding/gsm_tch_h_decoder.block.yml
D grc/decoding/gsm_tch_h_decoder.xml
M grc/decryption/CMakeLists.txt
A grc/decryption/gsm_decryption.block.yml
D grc/decryption/gsm_decryption.xml
M grc/demapping/CMakeLists.txt
A grc/demapping/gsm_bcch_ccch_demapper.block.yml
D grc/demapping/gsm_bcch_ccch_demapper.xml
A grc/demapping/gsm_bcch_ccch_sdcch4_demapper.block.yml
D grc/demapping/gsm_bcch_ccch_sdcch4_demapper.xml
A grc/demapping/gsm_sdcch8_demapper.block.yml
D grc/demapping/gsm_sdcch8_demapper.xml
A grc/demapping/gsm_tch_f_chans_demapper.block.yml
D grc/demapping/gsm_tch_f_chans_demapper.xml
A grc/demapping/gsm_tch_h_chans_demapper.block.yml
D grc/demapping/gsm_tch_h_chans_demapper.xml
A grc/demapping/gsm_universal_ctrl_chans_demapper.block.yml
D grc/demapping/gsm_universal_ctrl_chans_demapper.xml
M grc/flow_control/CMakeLists.txt
A grc/flow_control/gsm_burst_fnr_filter.block.yml
D grc/flow_control/gsm_burst_fnr_filter.xml
A grc/flow_control/gsm_burst_sdcch_subslot_filter.block.yml
D grc/flow_control/gsm_burst_sdcch_subslot_filter.xml
A grc/flow_control/gsm_burst_sdcch_subslot_splitter.block.yml
D grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml
A grc/flow_control/gsm_burst_timeslot_filter.block.yml
D grc/flow_control/gsm_burst_timeslot_filter.xml
A grc/flow_control/gsm_burst_timeslot_splitter.block.yml
D grc/flow_control/gsm_burst_timeslot_splitter.xml
A grc/flow_control/gsm_burst_type_filter.block.yml
D grc/flow_control/gsm_burst_type_filter.xml
A grc/flow_control/gsm_dummy_burst_filter.block.yml
D grc/flow_control/gsm_dummy_burst_filter.xml
A grc/flow_control/gsm_uplink_downlink_splitter.block.yml
D grc/flow_control/gsm_uplink_downlink_splitter.xml
A grc/gsm.tree.yml
D grc/gsm_block_tree.xml
M grc/misc_utils/CMakeLists.txt
A grc/misc_utils/gsm_burst_file_sink.block.yml
D grc/misc_utils/gsm_burst_file_sink.xml
A grc/misc_utils/gsm_burst_file_source.block.yml
D grc/misc_utils/gsm_burst_file_source.xml
A grc/misc_utils/gsm_burst_to_fn_time.block.yml
D grc/misc_utils/gsm_burst_to_fn_time.xml
A grc/misc_utils/gsm_bursts_printer.block.yml
D grc/misc_utils/gsm_bursts_printer.xml
A grc/misc_utils/gsm_clock_offset_corrector_tagged.block.yml
D grc/misc_utils/gsm_clock_offset_corrector_tagged.xml
A grc/misc_utils/gsm_collect_system_info.block.yml
D grc/misc_utils/gsm_collect_system_info.xml
A grc/misc_utils/gsm_controlled_fractional_resampler_cc.block.yml
D grc/misc_utils/gsm_controlled_fractional_resampler_cc.xml
A grc/misc_utils/gsm_controlled_rotator_cc.block.yml
D grc/misc_utils/gsm_controlled_rotator_cc.xml
A grc/misc_utils/gsm_extract_assignment_cmd.block.yml
D grc/misc_utils/gsm_extract_assignment_cmd.xml
A grc/misc_utils/gsm_extract_cmc.block.yml
D grc/misc_utils/gsm_extract_cmc.xml
A grc/misc_utils/gsm_extract_immediate_assignment.block.yml
D grc/misc_utils/gsm_extract_immediate_assignment.xml
A grc/misc_utils/gsm_extract_system_info.block.yml
D grc/misc_utils/gsm_extract_system_info.xml
A grc/misc_utils/gsm_message_file_sink.block.yml
D grc/misc_utils/gsm_message_file_sink.xml
A grc/misc_utils/gsm_message_file_source.block.yml
D grc/misc_utils/gsm_message_file_source.xml
A grc/misc_utils/gsm_message_printer.block.yml
D grc/misc_utils/gsm_message_printer.xml
A grc/misc_utils/gsm_msg_to_tag.block.yml
D grc/misc_utils/gsm_msg_to_tag.xml
A grc/misc_utils/gsm_tmsi_dumper.block.yml
D grc/misc_utils/gsm_tmsi_dumper.xml
M grc/qa_utils/CMakeLists.txt
A grc/qa_utils/gsm_burst_sink.block.yml
D grc/qa_utils/gsm_burst_sink.xml
A grc/qa_utils/gsm_burst_source.block.yml
D grc/qa_utils/gsm_burst_source.xml
A grc/qa_utils/gsm_message_sink.block.yml
D grc/qa_utils/gsm_message_sink.xml
A grc/qa_utils/gsm_message_source.block.yml
D grc/qa_utils/gsm_message_source.xml
M grc/receiver/CMakeLists.txt
A grc/receiver/gsm_clock_offset_control.block.yml
D grc/receiver/gsm_clock_offset_control.xml
A grc/receiver/gsm_cx_channel_hopper.block.yml
D grc/receiver/gsm_cx_channel_hopper.xml
A grc/receiver/gsm_fcch_burst_tagger.block.yml
D grc/receiver/gsm_fcch_burst_tagger.xml
A grc/receiver/gsm_fcch_detector.block.yml
D grc/receiver/gsm_fcch_detector.xml
A grc/receiver/gsm_input.block.yml
D grc/receiver/gsm_input.xml
A grc/receiver/gsm_receiver.block.yml
D grc/receiver/gsm_receiver.xml
A grc/receiver/gsm_receiver_with_uplink.block.yml
D grc/receiver/gsm_receiver_with_uplink.xml
A grc/receiver/gsm_sch_detector.block.yml
D grc/receiver/gsm_sch_detector.xml
M grc/transmitter/CMakeLists.txt
A grc/transmitter/gsm_gen_test_ab.block.yml
D grc/transmitter/gsm_gen_test_ab.xml
A grc/transmitter/gsm_gmsk_mod.block.yml
D grc/transmitter/gsm_gmsk_mod.xml
A grc/transmitter/gsm_preprocess_tx_burst.block.yml
D grc/transmitter/gsm_preprocess_tx_burst.xml
A grc/transmitter/gsm_txtime_bursts_tagger.block.yml
D grc/transmitter/gsm_txtime_bursts_tagger.xml
A grc/transmitter/gsm_txtime_setter.block.yml
D grc/transmitter/gsm_txtime_setter.xml
M grc/trx/CMakeLists.txt
A grc/trx/gsm_trx_burst_if.block.yml
D grc/trx/gsm_trx_burst_if.xml
118 files changed, 1,888 insertions(+), 2,154 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/gr-gsm refs/changes/61/24061/1

diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index ae06065..deee6e0 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -26,5 +26,5 @@
 add_subdirectory(transmitter)
 add_subdirectory(trx)
 install(FILES
-    gsm_block_tree.xml DESTINATION share/gnuradio/grc/blocks
+    gsm.tree.yml DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/decoding/CMakeLists.txt b/grc/decoding/CMakeLists.txt
index d488f21..63a2ee6 100644
--- a/grc/decoding/CMakeLists.txt
+++ b/grc/decoding/CMakeLists.txt
@@ -18,8 +18,8 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_control_channels_decoder.xml 
-    gsm_tch_f_decoder.xml
-    gsm_tch_h_decoder.xml
+    gsm_control_channels_decoder.block.yml
+    gsm_tch_f_decoder.block.yml
+    gsm_tch_h_decoder.block.yml
     DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/decoding/gsm_control_channels_decoder.block.yml b/grc/decoding/gsm_control_channels_decoder.block.yml
new file mode 100644
index 0000000..df287a3
--- /dev/null
+++ b/grc/decoding/gsm_control_channels_decoder.block.yml
@@ -0,0 +1,19 @@
+# auto-generated by grc.converter
+
+id: gsm_control_channels_decoder
+label: Control channels decoder
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: msgs
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.control_channels_decoder()
+
+file_format: 1
diff --git a/grc/decoding/gsm_control_channels_decoder.xml b/grc/decoding/gsm_control_channels_decoder.xml
deleted file mode 100644
index 5884393..0000000
--- a/grc/decoding/gsm_control_channels_decoder.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Control channels decoder</name>
-  <key>gsm_control_channels_decoder</key>
-  <import>import grgsm</import>
-  <make>grgsm.control_channels_decoder()</make>
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>msgs</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/decoding/gsm_tch_f_decoder.block.yml b/grc/decoding/gsm_tch_f_decoder.block.yml
new file mode 100644
index 0000000..1205448
--- /dev/null
+++ b/grc/decoding/gsm_tch_f_decoder.block.yml
@@ -0,0 +1,41 @@
+# auto-generated by grc.converter
+
+id: gsm_tch_f_decoder
+label: TCH/F decoder
+
+parameters:
+-   id: mode
+    label: TCH coding mode
+    dtype: enum
+    options: [grgsm.TCH_FS, grgsm.TCH_EFR, grgsm.TCH_AFS12_2, grgsm.TCH_AFS10_2, grgsm.TCH_AFS7_95,
+        grgsm.TCH_AFS7_4, grgsm.TCH_AFS6_7, grgsm.TCH_AFS5_9, grgsm.TCH_AFS5_15, grgsm.TCH_AFS4_75]
+    option_labels: [GSM-FR, GSM-EFR, GSM-AMR 12.2, GSM-AMR 10.2, GSM-AMR 7.95, GSM-AMR
+            7.4, GSM-AMR 6.7, GSM-AMR 5.9, GSM-AMR 5.15, GSM-AMR 4.75]
+-   id: boundary_check
+    label: Voice boundary detection
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: msgs
+    optional: true
+-   domain: message
+    id: voice
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.tch_f_decoder(${mode}, ${boundary_check})
+
+documentation: "If \"Voice boundary detection\" is enabled, then only bursts are decoded\
+    \ as voice where\n\n- the framenumber is greater then the framenumber of a received\
+    \ \"Connect\" or \"Connect Acknowlegde\" message, and \n- the framenumber is less\
+    \ then the framenumber of a \"Release\" message"
+
+file_format: 1
diff --git a/grc/decoding/gsm_tch_f_decoder.xml b/grc/decoding/gsm_tch_f_decoder.xml
deleted file mode 100644
index 3d1152e..0000000
--- a/grc/decoding/gsm_tch_f_decoder.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TCH/F decoder</name>
-  <key>gsm_tch_f_decoder</key>
-  <import>import grgsm</import>
-  <make>grgsm.tch_f_decoder($mode, $boundary_check)</make>
-
-  <param>
-    <name>TCH coding mode</name>
-    <key>mode</key>
-    <type>enum</type>
-    <option>
-      <name>GSM-FR</name>
-      <key>grgsm.TCH_FS</key>
-    </option>
-    <option>
-      <name>GSM-EFR</name>
-      <key>grgsm.TCH_EFR</key>
-    </option>
-    <option>
-      <name>GSM-AMR 12.2</name>
-      <key>grgsm.TCH_AFS12_2</key>
-    </option>
-    <option>
-      <name>GSM-AMR 10.2</name>
-      <key>grgsm.TCH_AFS10_2</key>
-    </option>
-    <option>
-      <name>GSM-AMR 7.95</name>
-      <key>grgsm.TCH_AFS7_95</key>
-    </option>
-    <option>
-      <name>GSM-AMR 7.4</name>
-      <key>grgsm.TCH_AFS7_4</key>
-    </option>
-    <option>
-      <name>GSM-AMR 6.7</name>
-      <key>grgsm.TCH_AFS6_7</key>
-    </option>
-    <option>
-      <name>GSM-AMR 5.9</name>
-      <key>grgsm.TCH_AFS5_9</key>
-    </option>
-    <option>
-      <name>GSM-AMR 5.15</name>
-      <key>grgsm.TCH_AFS5_15</key>
-    </option>
-    <option>
-      <name>GSM-AMR 4.75</name>
-      <key>grgsm.TCH_AFS4_75</key>
-    </option>
-  </param>
-  <param>
-    <name>Voice boundary detection</name>
-    <key>boundary_check</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>msgs</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <source>
-    <name>voice</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-    
-  <doc>
-If "Voice boundary detection" is enabled, then only bursts are decoded as voice where
-
-- the framenumber is greater then the framenumber of a received "Connect" or "Connect Acknowlegde" message, and 
-- the framenumber is less then the framenumber of a "Release" message 
-  </doc>
-  
-</block>
diff --git a/grc/decoding/gsm_tch_h_decoder.block.yml b/grc/decoding/gsm_tch_h_decoder.block.yml
new file mode 100644
index 0000000..8d26a0b
--- /dev/null
+++ b/grc/decoding/gsm_tch_h_decoder.block.yml
@@ -0,0 +1,51 @@
+# auto-generated by grc.converter
+
+id: gsm_tch_h_decoder
+label: TCH/H decoder
+
+parameters:
+-   id: sub_channel
+    label: Sub-channel number
+    dtype: int
+    default: '0'
+    options: ['0', '1']
+    hide: none
+-   id: multi_rate
+    label: MultiRate configuration
+    dtype: string
+-   id: boundary_check
+    label: Voice boundary detection
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: msgs
+    optional: true
+-   domain: message
+    id: voice
+    optional: true
+asserts:
+- ${ sub_channel > -1 and sub_channel < 2 }
+
+templates:
+    imports: import grgsm
+    make: grgsm.tch_h_decoder(${sub_channel}, ${multi_rate}, ${boundary_check})
+
+documentation: |-
+    The MultiRate configuration string should contains the hex string from the
+    MultiRate configuration element from the Assignment Command message.
+    Example: 28111a40.
+    See 3GPP TS 44.018 - 10.5.2.21aa MultiRate configuratio
+
+    If "Voice boundary detection" is enabled, then only bursts are decoded as voice where
+
+    - the framenumber is greater then the framenumber of a received "Connect" or "Connect Acknowlegde" message, and
+    - the framenumber is less then the framenumber of a "Release" message
+
+file_format: 1
diff --git a/grc/decoding/gsm_tch_h_decoder.xml b/grc/decoding/gsm_tch_h_decoder.xml
deleted file mode 100644
index 3936336..0000000
--- a/grc/decoding/gsm_tch_h_decoder.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TCH/H decoder</name>
-  <key>gsm_tch_h_decoder</key>
-  <import>import grgsm</import>
-  <make>grgsm.tch_h_decoder($sub_channel, $multi_rate, $boundary_check)</make>
-
-  <param>
-    <name>Sub-channel number</name>
-    <key>sub_channel</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>none</hide>
-    <option>
-      <name>0</name>
-      <key>0</key>
-    </option>
-    <option>
-      <name>1</name>
-      <key>1</key>
-    </option>
-  </param>
-  <param>
-    <name>MultiRate configuration</name>
-    <key>multi_rate</key>
-    <type>string</type>
-  </param>
-  <param>
-    <name>Voice boundary detection</name>
-    <key>boundary_check</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <check>$sub_channel() > -1 and $sub_channel() < 2</check>
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>msgs</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <source>
-    <name>voice</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-The MultiRate configuration string should contains the hex string from the
-MultiRate configuration element from the Assignment Command message.
-Example: 28111a40.
-See 3GPP TS 44.018 - 10.5.2.21aa MultiRate configuratio
-
-If "Voice boundary detection" is enabled, then only bursts are decoded as voice where
-
-- the framenumber is greater then the framenumber of a received "Connect" or "Connect Acknowlegde" message, and
-- the framenumber is less then the framenumber of a "Release" message
-  </doc>
-
-</block>
diff --git a/grc/decryption/CMakeLists.txt b/grc/decryption/CMakeLists.txt
index 29d86f4..e71e466 100644
--- a/grc/decryption/CMakeLists.txt
+++ b/grc/decryption/CMakeLists.txt
@@ -18,5 +18,6 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_decryption.xml DESTINATION share/gnuradio/grc/blocks
+    gsm_decryption.block.yml
+    DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/decryption/gsm_decryption.block.yml b/grc/decryption/gsm_decryption.block.yml
new file mode 100644
index 0000000..8260907
--- /dev/null
+++ b/grc/decryption/gsm_decryption.block.yml
@@ -0,0 +1,31 @@
+# auto-generated by grc.converter
+
+id: gsm_decryption
+label: Decryption
+
+parameters:
+-   id: k_c
+    label: Kc session key
+    dtype: int_vector
+    default: '[0,0,0,0,0,0,0,0]'
+-   id: a5_version
+    label: A5 version
+    dtype: int
+    default: '1'
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: bursts
+asserts:
+- ${ a5_version > 0 }
+- ${ a5_version < 5 }
+
+templates:
+    imports: import grgsm
+    make: grgsm.decryption(${k_c}, ${a5_version})
+
+file_format: 1
diff --git a/grc/decryption/gsm_decryption.xml b/grc/decryption/gsm_decryption.xml
deleted file mode 100644
index 4f3de22..0000000
--- a/grc/decryption/gsm_decryption.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Decryption</name>
-  <key>gsm_decryption</key>
-  <import>import grgsm</import>
-  <make>grgsm.decryption($k_c, $a5_version)</make>
-
-  <param>
-    <name>Kc session key</name>
-    <key>k_c</key>
-    <value>[0,0,0,0,0,0,0,0]</value>
-    <type>int_vector</type>
-  </param>
-
-  <param>
-    <name>A5 version</name>
-    <key>a5_version</key>
-    <value>1</value>
-    <type>int</type>
-  </param>
-
-  <check>$a5_version > 0</check>
-  <check>$a5_version < 5</check>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-  </source>
-
-</block>
diff --git a/grc/demapping/CMakeLists.txt b/grc/demapping/CMakeLists.txt
index 4aacfff..2572235 100644
--- a/grc/demapping/CMakeLists.txt
+++ b/grc/demapping/CMakeLists.txt
@@ -18,11 +18,11 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_universal_ctrl_chans_demapper.xml
-    gsm_bcch_ccch_demapper.xml
-    gsm_bcch_ccch_sdcch4_demapper.xml
-    gsm_sdcch8_demapper.xml
-    gsm_tch_f_chans_demapper.xml
-    gsm_tch_h_chans_demapper.xml
+    gsm_universal_ctrl_chans_demapper.block.yml
+    gsm_bcch_ccch_demapper.block.yml
+    gsm_bcch_ccch_sdcch4_demapper.block.yml
+    gsm_sdcch8_demapper.block.yml
+    gsm_tch_f_chans_demapper.block.yml
+    gsm_tch_h_chans_demapper.block.yml
     DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/demapping/gsm_bcch_ccch_demapper.block.yml b/grc/demapping/gsm_bcch_ccch_demapper.block.yml
new file mode 100644
index 0000000..21e87d8
--- /dev/null
+++ b/grc/demapping/gsm_bcch_ccch_demapper.block.yml
@@ -0,0 +1,35 @@
+# auto-generated by grc.converter
+
+id: gsm_bcch_ccch_demapper
+label: BCCH + CCCH Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: timeslot_nr
+    dtype: raw
+    default: '0'
+
+inputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.gsm_bcch_ccch_demapper(
+            timeslot_nr=${timeslot_nr},
+        )
+    callbacks:
+    - set_timeslot_nr(${timeslot_nr})
+
+documentation: |-
+    Piotr Krysik
+    Demapper for BCCH + CCCH control channels. This corresponds to channel combination iv specified in GSM 05.02, section 6.4
+
+file_format: 1
diff --git a/grc/demapping/gsm_bcch_ccch_demapper.xml b/grc/demapping/gsm_bcch_ccch_demapper.xml
deleted file mode 100644
index 239dcc9..0000000
--- a/grc/demapping/gsm_bcch_ccch_demapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<block>
-  <name>BCCH + CCCH Demapper</name>
-  <key>gsm_bcch_ccch_demapper</key>
-  <category></category>
-  <import>import grgsm</import>
-  <make>grgsm.gsm_bcch_ccch_demapper(
-    timeslot_nr=$timeslot_nr,
-)</make>
-  <callback>set_timeslot_nr($timeslot_nr)</callback>
-  <param>
-    <name>timeslot_nr</name>
-    <key>timeslot_nr</key>
-    <value>0</value>
-    <type>raw</type>
-  </param>
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <doc>Piotr Krysik
-Demapper for BCCH + CCCH control channels. This corresponds to channel combination iv specified in GSM 05.02, section 6.4
-</doc>
-  <grc_source>gr-gsm/hier_blocks/demapping/gsm_bcch_ccch_demapper.grc</grc_source>
-</block>
diff --git a/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.block.yml b/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.block.yml
new file mode 100644
index 0000000..d40a4e1
--- /dev/null
+++ b/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.block.yml
@@ -0,0 +1,35 @@
+# auto-generated by grc.converter
+
+id: gsm_bcch_ccch_sdcch4_demapper
+label: BCCH + CCCH + SDCCH/4 Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: timeslot_nr
+    dtype: raw
+    default: '0'
+
+inputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.gsm_bcch_ccch_sdcch4_demapper(
+            timeslot_nr=${timeslot_nr},
+        )
+    callbacks:
+    - set_timeslot_nr(${timeslot_nr})
+
+documentation: |-
+    Piotr Krysik
+    Demapper for BCCH + CCCH + SDCCH/4 + SACCH/C4 control channels. This corresponds to channel combination v specified in GSM 05.02, section 6.4
+
+file_format: 1
diff --git a/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.xml b/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.xml
deleted file mode 100644
index 6c6845a..0000000
--- a/grc/demapping/gsm_bcch_ccch_sdcch4_demapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<block>
-  <name>BCCH + CCCH + SDCCH/4 Demapper</name>
-  <key>gsm_bcch_ccch_sdcch4_demapper</key>
-  <category></category>
-  <import>import grgsm</import>
-  <make>grgsm.gsm_bcch_ccch_sdcch4_demapper(
-    timeslot_nr=$timeslot_nr,
-)</make>
-  <callback>set_timeslot_nr($timeslot_nr)</callback>
-  <param>
-    <name>timeslot_nr</name>
-    <key>timeslot_nr</key>
-    <value>0</value>
-    <type>raw</type>
-  </param>
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <doc>Piotr Krysik
-Demapper for BCCH + CCCH + SDCCH/4 + SACCH/C4 control channels. This corresponds to channel combination v specified in GSM 05.02, section 6.4
-</doc>
-  <grc_source>gr-gsm/hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc</grc_source>
-</block>
diff --git a/grc/demapping/gsm_sdcch8_demapper.block.yml b/grc/demapping/gsm_sdcch8_demapper.block.yml
new file mode 100644
index 0000000..66a50c0
--- /dev/null
+++ b/grc/demapping/gsm_sdcch8_demapper.block.yml
@@ -0,0 +1,35 @@
+# auto-generated by grc.converter
+
+id: gsm_sdcch8_demapper
+label: SDCCH/8 Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: timeslot_nr
+    dtype: raw
+    default: '1'
+
+inputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.gsm_sdcch8_demapper(
+            timeslot_nr=${timeslot_nr},
+        )
+    callbacks:
+    - set_timeslot_nr(${timeslot_nr})
+
+documentation: |-
+    Piotr Krysik
+    Demapper for SDCCH/8 + SACCH/C8 control channels. This corresponds to channel combination vii specified in GSM 05.02, section 6.4
+
+file_format: 1
diff --git a/grc/demapping/gsm_sdcch8_demapper.xml b/grc/demapping/gsm_sdcch8_demapper.xml
deleted file mode 100644
index 0c62a46..0000000
--- a/grc/demapping/gsm_sdcch8_demapper.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<block>
-  <name>SDCCH/8 Demapper</name>
-  <key>gsm_sdcch8_demapper</key>
-  <category></category>
-  <import>import grgsm</import>
-  <make>grgsm.gsm_sdcch8_demapper(
-    timeslot_nr=$timeslot_nr,
-)</make>
-  <callback>set_timeslot_nr($timeslot_nr)</callback>
-  <param>
-    <name>timeslot_nr</name>
-    <key>timeslot_nr</key>
-    <value>1</value>
-    <type>raw</type>
-  </param>
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <doc>Piotr Krysik
-Demapper for SDCCH/8 + SACCH/C8 control channels. This corresponds to channel combination vii specified in GSM 05.02, section 6.4
-</doc>
-  <grc_source>gr-gsm/hier_blocks/demapping/gsm_sdcch8_demapper.grc</grc_source>
-</block>
diff --git a/grc/demapping/gsm_tch_f_chans_demapper.block.yml b/grc/demapping/gsm_tch_f_chans_demapper.block.yml
new file mode 100644
index 0000000..8d10c1d
--- /dev/null
+++ b/grc/demapping/gsm_tch_f_chans_demapper.block.yml
@@ -0,0 +1,30 @@
+# auto-generated by grc.converter
+
+id: gsm_tch_f_chans_demapper
+label: TCH/F Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: Timeslot
+    dtype: int
+    default: '2'
+    hide: part
+
+inputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: tch_bursts
+    optional: true
+-   domain: message
+    id: acch_bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.tch_f_chans_demapper(${timeslot_nr})
+
+file_format: 1
diff --git a/grc/demapping/gsm_tch_f_chans_demapper.xml b/grc/demapping/gsm_tch_f_chans_demapper.xml
deleted file mode 100644
index 33b4153..0000000
--- a/grc/demapping/gsm_tch_f_chans_demapper.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TCH/F Demapper</name>
-  <key>gsm_tch_f_chans_demapper</key>
-  <import>import grgsm</import>
-  <make>grgsm.tch_f_chans_demapper($timeslot_nr)</make>
-
-  <param>
-    <name>Timeslot</name>
-    <key>timeslot_nr</key>
-    <value>2</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>tch_bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <source>
-    <name>acch_bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/demapping/gsm_tch_h_chans_demapper.block.yml b/grc/demapping/gsm_tch_h_chans_demapper.block.yml
new file mode 100644
index 0000000..4c8610e
--- /dev/null
+++ b/grc/demapping/gsm_tch_h_chans_demapper.block.yml
@@ -0,0 +1,37 @@
+# auto-generated by grc.converter
+
+id: gsm_tch_h_chans_demapper
+label: TCH/H Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: Timeslot
+    dtype: int
+    default: '2'
+    hide: none
+-   id: tch_h_channel
+    label: Sub-channel number
+    dtype: int
+    default: '0'
+    options: ['0', '1']
+    hide: none
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: tch_bursts
+    optional: true
+-   domain: message
+    id: acch_bursts
+    optional: true
+asserts:
+- ${ tch_h_channel > -1 and tch_h_channel < 2 }
+
+templates:
+    imports: import grgsm
+    make: grgsm.tch_h_chans_demapper(${timeslot_nr}, ${tch_h_channel})
+
+file_format: 1
diff --git a/grc/demapping/gsm_tch_h_chans_demapper.xml b/grc/demapping/gsm_tch_h_chans_demapper.xml
deleted file mode 100644
index 52148f5..0000000
--- a/grc/demapping/gsm_tch_h_chans_demapper.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TCH/H Demapper</name>
-  <key>gsm_tch_h_chans_demapper</key>
-  <import>import grgsm</import>
-  <make>grgsm.tch_h_chans_demapper($timeslot_nr, $tch_h_channel)</make>
-
-  <param>
-    <name>Timeslot</name>
-    <key>timeslot_nr</key>
-    <value>2</value>
-    <type>int</type>
-    <hide>none</hide>
-  </param>
-
-  <param>
-    <name>Sub-channel number</name>
-    <key>tch_h_channel</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>none</hide>
-    <option>
-      <name>0</name>
-      <key>0</key>
-    </option>
-    <option>
-      <name>1</name>
-      <key>1</key>
-    </option>
-  </param>
-  <check>$tch_h_channel() > -1 and $tch_h_channel() < 2</check>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>tch_bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  <source>
-    <name>acch_bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/demapping/gsm_universal_ctrl_chans_demapper.block.yml b/grc/demapping/gsm_universal_ctrl_chans_demapper.block.yml
new file mode 100644
index 0000000..469384e
--- /dev/null
+++ b/grc/demapping/gsm_universal_ctrl_chans_demapper.block.yml
@@ -0,0 +1,61 @@
+# auto-generated by grc.converter
+
+id: gsm_universal_ctrl_chans_demapper
+label: Universal Control Channels Demapper
+
+parameters:
+-   id: timeslot_nr
+    label: timeslot_nr
+    dtype: int
+    default: '0'
+    hide: part
+-   id: downlink_starts_fn_mod51
+    label: downlink_starts_fn_mod51
+    dtype: int_vector
+    default: '[0,0,2,2,2,2,6,6,6,6,0,0,12,12,12,12,16,16,16,16,0,0,22,22,22,22,26,26,26,26,0,0,32,32,32,32,36,36,36,36,0,0,42,42,42,42,46,46,46,46,0,]'
+    hide: part
+-   id: downlink_channel_types
+    label: downlink_channel_types
+    dtype: int_vector
+    default: '[0,0,1,1,1,1,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,]'
+    hide: part
+-   id: downlink_subslots
+    label: downlink_subslots
+    dtype: int_vector
+    default: '[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]'
+    hide: part
+-   id: uplink_starts_fn_mod51
+    label: uplink_starts_fn_mod51
+    dtype: int_vector
+    default: '[0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]'
+    hide: part
+-   id: uplink_channel_types
+    label: uplink_channel_types
+    dtype: int_vector
+    default: '[2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,]'
+    hide: part
+-   id: uplink_subslots
+    label: uplink_subslots
+    dtype: int_vector
+    default: '[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]'
+    hide: part
+
+inputs:
+-   domain: message
+    id: bursts
+
+outputs:
+-   domain: message
+    id: bursts
+
+templates:
+    imports: import grgsm
+    make: grgsm.universal_ctrl_chans_demapper(${timeslot_nr}, ${downlink_starts_fn_mod51},
+        ${downlink_channel_types}, ${downlink_subslots}, ${uplink_starts_fn_mod51},
+        ${uplink_channel_types}, ${uplink_subslots})
+
+documentation: |-
+    Universal demapper for control channels.
+          Author: Piotr Krysik
+
+file_format: 1
diff --git a/grc/demapping/gsm_universal_ctrl_chans_demapper.xml b/grc/demapping/gsm_universal_ctrl_chans_demapper.xml
deleted file mode 100644
index dcad1ae..0000000
--- a/grc/demapping/gsm_universal_ctrl_chans_demapper.xml
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Universal Control Channels Demapper</name>
-  <key>gsm_universal_ctrl_chans_demapper</key>
-  <import>import grgsm</import>
-  <make>grgsm.universal_ctrl_chans_demapper($timeslot_nr, $downlink_starts_fn_mod51, $downlink_channel_types, $downlink_subslots, $uplink_starts_fn_mod51, $uplink_channel_types, $uplink_subslots)</make>
-
-  <param>
-    <name>timeslot_nr</name>
-    <key>timeslot_nr</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>downlink_starts_fn_mod51</name>
-    <key>downlink_starts_fn_mod51</key>
-    <value>[0,0,2,2,2,2,6,6,6,6,0,0,12,12,12,12,16,16,16,16,0,0,22,22,22,22,26,26,26,26,0,0,32,32,32,32,36,36,36,36,0,0,42,42,42,42,46,46,46,46,0,]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>downlink_channel_types</name>
-    <key>downlink_channel_types</key>
-    <value>[0,0,1,1,1,1,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>downlink_subslots</name>
-    <key>downlink_subslots</key>
-    <value>[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>uplink_starts_fn_mod51</name>
-    <key>uplink_starts_fn_mod51</key>
-    <value>[0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>uplink_channel_types</name>
-    <key>uplink_channel_types</key>
-    <value>[2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-  
-  <param>
-    <name>uplink_subslots</name>
-    <key>uplink_subslots</key>
-    <value>[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>  
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-  </source>
-  <doc>
-      Universal demapper for control channels.
-      Author: Piotr Krysik      
-  </doc>
-</block>
diff --git a/grc/flow_control/CMakeLists.txt b/grc/flow_control/CMakeLists.txt
index 1f98d8f..2876512 100644
--- a/grc/flow_control/CMakeLists.txt
+++ b/grc/flow_control/CMakeLists.txt
@@ -18,12 +18,13 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_burst_timeslot_splitter.xml
-    gsm_burst_fnr_filter.xml
-    gsm_burst_timeslot_filter.xml
-    gsm_burst_type_filter.xml
-    gsm_dummy_burst_filter.xml
-    gsm_burst_sdcch_subslot_splitter.xml
-    gsm_burst_sdcch_subslot_filter.xml 
-    gsm_uplink_downlink_splitter.xml DESTINATION share/gnuradio/grc/blocks
+    gsm_burst_timeslot_splitter.block.yml
+    gsm_burst_fnr_filter.block.yml
+    gsm_burst_timeslot_filter.block.yml
+    gsm_burst_type_filter.block.yml
+    gsm_dummy_burst_filter.block.yml
+    gsm_burst_sdcch_subslot_splitter.block.yml
+    gsm_burst_sdcch_subslot_filter.block.yml
+    gsm_uplink_downlink_splitter.block.yml
+    DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/flow_control/gsm_burst_fnr_filter.block.yml b/grc/flow_control/gsm_burst_fnr_filter.block.yml
new file mode 100644
index 0000000..8dc9adc
--- /dev/null
+++ b/grc/flow_control/gsm_burst_fnr_filter.block.yml
@@ -0,0 +1,33 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_fnr_filter
+label: Burst Framenumber Filter
+
+parameters:
+-   id: mode
+    label: Mode
+    dtype: enum
+    options: [grgsm.FILTER_LESS_OR_EQUAL, grgsm.FILTER_GREATER_OR_EQUAL]
+    option_labels: [Less or equal, Greater or equal]
+-   id: fnr
+    label: Framenumber
+    dtype: int
+    default: '1500123'
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_fnr_filter(${mode}, ${fnr})
+
+documentation: |-
+    Burst framenumber filter forwards only blocks with a framenumber satisfying the configured mode, i.e. if mode is "Less or equal", then only bursts with a smaller or equal framenumber are forwarded.
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_fnr_filter.xml b/grc/flow_control/gsm_burst_fnr_filter.xml
deleted file mode 100644
index 7b27583..0000000
--- a/grc/flow_control/gsm_burst_fnr_filter.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Framenumber Filter</name>
-  <key>gsm_burst_fnr_filter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_fnr_filter($mode, $fnr)</make>
-
-  <param>
-    <name>Mode</name>
-    <key>mode</key>
-    <type>enum</type>
-    <option>
-      <name>Less or equal</name>
-      <key>grgsm.FILTER_LESS_OR_EQUAL</key>
-    </option>
-    <option>
-      <name>Greater or equal</name>
-      <key>grgsm.FILTER_GREATER_OR_EQUAL</key>
-    </option>
-  </param>
-  <param>
-    <name>Framenumber</name>
-    <key>fnr</key>
-    <value>1500123</value>
-    <type>int</type>
-  </param>
-  
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-Burst framenumber filter forwards only blocks with a framenumber satisfying the configured mode, i.e. if mode is "Less or equal", then only bursts with a smaller or equal framenumber are forwarded.
-  </doc>
-</block>
diff --git a/grc/flow_control/gsm_burst_sdcch_subslot_filter.block.yml b/grc/flow_control/gsm_burst_sdcch_subslot_filter.block.yml
new file mode 100644
index 0000000..66039f6
--- /dev/null
+++ b/grc/flow_control/gsm_burst_sdcch_subslot_filter.block.yml
@@ -0,0 +1,34 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_sdcch_subslot_filter
+label: Burst SDCCH Subslot Filter
+
+parameters:
+-   id: mode
+    label: Mode
+    dtype: enum
+    options: [grgsm.SS_FILTER_SDCCH8, grgsm.SS_FILTER_SDCCH4]
+    option_labels: [SDCCH/8, SDCCH/4]
+-   id: subslot
+    label: Subslot
+    dtype: int
+    default: '0'
+    hide: none
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_sdcch_subslot_filter(${mode}, ${subslot})
+
+documentation: |-
+    This block forwards only bursts in the subslot given by the parameter
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_sdcch_subslot_filter.xml b/grc/flow_control/gsm_burst_sdcch_subslot_filter.xml
deleted file mode 100644
index ddfcb3b..0000000
--- a/grc/flow_control/gsm_burst_sdcch_subslot_filter.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst SDCCH Subslot Filter</name>
-  <key>gsm_burst_sdcch_subslot_filter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_sdcch_subslot_filter($mode, $subslot)</make>
-   
-  <param>
-    <name>Mode</name>
-    <key>mode</key>
-    <type>enum</type>
-    <option>
-      <name>SDCCH/8</name>
-      <key>grgsm.SS_FILTER_SDCCH8</key>
-    </option>
-    <option>
-      <name>SDCCH/4</name>
-      <key>grgsm.SS_FILTER_SDCCH4</key>
-    </option>
-  </param>
-
-  <param>
-    <name>Subslot</name>
-    <key>subslot</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>none</hide>
-  </param>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-This block forwards only bursts in the subslot given by the parameter
-  </doc>
-</block>
\ No newline at end of file
diff --git a/grc/flow_control/gsm_burst_sdcch_subslot_splitter.block.yml b/grc/flow_control/gsm_burst_sdcch_subslot_splitter.block.yml
new file mode 100644
index 0000000..a409dd2
--- /dev/null
+++ b/grc/flow_control/gsm_burst_sdcch_subslot_splitter.block.yml
@@ -0,0 +1,39 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_sdcch_subslot_splitter
+label: Burst SDCCH Subslot Splitter
+
+parameters:
+-   id: ports
+    label: Mode
+    dtype: enum
+    options: ['8', '4']
+    option_labels: [SDCCH/8, SDCCH/4]
+    hide: part
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    multiplicity: ${ ports }
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.burst_sdcch_subslot_splitter(
+        % if int(ports)==4:
+        grgsm.SPLITTER_SDCCH4
+        % else:
+        grgsm.SPLITTER_SDCCH8
+        % endif
+          )
+
+documentation: |-
+    Burst SDCCH subslot splitter distributes bursts to eight different output ports depending on the subslots to which the bursts belong.
+    This means subslot 0 bursts are sent to port out0, subslot 1 bursts on port out1, and so on.
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml b/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml
deleted file mode 100644
index 62415e7..0000000
--- a/grc/flow_control/gsm_burst_sdcch_subslot_splitter.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst SDCCH Subslot Splitter</name>
-  <key>gsm_burst_sdcch_subslot_splitter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_sdcch_subslot_splitter(
-#if int($ports())==4 #
-grgsm.SPLITTER_SDCCH4
-#else
-grgsm.SPLITTER_SDCCH8
-#end if
-  )</make>
-   
-  <param>
-    <name>Mode</name>
-    <key>ports</key>
-    <type>enum</type>
-    <option>
-      <name>SDCCH/8</name>
-      <key>8</key>
-    </option>
-    <option>
-      <name>SDCCH/4</name>
-      <key>4</key>
-    </option>
-  </param>
-    
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <nports>$ports</nports>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-Burst SDCCH subslot splitter distributes bursts to eight different output ports depending on the subslots to which the bursts belong.
-This means subslot 0 bursts are sent to port out0, subslot 1 bursts on port out1, and so on.
-  </doc>
-</block>
\ No newline at end of file
diff --git a/grc/flow_control/gsm_burst_timeslot_filter.block.yml b/grc/flow_control/gsm_burst_timeslot_filter.block.yml
new file mode 100644
index 0000000..afc0c2b
--- /dev/null
+++ b/grc/flow_control/gsm_burst_timeslot_filter.block.yml
@@ -0,0 +1,29 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_timeslot_filter
+label: Burst Timeslot Filter
+
+parameters:
+-   id: timeslot
+    label: Timeslot
+    dtype: int
+    default: '0'
+    hide: none
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_timeslot_filter(${timeslot})
+
+documentation: |-
+    This block forwards only bursts in the timeslot given by the parameter
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_timeslot_filter.xml b/grc/flow_control/gsm_burst_timeslot_filter.xml
deleted file mode 100644
index b900375..0000000
--- a/grc/flow_control/gsm_burst_timeslot_filter.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Timeslot Filter</name>
-  <key>gsm_burst_timeslot_filter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_timeslot_filter($timeslot)</make>
-
-  <param>
-    <name>Timeslot</name>
-    <key>timeslot</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>none</hide>
-  </param>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-This block forwards only bursts in the timeslot given by the parameter
-  </doc>
-</block>
diff --git a/grc/flow_control/gsm_burst_timeslot_splitter.block.yml b/grc/flow_control/gsm_burst_timeslot_splitter.block.yml
new file mode 100644
index 0000000..2d8faee
--- /dev/null
+++ b/grc/flow_control/gsm_burst_timeslot_splitter.block.yml
@@ -0,0 +1,24 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_timeslot_splitter
+label: Burst Timeslot Splitter
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    multiplicity: '8'
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_timeslot_splitter()
+
+documentation: "Burst timeslot splitter distributes bursts to eight different output\
+    \ ports depending on the timeslots of the bursts. \nThis means timeslot 0 bursts\
+    \ are sent to port out0, timeslot 1 bursts on port out1, and so on."
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_timeslot_splitter.xml b/grc/flow_control/gsm_burst_timeslot_splitter.xml
deleted file mode 100644
index 4f6159e..0000000
--- a/grc/flow_control/gsm_burst_timeslot_splitter.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Timeslot Splitter</name>
-  <key>gsm_burst_timeslot_splitter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_timeslot_splitter()</make>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <nports>8</nports>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-Burst timeslot splitter distributes bursts to eight different output ports depending on the timeslots of the bursts. 
-This means timeslot 0 bursts are sent to port out0, timeslot 1 bursts on port out1, and so on.
-  </doc>
-</block>
diff --git a/grc/flow_control/gsm_burst_type_filter.block.yml b/grc/flow_control/gsm_burst_type_filter.block.yml
new file mode 100644
index 0000000..21222ae
--- /dev/null
+++ b/grc/flow_control/gsm_burst_type_filter.block.yml
@@ -0,0 +1,31 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_type_filter
+label: Burst Type Filter
+
+parameters:
+-   id: selected_burst_types
+    label: Selected burst types
+    dtype: int_vector
+    default: '[0,1,2,3,4,5,6,7]'
+
+inputs:
+-   domain: message
+    id: bursts_in
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts_out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_type_filter(${selected_burst_types})
+
+documentation: |-
+    This block filters bursts based on their type.
+
+    For more information on burst types, see GSM 05.02.
+
+file_format: 1
diff --git a/grc/flow_control/gsm_burst_type_filter.xml b/grc/flow_control/gsm_burst_type_filter.xml
deleted file mode 100644
index d7d86f4..0000000
--- a/grc/flow_control/gsm_burst_type_filter.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Type Filter</name>
-  <key>gsm_burst_type_filter</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_type_filter($selected_burst_types)</make>
-
-  <param>
-    <name>Selected burst types</name>
-    <key>selected_burst_types</key>
-    <value>[0,1,2,3,4,5,6,7]</value>
-    <type>int_vector</type>
-  </param>
-
-  <sink>
-    <name>bursts_in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts_out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-This block filters bursts based on their type.
-
-For more information on burst types, see GSM 05.02.
-  </doc>
-</block>
diff --git a/grc/flow_control/gsm_dummy_burst_filter.block.yml b/grc/flow_control/gsm_dummy_burst_filter.block.yml
new file mode 100644
index 0000000..f0f690c
--- /dev/null
+++ b/grc/flow_control/gsm_dummy_burst_filter.block.yml
@@ -0,0 +1,22 @@
+# auto-generated by grc.converter
+
+id: gsm_dummy_burst_filter
+label: Dummy Burst Filter
+
+inputs:
+-   domain: message
+    id: in
+
+outputs:
+-   domain: message
+    id: out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.dummy_burst_filter()
+
+documentation: "This block filters dummy bursts. \n\nFor more information on dummy\
+    \ bursts, see GSM 05.02."
+
+file_format: 1
diff --git a/grc/flow_control/gsm_dummy_burst_filter.xml b/grc/flow_control/gsm_dummy_burst_filter.xml
deleted file mode 100644
index 126e4fe..0000000
--- a/grc/flow_control/gsm_dummy_burst_filter.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Dummy Burst Filter</name>
-  <key>gsm_dummy_burst_filter</key>
-  <import>import grgsm</import>
-  <make>grgsm.dummy_burst_filter()</make>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-This block filters dummy bursts. 
-
-For more information on dummy bursts, see GSM 05.02.
-  </doc>
-</block>
diff --git a/grc/flow_control/gsm_uplink_downlink_splitter.block.yml b/grc/flow_control/gsm_uplink_downlink_splitter.block.yml
new file mode 100644
index 0000000..12d141d
--- /dev/null
+++ b/grc/flow_control/gsm_uplink_downlink_splitter.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: gsm_uplink_downlink_splitter
+label: Up/Down-link splitter
+
+inputs:
+-   domain: message
+    id: in
+    optional: true
+
+outputs:
+-   domain: message
+    id: downlink
+    optional: true
+-   domain: message
+    id: uplink
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.uplink_downlink_splitter()
+
+file_format: 1
diff --git a/grc/flow_control/gsm_uplink_downlink_splitter.xml b/grc/flow_control/gsm_uplink_downlink_splitter.xml
deleted file mode 100644
index 5c0c932..0000000
--- a/grc/flow_control/gsm_uplink_downlink_splitter.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Up/Down-link splitter</name>
-  <key>gsm_uplink_downlink_splitter</key>
-  <import>import grgsm</import>
-  <make>grgsm.uplink_downlink_splitter()</make>
-  <sink>
-    <name>in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>downlink</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>  
-  <source>
-    <name>uplink</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>  
-</block>
diff --git a/grc/gsm.tree.yml b/grc/gsm.tree.yml
new file mode 100644
index 0000000..4aee993
--- /dev/null
+++ b/grc/gsm.tree.yml
@@ -0,0 +1,58 @@
+'[GSM]':
+- Receiver:
+  - gsm_receiver
+  - gsm_receiver_with_uplink
+  - gsm_cx_channel_hopper
+  - gsm_fcch_burst_tagger
+  - gsm_sch_detector
+  - gsm_fcch_detector
+  - gsm_clock_offset_control
+  - gsm_input
+- Transmitter:
+  - gsm_txtime_bursts_tagger
+  - gsm_txtime_setter
+  - gsm_gmsk_mod
+  - gsm_preprocess_tx_burst
+  - gsm_gen_test_ab
+- Transceiver:
+  - gsm_trx_burst_if
+- Logical channels demapping:
+  - gsm_universal_ctrl_chans_demapper
+  - gsm_bcch_ccch_demapper
+  - gsm_bcch_ccch_sdcch4_demapper
+  - gsm_sdcch8_demapper
+  - gsm_tch_f_chans_demapper
+  - gsm_tch_h_chans_demapper
+- Decryption:
+  - gsm_decryption
+- Decoding:
+  - gsm_control_channels_decoder
+  - gsm_tch_f_decoder
+  - gsm_tch_h_decoder
+- Flow control:
+  - gsm_burst_timeslot_splitter
+  - gsm_burst_sdcch_subslot_splitter
+  - gsm_burst_timeslot_filter
+  - gsm_burst_sdcch_subslot_filter
+  - gsm_burst_fnr_filter
+  - gsm_burst_type_filter
+  - gsm_dummy_burst_filter
+  - gsm_uplink_downlink_splitter
+- Utilities:
+  - gsm_bursts_printer
+  - gsm_burst_file_sink
+  - gsm_burst_file_source
+  - gsm_collect_system_info
+  - gsm_message_file_sink
+  - gsm_message_file_source
+  - gsm_extract_system_info
+  - gsm_extract_immediate_assignment
+  - gsm_extract_cmc
+  - gsm_extract_assignment_cmd
+  - gsm_controlled_rotator_cc
+  - gsm_controlled_fractional_resampler_cc
+  - gsm_message_printer
+  - gsm_clock_offset_corrector_tagged
+  - gsm_msg_to_tag
+  - gsm_tmsi_dumper
+  - gsm_burst_to_fn_time
diff --git a/grc/gsm_block_tree.xml b/grc/gsm_block_tree.xml
deleted file mode 100644
index b056003..0000000
--- a/grc/gsm_block_tree.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-###################################################
-##Block Tree for GSM blocks.
-###################################################
--->
-
-<cat>
-  <name></name> <!-- Blank for Root Name -->
-  <cat>
-    <name>GSM</name>
-    <cat>
-      <name>Receiver</name>
-      <block>gsm_receiver</block>
-      <block>gsm_receiver_with_uplink</block>
-      <block>gsm_cx_channel_hopper</block>
-      <block>gsm_fcch_burst_tagger</block>
-      <block>gsm_sch_detector</block>
-      <block>gsm_fcch_detector</block>
-      <block>gsm_clock_offset_control</block>
-      <block>gsm_input</block>
-    </cat>
-    <cat>
-      <name>Transmitter</name>
-      <block>gsm_txtime_bursts_tagger</block>
-      <block>gsm_txtime_setter</block>
-      <block>gsm_gmsk_mod</block>
-      <block>gsm_preprocess_tx_burst</block>
-      <block>gsm_gen_test_ab</block>
-    </cat>
-    <cat>
-      <name>Transceiver</name>
-      <block>gsm_trx_burst_if</block>
-    </cat>
-    <cat>
-      <name>Logical channels demapping</name>
-      <block>gsm_universal_ctrl_chans_demapper</block>
-      <block>gsm_bcch_ccch_demapper</block>
-      <block>gsm_bcch_ccch_sdcch4_demapper</block>
-      <block>gsm_sdcch8_demapper</block>
-      <block>gsm_tch_f_chans_demapper</block>
-      <block>gsm_tch_h_chans_demapper</block>
-    </cat>
-    <cat>
-      <name>Decryption</name>
-      <block>gsm_decryption</block>
-    </cat>
-    <cat>
-      <name>Decoding</name>
-      <block>gsm_control_channels_decoder</block>
-      <block>gsm_tch_f_decoder</block>
-      <block>gsm_tch_h_decoder</block>
-    </cat>
-    <cat>
-      <name>Flow control</name>
-      <block>gsm_burst_timeslot_splitter</block>
-      <block>gsm_burst_sdcch_subslot_splitter</block>
-      <block>gsm_burst_timeslot_filter</block>
-      <block>gsm_burst_sdcch_subslot_filter</block>
-      <block>gsm_burst_fnr_filter</block>
-      <block>gsm_burst_type_filter</block>
-      <block>gsm_dummy_burst_filter</block>
-      <block>gsm_uplink_downlink_splitter</block>
-    </cat>
-    <cat>
-      <name>Utilities</name>
-      <block>gsm_bursts_printer</block>
-      <block>gsm_burst_file_sink</block>
-      <block>gsm_burst_file_source</block>
-      <block>gsm_collect_system_info</block>
-      <block>gsm_message_file_sink</block>
-      <block>gsm_message_file_source</block>
-      <block>gsm_extract_system_info</block>
-      <block>gsm_extract_immediate_assignment</block>
-      <block>gsm_extract_cmc</block>
-      <block>gsm_extract_assignment_cmd</block>
-      <block>gsm_controlled_rotator_cc</block>
-      <block>gsm_controlled_fractional_resampler_cc</block>
-      <block>gsm_message_printer</block>
-      <block>gsm_clock_offset_corrector_tagged</block>
-      <block>gsm_msg_to_tag</block>
-      <block>gsm_tmsi_dumper</block>
-      <block>gsm_burst_to_fn_time</block>
-    </cat>
-  </cat>
-</cat>
diff --git a/grc/misc_utils/CMakeLists.txt b/grc/misc_utils/CMakeLists.txt
index bad53e6..73869d3 100644
--- a/grc/misc_utils/CMakeLists.txt
+++ b/grc/misc_utils/CMakeLists.txt
@@ -18,22 +18,22 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_extract_system_info.xml
-    gsm_extract_immediate_assignment.xml
-    gsm_collect_system_info.xml
-    gsm_extract_cmc.xml
-    gsm_extract_assignment_cmd.xml
-    gsm_controlled_rotator_cc.xml
-    gsm_message_printer.xml
-    gsm_bursts_printer.xml
-    gsm_clock_offset_corrector_tagged.xml
-    gsm_tmsi_dumper.xml
-    gsm_burst_file_sink.xml
-    gsm_burst_file_source.xml
-    gsm_message_file_sink.xml
-    gsm_message_file_source.xml
-    gsm_msg_to_tag.xml
-    gsm_controlled_fractional_resampler_cc.xml
-    gsm_burst_to_fn_time.xml
+    gsm_extract_system_info.block.yml
+    gsm_extract_immediate_assignment.block.yml
+    gsm_collect_system_info.block.yml
+    gsm_extract_cmc.block.yml
+    gsm_extract_assignment_cmd.block.yml
+    gsm_controlled_rotator_cc.block.yml
+    gsm_message_printer.block.yml
+    gsm_bursts_printer.block.yml
+    gsm_clock_offset_corrector_tagged.block.yml
+    gsm_tmsi_dumper.block.yml
+    gsm_burst_file_sink.block.yml
+    gsm_burst_file_source.block.yml
+    gsm_message_file_sink.block.yml
+    gsm_message_file_source.block.yml
+    gsm_msg_to_tag.block.yml
+    gsm_controlled_fractional_resampler_cc.block.yml
+    gsm_burst_to_fn_time.block.yml
     DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/misc_utils/gsm_burst_file_sink.block.yml b/grc/misc_utils/gsm_burst_file_sink.block.yml
new file mode 100644
index 0000000..00afadc
--- /dev/null
+++ b/grc/misc_utils/gsm_burst_file_sink.block.yml
@@ -0,0 +1,20 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_file_sink
+label: Burst File Sink
+
+parameters:
+-   id: filename
+    label: Destination file
+    dtype: file_open
+    default: /tmp/bursts
+
+inputs:
+-   domain: message
+    id: in
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_file_sink(${filename})
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_burst_file_sink.xml b/grc/misc_utils/gsm_burst_file_sink.xml
deleted file mode 100644
index 61bde2d..0000000
--- a/grc/misc_utils/gsm_burst_file_sink.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst File Sink</name>
-  <key>gsm_burst_file_sink</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_file_sink($filename)</make>
-
-  <param>
-    <name>Destination file</name>
-    <key>filename</key>
-    <value>/tmp/bursts</value>
-    <type>file_open</type>
-  </param>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-</block>
diff --git a/grc/misc_utils/gsm_burst_file_source.block.yml b/grc/misc_utils/gsm_burst_file_source.block.yml
new file mode 100644
index 0000000..f75bf55
--- /dev/null
+++ b/grc/misc_utils/gsm_burst_file_source.block.yml
@@ -0,0 +1,20 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_file_source
+label: Burst File Source
+
+parameters:
+-   id: filename
+    label: Source file
+    dtype: file_open
+    default: /tmp/bursts
+
+outputs:
+-   domain: message
+    id: out
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_file_source(${filename})
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_burst_file_source.xml b/grc/misc_utils/gsm_burst_file_source.xml
deleted file mode 100644
index 5e160fb..0000000
--- a/grc/misc_utils/gsm_burst_file_source.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst File Source</name>
-  <key>gsm_burst_file_source</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_file_source($filename)</make>
-
-  <param>
-    <name>Source file</name>
-    <key>filename</key>
-    <value>/tmp/bursts</value>
-    <type>file_open</type>
-  </param>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-  </source>
-</block>
diff --git a/grc/misc_utils/gsm_burst_to_fn_time.block.yml b/grc/misc_utils/gsm_burst_to_fn_time.block.yml
new file mode 100644
index 0000000..f4c687c
--- /dev/null
+++ b/grc/misc_utils/gsm_burst_to_fn_time.block.yml
@@ -0,0 +1,20 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_to_fn_time
+label: Burst to FN time
+
+inputs:
+-   domain: message
+    id: bursts_in
+    optional: true
+
+outputs:
+-   domain: message
+    id: fn_time_out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_to_fn_time()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_burst_to_fn_time.xml b/grc/misc_utils/gsm_burst_to_fn_time.xml
deleted file mode 100644
index c8ae088..0000000
--- a/grc/misc_utils/gsm_burst_to_fn_time.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst to FN time</name>
-  <key>gsm_burst_to_fn_time</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_to_fn_time()</make>
-
-  <sink>
-    <name>bursts_in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>fn_time_out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/misc_utils/gsm_bursts_printer.block.yml b/grc/misc_utils/gsm_bursts_printer.block.yml
new file mode 100644
index 0000000..0f99789
--- /dev/null
+++ b/grc/misc_utils/gsm_bursts_printer.block.yml
@@ -0,0 +1,57 @@
+# auto-generated by grc.converter
+
+id: gsm_bursts_printer
+label: Bursts Printer
+
+parameters:
+-   id: prepend_string
+    label: Prepend String
+    dtype: string
+    hide: part
+-   id: prepend_fnr
+    label: Prepend Frame Number
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: prepend_frame_count
+    label: Prepend Frame Count
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: print_payload_only
+    label: Print payload only
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: ignore_dummy_bursts
+    label: Ignore dummy bursts
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+
+inputs:
+-   domain: message
+    id: bursts
+
+templates:
+    imports: |-
+        import grgsm
+        import pmt
+    make: |-
+        grgsm.bursts_printer(pmt.intern(${prepend_string}), ${prepend_fnr},
+            ${prepend_frame_count}, ${print_payload_only}, ${ignore_dummy_bursts})
+
+documentation: |-
+    This block prints bursts to output. By default the whole burst including tail bits, stealing bits and training sequence is printed.
+
+    If "Prepend Frame Number" is enabled, then the framenumber is prepended to each burst.
+
+    If "Prepend Frame Count" is enabled, then the frame count for A5 is prependend to each burst.
+
+    If "Print payload only" is enabled, then only the two data blocks of a burst are printed, tail bits, stealing bits and training sequence are omitted.
+
+    If "Ignore dummy bursts" is enabled, then the burst printer will not print dummy bursts (see GSM 05.02)
+
+    Enabling first three options (or all four options) results in an output that is similar to the output of airprobe, i.e. the format is "frame_nr frame_count: databits"
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_bursts_printer.xml b/grc/misc_utils/gsm_bursts_printer.xml
deleted file mode 100644
index d6ddfcb..0000000
--- a/grc/misc_utils/gsm_bursts_printer.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Bursts Printer</name>
-  <key>gsm_bursts_printer</key>
-  <import>import grgsm</import>
-  <import>import pmt</import>
-  <make>grgsm.bursts_printer(pmt.intern($prepend_string), $prepend_fnr,
-    $prepend_frame_count, $print_payload_only, $ignore_dummy_bursts)</make>
-
-  <param>
-    <name>Prepend String</name>
-    <key>prepend_string</key>
-    <value></value>
-    <type>string</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>Prepend Frame Number</name>
-    <key>prepend_fnr</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Prepend Frame Count</name>
-    <key>prepend_frame_count</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Print payload only</name>
-    <key>print_payload_only</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Ignore dummy bursts</name>
-    <key>ignore_dummy_bursts</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-
-  <doc>
-This block prints bursts to output. By default the whole burst including tail bits, stealing bits and training sequence is printed.
-
-If "Prepend Frame Number" is enabled, then the framenumber is prepended to each burst.
-
-If "Prepend Frame Count" is enabled, then the frame count for A5 is prependend to each burst.
-
-If "Print payload only" is enabled, then only the two data blocks of a burst are printed, tail bits, stealing bits and training sequence are omitted.
-
-If "Ignore dummy bursts" is enabled, then the burst printer will not print dummy bursts (see GSM 05.02)
-
-Enabling first three options (or all four options) results in an output that is similar to the output of airprobe, i.e. the format is "frame_nr frame_count: databits"
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_clock_offset_corrector_tagged.block.yml b/grc/misc_utils/gsm_clock_offset_corrector_tagged.block.yml
new file mode 100644
index 0000000..6daa18c
--- /dev/null
+++ b/grc/misc_utils/gsm_clock_offset_corrector_tagged.block.yml
@@ -0,0 +1,56 @@
+# auto-generated by grc.converter
+
+id: gsm_clock_offset_corrector_tagged
+label: Clock Offset Corrector Tagged
+
+parameters:
+-   id: fc
+    label: fc
+    dtype: raw
+    default: 936.6e6
+-   id: ppm
+    label: ppm
+    dtype: raw
+    default: '0'
+-   id: samp_rate_in
+    label: samp_rate_in
+    dtype: raw
+    default: 1625000.0/6.0*4.0
+-   id: osr
+    label: OSR
+    dtype: raw
+    default: osr
+
+inputs:
+-   domain: message
+    id: ctrl
+    optional: true
+-   domain: stream
+    dtype: complex
+    vlen: 1
+
+outputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.clock_offset_corrector_tagged(
+            fc=${fc},
+            samp_rate_in=${samp_rate_in},
+            ppm=${ppm},
+            osr=${osr}
+        )
+    callbacks:
+    - set_fc(${fc})
+    - set_ppm(${ppm})
+    - set_samp_rate_in(${samp_rate_in})
+    - set_osr(${osr})
+
+documentation: |-
+    Piotr Krysik
+    Clock offset corrector with blocks that use tags to switch offsets
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_clock_offset_corrector_tagged.xml b/grc/misc_utils/gsm_clock_offset_corrector_tagged.xml
deleted file mode 100644
index bcec98e..0000000
--- a/grc/misc_utils/gsm_clock_offset_corrector_tagged.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-<block>
-  <name>Clock Offset Corrector Tagged</name>
-  <key>gsm_clock_offset_corrector_tagged</key>
-  <import>import grgsm</import>
-  <make>grgsm.clock_offset_corrector_tagged(
-    fc=$fc,
-    samp_rate_in=$samp_rate_in,
-    ppm=$ppm,
-    osr=$osr
-)</make>
-  <callback>set_fc($fc)</callback>
-  <callback>set_ppm($ppm)</callback>
-  <callback>set_samp_rate_in($samp_rate_in)</callback>
-  <callback>set_osr($osr)</callback>
-  <param>
-    <name>fc</name>
-    <key>fc</key>
-    <value>936.6e6</value>
-    <type>raw</type>
-  </param>
-  <param>
-    <name>ppm</name>
-    <key>ppm</key>
-    <value>0</value>
-    <type>raw</type>
-  </param>
-  <param>
-    <name>samp_rate_in</name>
-    <key>samp_rate_in</key>
-    <value>1625000.0/6.0*4.0</value>
-    <type>raw</type>
-  </param>
-  <param>
-    <name>OSR</name>
-    <key>osr</key>
-    <value>osr</value>
-    <type>raw</type>
-  </param>
-  <sink>
-    <name>ctrl</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </sink>
-  <source>
-    <name>out</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </source>
-  <doc>Piotr Krysik
-Clock offset corrector with blocks that use tags to switch offsets
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_collect_system_info.block.yml b/grc/misc_utils/gsm_collect_system_info.block.yml
new file mode 100644
index 0000000..f7d5d85
--- /dev/null
+++ b/grc/misc_utils/gsm_collect_system_info.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: gsm_collect_system_info
+label: Collect System Info
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: import grgsm
+    make: grgsm.collect_system_info()
+
+documentation: |-
+    This blocks collect System Information Messages, which can be retrieved using the following methods:
+
+    get_framenumbers(): Get the list with the framenumbers of the System Information Messages
+
+    get_system_information_type(): Get the types of the System Information Messages
+
+    get_data(): Get the whole System Information Messages in Hex representation
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_collect_system_info.xml b/grc/misc_utils/gsm_collect_system_info.xml
deleted file mode 100644
index bad0396..0000000
--- a/grc/misc_utils/gsm_collect_system_info.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Collect System Info</name>
-  <key>gsm_collect_system_info</key>
-  <import>import grgsm</import>
-  <make>grgsm.collect_system_info()</make>
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-    <doc>
-This blocks collect System Information Messages, which can be retrieved using the following methods:
-
-get_framenumbers(): Get the list with the framenumbers of the System Information Messages
-
-get_system_information_type(): Get the types of the System Information Messages
-
-get_data(): Get the whole System Information Messages in Hex representation
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_controlled_fractional_resampler_cc.block.yml b/grc/misc_utils/gsm_controlled_fractional_resampler_cc.block.yml
new file mode 100644
index 0000000..4e94516
--- /dev/null
+++ b/grc/misc_utils/gsm_controlled_fractional_resampler_cc.block.yml
@@ -0,0 +1,28 @@
+# auto-generated by grc.converter
+
+id: gsm_controlled_fractional_resampler_cc
+label: Controlled Fractional Resampler
+
+parameters:
+-   id: phase_shift
+    label: Phase Shift
+    dtype: real
+-   id: resamp_ratio
+    label: Resampling Ratio
+    dtype: real
+
+inputs:
+-   domain: stream
+    dtype: complex
+
+outputs:
+-   domain: stream
+    dtype: complex
+
+templates:
+    imports: import grgsm
+    make: grgsm.controlled_fractional_resampler_cc(${phase_shift}, ${resamp_ratio})
+    callbacks:
+    - set_resamp_ratio(${resamp_ratio})
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_controlled_fractional_resampler_cc.xml b/grc/misc_utils/gsm_controlled_fractional_resampler_cc.xml
deleted file mode 100644
index fdecece..0000000
--- a/grc/misc_utils/gsm_controlled_fractional_resampler_cc.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Controlled Fractional Resampler</name>
-  <key>gsm_controlled_fractional_resampler_cc</key>
-  <import>import grgsm</import>
-  <make>grgsm.controlled_fractional_resampler_cc($phase_shift, $resamp_ratio)</make>
-	<callback>set_resamp_ratio($resamp_ratio)</callback>
-	<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>complex</type>
-	</sink>
-	<source>
-		<name>out</name>
-		<type>complex</type>
-	</source>
-</block>
diff --git a/grc/misc_utils/gsm_controlled_rotator_cc.block.yml b/grc/misc_utils/gsm_controlled_rotator_cc.block.yml
new file mode 100644
index 0000000..b26af92
--- /dev/null
+++ b/grc/misc_utils/gsm_controlled_rotator_cc.block.yml
@@ -0,0 +1,26 @@
+# auto-generated by grc.converter
+
+id: gsm_controlled_rotator_cc
+label: Controlled Rotator
+
+parameters:
+-   id: phase_inc
+    label: phase_inc
+    dtype: real
+    default: '0'
+
+inputs:
+-   domain: stream
+    dtype: complex
+
+outputs:
+-   domain: stream
+    dtype: complex
+
+templates:
+    imports: import grgsm
+    make: grgsm.controlled_rotator_cc(${phase_inc})
+    callbacks:
+    - set_phase_inc(${phase_inc})
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_controlled_rotator_cc.xml b/grc/misc_utils/gsm_controlled_rotator_cc.xml
deleted file mode 100644
index 09ac422..0000000
--- a/grc/misc_utils/gsm_controlled_rotator_cc.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Controlled Rotator</name>
-  <key>gsm_controlled_rotator_cc</key>
-  <import>import grgsm</import>
-  <make>grgsm.controlled_rotator_cc($phase_inc)</make>
-  <callback>set_phase_inc($phase_inc)</callback>
-  <param>
-    <name>phase_inc</name>
-    <key>phase_inc</key>
-    <value>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/grc/misc_utils/gsm_extract_assignment_cmd.block.yml b/grc/misc_utils/gsm_extract_assignment_cmd.block.yml
new file mode 100644
index 0000000..1ce258d
--- /dev/null
+++ b/grc/misc_utils/gsm_extract_assignment_cmd.block.yml
@@ -0,0 +1,22 @@
+# auto-generated by grc.converter
+
+id: gsm_extract_assignment_cmd
+label: Extract Assignment Command
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: import grgsm
+    make: grgsm.extract_assignment_cmd()
+
+documentation: |-
+    Extracts Assignemnt Commands.
+
+    Input: decoded control channel messages
+
+    The information can be retrieved using following function:
+    get_assignment_commands()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_extract_assignment_cmd.xml b/grc/misc_utils/gsm_extract_assignment_cmd.xml
deleted file mode 100644
index 8562e56..0000000
--- a/grc/misc_utils/gsm_extract_assignment_cmd.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Extract Assignment Command</name>
-  <key>gsm_extract_assignment_cmd</key>
-  <import>import grgsm</import>
-  <make>grgsm.extract_assignment_cmd()</make>
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-  <doc>
-Extracts Assignemnt Commands.
-
-Input: decoded control channel messages
-
-The information can be retrieved using following function:
-get_assignment_commands()
-
-</doc>
-</block>
diff --git a/grc/misc_utils/gsm_extract_cmc.block.yml b/grc/misc_utils/gsm_extract_cmc.block.yml
new file mode 100644
index 0000000..3c98ab3
--- /dev/null
+++ b/grc/misc_utils/gsm_extract_cmc.block.yml
@@ -0,0 +1,22 @@
+# auto-generated by grc.converter
+
+id: gsm_extract_cmc
+label: Extract Cipher Mode Command
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: import grgsm
+    make: grgsm.extract_cmc()
+
+documentation: |-
+    Extracts the framenumber and the assigned encryption algorithm from Cipher Mode Commands.
+
+    Input: decoded control channel messages
+
+    The information can be retrieved using following functions:
+    get_frame_numbers(), get_a5_versions()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_extract_cmc.xml b/grc/misc_utils/gsm_extract_cmc.xml
deleted file mode 100644
index 66a6408..0000000
--- a/grc/misc_utils/gsm_extract_cmc.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Extract Cipher Mode Command</name>
-  <key>gsm_extract_cmc</key>
-  <import>import grgsm</import>
-  <make>grgsm.extract_cmc()</make>
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-  <doc>
-Extracts the framenumber and the assigned encryption algorithm from Cipher Mode Commands.
-
-Input: decoded control channel messages
-
-The information can be retrieved using following functions:
-get_frame_numbers(), get_a5_versions()
-
-</doc>
-</block>
diff --git a/grc/misc_utils/gsm_extract_immediate_assignment.block.yml b/grc/misc_utils/gsm_extract_immediate_assignment.block.yml
new file mode 100644
index 0000000..432a6a1
--- /dev/null
+++ b/grc/misc_utils/gsm_extract_immediate_assignment.block.yml
@@ -0,0 +1,46 @@
+# auto-generated by grc.converter
+
+id: gsm_extract_immediate_assignment
+label: Extract Immediate Assignment
+
+parameters:
+-   id: print_immediate_assignments
+    label: Print
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: ignore_gprs
+    label: Ignore GPRS
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: unique_references
+    label: Unique per request ref
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: import grgsm
+    make: grgsm.extract_immediate_assignment(${print_immediate_assignments}, ${ignore_gprs},
+        ${unique_references})
+
+documentation: |-
+    Extracts the assignment information from immediate assignments, i.e. timeslot, channel type, etc.
+
+    Input: decoded control channel messages
+
+    If "Print" is enabled, the information will be printed to output also,
+    else the data can be retrieved using functions:
+
+    get_frame_numbers(), get_channel_types(), get_timeslots(), get_subchannels(), get_hopping(), get_maios(), get_hsns(), get_arfcns(), get_timing_advances(), get_mobile_allocations()
+
+    If "Ignore GPRS" is enabled, the extractor will ignore Immediate Assignments that assign GPRS channels.
+
+    If "Unique per request ref" is enabled, the extractor will capture the first Immediate Assignment for every unique request reference, and ignore further duplicate assignments
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_extract_immediate_assignment.xml b/grc/misc_utils/gsm_extract_immediate_assignment.xml
deleted file mode 100644
index 9040b9b..0000000
--- a/grc/misc_utils/gsm_extract_immediate_assignment.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Extract Immediate Assignment</name>
-  <key>gsm_extract_immediate_assignment</key>
-  <import>import grgsm</import>
-  <make>grgsm.extract_immediate_assignment($print_immediate_assignments, $ignore_gprs, $unique_references)</make>
-
-  <param>
-    <name>Print</name>
-    <key>print_immediate_assignments</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Ignore GPRS</name>
-    <key>ignore_gprs</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Unique per request ref</name>
-    <key>unique_references</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-
-  <doc>
-Extracts the assignment information from immediate assignments, i.e. timeslot, channel type, etc.
-
-Input: decoded control channel messages
-
-If "Print" is enabled, the information will be printed to output also,
-else the data can be retrieved using functions:
-
-get_frame_numbers(), get_channel_types(), get_timeslots(), get_subchannels(), get_hopping(), get_maios(), get_hsns(), get_arfcns(), get_timing_advances(), get_mobile_allocations()
-
-If "Ignore GPRS" is enabled, the extractor will ignore Immediate Assignments that assign GPRS channels.
-
-If "Unique per request ref" is enabled, the extractor will capture the first Immediate Assignment for every unique request reference, and ignore further duplicate assignments
-
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_extract_system_info.block.yml b/grc/misc_utils/gsm_extract_system_info.block.yml
new file mode 100644
index 0000000..48e2322
--- /dev/null
+++ b/grc/misc_utils/gsm_extract_system_info.block.yml
@@ -0,0 +1,16 @@
+# auto-generated by grc.converter
+
+id: gsm_extract_system_info
+label: Extract System Info
+
+inputs:
+-   domain: message
+    id: msgs
+-   domain: message
+    id: bursts
+
+templates:
+    imports: import grgsm
+    make: grgsm.extract_system_info()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_extract_system_info.xml b/grc/misc_utils/gsm_extract_system_info.xml
deleted file mode 100644
index 4a5d26d..0000000
--- a/grc/misc_utils/gsm_extract_system_info.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Extract System Info</name>
-  <key>gsm_extract_system_info</key>
-  <import>import grgsm</import>
-  <make>grgsm.extract_system_info()</make>
-
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-  </sink>
-  
-</block>
diff --git a/grc/misc_utils/gsm_message_file_sink.block.yml b/grc/misc_utils/gsm_message_file_sink.block.yml
new file mode 100644
index 0000000..e83669a
--- /dev/null
+++ b/grc/misc_utils/gsm_message_file_sink.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: gsm_message_file_sink
+label: Message File Sink
+
+parameters:
+-   id: filename
+    label: Destination file
+    dtype: file_open
+    default: /tmp/output.msg
+
+inputs:
+-   domain: message
+    id: in
+
+templates:
+    imports: import grgsm
+    make: grgsm.message_file_sink(${filename})
+
+documentation: |-
+    This block stores incoming gsm messages to a file.
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_message_file_sink.xml b/grc/misc_utils/gsm_message_file_sink.xml
deleted file mode 100644
index 087747e..0000000
--- a/grc/misc_utils/gsm_message_file_sink.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message File Sink</name>
-  <key>gsm_message_file_sink</key>
-  <import>import grgsm</import>
-  <make>grgsm.message_file_sink($filename)</make>
-
-  <param>
-    <name>Destination file</name>
-    <key>filename</key>
-    <value>/tmp/output.msg</value>
-    <type>file_open</type>
-  </param>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-  
-  <doc>
-This block stores incoming gsm messages to a file.
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_message_file_source.block.yml b/grc/misc_utils/gsm_message_file_source.block.yml
new file mode 100644
index 0000000..047ea28
--- /dev/null
+++ b/grc/misc_utils/gsm_message_file_source.block.yml
@@ -0,0 +1,23 @@
+# auto-generated by grc.converter
+
+id: gsm_message_file_source
+label: Message File Source
+
+parameters:
+-   id: filename
+    label: Source file
+    dtype: file_open
+    default: /tmp/output.msg
+
+outputs:
+-   domain: message
+    id: out
+
+templates:
+    imports: import grgsm
+    make: grgsm.message_file_source(${filename})
+
+documentation: |-
+    This block outputs gsm messages stored in a file.
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_message_file_source.xml b/grc/misc_utils/gsm_message_file_source.xml
deleted file mode 100644
index 7876c77..0000000
--- a/grc/misc_utils/gsm_message_file_source.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message File Source</name>
-  <key>gsm_message_file_source</key>
-  <import>import grgsm</import>
-  <make>grgsm.message_file_source($filename)</make>
-
-  <param>
-    <name>Source file</name>
-    <key>filename</key>
-    <value>/tmp/output.msg</value>
-    <type>file_open</type>
-  </param>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-  </source>
-  
-  <doc>
-This block outputs gsm messages stored in a file.
-  </doc>
-</block>
diff --git a/grc/misc_utils/gsm_message_printer.block.yml b/grc/misc_utils/gsm_message_printer.block.yml
new file mode 100644
index 0000000..beb9189
--- /dev/null
+++ b/grc/misc_utils/gsm_message_printer.block.yml
@@ -0,0 +1,39 @@
+# auto-generated by grc.converter
+
+id: gsm_message_printer
+label: Message Printer
+
+parameters:
+-   id: prepend_string
+    label: Prepend String
+    dtype: string
+    hide: part
+-   id: prepend_fnr
+    label: Prepend Frame Number
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: prepend_frame_count
+    label: Prepend Frame Count
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+-   id: print_gsmtap_header
+    label: Print GSMTap header
+    dtype: bool
+    default: 'False'
+    options: ['False', 'True']
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: |-
+        import grgsm
+        import pmt
+    make: |-
+        grgsm.message_printer(pmt.intern(${prepend_string}), ${prepend_fnr},
+            ${prepend_frame_count}, ${print_gsmtap_header})
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_message_printer.xml b/grc/misc_utils/gsm_message_printer.xml
deleted file mode 100644
index be50b78..0000000
--- a/grc/misc_utils/gsm_message_printer.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message Printer</name>
-  <key>gsm_message_printer</key>
-  <import>import grgsm</import>
-  <import>import pmt</import>
-  <make>grgsm.message_printer(pmt.intern($prepend_string), $prepend_fnr,
-    $prepend_frame_count, $print_gsmtap_header)</make>
-
-  <param>
-    <name>Prepend String</name>
-    <key>prepend_string</key>
-    <value></value>
-    <type>string</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>Prepend Frame Number</name>
-    <key>prepend_fnr</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Prepend Frame Count</name>
-    <key>prepend_frame_count</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-  <param>
-    <name>Print GSMTap header</name>
-    <key>print_gsmtap_header</key>
-    <value>False</value>
-    <type>bool</type>
-    <option>
-      <name>False</name>
-      <key>False</key>
-    </option>
-    <option>
-      <name>True</name>
-      <key>True</key>
-    </option>
-  </param>
-
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-</block>
diff --git a/grc/misc_utils/gsm_msg_to_tag.block.yml b/grc/misc_utils/gsm_msg_to_tag.block.yml
new file mode 100644
index 0000000..1fe894b
--- /dev/null
+++ b/grc/misc_utils/gsm_msg_to_tag.block.yml
@@ -0,0 +1,21 @@
+# auto-generated by grc.converter
+
+id: gsm_msg_to_tag
+label: Message To Tag
+
+inputs:
+-   domain: stream
+    dtype: complex
+-   domain: message
+    id: msg
+    optional: true
+
+outputs:
+-   domain: stream
+    dtype: complex
+
+templates:
+    imports: import grgsm
+    make: grgsm.msg_to_tag()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_msg_to_tag.xml b/grc/misc_utils/gsm_msg_to_tag.xml
deleted file mode 100644
index c0d73c3..0000000
--- a/grc/misc_utils/gsm_msg_to_tag.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message To Tag</name>
-  <key>gsm_msg_to_tag</key>
-  <import>import grgsm</import>
-  <make>grgsm.msg_to_tag()</make>
-
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-  </sink>
-
-  <sink>
-    <name>msg</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>complex</type>
-  </source>
-</block>
diff --git a/grc/misc_utils/gsm_tmsi_dumper.block.yml b/grc/misc_utils/gsm_tmsi_dumper.block.yml
new file mode 100644
index 0000000..21670a2
--- /dev/null
+++ b/grc/misc_utils/gsm_tmsi_dumper.block.yml
@@ -0,0 +1,16 @@
+# auto-generated by grc.converter
+
+id: gsm_tmsi_dumper
+label: TMSI Dumper
+
+inputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: |-
+        import grgsm
+        import pmt
+    make: grgsm.tmsi_dumper()
+
+file_format: 1
diff --git a/grc/misc_utils/gsm_tmsi_dumper.xml b/grc/misc_utils/gsm_tmsi_dumper.xml
deleted file mode 100644
index 807243b..0000000
--- a/grc/misc_utils/gsm_tmsi_dumper.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TMSI Dumper</name>
-  <key>gsm_tmsi_dumper</key>
-  <import>import grgsm</import>
-  <import>import pmt</import>
-  <make>grgsm.tmsi_dumper()</make>
-
-  <sink>
-    <name>msgs</name>
-    <type>message</type>
-  </sink>
-</block>
diff --git a/grc/qa_utils/CMakeLists.txt b/grc/qa_utils/CMakeLists.txt
index 1f57aa1..2ed15a1 100644
--- a/grc/qa_utils/CMakeLists.txt
+++ b/grc/qa_utils/CMakeLists.txt
@@ -18,8 +18,9 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_burst_source.xml
-    gsm_burst_sink.xml
-    gsm_message_source.xml
-    gsm_message_sink.xml DESTINATION share/gnuradio/grc/blocks
+    gsm_burst_source.block.xml
+    gsm_burst_sink.block.xml
+    gsm_message_source.block.xml
+    gsm_message_sink.block.xml
+    DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/qa_utils/gsm_burst_sink.block.yml b/grc/qa_utils/gsm_burst_sink.block.yml
new file mode 100644
index 0000000..fdcfa29
--- /dev/null
+++ b/grc/qa_utils/gsm_burst_sink.block.yml
@@ -0,0 +1,14 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_sink
+label: Burst Sink
+
+inputs:
+-   domain: message
+    id: in
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_sink()
+
+file_format: 1
diff --git a/grc/qa_utils/gsm_burst_sink.xml b/grc/qa_utils/gsm_burst_sink.xml
deleted file mode 100644
index 1026993..0000000
--- a/grc/qa_utils/gsm_burst_sink.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Sink</name>
-  <key>gsm_burst_sink</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_sink()</make>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-</block>
diff --git a/grc/qa_utils/gsm_burst_source.block.yml b/grc/qa_utils/gsm_burst_source.block.yml
new file mode 100644
index 0000000..81e56f5
--- /dev/null
+++ b/grc/qa_utils/gsm_burst_source.block.yml
@@ -0,0 +1,30 @@
+# auto-generated by grc.converter
+
+id: gsm_burst_source
+label: Burst Source
+
+parameters:
+-   id: framenumbers
+    label: Frame numbers
+    dtype: int_vector
+    default: '[]'
+    hide: part
+-   id: timeslots
+    label: Timeslots
+    dtype: int_vector
+    default: '[]'
+    hide: part
+-   id: bursts
+    label: Bursts
+    dtype: raw
+    default: '[[],]'
+
+outputs:
+-   domain: message
+    id: out
+
+templates:
+    imports: import grgsm
+    make: grgsm.burst_source(${framenumbers}, ${timeslots}, ${bursts})
+
+file_format: 1
diff --git a/grc/qa_utils/gsm_burst_source.xml b/grc/qa_utils/gsm_burst_source.xml
deleted file mode 100644
index d3da677..0000000
--- a/grc/qa_utils/gsm_burst_source.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Burst Source</name>
-  <key>gsm_burst_source</key>
-  <import>import grgsm</import>
-  <make>grgsm.burst_source($framenumbers, $timeslots, $bursts)</make>
-
-  <param>
-    <name>Frame numbers</name>
-    <key>framenumbers</key>
-    <value>[]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>Timeslots</name>
-    <key>timeslots</key>
-    <value>[]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>Bursts</name>
-    <key>bursts</key>
-    <value>[[],]</value>
-    <type>raw</type>
-  </param>
-
-  <source>
-    <name>out</name>
-    <type>message</type>
-  </source>
-</block>
diff --git a/grc/qa_utils/gsm_message_sink.block.yml b/grc/qa_utils/gsm_message_sink.block.yml
new file mode 100644
index 0000000..bde7f52
--- /dev/null
+++ b/grc/qa_utils/gsm_message_sink.block.yml
@@ -0,0 +1,19 @@
+# auto-generated by grc.converter
+
+id: gsm_message_sink
+label: Message Sink
+
+inputs:
+-   domain: message
+    id: in
+
+templates:
+    imports: import grgsm
+    make: grgsm.message_sink()
+
+documentation: |-
+    This block is a message sink for testing purposes.
+
+    The data can be retrieved using function get_messages()
+
+file_format: 1
diff --git a/grc/qa_utils/gsm_message_sink.xml b/grc/qa_utils/gsm_message_sink.xml
deleted file mode 100644
index e0d6ac0..0000000
--- a/grc/qa_utils/gsm_message_sink.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message Sink</name>
-  <key>gsm_message_sink</key>
-  <import>import grgsm</import>
-  <make>grgsm.message_sink()</make>
-
-  <sink>
-    <name>in</name>
-    <type>message</type>
-  </sink>
-  
-  <doc>
-This block is a message sink for testing purposes.
-
-The data can be retrieved using function get_messages()
-
-  </doc>
-</block>
diff --git a/grc/qa_utils/gsm_message_source.block.yml b/grc/qa_utils/gsm_message_source.block.yml
new file mode 100644
index 0000000..abb1800
--- /dev/null
+++ b/grc/qa_utils/gsm_message_source.block.yml
@@ -0,0 +1,39 @@
+# auto-generated by grc.converter
+
+id: gsm_message_source
+label: Message Source
+
+parameters:
+-   id: messages
+    label: Messages
+    dtype: raw
+    default: '["02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0
+        2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+
+        "02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b
+        2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
+
+        "02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00
+        00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
+
+        "02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b
+        2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"]'
+    hide: 'true'
+
+outputs:
+-   domain: message
+    id: msgs
+
+templates:
+    imports: import grgsm
+    make: grgsm.message_source(${messages})
+
+documentation: |-
+    This block is a basic message source for testing purposes.
+
+    It takes a list of strings as input, where each string
+    is a whitespace-separated list of hexadecimal values representing the data bytes of a message including the gsmtap header.
+
+    Such strings can be obtained using the message printer with option "Print GSMTap header"
+
+file_format: 1
diff --git a/grc/qa_utils/gsm_message_source.xml b/grc/qa_utils/gsm_message_source.xml
deleted file mode 100644
index ab06f65..0000000
--- a/grc/qa_utils/gsm_message_source.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Message Source</name>
-  <key>gsm_message_source</key>
-  <import>import grgsm</import>
-  <make>grgsm.message_source($messages)</make>
-
-  <param>
-    <name>Messages</name>
-    <key>messages</key>
-    <value>["02 04 01 00 00 00 c9 00 00 1d 3c e5 02 00 01 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
-"02 04 01 00 00 00 ca 00 00 1d 3c e9 02 00 02 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b",
-"02 04 01 00 00 00 cb 00 00 1d 3d 0e 01 00 00 00 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff e5 04 00",
-"02 04 01 00 00 00 cb 00 00 1d 3d 12 02 00 00 00 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b"]</value>
-    <type>raw</type>
-    <hide>true</hide>
-  </param>
-
-  <source>
-    <name>msgs</name>
-    <type>message</type>
-  </source>
-
-  <doc>
-This block is a basic message source for testing purposes.
-
-It takes a list of strings as input, where each string
-is a whitespace-separated list of hexadecimal values representing the data bytes of a message including the gsmtap header.
-
-Such strings can be obtained using the message printer with option "Print GSMTap header"
-  </doc>
-</block>
diff --git a/grc/receiver/CMakeLists.txt b/grc/receiver/CMakeLists.txt
index 7b51226..3db5983 100644
--- a/grc/receiver/CMakeLists.txt
+++ b/grc/receiver/CMakeLists.txt
@@ -18,12 +18,13 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_input.xml
-    gsm_receiver.xml
-    gsm_receiver_with_uplink.xml
-    gsm_fcch_burst_tagger.xml
-    gsm_sch_detector.xml
-    gsm_fcch_detector.xml
-    gsm_cx_channel_hopper.xml
-    gsm_clock_offset_control.xml DESTINATION share/gnuradio/grc/blocks
+    gsm_input.block.yml
+    gsm_receiver.block.yml
+    gsm_receiver_with_uplink.block.yml
+    gsm_fcch_burst_tagger.block.yml
+    gsm_sch_detector.block.yml
+    gsm_fcch_detector.block.yml
+    gsm_cx_channel_hopper.block.yml
+    gsm_clock_offset_control.block.yml
+    DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/receiver/gsm_clock_offset_control.block.yml b/grc/receiver/gsm_clock_offset_control.block.yml
new file mode 100644
index 0000000..abb52bc
--- /dev/null
+++ b/grc/receiver/gsm_clock_offset_control.block.yml
@@ -0,0 +1,35 @@
+# auto-generated by grc.converter
+
+id: gsm_clock_offset_control
+label: GSM Clock Offset Control
+
+parameters:
+-   id: fc
+    label: fc
+    dtype: float
+    default: fc
+-   id: osr
+    label: OSR
+    dtype: int
+    default: osr
+-   id: samp_rate
+    label: samp_rate
+    dtype: float
+    default: samp_rate
+
+inputs:
+-   domain: message
+    id: measurements
+
+outputs:
+-   domain: message
+    id: ctrl
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.clock_offset_control(${fc}, ${samp_rate}, ${osr})
+    callbacks:
+    - set_fc(${fc})
+
+file_format: 1
diff --git a/grc/receiver/gsm_clock_offset_control.xml b/grc/receiver/gsm_clock_offset_control.xml
deleted file mode 100644
index c5a932a..0000000
--- a/grc/receiver/gsm_clock_offset_control.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>GSM Clock Offset Control</name>
-  <key>gsm_clock_offset_control</key>
-  <import>import grgsm</import>
-  <make>grgsm.clock_offset_control($fc, $samp_rate, $osr)</make>
-  <callback>set_fc($fc)</callback>
-  <param>
-    <name>fc</name>
-    <key>fc</key>
-    <value>fc</value>
-    <type>float</type>
-  </param>
-  <param>
-    <name>OSR</name>
-    <key>osr</key>
-    <value>osr</value>
-    <type>int</type>
-  </param>
-
-  <param>
-    <name>samp_rate</name>
-    <key>samp_rate</key>
-    <value>samp_rate</value>
-    <type>float</type>
-  </param>
-
-  <sink>
-    <name>measurements</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>ctrl</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/receiver/gsm_cx_channel_hopper.block.yml b/grc/receiver/gsm_cx_channel_hopper.block.yml
new file mode 100644
index 0000000..edee1fb
--- /dev/null
+++ b/grc/receiver/gsm_cx_channel_hopper.block.yml
@@ -0,0 +1,30 @@
+# auto-generated by grc.converter
+
+id: gsm_cx_channel_hopper
+label: CX Channel Hopper
+
+parameters:
+-   id: ma
+    label: MA
+    dtype: int_vector
+    default: '[]'
+-   id: maio
+    label: MAIO
+    dtype: int
+-   id: hsn
+    label: HSN
+    dtype: int
+
+inputs:
+-   domain: message
+    id: CX
+
+outputs:
+-   domain: message
+    id: bursts
+
+templates:
+    imports: import grgsm
+    make: grgsm.cx_channel_hopper(${ma}, ${maio}, ${hsn})
+
+file_format: 1
diff --git a/grc/receiver/gsm_cx_channel_hopper.xml b/grc/receiver/gsm_cx_channel_hopper.xml
deleted file mode 100644
index 9ff07dc..0000000
--- a/grc/receiver/gsm_cx_channel_hopper.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>CX Channel Hopper</name>
-  <key>gsm_cx_channel_hopper</key>
-  <import>import grgsm</import>
-  <make>grgsm.cx_channel_hopper($ma, $maio, $hsn)</make>
-  <param>
-    <name>MA</name>
-    <key>ma</key>
-    <value>[]</value>
-    <type>int_vector</type>
-  </param>
-
-  <param>
-    <name>MAIO</name>
-    <key>maio</key>
-    <type>int</type>
-  </param>
-
-  <param>
-    <name>HSN</name>
-    <key>hsn</key>
-    <type>int</type>
-  </param>
-
-  <sink>
-    <name>CX</name>
-    <type>message</type>
-  </sink>
-
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-  </source>
-</block>
diff --git a/grc/receiver/gsm_fcch_burst_tagger.block.yml b/grc/receiver/gsm_fcch_burst_tagger.block.yml
new file mode 100644
index 0000000..c5d1de8
--- /dev/null
+++ b/grc/receiver/gsm_fcch_burst_tagger.block.yml
@@ -0,0 +1,26 @@
+# auto-generated by grc.converter
+
+id: gsm_fcch_burst_tagger
+label: FCCH Burst Tagger
+
+parameters:
+-   id: OSR
+    label: OSR
+    dtype: int
+
+inputs:
+-   domain: stream
+    dtype: complex
+-   label: threshold
+    domain: stream
+    dtype: float
+
+outputs:
+-   domain: stream
+    dtype: complex
+
+templates:
+    imports: import grgsm
+    make: grgsm.fcch_burst_tagger(${OSR})
+
+file_format: 1
diff --git a/grc/receiver/gsm_fcch_burst_tagger.xml b/grc/receiver/gsm_fcch_burst_tagger.xml
deleted file mode 100644
index a0cb977..0000000
--- a/grc/receiver/gsm_fcch_burst_tagger.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>FCCH Burst Tagger</name>
-  <key>gsm_fcch_burst_tagger</key>
-  <import>import grgsm</import>
-  <make>grgsm.fcch_burst_tagger($OSR)</make>
-  <param>
-    <name>OSR</name>
-    <key>OSR</key>
-    <type>int</type>
-  </param>
-
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-  </sink>
-  
-  <sink>
-    <name>threshold</name>
-    <type>float</type>
-  </sink>
-
-  <source>
-    <name>out</name>
-    <type>complex</type>
-  </source>
-</block>
diff --git a/grc/receiver/gsm_fcch_detector.block.yml b/grc/receiver/gsm_fcch_detector.block.yml
new file mode 100644
index 0000000..70a8fa5
--- /dev/null
+++ b/grc/receiver/gsm_fcch_detector.block.yml
@@ -0,0 +1,32 @@
+# auto-generated by grc.converter
+
+id: gsm_fcch_detector
+label: FCCH Bursts Detector
+
+parameters:
+-   id: OSR
+    label: OverSamplingRatio
+    dtype: int
+    default: '4'
+
+inputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+
+outputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+
+templates:
+    imports: import grgsm
+    make: grgsm.fcch_detector(${OSR})
+    callbacks:
+    - set_OSR(${OSR})
+
+documentation: |-
+    Piotr Krysik
+    Detects positions of FCCH bursts. At the end of each detected FCCH burst adds to the stream a tag with key "fcch" and value which is a frequency offset estimate. The input sampling frequency should be integer multiply of GSM GMKS symbol rate - 1625000/6 Hz.
+
+file_format: 1
diff --git a/grc/receiver/gsm_fcch_detector.xml b/grc/receiver/gsm_fcch_detector.xml
deleted file mode 100644
index f8f8997..0000000
--- a/grc/receiver/gsm_fcch_detector.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>FCCH Bursts Detector</name>
-  <key>gsm_fcch_detector</key>
-  <import>import grgsm</import>
-  <make>grgsm.fcch_detector($OSR)</make>
-<callback>set_OSR($OSR)</callback>
-  <param>
-    <name>OverSamplingRatio</name>
-    <key>OSR</key>
-    <value>4</value>
-    <type>int</type>
-  </param>
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </sink>
-  <source>
-    <name>out</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </source>
-  <doc>Piotr Krysik
-Detects positions of FCCH bursts. At the end of each detected FCCH burst adds to the stream a tag with key "fcch" and value which is a frequency offset estimate. The input sampling frequency should be integer multiply of GSM GMKS symbol rate - 1625000/6 Hz.</doc>
-  <grc_source>/home/piotr/Odbiornik_gsm/gr-gsm/examples/gsm_fcch_detector.grc</grc_source>
-</block>
diff --git a/grc/receiver/gsm_input.block.yml b/grc/receiver/gsm_input.block.yml
new file mode 100644
index 0000000..5489b00
--- /dev/null
+++ b/grc/receiver/gsm_input.block.yml
@@ -0,0 +1,60 @@
+# auto-generated by grc.converter
+
+id: gsm_input
+label: GSM Input Adaptor
+
+parameters:
+-   id: ppm
+    label: ppm
+    dtype: float
+    default: ppm
+    hide: part
+-   id: osr
+    label: OSR
+    dtype: int
+    default: osr
+    hide: part
+-   id: fc
+    label: fc
+    dtype: float
+    default: fc
+    hide: part
+-   id: samp_rate_in
+    label: samp_rate_in
+    dtype: float
+    default: samp_rate_in
+    hide: part
+
+inputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+-   domain: message
+    id: ctrl_in
+    optional: true
+
+outputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+
+templates:
+    imports: import grgsm
+    make: |-
+        grgsm.gsm_input(
+            ppm=${ppm},
+            osr=${osr},
+            fc=${fc},
+            samp_rate_in=${samp_rate_in},
+        )
+    callbacks:
+    - set_ppm(${ppm})
+    - set_osr(${osr})
+    - set_fc(${fc})
+    - set_samp_rate_in(${samp_rate_in})
+
+documentation: |-
+    Piotr Krysik
+    Adaptor of input stream for the GSM receiver. Contains frequency offset corrector and resampler to correct carrier frequency and sampling frequency offsets. At the end it has LP filter for filtering of a GSM channel.
+
+file_format: 1
diff --git a/grc/receiver/gsm_input.xml b/grc/receiver/gsm_input.xml
deleted file mode 100644
index 52445da..0000000
--- a/grc/receiver/gsm_input.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<block>
-  <name>GSM Input Adaptor</name>
-  <key>gsm_input</key>
-  <category></category>
-  <import>import grgsm</import>
-  <make>grgsm.gsm_input(
-    ppm=$ppm,
-    osr=$osr,
-    fc=$fc,
-    samp_rate_in=$samp_rate_in,
-)</make>
-  <callback>set_ppm($ppm)</callback>
-  <callback>set_osr($osr)</callback>
-  <callback>set_fc($fc)</callback>
-  <callback>set_samp_rate_in($samp_rate_in)</callback>
-  <param>
-    <name>ppm</name>
-    <key>ppm</key>
-    <value>ppm</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>OSR</name>
-    <key>osr</key>
-    <value>osr</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>fc</name>
-    <key>fc</key>
-    <value>fc</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>samp_rate_in</name>
-    <key>samp_rate_in</key>
-    <value>samp_rate_in</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </sink>
-  <sink>
-    <name>ctrl_in</name>
-    <type>message</type>
-    <optional>True</optional>
-  </sink>
-  <source>
-    <name>out</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-  </source>
-  <doc>Piotr Krysik
-Adaptor of input stream for the GSM receiver. Contains frequency offset corrector and resampler to correct carrier frequency and sampling frequency offsets. At the end it has LP filter for filtering of a GSM channel.</doc>
-</block>
diff --git a/grc/receiver/gsm_receiver.block.yml b/grc/receiver/gsm_receiver.block.yml
new file mode 100644
index 0000000..9897bec
--- /dev/null
+++ b/grc/receiver/gsm_receiver.block.yml
@@ -0,0 +1,49 @@
+# auto-generated by grc.converter
+
+id: gsm_receiver
+label: GSM Receiver
+
+parameters:
+-   id: osr
+    label: Oversampling ratio
+    dtype: int
+    default: '4'
+-   id: cell_allocation
+    label: Cell allocation
+    dtype: float_vector
+    default: '[0]'
+    hide: part
+-   id: tseq_nums
+    label: TSEQ numbers
+    dtype: int_vector
+    default: '[]'
+    hide: part
+-   id: num_streams
+    label: Num Streams
+    dtype: int
+    default: '1'
+    hide: part
+
+inputs:
+-   domain: stream
+    dtype: complex
+    multiplicity: ${ num_streams }
+
+outputs:
+-   domain: message
+    id: C0
+    optional: true
+-   domain: message
+    id: CX
+    optional: true
+-   domain: message
+    id: measurements
+    optional: true
+asserts:
+- ${ num_streams >= 0 }
+
+templates:
+    imports: import grgsm
+    make: grgsm.receiver(${osr}, ${cell_allocation}, ${tseq_nums}, False)
+
+file_format: 1
diff --git a/grc/receiver/gsm_receiver.xml b/grc/receiver/gsm_receiver.xml
deleted file mode 100644
index 2988243..0000000
--- a/grc/receiver/gsm_receiver.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>GSM Receiver</name>
-  <key>gsm_receiver</key>
-  <import>import grgsm</import>
-  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, False)</make>
-
-  <param>
-    <name>Oversampling ratio</name>
-    <key>osr</key>
-    <value>4</value>
-    <type>int</type>
-  </param>
-
-  <param>
-    <name>Cell allocation</name>
-    <key>cell_allocation</key>
-    <value>[0]</value>
-    <type>float_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>TSEQ numbers</name>
-    <key>tseq_nums</key>
-    <value>[]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>Num Streams</name>
-    <key>num_streams</key>
-    <value>1</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-  <check>$num_streams >= 0</check>
-  
-  <sink>
-    <name>in</name>
-    <type>complex</type>
-    <nports>$num_streams</nports>
-  </sink>
-
-  <source>
-    <name>C0</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  
-  <source>
-    <name>CX</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <source>
-    <name>measurements</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/receiver/gsm_receiver_with_uplink.block.yml b/grc/receiver/gsm_receiver_with_uplink.block.yml
new file mode 100644
index 0000000..d0b6302
--- /dev/null
+++ b/grc/receiver/gsm_receiver_with_uplink.block.yml
@@ -0,0 +1,54 @@
+# auto-generated by grc.converter
+
+id: gsm_receiver_with_uplink
+label: GSM Receiver (with uplink)
+
+parameters:
+-   id: osr
+    label: Oversampling ratio
+    dtype: int
+    default: '4'
+-   id: cell_allocation
+    label: Cell allocation
+    dtype: float_vector
+    default: '[0]'
+    hide: part
+-   id: tseq_nums
+    label: TSEQ numbers
+    dtype: int_vector
+    default: '[]'
+    hide: part
+-   id: num_streams
+    label: Num Streams
+    dtype: int
+    default: '1'
+    hide: part
+
+inputs:
+-   label: C
+    domain: stream
+    dtype: complex
+    multiplicity: ${ num_streams }
+-   label: C_up
+    domain: stream
+    dtype: complex
+    multiplicity: ${ num_streams }
+
+outputs:
+-   domain: message
+    id: C0
+    optional: true
+-   domain: message
+    id: CX
+    optional: true
+-   domain: message
+    id: measurements
+    optional: true
+asserts:
+- ${ num_streams >= 0 }
+
+templates:
+    imports: import grgsm
+    make: grgsm.receiver(${osr}, ${cell_allocation}, ${tseq_nums}, True)
+
+file_format: 1
diff --git a/grc/receiver/gsm_receiver_with_uplink.xml b/grc/receiver/gsm_receiver_with_uplink.xml
deleted file mode 100644
index 4b68336..0000000
--- a/grc/receiver/gsm_receiver_with_uplink.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>GSM Receiver (with uplink)</name>
-  <key>gsm_receiver_with_uplink</key>
-  <import>import grgsm</import>
-  <make>grgsm.receiver($osr, $cell_allocation, $tseq_nums, True)</make>
-
-  <param>
-    <name>Oversampling ratio</name>
-    <key>osr</key>
-    <value>4</value>
-    <type>int</type>
-  </param>
-
-  <param>
-    <name>Cell allocation</name>
-    <key>cell_allocation</key>
-    <value>[0]</value>
-    <type>float_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>TSEQ numbers</name>
-    <key>tseq_nums</key>
-    <value>[]</value>
-    <type>int_vector</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>Num Streams</name>
-    <key>num_streams</key>
-    <value>1</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-
-  <check>$num_streams >= 0</check>
-  
-  <sink>
-    <name>C</name>
-    <type>complex</type>
-    <nports>$num_streams</nports>
-  </sink>
-
-
-  <sink>
-    <name>C_up</name>
-    <type>complex</type>
-    <nports>$num_streams</nports>
-  </sink>
-
-  <source>
-    <name>C0</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-  
-  <source>
-    <name>CX</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <source>
-    <name>measurements</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/receiver/gsm_sch_detector.block.yml b/grc/receiver/gsm_sch_detector.block.yml
new file mode 100644
index 0000000..33d4543
--- /dev/null
+++ b/grc/receiver/gsm_sch_detector.block.yml
@@ -0,0 +1,26 @@
+# auto-generated by grc.converter
+
+id: gsm_sch_detector
+label: SCH Bursts Detector
+
+parameters:
+-   id: OSR
+    label: OSR
+    dtype: int
+    default: '4'
+
+inputs:
+-   domain: stream
+    dtype: complex
+
+outputs:
+-   domain: stream
+    dtype: complex
+
+templates:
+    imports: import grgsm
+    make: grgsm.sch_detector(${OSR})
+    callbacks:
+    - set_OSR(${OSR})
+
+file_format: 1
diff --git a/grc/receiver/gsm_sch_detector.xml b/grc/receiver/gsm_sch_detector.xml
deleted file mode 100644
index b3adb56..0000000
--- a/grc/receiver/gsm_sch_detector.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>SCH Bursts Detector</name>
-  <key>gsm_sch_detector</key>
-  <import>import grgsm</import>
-  <make>grgsm.sch_detector($OSR)</make>
-  <callback>set_OSR($OSR)</callback>
-  <param>
-    <name>OSR</name>
-    <key>OSR</key>
-    <value>4</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/grc/transmitter/CMakeLists.txt b/grc/transmitter/CMakeLists.txt
index 4df2abb..d66ea32 100644
--- a/grc/transmitter/CMakeLists.txt
+++ b/grc/transmitter/CMakeLists.txt
@@ -18,10 +18,10 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_gmsk_mod.xml
-    gsm_txtime_bursts_tagger.xml
-    gsm_txtime_setter.xml
-    gsm_preprocess_tx_burst.xml
-    gsm_gen_test_ab.xml
+    gsm_gmsk_mod.block.yml
+    gsm_txtime_bursts_tagger.block.yml
+    gsm_txtime_setter.block.yml
+    gsm_preprocess_tx_burst.block.yml
+    gsm_gen_test_ab.block.yml
     DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/transmitter/gsm_gen_test_ab.block.yml b/grc/transmitter/gsm_gen_test_ab.block.yml
new file mode 100644
index 0000000..ec57b8e
--- /dev/null
+++ b/grc/transmitter/gsm_gen_test_ab.block.yml
@@ -0,0 +1,20 @@
+# auto-generated by grc.converter
+
+id: gsm_gen_test_ab
+label: Gen Test AB
+
+inputs:
+-   domain: message
+    id: bursts_in
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts_out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.gen_test_ab()
+
+file_format: 1
diff --git a/grc/transmitter/gsm_gen_test_ab.xml b/grc/transmitter/gsm_gen_test_ab.xml
deleted file mode 100644
index 3cb8b11..0000000
--- a/grc/transmitter/gsm_gen_test_ab.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Gen Test AB</name>
-  <key>gsm_gen_test_ab</key>
-  <import>import grgsm</import>
-  <make>grgsm.gen_test_ab()</make>
-
-  <sink>
-    <name>bursts_in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts_out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/transmitter/gsm_gmsk_mod.block.yml b/grc/transmitter/gsm_gmsk_mod.block.yml
new file mode 100644
index 0000000..e45e303
--- /dev/null
+++ b/grc/transmitter/gsm_gmsk_mod.block.yml
@@ -0,0 +1,49 @@
+# auto-generated by grc.converter
+
+id: gsm_gmsk_mod
+label: GMSK Modulator for GSM
+
+parameters:
+-   id: BT
+    label: 3 dB Time-Bandwidth Product
+    dtype: raw
+    default: '4'
+-   id: pulse_duration
+    label: Pulse Duration
+    dtype: raw
+    default: '4'
+-   id: sps
+    label: Samples/Symbol
+    dtype: raw
+    default: '4'
+
+inputs:
+-   domain: stream
+    dtype: byte
+    vlen: 1
+    optional: true
+
+outputs:
+-   domain: stream
+    dtype: complex
+    vlen: 1
+    optional: true
+
+templates:
+    imports: from grgsm import gsm_gmsk_mod
+    make: |-
+        gsm_gmsk_mod(
+            BT=${BT},
+            pulse_duration=${pulse_duration},
+            sps=${sps},
+        )
+    callbacks:
+    - set_BT(${BT})
+    - set_pulse_duration(${pulse_duration})
+    - set_sps(${sps})
+
+documentation: |-
+    Piotr Krysik
+    GMSK Modulator for GSM
+
+file_format: 1
diff --git a/grc/transmitter/gsm_gmsk_mod.xml b/grc/transmitter/gsm_gmsk_mod.xml
deleted file mode 100644
index 4aad01b..0000000
--- a/grc/transmitter/gsm_gmsk_mod.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<block>
-  <name>GMSK Modulator for GSM</name>
-  <key>gsm_gmsk_mod</key>
-  <import>from grgsm import gsm_gmsk_mod</import>
-  <make>gsm_gmsk_mod(
-    BT=$BT,
-    pulse_duration=$pulse_duration,
-    sps=$sps,
-)</make>
-  <callback>set_BT($BT)</callback>
-  <callback>set_pulse_duration($pulse_duration)</callback>
-  <callback>set_sps($sps)</callback>
-  <param>
-    <name>3 dB Time-Bandwidth Product</name>
-    <key>BT</key>
-    <value>4</value>
-    <type>raw</type>
-  </param>
-  <param>
-    <name>Pulse Duration</name>
-    <key>pulse_duration</key>
-    <value>4</value>
-    <type>raw</type>
-  </param>
-  <param>
-    <name>Samples/Symbol</name>
-    <key>sps</key>
-    <value>4</value>
-    <type>raw</type>
-  </param>
-  <sink>
-    <name>in</name>
-    <type>byte</type>
-    <vlen>1</vlen>
-    <optional>1</optional>
-  </sink>
-  <source>
-    <name>out</name>
-    <type>complex</type>
-    <vlen>1</vlen>
-    <optional>1</optional>
-  </source>
-  <doc>Piotr Krysik
-GMSK Modulator for GSM
-  </doc>
-  <grc_source>gr-gsm/hier_blocks/transmitter/gsm_gmsk_mod.grc</grc_source>
-</block>
diff --git a/grc/transmitter/gsm_preprocess_tx_burst.block.yml b/grc/transmitter/gsm_preprocess_tx_burst.block.yml
new file mode 100644
index 0000000..09cc030
--- /dev/null
+++ b/grc/transmitter/gsm_preprocess_tx_burst.block.yml
@@ -0,0 +1,20 @@
+# auto-generated by grc.converter
+
+id: gsm_preprocess_tx_burst
+label: Preprocess Tx burst
+
+inputs:
+-   domain: message
+    id: bursts_in
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts_out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.preprocess_tx_burst()
+
+file_format: 1
diff --git a/grc/transmitter/gsm_preprocess_tx_burst.xml b/grc/transmitter/gsm_preprocess_tx_burst.xml
deleted file mode 100644
index 70b447e..0000000
--- a/grc/transmitter/gsm_preprocess_tx_burst.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>Preprocess Tx burst</name>
-  <key>gsm_preprocess_tx_burst</key>
-  <import>import grgsm</import>
-  <make>grgsm.preprocess_tx_burst()</make>
-
-  <sink>
-    <name>bursts_in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts_out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/transmitter/gsm_txtime_bursts_tagger.block.yml b/grc/transmitter/gsm_txtime_bursts_tagger.block.yml
new file mode 100644
index 0000000..323d084
--- /dev/null
+++ b/grc/transmitter/gsm_txtime_bursts_tagger.block.yml
@@ -0,0 +1,56 @@
+# auto-generated by grc.converter
+
+id: gsm_txtime_bursts_tagger
+label: txtime_bursts_tagger
+
+parameters:
+-   id: init_fn
+    label: init_fn
+    dtype: raw
+    default: None
+    hide: part
+-   id: init_time
+    label: init_time
+    dtype: float
+    default: '0'
+    hide: part
+-   id: time_hint
+    label: time_hint
+    dtype: float
+    default: '0'
+    hide: part
+-   id: timing_advance
+    label: timing_advance
+    dtype: float
+    default: '0'
+    hide: part
+-   id: delay_correction
+    label: delay_correction
+    dtype: float
+    default: '0'
+    hide: part
+
+inputs:
+-   domain: message
+    id: fn_time
+    optional: true
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.txtime_bursts_tagger(${init_fn}, ${init_time}, ${time_hint}, ${timing_advance},
+        ${delay_correction})
+    callbacks:
+    - set_fn_time_reference(${init_fn}, ${init_time})
+    - set_time_hint(${time_hint})
+    - set_timing_advance(${timing_advance})
+    - set_delay_correction(${delay_correction})
+
+file_format: 1
diff --git a/grc/transmitter/gsm_txtime_bursts_tagger.xml b/grc/transmitter/gsm_txtime_bursts_tagger.xml
deleted file mode 100644
index 4e42886..0000000
--- a/grc/transmitter/gsm_txtime_bursts_tagger.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>txtime_bursts_tagger</name>
-  <key>gsm_txtime_bursts_tagger</key>
-  <import>import grgsm</import>
-  <make>grgsm.txtime_bursts_tagger($init_fn, $init_time, $time_hint, $timing_advance, $delay_correction)</make>
-  <callback>set_fn_time_reference($init_fn, $init_time)</callback>
-  <callback>set_time_hint($time_hint)</callback>
-  <callback>set_timing_advance($timing_advance)</callback>
-  <callback>set_delay_correction($delay_correction)</callback>
-
-  <param>
-    <name>init_fn</name>
-    <key>init_fn</key>
-    <value>None</value>
-    <type>raw</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>init_time</name>
-    <key>init_time</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>time_hint</name>
-    <key>time_hint</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>timing_advance</name>
-    <key>timing_advance</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>delay_correction</name>
-    <key>delay_correction</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <sink>
-    <name>fn_time</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/transmitter/gsm_txtime_setter.block.yml b/grc/transmitter/gsm_txtime_setter.block.yml
new file mode 100644
index 0000000..76a3f37
--- /dev/null
+++ b/grc/transmitter/gsm_txtime_setter.block.yml
@@ -0,0 +1,67 @@
+# auto-generated by grc.converter
+
+id: gsm_txtime_setter
+label: txtime_setter
+
+parameters:
+-   id: init_fn
+    label: init_fn
+    dtype: raw
+    default: None
+    hide: part
+-   id: init_time_secs
+    label: init_time_secs
+    dtype: int
+    default: '0'
+    hide: part
+-   id: init_time_fracs
+    label: init_time_fracs
+    dtype: float
+    default: '0'
+    hide: part
+-   id: time_hint_secs
+    label: time_hint_secs
+    dtype: int
+    default: '0'
+    hide: part
+-   id: time_hint_fracs
+    label: time_hint_fracs
+    dtype: float
+    default: '0'
+    hide: part
+-   id: timing_advance
+    label: timing_advance
+    dtype: float
+    default: '0'
+    hide: part
+-   id: delay_correction
+    label: delay_correction
+    dtype: float
+    default: '0'
+    hide: part
+
+inputs:
+-   domain: message
+    id: fn_time
+    optional: true
+-   domain: message
+    id: bursts_in
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts_out
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.txtime_setter(${init_fn} if (${init_fn} is not None) else 0xffffffff,
+        ${init_time_secs}, ${init_time_fracs}, ${time_hint_secs}, ${time_hint_fracs},
+        ${timing_advance}, ${delay_correction})
+    callbacks:
+    - set_fn_time_reference(${init_fn}, ${init_time_secs}, ${init_time_fracs})
+    - set_time_hint(${time_hint_secs}, ${time_hint_secs})
+    - set_timing_advance(${timing_advance})
+    - set_delay_correction(${delay_correction})
+
+file_format: 1
diff --git a/grc/transmitter/gsm_txtime_setter.xml b/grc/transmitter/gsm_txtime_setter.xml
deleted file mode 100644
index 648f4d9..0000000
--- a/grc/transmitter/gsm_txtime_setter.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>txtime_setter</name>
-  <key>gsm_txtime_setter</key>
-  <import>import grgsm</import>
-  <make>grgsm.txtime_setter($init_fn if ($init_fn is not None) else 0xffffffff, $init_time_secs, $init_time_fracs, $time_hint_secs, $time_hint_fracs, $timing_advance, $delay_correction)</make>
-  
-  <callback>set_fn_time_reference($init_fn, $init_time_secs, $init_time_fracs)</callback>
-  <callback>set_time_hint($time_hint_secs, $time_hint_secs)</callback>
-  <callback>set_timing_advance($timing_advance)</callback>
-  <callback>set_delay_correction($delay_correction)</callback>
-
-  <param>
-    <name>init_fn</name>
-    <key>init_fn</key>
-    <value>None</value>
-    <type>raw</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>init_time_secs</name>
-    <key>init_time_secs</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>init_time_fracs</name>
-    <key>init_time_fracs</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>time_hint_secs</name>
-    <key>time_hint_secs</key>
-    <value>0</value>
-    <type>int</type>
-    <hide>part</hide>
-  </param>
-  <param>
-    <name>time_hint_fracs</name>
-    <key>time_hint_fracs</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>timing_advance</name>
-    <key>timing_advance</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <param>
-    <name>delay_correction</name>
-    <key>delay_correction</key>
-    <value>0</value>
-    <type>float</type>
-    <hide>part</hide>
-  </param>
-
-  <sink>
-    <name>fn_time</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <sink>
-    <name>bursts_in</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts_out</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-</block>
diff --git a/grc/trx/CMakeLists.txt b/grc/trx/CMakeLists.txt
index ac4ae13..e448cdd 100644
--- a/grc/trx/CMakeLists.txt
+++ b/grc/trx/CMakeLists.txt
@@ -18,6 +18,6 @@
 # Boston, MA 02110-1301, USA.
 
 install(FILES
-    gsm_trx_burst_if.xml
+    gsm_trx_burst_if.block.yml
     DESTINATION share/gnuradio/grc/blocks
 )
diff --git a/grc/trx/gsm_trx_burst_if.block.yml b/grc/trx/gsm_trx_burst_if.block.yml
new file mode 100644
index 0000000..3f08e0c
--- /dev/null
+++ b/grc/trx/gsm_trx_burst_if.block.yml
@@ -0,0 +1,58 @@
+# auto-generated by grc.converter
+
+id: gsm_trx_burst_if
+label: TRX Burst Interface
+
+parameters:
+-   id: base_port
+    label: base_port
+    dtype: string
+    default: '5700'
+-   id: bind_addr
+    label: bind_addr
+    dtype: string
+    default: 0.0.0.0
+-   id: remote_addr
+    label: remote_addr
+    dtype: string
+    default: 127.0.0.1
+
+inputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+outputs:
+-   domain: message
+    id: bursts
+    optional: true
+
+templates:
+    imports: import grgsm
+    make: grgsm.trx_burst_if(${bind_addr}, ${remote_addr}, ${base_port})
+
+documentation: |-
+    OsmoTRX like UDP burst interface for external applications.
+
+          There are two UDP connections, where each message carries
+          one radio burst with header. Give a base port B (5700 by default).
+          One connection at port P=B+100+2 is used for sending received bursts
+          to an external application. Another one at port P=B+2 is used to
+          obtain to be transmitted bursts.
+
+          Received burst format:
+          1 byte timeslot index
+          4 bytes GSM frame number, big endian
+          1 byte RSSI in -dBm
+          2 bytes correlator timing offset in 1/256 symbol steps,
+              2's-comp, big endian
+          148 bytes soft symbol estimates, 0 -> definite "0",
+              255 -> definite "1"
+
+          To be transmitted burst format:
+          1 byte timeslot index
+          4 bytes GSM frame number, big endian
+          1 byte transmit level wrt ARFCN max, -dB (attenuation)
+          148 bytes output symbol values, 0 & 1
+
+file_format: 1
diff --git a/grc/trx/gsm_trx_burst_if.xml b/grc/trx/gsm_trx_burst_if.xml
deleted file mode 100644
index 49979a3..0000000
--- a/grc/trx/gsm_trx_burst_if.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0"?>
-<block>
-  <name>TRX Burst Interface</name>
-  <key>gsm_trx_burst_if</key>
-  <import>import grgsm</import>
-  <make>grgsm.trx_burst_if($bind_addr, $remote_addr, $base_port)</make>
-
-  <param>
-    <name>base_port</name>
-    <key>base_port</key>
-    <value>5700</value>
-    <type>string</type>
-  </param>
-
-  <param>
-    <name>bind_addr</name>
-    <key>bind_addr</key>
-    <value>0.0.0.0</value>
-    <type>string</type>
-  </param>
-
-  <param>
-    <name>remote_addr</name>
-    <key>remote_addr</key>
-    <value>127.0.0.1</value>
-    <type>string</type>
-  </param>
-
-  <sink>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </sink>
-
-  <source>
-    <name>bursts</name>
-    <type>message</type>
-    <optional>1</optional>
-  </source>
-
-  <doc>
-      OsmoTRX like UDP burst interface for external applications.
-
-      There are two UDP connections, where each message carries
-      one radio burst with header. Give a base port B (5700 by default).
-      One connection at port P=B+100+2 is used for sending received bursts
-      to an external application. Another one at port P=B+2 is used to
-      obtain to be transmitted bursts.
-
-      Received burst format:
-      1 byte timeslot index
-      4 bytes GSM frame number, big endian
-      1 byte RSSI in -dBm
-      2 bytes correlator timing offset in 1/256 symbol steps,
-          2's-comp, big endian
-      148 bytes soft symbol estimates, 0 -> definite "0",
-          255 -> definite "1"
-
-      To be transmitted burst format:
-      1 byte timeslot index
-      4 bytes GSM frame number, big endian
-      1 byte transmit level wrt ARFCN max, -dB (attenuation)
-      148 bytes output symbol values, 0 & 1
-  </doc>
-</block>

-- 
To view, visit https://gerrit.osmocom.org/c/gr-gsm/+/24061
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: gr-gsm
Gerrit-Branch: master
Gerrit-Change-Id: Iee5c611a2e100bd2fdf487611a867dc937d8c292
Gerrit-Change-Number: 24061
Gerrit-PatchSet: 1
Gerrit-Owner: ptrkrysik <ptrkrysik at gmail.com>
Gerrit-Reviewer: vvvelichkov <vvvelichkov at gmail.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210503/ad81ae98/attachment.htm>


More information about the gerrit-log mailing list