我正在使用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);
}
}
有更好的方法吗?
答案 0 :(得分:0)
REDHAWK用户手册附录E中概述的FrontEnd接口规范是一本指南,并且已为REDHAWK设备开发人员以不同方式解释。在您的情况下,最简单的解决方案是将波形中的分配更改为RX_DIGITIZER_CHANNELIZER并将侦听器连接到设备,假设设备能够输出宽带数据(RX_DIGITIZER)。否则,您建议的方法是正确的,同时请记住,如果用户在此设备的CHANNELIZER部分分配了DDC,则设备必须执行相应的簿记。
有关详细信息,请参阅有关前端调谐器类型的E.2部分。