michaelk_sw
michaelk_sw

Reputation: 21

Dual Channel Tuner allocation

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

Answers (1)

jkb
jkb

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

Related Questions