<?xml version="1.0"?>
<!--
###################################################
## DVB BCH Encoder
###################################################
 -->
<block>
  <name>BCH Encoder</name>
  <key>dtv_dvb_bch_bb</key>
  <import>from gnuradio import dtv</import>
  <make>dtv.dvb_bch_bb($standard.val, #slurp
#if str($standard) == 'STANDARD_DVBT2'
$framesize1.val, #slurp
#else
$framesize2.val, #slurp
#end if
#if str($standard) == 'STANDARD_DVBT2'
#if str($framesize1) == 'FECFRAME_NORMAL'
$rate1.val#slurp
#else
$rate2.val#slurp
#end if
#else
#if str($framesize2) == 'FECFRAME_NORMAL'
$rate3.val#slurp
#else if str($framesize2) == 'FECFRAME_MEDIUM'
$rate4.val#slurp
#else
$rate5.val#slurp
#end if
#end if
)</make>
  <param>
    <name>Standard</name>
    <key>standard</key>
    <type>enum</type>
    <option>
      <name>DVB-S2</name>
      <key>STANDARD_DVBS2</key>
      <opt>val:dtv.STANDARD_DVBS2</opt>
      <opt>hide_dvbs2:</opt>
      <opt>hide_dvbt2:all</opt>
    </option>
    <option>
      <name>DVB-T2</name>
      <key>STANDARD_DVBT2</key>
      <opt>val:dtv.STANDARD_DVBT2</opt>
      <opt>hide_dvbs2:all</opt>
      <opt>hide_dvbt2:</opt>
    </option>
  </param>
  <param>
    <name>FECFRAME size</name>
    <key>framesize1</key>
    <type>enum</type>
    <hide>$standard.hide_dvbt2</hide>
    <option>
      <name>Normal</name>
      <key>FECFRAME_NORMAL</key>
      <opt>val:dtv.FECFRAME_NORMAL</opt>
      <opt>hide_normal:</opt>
      <opt>hide_medium:all</opt>
      <opt>hide_short:all</opt>
    </option>
    <option>
      <name>Short</name>
      <key>FECFRAME_SHORT</key>
      <opt>val:dtv.FECFRAME_SHORT</opt>
      <opt>hide_normal:all</opt>
      <opt>hide_medium:all</opt>
      <opt>hide_short:</opt>
    </option>
  </param>
  <param>
    <name>FECFRAME size</name>
    <key>framesize2</key>
    <type>enum</type>
    <hide>$standard.hide_dvbs2</hide>
    <option>
      <name>Normal</name>
      <key>FECFRAME_NORMAL</key>
      <opt>val:dtv.FECFRAME_NORMAL</opt>
      <opt>hide_normal:</opt>
      <opt>hide_medium:all</opt>
      <opt>hide_short:all</opt>
    </option>
    <option>
      <name>Medium</name>
      <key>FECFRAME_MEDIUM</key>
      <opt>val:dtv.FECFRAME_MEDIUM</opt>
      <opt>hide_normal:all</opt>
      <opt>hide_medium:</opt>
      <opt>hide_short:all</opt>
    </option>
    <option>
      <name>Short</name>
      <key>FECFRAME_SHORT</key>
      <opt>val:dtv.FECFRAME_SHORT</opt>
      <opt>hide_normal:all</opt>
      <opt>hide_medium:all</opt>
      <opt>hide_short:</opt>
    </option>
  </param>
  <param>
    <name>Code rate</name>
    <key>rate1</key>
    <type>enum</type>
    <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_normal else 'all'</hide>
    <option>
      <name>1/2</name>
      <key>C1_2</key>
      <opt>val:dtv.C1_2</opt>
    </option>
    <option>
      <name>3/5</name>
      <key>C3_5</key>
      <opt>val:dtv.C3_5</opt>
    </option>
    <option>
      <name>2/3</name>
      <key>C2_3</key>
      <opt>val:dtv.C2_3</opt>
    </option>
    <option>
      <name>3/4</name>
      <key>C3_4</key>
      <opt>val:dtv.C3_4</opt>
    </option>
    <option>
      <name>4/5</name>
      <key>C4_5</key>
      <opt>val:dtv.C4_5</opt>
    </option>
    <option>
      <name>5/6</name>
      <key>C5_6</key>
      <opt>val:dtv.C5_6</opt>
    </option>
  </param>
  <param>
    <name>Code rate</name>
    <key>rate2</key>
    <type>enum</type>
    <hide>#if str($standard) == 'STANDARD_DVBT2' then $framesize1.hide_short else 'all'</hide>
    <option>
      <name>1/3</name>
      <key>C1_3</key>
      <opt>val:dtv.C1_3</opt>
    </option>
    <option>
      <name>2/5</name>
      <key>C2_5</key>
      <opt>val:dtv.C2_5</opt>
    </option>
    <option>
      <name>1/2</name>
      <key>C1_2</key>
      <opt>val:dtv.C1_2</opt>
    </option>
    <option>
      <name>3/5</name>
      <key>C3_5</key>
      <opt>val:dtv.C3_5</opt>
    </option>
    <option>
      <name>2/3</name>
      <key>C2_3</key>
      <opt>val:dtv.C2_3</opt>
    </option>
    <option>
      <name>3/4</name>
      <key>C3_4</key>
      <opt>val:dtv.C3_4</opt>
    </option>
    <option>
      <name>4/5</name>
      <key>C4_5</key>
      <opt>val:dtv.C4_5</opt>
    </option>
    <option>
      <name>5/6</name>
      <key>C5_6</key>
      <opt>val:dtv.C5_6</opt>
    </option>
  </param>
  <param>
    <name>Code rate</name>
    <key>rate3</key>
    <type>enum</type>
    <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_normal else 'all'</hide>
    <option>
      <name>1/4</name>
      <key>C1_4</key>
      <opt>val:dtv.C1_4</opt>
    </option>
    <option>
      <name>1/3</name>
      <key>C1_3</key>
      <opt>val:dtv.C1_3</opt>
    </option>
    <option>
      <name>2/5</name>
      <key>C2_5</key>
      <opt>val:dtv.C2_5</opt>
    </option>
    <option>
      <name>1/2</name>
      <key>C1_2</key>
      <opt>val:dtv.C1_2</opt>
    </option>
    <option>
      <name>3/5</name>
      <key>C3_5</key>
      <opt>val:dtv.C3_5</opt>
    </option>
    <option>
      <name>2/3</name>
      <key>C2_3</key>
      <opt>val:dtv.C2_3</opt>
    </option>
    <option>
      <name>3/4</name>
      <key>C3_4</key>
      <opt>val:dtv.C3_4</opt>
    </option>
    <option>
      <name>4/5</name>
      <key>C4_5</key>
      <opt>val:dtv.C4_5</opt>
    </option>
    <option>
      <name>5/6</name>
      <key>C5_6</key>
      <opt>val:dtv.C5_6</opt>
    </option>
    <option>
      <name>8/9</name>
      <key>C8_9</key>
      <opt>val:dtv.C8_9</opt>
    </option>
    <option>
      <name>9/10</name>
      <key>C9_10</key>
      <opt>val:dtv.C9_10</opt>
    </option>
    <option>
      <name>2/9 VL-SNR</name>
      <key>C2_9_VLSNR</key>
      <opt>val:dtv.C2_9_VLSNR</opt>
    </option>
    <option>
      <name>13/45</name>
      <key>C13_45</key>
      <opt>val:dtv.C13_45</opt>
    </option>
    <option>
      <name>9/20</name>
      <key>C9_20</key>
      <opt>val:dtv.C9_20</opt>
    </option>
    <option>
      <name>90/180</name>
      <key>C90_180</key>
      <opt>val:dtv.C90_180</opt>
    </option>
    <option>
      <name>96/180</name>
      <key>C96_180</key>
      <opt>val:dtv.C96_180</opt>
    </option>
    <option>
      <name>11/20</name>
      <key>C11_20</key>
      <opt>val:dtv.C11_20</opt>
    </option>
    <option>
      <name>100/180</name>
      <key>C100_180</key>
      <opt>val:dtv.C100_180</opt>
    </option>
    <option>
      <name>104/180</name>
      <key>C104_180</key>
      <opt>val:dtv.C104_180</opt>
    </option>
    <option>
      <name>26/45</name>
      <key>C26_45</key>
      <opt>val:dtv.C26_45</opt>
    </option>
    <option>
      <name>18/30</name>
      <key>C18_30</key>
      <opt>val:dtv.C18_30</opt>
    </option>
    <option>
      <name>28/45</name>
      <key>C28_45</key>
      <opt>val:dtv.C28_45</opt>
    </option>
    <option>
      <name>23/36</name>
      <key>C23_36</key>
      <opt>val:dtv.C23_36</opt>
    </option>
    <option>
      <name>116/180</name>
      <key>C116_180</key>
      <opt>val:dtv.C116_180</opt>
    </option>
    <option>
      <name>20/30</name>
      <key>C20_30</key>
      <opt>val:dtv.C20_30</opt>
    </option>
    <option>
      <name>124/180</name>
      <key>C124_180</key>
      <opt>val:dtv.C124_180</opt>
    </option>
    <option>
      <name>25/36</name>
      <key>C25_36</key>
      <opt>val:dtv.C25_36</opt>
    </option>
    <option>
      <name>128/180</name>
      <key>C128_180</key>
      <opt>val:dtv.C128_180</opt>
    </option>
    <option>
      <name>13/18</name>
      <key>C13_18</key>
      <opt>val:dtv.C13_18</opt>
    </option>
    <option>
      <name>132/180</name>
      <key>C132_180</key>
      <opt>val:dtv.C132_180</opt>
    </option>
    <option>
      <name>22/30</name>
      <key>C22_30</key>
      <opt>val:dtv.C22_30</opt>
    </option>
    <option>
      <name>135/180</name>
      <key>C135_180</key>
      <opt>val:dtv.C135_180</opt>
    </option>
    <option>
      <name>140/180</name>
      <key>C140_180</key>
      <opt>val:dtv.C140_180</opt>
    </option>
    <option>
      <name>7/9</name>
      <key>C7_9</key>
      <opt>val:dtv.C7_9</opt>
    </option>
    <option>
      <name>154/180</name>
      <key>C154_180</key>
      <opt>val:dtv.C154_180</opt>
    </option>
  </param>
  <param>
    <name>Code rate</name>
    <key>rate4</key>
    <type>enum</type>
    <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_medium else 'all'</hide>
    <option>
      <name>1/5</name>
      <key>C1_5_MEDIUM</key>
      <opt>val:dtv.C1_5_MEDIUM</opt>
    </option>
    <option>
      <name>11/45</name>
      <key>C11_45_MEDIUM</key>
      <opt>val:dtv.C11_45_MEDIUM</opt>
    </option>
    <option>
      <name>1/3</name>
      <key>C1_3_MEDIUM</key>
      <opt>val:dtv.C1_3_MEDIUM</opt>
    </option>
  </param>
  <param>
    <name>Code rate</name>
    <key>rate5</key>
    <type>enum</type>
    <hide>#if str($standard) == 'STANDARD_DVBS2' then $framesize2.hide_short else 'all'</hide>
    <option>
      <name>1/4</name>
      <key>C1_4</key>
      <opt>val:dtv.C1_4</opt>
    </option>
    <option>
      <name>1/3</name>
      <key>C1_3</key>
      <opt>val:dtv.C1_3</opt>
    </option>
    <option>
      <name>2/5</name>
      <key>C2_5</key>
      <opt>val:dtv.C2_5</opt>
    </option>
    <option>
      <name>1/2</name>
      <key>C1_2</key>
      <opt>val:dtv.C1_2</opt>
    </option>
    <option>
      <name>3/5</name>
      <key>C3_5</key>
      <opt>val:dtv.C3_5</opt>
    </option>
    <option>
      <name>2/3</name>
      <key>C2_3</key>
      <opt>val:dtv.C2_3</opt>
    </option>
    <option>
      <name>3/4</name>
      <key>C3_4</key>
      <opt>val:dtv.C3_4</opt>
    </option>
    <option>
      <name>4/5</name>
      <key>C4_5</key>
      <opt>val:dtv.C4_5</opt>
    </option>
    <option>
      <name>5/6</name>
      <key>C5_6</key>
      <opt>val:dtv.C5_6</opt>
    </option>
    <option>
      <name>8/9</name>
      <key>C8_9</key>
      <opt>val:dtv.C8_9</opt>
    </option>
    <option>
      <name>11/45</name>
      <key>C11_45</key>
      <opt>val:dtv.C11_45</opt>
    </option>
    <option>
      <name>4/15</name>
      <key>C4_15</key>
      <opt>val:dtv.C4_15</opt>
    </option>
    <option>
      <name>14/45</name>
      <key>C14_45</key>
      <opt>val:dtv.C14_45</opt>
    </option>
    <option>
      <name>7/15</name>
      <key>C7_15</key>
      <opt>val:dtv.C7_15</opt>
    </option>
    <option>
      <name>8/15</name>
      <key>C8_15</key>
      <opt>val:dtv.C8_15</opt>
    </option>
    <option>
      <name>26/45</name>
      <key>C26_45</key>
      <opt>val:dtv.C26_45</opt>
    </option>
    <option>
      <name>32/45</name>
      <key>C32_45</key>
      <opt>val:dtv.C32_45</opt>
    </option>
    <option>
      <name>1/5 VL-SNR SF2</name>
      <key>C1_5_VLSNR_SF2</key>
      <opt>val:dtv.C1_5_VLSNR_SF2</opt>
    </option>
    <option>
      <name>11/45 VL-SNR SF2</name>
      <key>C11_45_VLSNR_SF2</key>
      <opt>val:dtv.C11_45_VLSNR_SF2</opt>
    </option>
    <option>
      <name>1/5 VL-SNR</name>
      <key>C1_5_VLSNR</key>
      <opt>val:dtv.C1_5_VLSNR</opt>
    </option>
    <option>
      <name>4/15 VL-SNR</name>
      <key>C4_15_VLSNR</key>
      <opt>val:dtv.C4_15_VLSNR</opt>
    </option>
    <option>
      <name>1/3 VL-SNR</name>
      <key>C1_3_VLSNR</key>
      <opt>val:dtv.C1_3_VLSNR</opt>
    </option>
  </param>
  <sink>
    <name>in</name>
    <type>byte</type>
  </sink>
  <source>
    <name>out</name>
    <type>byte</type>
  </source>
</block>