Динамические вызовы allocateCapacity/dealocateCapacity из других компонентов

Я разрабатываю устройство Redhawk, совместимое с FRONTEND, на RHEL 5 с Redhawk 1.9.0. Прочитав документацию, я все еще не могу понять, возможно ли динамически выделять тюнеры во время выполнения из компонентов, использующих устройство. Мое текущее понимание парадигмы свойства распределения заключается в том, что фабрика приложений — это та, которая содержит прямую ссылку на устройство и вызывает для него allocateCapacity непосредственно во время создания экземпляра зависимого компонента. Это все еще оставляет меня с несколькими вопросами:

  1. Возможно ли, чтобы компонент в течение своего жизненного цикла после создания экземпляра динамически запрашивал дальнейшее выделение тюнеров? Если да, то как? Есть ли способ получить ссылку на устройство FRONTEND во время выполнения или это можно сделать с помощью обмена сообщениями?
  2. Как при использовании стратегии зависимости свойства распределения зависимый компонент узнает во время выполнения, какой идентификатор распределения был использован? Это как-то запрашивается?
  3. У меня возникли проблемы с настройкой зависимости свойств распределения с помощью Redhawk IDE. «Мастер зависимостей» в среде IDE, по-видимому, не позволяет указывать ссылки на свойства, которые имеют значения структуры - я делаю это неправильно?

person Jack O'Reilly    schedule 28.07.2014    source источник


Ответы (1)


В новейшей версии REDHAWK, 1.10, в среде IDE есть инструменты, которые помогают в распределении и освобождении внешних устройств. Это возможно, если развернуть устройство в представлении SCA Explorer и выбрать выполнение распределения на этом конкретном устройстве. Однако в 1.9 предлагаемое решение указано ниже.

Существуют способы выполнения динамического распределения и установления взаимосвязей устройств за пределами фабрики приложений. Фабрика приложений выполняет следующие операции при запуске сигналов/компонентов:

  1. Вызов загрузки и выполнения на исполняемом/загружаемом устройстве и выполнение любых требований совместного размещения.

  2. Выделение ресурсов устройства и отслеживание необходимых взаимосвязей при успешном выделении.

  3. Установление связей между компонентами.

  4. Установление соединений между компонентами и связанными с ними устройствами, службами, каналами событий и т. д.

  5. Инициализация перегруженных свойств путем вызова configure() для компонентов.

  6. Создание объекта формы волны, отвечающего за отслеживание жизненного цикла формы волны, и определенных атрибутов формы волны.

Фабрика приложений анализирует файлы sad.xml, которые не очень динамичны по своей природе. В версии 1.9 динамический объект, управляющий взаимодействием устройства и компонента, должен быть внешним ресурсом, например скриптом Python или компонентом. Чтобы создать собственный механизм задач для устройств с интерфейсом внешнего интерфейса, вы можете создать актив, который выполняет следующие шаги. Эти шаги можно выполнить на любом языке, но для простоты фрагменты python показаны с помощью утилиты redhawk python:

  1. Запускайте сигналы/компоненты как обычно или ссылайтесь на то, что работает.

    from ossie.utils import redhawk
    dom = redhawk.attach('REDHAWK_DEV') #OR your Domain Nameapplication = dom.createApplication('APPNAME')
    
  2. Создайте свойство для распределения.

    prop = Your_Property_used_for_Allocation
    
  3. Переберите все свои устройства в домене и попробуйте выделить на них.

    myDevice = None
    for ii in dom.devMgrs:
        for jj in ii.devs:
            if (jj.allocateCapacity(prop)):
                myDevice = jj
                break
    if not myDevice:
        print 'Could Not Allocate... Exiting'
        exit()
    
  4. Установите соединение между устройством, выполнившим назначение, и сигналом/компонентом.

    outPort = myDevice.getPort('NAME OF USES PORT')
    inPort = application.getPort('NAME OF PROVIDES PORT')outPort.connectPort(inPort, 'connection name based off allocation id')
    
  5. Следите за этими отношениями, чтобы соединения и т. д. могли быть отключены при освобождении.

person DrewC    schedule 14.08.2014