0

我在 Centos 6.4(32 位)操作系统上工作 REDHAWK 1.9。

我有一个符合 Tuner 的 FrontEnd(FE) II 接口的设备。FEII 兼容设备的分配是通过结构 (frontend_tuner_allocation)。IDE 似乎不允许在 implementations 选项卡上定义此分配。

我查看了REDHAWK UHD 设备使用情况。它描述了如何进行必要的连接,但我没有看到如何通过调谐器分配结构进行分配。

我已经看到示例(离线)在哪里进行此分配,分配结构必须手动编码到 xml 文件中。我在一种情况下看到这是在组件 spd.xml 文件中完成的。我有另一个例子,它是在波形中完成的。

示例 1:在组件 spd.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>

示例 2:在波形 spd.xml 中

   <usesdevicedependencies>
    <usesdevice id="DCE:93a650f5-719f-4dc3-8143-fd438b94c19f" type="usesXX">
      <propertyref refid="DCE:cdc5ee18-7ceb-4ae6-bf4c-31f983179b4d" value="FRONTEND::TUNER"/>
      <structref refid="FRONTEND::tuner_allocation">
        <simpleref refid="FRONTEND::tuner_allocation::tuner_type" value="RX_DIGITIZER_CHANNELIZER"/>
        <simpleref refid="FRONTEND::tuner_allocation::allocation_id" value="XXDevice"/>
        <simpleref refid="FRONTEND::tuner_allocation::center_frequency" value="100000000"/>
        <simpleref refid="FRONTEND::tuner_allocation::bandwidth" value="128000"/>
        <simpleref refid="FRONTEND::tuner_allocation::sample_rate" value="256000"/>
        <simpleref refid="FRONTEND::tuner_allocation::group_id" value=""/>
        <simpleref refid="FRONTEND::tuner_allocation::rf_flow_id" value=""/>
      </structref>
    </usesdevice>
  </usesdevicedependencies>

分配 FrontEnd Tuner 的最佳方式是什么?

4

1 回答 1

1

没有真正的“最佳”方式来分配前端调谐器设备。这实际上取决于哪种方式对您的特定场景最有意义。

您提供的两个示例是通过 XML 分配前端调谐器的有效方法,但还有另一个选项(使用 python)可能有助于澄清幕后发生的事情。

假设您的设备已经在运行:

from ossie.utils import redhawk
from ossie.cf import CF

# Attach to the domain
domain = redhawk.attach("REDHAWK_DEV")

# Locate your FEI device
myFEIDevice = None
for device in domain.devices:
    if device.name == "myFEIDevice":
        myFEIDevice = device

# Sanity check
if not myFEIDevice:
    raise Exception("Unable to locate myFEIDevice!")

此时,您的 FEI 设备应该会接听allocateCapacity(tunerRequestProps)电话:

from ossie.utils import uuid

# Setup tuning variables
allocationId = str(uuid.uuid4())
tunerType = "RX_DIGITIZER_CHANNELIZER"
centerFreq = 100e6
sampleRate = 48000.0
sampleRateTol = 10.0
bandwidth = 16000.0
bandwidthTol = 10.0
deviceControl = False
groupId = ""
rfFlowId = ""

# Setup allocation request properties
props = []
props.append(CF.DataType("FRONTEND::tuner_allocation::tuner_type", tunerType))
props.append(CF.DataType("FRONTEND::tuner_allocation::allocation_id", allocationId))
props.append(CF.DataType("FRONTEND::tuner_allocation::center_frequency", centerFreq))
props.append(CF.DataType("FRONTEND::tuner_allocation::bandwidth", bandwidth))
props.append(CF.DataType("FRONTEND::tuner_allocation::bandwidth_tolerance", bandwidthTol))
props.append(CF.DataType("FRONTEND::tuner_allocation::sample_rate", sampleRate))
props.append(CF.DataType("FRONTEND::tuner_allocation::sample_rate_tolerance", sampleRateTol))
props.append(CF.DataType("FRONTEND::tuner_allocation::device_control", deviceControl))
props.append(CF.DataType("FRONTEND::tuner_allocation::group_id", groupId))
props.append(CF.DataType("FRONTEND::tuner_allocation::rf_flow_id", rfFlowId))

# Setup tuner request struct properties
fe_alloc_props = {}
fe_alloc_props["FRONTEND::tuner_allocation"] = props

# Attempt to allocate your device
allocationResult = myFEIDevice.allocateCapacity(fe_alloc_props)

此时,如果分配成功,您应该会看到分配请求现在显示在设备的 frontend_tuner_status 属性中

于 2014-02-27T19:20:27.587 回答