在 REDHAWK 的最新版本 1.10 中,IDE 中有一些工具可以帮助前端设备的分配和解除分配。这可以通过在 SCA Explorer 视图中展开设备并选择在该特定设备上执行分配来实现。然而,在 1.9 中,建议的解决方案在下面列出。
有一些方法可以完成动态分配,并在应用程序工厂之外建立设备关系。应用程序工厂在启动波形/组件时执行以下操作:
在可执行/可加载设备上调用加载和执行,并满足任何协同定位要求。
根据设备资源进行分配,并在分配成功时跟踪必要的关系。
建立组件之间的连接。
在组件及其关联的设备、服务、事件通道等之间建立连接。
通过在组件上调用 configure() 来初始化重载属性。
创建负责跟踪波形生命周期和波形特定属性的波形对象。
应用程序工厂解析本质上不是很动态的 sad.xml 文件。在 1.9 中,控制设备/组件交互的动态实体必须是外部资源,例如 python 脚本或组件。为了为支持前端接口的设备创建自己的任务机制,您可以创建执行以下步骤的资产。这些步骤可以用任何语言完成,但为简单起见,python 片段使用 redhawk python 实用程序显示:
正常启动波形/组件,或引用正在运行的东西。
from ossie.utils import redhawk
dom = redhawk.attach('REDHAWK_DEV') #OR your Domain Nameapplication = dom.createApplication('APPNAME')
创建要分配的属性。
prop = Your_Property_used_for_Allocation
循环浏览域中的所有设备并尝试在它们上进行分配。
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()
在完成分配的设备和波形/分量之间建立连接。
outPort = myDevice.getPort('NAME OF USES PORT')
inPort = application.getPort('NAME OF PROVIDES PORT')outPort.connectPort(inPort, 'connection name based off allocation id')
跟踪这些关系,以便在解除分配时可以关闭连接等。