如何允许设备支持RX_DIGITIZER和RX_DIGITIZER_CHANNELIZER的分配?

时间:2016-06-15 13:14:51

标签: c++ redhawksdr

我正在使用CentOS 6.6(64位)和RH 1.10.2

我的波形需要FRONTEND::TUNER RX_DIGITIZER类型的设备。我还有一个基于1.10.2的设备RX_DIGITIZER_CHANNELIZER。该器件具有波形所需的所有功能,但由于调谐器类型不同,波形不会使用它。

我发现它没有被选中,因为我的设备继承的FrontendTunerDevice<TunerStatusStructType>::allocateCapacity()(在fe_tuner_device.cpp中)寻找tuner_type上的完全匹配。

我没有看到任何优雅的方式。以下是我可以看到的两种不那么优雅的方式。

我可以完全覆盖allocateCapacity并复制其95%的逻辑,但明确接受两种调谐器类型。

或者我可以覆盖allocateCapacity并在传递给超类方法之前修改功能。在伪代码中:

CORBA::Boolean MyDevice::allocateCapacity(const CF::Properties & capacities)
{
   if ( capacities ask for RX_DITIGIZER ) {
      CF::Properties caps = capacities;
      change type to RX_DITIGIZER_CHANNELIZER
      return super::allocateCapacity(caps);
   } else {
      return super::allocateCapacity(capacities);
   }
}

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

REDHAWK用户手册附录E中概述的FrontEnd接口规范是一本指南,并且已为REDHAWK设备开发人员以不同方式解释。在您的情况下,最简单的解决方案是将波形中的分配更改为RX_DIGITIZER_CHANNELIZER并将侦听器连接到设备,假设设备能够输出宽带数据(RX_DIGITIZER)。否则,您建议的方法是正确的,同时请记住,如果用户在此设备的CHANNELIZER部分分配了DDC,则设备必须执行相应的簿记。

有关详细信息,请参阅有关前端调谐器类型的E.2部分。