<?xml version="1.0"?>
<!--
###################################################
# FEC LDPC ENCODER DEFINITION (VIA GENERATOR)
###################################################
 -->

<block>
  <name>LDPC Encoder Definition (via Generator)</name>
  <key>variable_ldpc_encoder_G_def</key>
  <import>from gnuradio import fec</import>
  <var_make>
#if int($ndim())==0 #
self.$(id) = $(id) = fec.ldpc_gen_mtrx_encoder_make($G)
#else if int($ndim())==1 #
self.$(id) = $(id) = map((lambda a: fec.ldpc_gen_mtrx_encoder_make($G)), range(0,$dim1)) #slurp
#else
self.$(id) = $(id) = map((lambda b: map((lambda a: fec.ldpc_gen_mtrx_encoder_make($G)), range(0,$dim2))), range(0,$dim1)) #slurp
#end if</var_make>
  <make></make>

  <param>
    <name>Ignore Me</name>
    <key>value</key>
    <value>"ok"</value>
    <type>raw</type>
    <hide>all</hide>
  </param>

  <param>
    <name>Parallelism</name>
    <key>ndim</key>
    <value></value>
    <type>enum</type>
    <option>
      <name>0</name>
      <key>0</key>
    </option>
    <option>
      <name>1</name>
      <key>1</key>
    </option>
    <option>
      <name>2</name>
      <key>2</key>
    </option>
  </param>

  <param>
    <name>Dimension 1</name>
    <key>dim1</key>
    <value>1</value>
    <type>int</type>
    <hide>#if (int($ndim()) >= 1) then 'none' else 'all' #</hide>
  </param>

  <param>
    <name>Dimension 2</name>
    <key>dim2</key>
    <value>1</value>
    <type>int</type>
    <hide>#if (int($ndim()) >= 2) then 'none' else 'all' #</hide>
  </param>

  <param>
    <name>LDPC Generator Matrix</name>
    <key>G</key>
    <value></value>
    <type>raw</type>
  </param>

  <doc>
Given a generator matrix in systematic form, G = [I|P], where I is the identity matrix and P is the parity submatrix, the information word s is encoded into a codeword x via:

x = G'*s
  </doc>
</block>
