0

我正在使用 Redhawk 1.9.0 在 RHEL 5 上开发符合 FRONTEND 的 Redhawk 设备。阅读完文档后,我仍然有点难以理解是否可以在运行时从使用该设备的组件中动态分配调谐器。我目前对分配属性范式的理解是,应用程序工厂是直接引用设备并在依赖组件实例化时直接对其调用 allocateCapacity 的工厂。这仍然给我留下了几个问题:

  1.  组件是否可以在实例化后的生命周期内动态请求进一步分配调谐器?如果是这样,怎么做?有没有办法在运行时获取对 FRONTEND 设备的引用,还是应该通过消息传递来完成?
  2.  使用分配属性依赖策略时,依赖组件如何在运行时知道使用了哪个allocationId?这是可查询的吗?
  3.  我在使用 Redhawk IDE 设置分配属性依赖项时遇到问题。IDE 中的“依赖向导”似乎不允许指定具有结构值的属性引用——我是不是走错了路?
4

1 回答 1

2

在 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. 跟踪这些关系,以便在解除分配时可以关闭连接等。

于 2014-08-14T18:54:10.867 回答