0

我正在尝试编写一个简单的控制组件,它允许我通过黑板启动 USRP_UHD 设备。我目前的环境是 CentOS 6.4 和 Redhawk 1.9.0。

我编写的组件使用 DigitalTuner_out 端口,并且我在属性更改侦听器中编写了代码,以在通过我的自定义组件更改中心频率时调用 USRP_UHD 设备上的 setTunerCenterFrequency 函数。我可以使用 SCA 资源管理器中的端口连接它们。

问题是即使在我将 USRP_UHD 设备中的 update_available_usrp_seq 属性设置为 true 并让它完成加载之后,也没有分配调谐器。我知道我必须使用前端调谐器分配结构调用 USRP_UHD 设备 allocateCapacity 函数。我已经为 DeviceKind = FRONTEND 添加了分配属性依赖项。当我使用 USRP_UHD 添加依赖项时,只有设备类型和设备型号显示在列表中。

如何通过 IDE 执行对 allocateCapacity 函数的调用?如果这是可能的,那么我如何获取分配给控制组件使用的调谐器的 ID 字符串?我的猜测是我会使用 ConnectionID,它是 UsesConnection 结构的一部分,可以从调用 DigitalTuner_out->connections() 返回的 UsesConnectionSequence 中检索。

4

1 回答 1

1

使用 USRP_UHD 设备的组件将需要分配调谐器。在组件的 *.spd.xml 中指定如何分配设备。IDE 将通过 DeviceKind 将分配放入 xml 文件中,但是使用这个简单的属性,ApplicationFactory_Impl.cpp 不会调用设备的“allocateCapacity”方法。为此,您需要手动修改 xml 以添加一些其他参数。

例如

<usesdevice id="DCE:11bafc63-d8ce-428b-8b4e-39cb96034e8c" type="usesDevice">
  <propertyref refid="DCE:cdc5ee18-7ceb-4ae6-bf4c-31f983179b4d" value="FRONTEND:TUNER"/>
  <structref refid="FRONTEND::tuner_allocation">
    <simpleref refid="FRONTEND::tuner_allocation::allocation_id" value="SimFE2TestSink"/>
    <simpleref refid="FRONTEND::tuner_allocation::center_frequency" value="857000000.0"/>
  </structref>
</usesdevice>

structref 部分必须手动添加。

于 2014-02-13T20:38:48.317 回答