我有一个双通道调谐器,我正在尝试使用Frontend 2.0分配两个通道。我正在使用Redhawk 1.9安装。当调用allocateCapacity时,它表示容量长度为1.对于双通道调谐器,这应该是2吗?我以为我读过.prf.xml文件中指定了调谐器的数量,但我不知道指定调谐器的数量。这是正确的方法吗?
CORBA::Boolean DEVICE_i::allocateCapacity(const CF::Properties & capacities)
throw (CORBA::SystemException, CF::Device::InvalidCapacity, CF::Device::InvalidState) {
std::cout << "In DEVICE_i::allocateCapacity...capacities length = " << capacities.length() << std::endl;
答案 0 :(得分:1)
应为每个调谐器拨打allocateCapacity
。要分配两个调谐器,请拨打两次allocateCapacity
。
此上下文中的 capacity 指的是传递到allocateCapacity
的请求,而不是设备容量。应该一次发出一个请求,这意味着请求的长度应该是1,正如您所看到的那样。
使用frontend_tuner_status
结构序列属性公布设备的容量,该属性具有每个调谐器的条目。对于双调谐器,frontend_tuner_status struct
序列中应该有两个条目。如果已知且常量,则可以在.prf.xml
中填充,但在设备代码中,它通常在运行时填充。要指定有两个调谐器,请在frontend_tuner_status
结构序列中添加两个结构条目(在prf中或在运行时)。
USRP_UHD是支持多个调谐器的FEI 2.0设备示例,您可以将其作为示例。