RedHawk Запрос свойства / Конфигурация от Компонента A к Компоненту B

Я очень новичок в RedHawk, и у меня есть следующий сценарий:

У меня есть три компонента A B и C, B и C, оба имеют навык владения, который является одним ключевым словом, описывающим возможности B или C. Поток: A запускается и запрашивает B.skill и C.skill, чтобы A знал, что могут сделать B и C. Затем, когда A сталкивается с задачей, которая подходит под набор навыков B или C, A запускает этот конкретный компонент для выполнения задачи.

Мой вопрос: как компонент A получает доступ к свойству B? Я посмотрел в Интернете и обнаружил простое введение в запрос redhawk (https://redhawksdr.github.io/Documentation/mainch4.html раздел 4.6.2), но я надеюсь, что кто-нибудь покажет мне фрагмент кода, который демонстрирует, как A обращается к свойству B. Кроме того, я не могу найти подробную документацию API запроса. Было бы здорово, если бы кто-то мог направить меня к этому.

Спасибо.

0

Решение

Этот пример, вероятно, может быть немного очищен, но в моем примере фрагмента, у CompA есть два выходных порта, оба типа ресурсов с именами compB_connection и compC_connection. Затем мы можем соединиться с портом ресурсов compB и compC (также называемым портом lollipop), который является прямым соединением с самим компонентом, поскольку он наследуется от API ресурса. Это дает нам доступ к методам компонента, таким как запуск, остановка, настройка, запрос и т. Д. Полный список см. В файлах idl.

CompB и CompC оба имеют свойство с идентификатором «skill». Мы можем использовать API запросов для запроса значений этих свойств.

std::string CompA_i::any_to_string(CORBA::Any value) {
std::ostringstream result;
const char* tmp;
value >>= tmp;
result << tmp;
return result.str();
}

int CompA_i::serviceFunction() {
CF::Properties compB_props, compC_props;

compB_props.length(1);
compC_props.length(1);

compB_props[0].id = "skill";
compC_props[0].id = "skill";

compB_connection->query(compB_props);
compC_connection->query(compC_props);

std::cout << "CompB Skills: " << any_to_string(compB_props[0].value) << std::endl;
std::cout << "CompC Skills: " << any_to_string(compC_props[0].value) << std::endl;

return FINISH;
}

Теперь, когда мы подключаем CompA к CompB и CompC и запускаем сигнал или песочницу, мы получаем следующий вывод:

CompB Skills: nunchuck skills
CompC Skills: bow hunting skills

Метод any_to_string был найден в prop_helpers.cpp в коде базового фреймворка; вероятно, в заголовочном файле есть вспомогательная функция, которая была бы лучше.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]