如何允许设备支持rx_digitizer和rx_digitizer_channelizer的分配

How to allow device to support allocations for both RX_DIGITIZER and RX_DIGITIZER_CHANNELIZER?

本文关键字:digitizer rx channelizer 分配 何允许 支持      更新时间:2023-10-16

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

我有一个波形,它需要FRONTEND::TUNER类型的CC_1设备。我还有一个基于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);
   }
}

有更好的方法吗?

redhawk用户手册附录E中概述的前端接口规范是指南,并且已知Redhawk设备开发人员以不同的方式解释。在您的情况下,最简单的解决方案是将波形中的分配更改为rx_digitizer_channelizer并将侦听器连接到设备,假设设备具有输出宽带数据(RX_Digitizer)的能力。否则,您建议的方法是正确的,同时请记住,如果用户分配了该设备的通道器部分,则必须执行适当的簿记。

有关更多信息,请参阅前端调谐器类型的E.2节。