我想在c ++中为GNU Radio编写一个OOT模块。
为了熟悉此事,我想写一下现有的Block' add_xx'自己。
我不知道如何在IO-Type的块设置中出现下拉菜单。
任何人都可以举一个简单的例子,我是否必须在_impl.cc和_impl.h文件中编写它?
我有使用gr_modtool创建的代码框架。如果样本基于此,那就太好了。
答案 0 :(得分:0)
所以,诀窍是add_XX
块的不同类型实际上是不同的类,下拉菜单实际上使GNU Radio伴侣设置了几个变量,而这些变量又用于决定哪个块是用过的;这是the XML file中描述add_xx的所有相对丑陋的代码:
<?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 > 1</check>
<check>$vlen > 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
这样的简单块是一个非常好的主意,但是在实现新东西时,类型可变性是很少需要的功能,对初学者来说很难做到。
所以:从单一类型开始,然后从1到5跟随official GNU Radio Guided Tutorials。它们是专为像你这样的人制作的,它们涵盖了C ++块!