-1

我想用 c++ 为 GNU Radio 编写一个 OOT 模块。

为了熟悉此事,我想自己编写现有的 Block 'add_xx'。

我不知道如何在 IO-Type 的块设置中出现一个下拉菜单。

谁能举一个简单的例子,我必须如何将它写在 _impl.cc 和 _impl.h 文件中?

我有使用 gr_modtool 创建的代码框架。如果样本基于此,那就太好了。

4

1 回答 1

0

所以,诀窍在于不同类型的add_XX块实际上是不同的类,而下拉菜单实际上使 GNU Radio 伴侣设置了一些变量,这些变量又用于决定使用哪个块;这是描述 add_xx的 XML 文件中所有相对难看的代码:

<?xml version="1.0"?>
...
<block>
    <name>Add</name>
    <key>blocks_add_xx</key>
    <import>from gnuradio import blocks</import>
    <make>blocks.add_v$(type.fcn)($vlen)</make>
    <param>
        <name>IO Type</name>
        <key>type</key>
        <type>enum</type>
        <option>
            <name>Complex</name>
            <key>complex</key>
            <opt>fcn:cc</opt>
        </option>
        <option>
            <name>Float</name>
            <key>float</key>
            <opt>fcn:ff</opt>
        </option>
        ...
    </param>
    <param>
        <name>Num Inputs</name>
        <key>num_inputs</key>
        <value>2</value>
        <type>int</type>
    </param>
    <param>
        <name>Vec Length</name>
        <key>vlen</key>
        <value>1</value>
        <type>int</type>
    </param>
    <check>$num_inputs &gt; 1</check>
    <check>$vlen &gt; 0</check>
    <sink>
        <name>in</name>
        <type>$type</type>
        <vlen>$vlen</vlen>
        <nports>$num_inputs</nports>
    </sink>
    <source>
        <name>out</name>
        <type>$type</type>
        <vlen>$vlen</vlen>
    </source>
</block>

所以,有一个add_cc用于复杂的类,一个add_ff用于浮动的类等等。事实上,GNU Radio 的构建系统从单个文本模板生成这些实现。

因此,虽然我确实认为重新创建一个简单的块add_cc(如

所以:从单一类型开始,然后按照官方 GNU Radio Guided Tutorials从 1 到 5 进行操作。它们是专门为像你这样的人制作的,并且涵盖了 C++ 块!

于 2015-10-30T13:40:09.433 回答