<?xml version="1.0"?>
<block>
  <name>FEC Encoder</name>
  <key>fec_generic_encoder</key>
  <import>from gnuradio import fec</import>
  <make>fec.encoder($encoder, $itype.size, $otype.size)</make>

  <param>
    <name>Constituent Encoder</name>
    <key>encoder</key>
    <value>encoder_variable</value>
    <type>raw</type>
  </param>

  <param>
    <name>Input Type</name>
    <key>itype</key>
    <type>enum</type>
    <option>
      <name>Complex</name>
      <key>complex</key>
      <opt>size:gr.sizeof_gr_complex</opt>
    </option>
    <option>
      <name>Float</name>
      <key>float</key>
      <opt>size:gr.sizeof_float</opt>
    </option>
    <option>
      <name>Int</name>
      <key>int</key>
      <opt>size:gr.sizeof_int</opt>
    </option>
    <option>
      <name>Short</name>
      <key>short</key>
      <opt>size:gr.sizeof_short</opt>
    </option>
    <option>
      <name>Byte</name>
      <key>byte</key>
      <opt>size:gr.sizeof_char</opt>
    </option>
  </param>

  <param>
    <name>Output Type</name>
    <key>otype</key>
    <type>enum</type>
    <option>
      <name>Complex</name>
      <key>complex</key>
      <opt>size:gr.sizeof_gr_complex</opt>
    </option>
    <option>
      <name>Float</name>
      <key>float</key>
      <opt>size:gr.sizeof_float</opt>
    </option>
    <option>
      <name>Int</name>
      <key>int</key>
      <opt>size:gr.sizeof_int</opt>
    </option>
    <option>
      <name>Short</name>
      <key>short</key>
      <opt>size:gr.sizeof_short</opt>
    </option>
    <option>
      <name>Byte</name>
      <key>byte</key>
      <opt>size:gr.sizeof_char</opt>
    </option>
  </param>

  <sink>
    <name>in</name>
    <type>$itype</type>
  </sink>

  <source>
    <name>out</name>
    <type>$otype</type>
  </source>

  <doc>
    This is a GNU Radio adaptor for any FEC encoder following the generic_encoder API in the fec module. Input and output are flexible to accommodate encoders that, say, modulate their encoded results into complex or float types.
  </doc>

</block>