Reputation: 21
I have a dual channel tuner and am trying to allocate two channels using Frontend 2.0. I am using Redhawk 1.9 installation. When the allocateCapacity is called it says that the capacities length is 1. Should this be 2 for a dual channel tuner? I thought I read that the number of tuners is specified in the .prf.xml file, but I don't see where the number of tuners is specified. Is this the correct approach?
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;
Upvotes: 1
Views: 112
Reputation: 310
A call to allocateCapacity
should be made for each tuner. To allocate two tuners, make two calls to allocateCapacity
.
The capacities in this context is referring to the request that is passed into allocateCapacity
, not the Device capacity. A single request should be made at a time, meaning the length of the request should be 1, as you are seeing.
The capacity of the Device is advertised using the frontend_tuner_status
struct sequence Property, which has an entry for each tuner. For a dual tuner, there should be two entries in the frontend_tuner_status struct
sequence. This could be populated in the .prf.xml
if known and constant, but it is more commonly populated at run-time in the Device code. To specify that there are two tuners, add two struct entries to the frontend_tuner_status
struct sequence (either in the prf or at run-time).
The USRP_UHD is an example of a FEI 2.0 Device that supports multiple tuners that you could use as an example.
Upvotes: 1