У меня есть компонент, который использует интерфейс::OutDigitalTunerPort для совершения вызовов FEI на устройство RH. Вот сгенерированный код в XXX_base.cpp:
device_fei_out = new frontend::OutDigitalTunerPort("device_fei_out");
addPort("device_fei_out", device_fei_out);
Вот пример использования, который правильно компилируется: device_fei_out->setTunerOutputSampleRate(id, freq);
Вот пример использования, который НЕ компилируется: device_fei_out->setTunerCenterFrequency(id);
Очевидно, этот вызов FEI не определен в соответствующих определениях шаблона — ошибка компиляции указывает на /usr/local/redhawk/core/include/frontend/fe_tuner_port_impl.h.
Глядя на этот код, я вижу, что только приведенный выше рабочий вызов FEI определен в следующих классах: OutDigitalTunerPortT digital_tuner_delegation
Где ВСЕ другие «установленные» функции FEI определены в: OutAnalogTunerPortT Analog_tuner_delegation
Значит ли это, что frontend::OutDigitalTunerPort поддерживает только эту одну функцию «set»? Как еще я могу сделать все вызовы FEI на устройство RH?
Ниже приведена одна из деталей ошибки компиляции — аналогичная ситуация с оператором !=:
/usr/local/redhawk/core/include/frontend/fe_tuner_port_impl.h:329: ошибка: нет совпадения для 'operator=' в 'i = ((frontend::OutAnalogTunerPortT‹_CORBA_ObjRef_Var, FRONTEND::DigitalTuner>*)это) ->frontend::OutAnalogTunerPortT‹_CORBA_ObjRef_Var, FRONTEND::DigitalTuner>::.frontend::OutFrontendTunerPortT‹_CORBA_ObjRef_Var, FRONTEND::DigitalTuner>::.frontend::OutFrontendPort‹_CORBA_ObjRef_Connections.>:DigitalTuner::al, FRONTEND: :vector‹_Tp, _Alloc>::begin with _Tp = std::pair‹_CORBA_ObjRef_Var, std::basic_string, std::allocator > >, _Alloc = std::allocator, std::basic_string, std::allocator > > >'
double freq=0.5;
std::string id1("usrp-to-wavemaster");
device_fei_out->setTunerCenterFrequency(id1, freq);
Функция setTunerCenterFrequency(..) принимает два аргумента (std::string& id, double freq), вы вызываете только с id, это может быть причиной вашей проблемы с компиляцией. Если это не является причиной вашей проблемы, пожалуйста, предоставьте более подробную информацию о вашем исходном коде и всех выходных данных об ошибках, а также о версии REDHAWK, которую вы используете.